index.vue 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897
  1. <template>
  2. <div class="app-container">
  3. <!-- 搜索框 -->
  4. <el-form
  5. :model="queryParams"
  6. ref="queryForm"
  7. size="small"
  8. :inline="true"
  9. v-show="showSearch"
  10. label-width="68px"
  11. >
  12. <el-form-item label="姓名" prop="name">
  13. <el-input
  14. v-model="queryParams.name"
  15. placeholder="请输入姓名"
  16. clearable
  17. @keyup.enter.native="handleQuery"
  18. />
  19. </el-form-item>
  20. <el-form-item label="性别" prop="gender">
  21. <el-input
  22. v-model="queryParams.gender"
  23. placeholder="请输入性别"
  24. clearable
  25. @keyup.enter.native="handleQuery"
  26. />
  27. </el-form-item>
  28. <el-form-item label="身份证号" prop="sfzid">
  29. <el-input
  30. v-model="queryParams.sfzid"
  31. placeholder="请输入身份证号"
  32. clearable
  33. @keyup.enter.native="handleQuery"
  34. />
  35. </el-form-item>
  36. <el-form-item label="电话1" prop="telOne">
  37. <el-input
  38. v-model="queryParams.telOne"
  39. placeholder="请输入电话1"
  40. clearable
  41. @keyup.enter.native="handleQuery"
  42. />
  43. </el-form-item>
  44. <el-form-item label="年龄" prop="age">
  45. <el-input
  46. v-model="queryParams.age"
  47. placeholder="请输入年龄"
  48. clearable
  49. @keyup.enter.native="handleQuery"
  50. />
  51. </el-form-item>
  52. <el-form-item label="服务机构" prop="serviceid">
  53. <el-input
  54. v-model="queryParams.serviceid"
  55. placeholder="请输入所属服务机构"
  56. clearable
  57. @keyup.enter.native="handleQuery"
  58. />
  59. </el-form-item>
  60. <el-form-item>
  61. <el-button
  62. type="primary"
  63. icon="el-icon-search"
  64. size="mini"
  65. @click="handleQuery"
  66. >搜索</el-button
  67. >
  68. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  69. >重置</el-button
  70. >
  71. </el-form-item>
  72. </el-form>
  73. <!-- 操作按钮 -->
  74. <el-row :gutter="10" class="mb8">
  75. <el-col :span="1.5">
  76. <el-button
  77. type="primary"
  78. plain
  79. icon="el-icon-plus"
  80. size="mini"
  81. @click="handleAdd"
  82. v-hasPermi="['system:profile:add']"
  83. >新增</el-button
  84. >
  85. </el-col>
  86. <el-col :span="1.5">
  87. <el-button
  88. type="success"
  89. plain
  90. icon="el-icon-edit"
  91. size="mini"
  92. :disabled="single"
  93. @click="handleUpdate"
  94. v-hasPermi="['system:profile:edit']"
  95. >修改</el-button
  96. >
  97. </el-col>
  98. <el-col :span="1.5">
  99. <el-button
  100. type="danger"
  101. plain
  102. icon="el-icon-delete"
  103. size="mini"
  104. :disabled="multiple"
  105. @click="handleDelete"
  106. v-hasPermi="['system:profile:remove']"
  107. >删除</el-button
  108. >
  109. </el-col>
  110. <el-col :span="1.5">
  111. <el-button
  112. type="success"
  113. plain
  114. icon="el-icon-download"
  115. size="mini"
  116. @click="handleExport"
  117. v-hasPermi="['system:profile:export']"
  118. >导出</el-button
  119. >
  120. </el-col>
  121. <el-col :span="1.5">
  122. <el-button
  123. type="warning"
  124. plain
  125. icon="el-icon-upload2"
  126. size="mini"
  127. @click="handleUpload"
  128. v-hasPermi="['system:manage:add']"
  129. >导入</el-button
  130. >
  131. </el-col>
  132. <right-toolbar
  133. :showSearch.sync="showSearch"
  134. @queryTable="getList"
  135. ></right-toolbar>
  136. </el-row>
  137. <!-- 表单 -->
  138. <el-table
  139. v-loading="loading"
  140. :data="profileList"
  141. @selection-change="handleSelectionChange"
  142. >
  143. <el-table-column type="selection" width="55" align="center" />
  144. <!-- <el-table-column label="id" align="center" prop="id" /> -->
  145. <el-table-column label="姓名" align="center" prop="name" />
  146. <el-table-column label="性别" align="center" prop="sex">
  147. <!-- <template slot-scope="scope">
  148. <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.gender" />
  149. </template> -->
  150. </el-table-column>
  151. <el-table-column label="身份证号" align="center" prop="sfzid" min-width="100"/>
  152. <el-table-column label="电话1" align="center" prop="telOne" />
  153. <!-- <el-table-column label="电话2" align="center" prop="telTwo" />
  154. <el-table-column label="电话3" align="center" prop="telThree" /> -->
  155. <el-table-column label="出生年月" align="center" prop="birthday" />
  156. <el-table-column label="年龄" align="center" prop="age" />
  157. <!-- <el-table-column label="结婚状态" align="center" prop="marrystatus" />
  158. <el-table-column label="民族" align="center" prop="nation" />
  159. <el-table-column label="当地户口" align="center" prop="local" />
  160. <el-table-column label="客户类别" align="center" prop="clienttype" />
  161. <el-table-column label="居住情况" align="center" prop="livestatus" /> -->
  162. <el-table-column label="家庭地址" align="center" prop="familyAddress" />
  163. <!-- <el-table-column label="详细地址" align="center" prop="detailAddress" />
  164. <el-table-column label="户籍地址" align="center" prop="houseAddress" />
  165. <el-table-column label="户籍详细地址" align="center" prop="houseDetailAddress" /> -->
  166. <el-table-column label="所属服务机构" align="center" prop="service" />
  167. <!-- <el-table-column label="老人身体特征和状态" align="center" prop="oldmenStatus" />
  168. <el-table-column label="主要改造内容字段" align="center" prop="changeContent" />
  169. <el-table-column label="失能月数" align="center" prop="loseMonth" />
  170. <el-table-column label="治疗月数" align="center" prop="treatMonth" />
  171. <el-table-column label="是否通过康复治疗" align="center" prop="isTreat" /> -->
  172. <el-table-column label="服务类型" align="center" prop="servicetype" />
  173. <!-- <el-table-column label="医疗保障" align="center" prop="treatesure" />
  174. <el-table-column label="经济来源" align="center" prop="moneycome" />
  175. <el-table-column label="月收入" align="center" prop="moneyMonth" />
  176. <el-table-column label="社保卡号" align="center" prop="cardCode" />
  177. <el-table-column label="慢性疾病" align="center" prop="slowillness" />
  178. <el-table-column label="血型" align="center" prop="bloodtype" />
  179. <el-table-column label="失能状态" align="center" prop="shistatus" />
  180. <el-table-column label="残疾情况" align="center" prop="disablitystatus" />
  181. <el-table-column label="残疾等级" align="center" prop="disablityentry" />
  182. <el-table-column label="文化程度" align="center" prop="educalevel" />
  183. <el-table-column label="专业" align="center" prop="special" />
  184. <el-table-column label="职称" align="center" prop="title" />
  185. <el-table-column label="原单位" align="center" prop="unity" />
  186. <el-table-column label="性格心理" align="center" prop="natureHeart" />
  187. <el-table-column label="饮食特点" align="center" prop="eatPoint" />
  188. <el-table-column label="特长" align="center" prop="forte" />
  189. <el-table-column label="爱好" align="center" prop="aihao" />
  190. <el-table-column label="照片" align="center" prop="photo" />
  191. <el-table-column label="其他照片" align="center" prop="otherPhoto" />
  192. <el-table-column label="备注" align="center" prop="remarks" />-->
  193. <el-table-column
  194. label="创建时间"
  195. align="center"
  196. prop="createTime"
  197. width="180"
  198. >
  199. <template slot-scope="scope">
  200. <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
  201. </template>
  202. </el-table-column>
  203. <el-table-column
  204. label="操作"
  205. align="center"
  206. class-name="small-padding fixed-width"
  207. min-width="100"
  208. >
  209. <template slot-scope="scope">
  210. <el-button
  211. size="mini"
  212. type="text"
  213. icon="el-icon-delete"
  214. @click="handleSee(scope.row)"
  215. >查看</el-button
  216. >
  217. <el-button
  218. size="mini"
  219. type="text"
  220. icon="el-icon-edit"
  221. @click="handleUpdate(scope.row)"
  222. v-hasPermi="['system:profile:edit']"
  223. >修改</el-button
  224. >
  225. <el-button
  226. size="mini"
  227. type="text"
  228. icon="el-icon-delete"
  229. @click="handleDelete(scope.row)"
  230. v-hasPermi="['system:profile:remove']"
  231. >删除</el-button
  232. >
  233. </template>
  234. </el-table-column>
  235. </el-table>
  236. <pagination
  237. v-show="total > 0"
  238. :total="total"
  239. :page.sync="queryParams.pageNum"
  240. :limit.sync="queryParams.pageSize"
  241. @pagination="getList"
  242. />
  243. <!-- 添加或修改用户档案对话框 -->
  244. <el-dialog
  245. :title="title"
  246. :visible.sync="open"
  247. width="1200px"
  248. append-to-body
  249. >
  250. <el-form ref="form" :model="form" :rules="rules" label-width="150px">
  251. <el-row>
  252. <el-col :span="12">
  253. <el-form-item label="姓名" prop="name">
  254. <el-input
  255. v-model="form.name"
  256. placeholder="请输入姓名"
  257. class="inp"
  258. />
  259. </el-form-item>
  260. </el-col>
  261. <el-col :span="12">
  262. <el-form-item label="婚姻状况" prop="marrStatus">
  263. <el-select v-model="form.marrStatus" class="inp">
  264. <el-option
  265. v-for="item in marryStatus"
  266. :key="item.dictValue"
  267. :label="item.dictLabel"
  268. :value="item.dictValue"
  269. ></el-option>
  270. </el-select>
  271. </el-form-item>
  272. </el-col>
  273. </el-row>
  274. <el-row>
  275. <el-col :span="12">
  276. <el-form-item label="身份证号" prop="sfzid">
  277. <el-input
  278. v-model="form.sfzid"
  279. placeholder="请输入身份证号"
  280. class="inp"
  281. @blur="decodeSFZ($event)"
  282. />
  283. </el-form-item>
  284. </el-col>
  285. <el-col :span="12">
  286. <el-form-item label="电话1" prop="telOne">
  287. <el-input
  288. v-model="form.telOne"
  289. placeholder="请输入电话1"
  290. class="inp"
  291. type="number"
  292. />
  293. </el-form-item>
  294. </el-col>
  295. </el-row>
  296. <el-row>
  297. <el-col :span="12">
  298. <el-form-item label="出生年月" prop="birthday">
  299. <el-date-picker
  300. v-model="form.birthday"
  301. type="date"
  302. placeholder="选择日期"
  303. style="width: 100%"
  304. value-format="yyyy-MM-dd"
  305. disabled
  306. ></el-date-picker>
  307. </el-form-item>
  308. </el-col>
  309. <el-col :span="12">
  310. <el-form-item label="电话2" prop="telTwo">
  311. <el-input
  312. v-model="form.telTwo"
  313. type="number"
  314. placeholder="请输入电话2"
  315. class="inp"
  316. />
  317. </el-form-item>
  318. </el-col>
  319. </el-row>
  320. <el-row>
  321. <el-col :span="12">
  322. <el-form-item label="年龄" prop="age">
  323. <el-input
  324. v-model="form.age"
  325. placeholder="请输入年龄"
  326. class="inp"
  327. disabled
  328. />
  329. </el-form-item>
  330. </el-col>
  331. <el-col :span="12">
  332. <el-form-item label="电话3" prop="telThree">
  333. <el-input
  334. v-model="form.telThree"
  335. type="number"
  336. placeholder="请输入电话3"
  337. class="inp"
  338. />
  339. </el-form-item>
  340. </el-col>
  341. </el-row>
  342. <el-row>
  343. <el-col :span="12">
  344. <el-form-item label="性别" prop="gender">
  345. <el-radio-group v-model="form.gender" disabled>
  346. <el-radio :label="0">男</el-radio>
  347. <el-radio :label="1">女</el-radio>
  348. </el-radio-group>
  349. </el-form-item>
  350. </el-col>
  351. <el-col :span="12">
  352. <el-form-item label="民族" prop="national">
  353. <!-- <el-input v-model="form.national" placeholder="请输入民族" class="inp" /> -->
  354. <el-select v-model="form.national">
  355. <el-option
  356. v-for="i in nation"
  357. :key="i.dictValue"
  358. :value="i.dictValue"
  359. :label="i.dictLabel"
  360. ></el-option>
  361. </el-select>
  362. </el-form-item>
  363. </el-col>
  364. </el-row>
  365. <el-row>
  366. <el-col>
  367. <el-form-item label="本地户口" prop="local">
  368. <el-radio-group v-model="form.local">
  369. <el-radio :label="1">是</el-radio>
  370. <el-radio :label="0">否</el-radio>
  371. </el-radio-group>
  372. </el-form-item>
  373. </el-col>
  374. </el-row>
  375. <el-row>
  376. <el-col>
  377. <el-form-item label="客户类别" prop="clientType">
  378. <el-radio-group v-model="form.clientType">
  379. <el-radio v-for="item in userType" :label="item.dictSort">{{
  380. item.dictLabel
  381. }}</el-radio>
  382. </el-radio-group>
  383. </el-form-item>
  384. </el-col>
  385. </el-row>
  386. <el-row>
  387. <el-col>
  388. <el-form-item label="居住情况" prop="liveStatus">
  389. <el-radio-group v-model="form.liveStatus">
  390. <el-radio v-for="item in liveStatus" :label="item.dictSort">{{
  391. item.dictLabel
  392. }}</el-radio>
  393. </el-radio-group>
  394. </el-form-item>
  395. </el-col>
  396. </el-row>
  397. <el-form-item label="家庭地址" prop="familyAddress">
  398. <el-input v-model="form.familyAddress" placeholder="请输入家庭地址" />
  399. </el-form-item>
  400. <el-form-item label="详细地址" prop="detailAddress">
  401. <el-input v-model="form.detailAddress" placeholder="请输入详细地址" />
  402. </el-form-item>
  403. <el-form-item label="户籍地址" prop="houseAddress">
  404. <el-input v-model="form.houseAddress" placeholder="请输入户籍地址" />
  405. </el-form-item>
  406. <el-form-item label="户籍详细地址" prop="houseDetailAddress">
  407. <el-input
  408. v-model="form.houseDetailAddress"
  409. placeholder="请输入户籍详细地址"
  410. />
  411. </el-form-item>
  412. <el-form-item label="所属服务机构" prop="serviceid">
  413. <el-select v-model="form.serviceid" style="width: 100%">
  414. <el-option
  415. v-for="i in manageList"
  416. :key="i.id"
  417. :label="i.storeName"
  418. :value="i.id"
  419. ></el-option>
  420. </el-select>
  421. </el-form-item>
  422. <el-divider content-position="center">紧急联系人信息</el-divider>
  423. <el-row :gutter="10" class="mb8">
  424. <el-col :span="1.5">
  425. <el-button
  426. type="primary"
  427. icon="el-icon-plus"
  428. size="mini"
  429. @click="handleAddTEmergentPeople"
  430. >添加</el-button
  431. >
  432. </el-col>
  433. <el-col :span="1.5">
  434. <el-button
  435. type="danger"
  436. icon="el-icon-delete"
  437. size="mini"
  438. @click="handleDeleteTEmergentPeople"
  439. >删除</el-button
  440. >
  441. </el-col>
  442. </el-row>
  443. <el-table
  444. :data="tEmergentPeopleList"
  445. :row-class-name="rowTEmergentPeopleIndex"
  446. @selection-change="handleTEmergentPeopleSelectionChange"
  447. ref="tEmergentPeople"
  448. style="width: 100%; margin-bottom: 30px"
  449. >
  450. <el-table-column type="selection" width="130" align="center" />
  451. <el-table-column
  452. label="序号"
  453. align="center"
  454. prop="index"
  455. width="130"
  456. />
  457. <el-table-column
  458. label="联系人姓名"
  459. prop="name"
  460. width="225"
  461. header-align="center"
  462. align="center"
  463. >
  464. <template slot-scope="scope">
  465. <el-input
  466. v-model="scope.row.name"
  467. placeholder="请输入联系人姓名"
  468. />
  469. </template>
  470. </el-table-column>
  471. <el-table-column
  472. label="电话"
  473. prop="telno"
  474. width="225"
  475. header-align="center"
  476. align="center"
  477. >
  478. <template slot-scope="scope">
  479. <el-input
  480. v-model="scope.row.telno"
  481. type="number"
  482. placeholder="请输入电话"
  483. />
  484. </template>
  485. </el-table-column>
  486. <el-table-column
  487. label="关系"
  488. prop="relation"
  489. width="225"
  490. header-align="center"
  491. align="center"
  492. >
  493. <template slot-scope="scope">
  494. <el-select v-model="scope.row.relation">
  495. <el-option
  496. v-for="i in relation"
  497. :key="i.dictValue"
  498. :label="i.dictLabel"
  499. :value="i.dictValue"
  500. ></el-option>
  501. </el-select>
  502. </template>
  503. </el-table-column>
  504. <el-table-column
  505. label="是否接收消息"
  506. prop="isConn"
  507. width="225"
  508. header-align="center"
  509. align="center"
  510. >
  511. <template slot-scope="scope">
  512. <el-radio-group v-model="scope.row.isConn">
  513. <el-radio :label="1">是</el-radio>
  514. <el-radio :label="0">否</el-radio>
  515. </el-radio-group>
  516. </template>
  517. </el-table-column>
  518. </el-table>
  519. <el-form-item label="老人身体特征及身体状态" prop="oldmenStatus">
  520. <el-input v-model="form.oldmenStatus" placeholder="请输入" />
  521. </el-form-item>
  522. <el-form-item label="主要改造内容字段">
  523. <!-- <editor v-model="form.changeContent" :min-height="192" /> -->
  524. <el-input v-model="form.changeContent" placeholder="请输入" />
  525. </el-form-item>
  526. <el-row>
  527. <el-col :span="12">
  528. <el-form-item label="失能月数" prop="loseMonth">
  529. <el-input
  530. v-model="form.loseMonth"
  531. placeholder="请输入失能月数"
  532. class="inp"
  533. />
  534. </el-form-item>
  535. </el-col>
  536. <el-col :span="12">
  537. <el-form-item label="治疗月数" prop="treatMonth">
  538. <el-input
  539. v-model="form.treatMonth"
  540. placeholder="请输入治疗月数"
  541. class="inp"
  542. />
  543. </el-form-item>
  544. </el-col>
  545. </el-row>
  546. <el-row>
  547. <el-col :span="12">
  548. <el-form-item label="是否通过康复治疗" prop="isTreat">
  549. <el-radio-group v-model="form.isTreat">
  550. <el-radio :label="0">是</el-radio>
  551. <el-radio :label="1">否</el-radio>
  552. </el-radio-group>
  553. </el-form-item>
  554. </el-col>
  555. <el-col :span="12">
  556. <el-form-item label="服务状态" prop="serviceType">
  557. <el-select v-model="form.serviceType" class="inp">
  558. <el-option
  559. v-for="i in serviceType"
  560. :key="i.dictValue"
  561. :value="i.dictValue"
  562. :label="i.dictLabel"
  563. ></el-option>
  564. </el-select>
  565. </el-form-item>
  566. </el-col>
  567. </el-row>
  568. <el-row>
  569. <el-col :span="12">
  570. <el-form-item label="医疗保障" prop="treateSure">
  571. <el-select v-model="form.treateSure" class="inp">
  572. <el-option
  573. v-for="i in treateSure"
  574. :key="i.dictValue"
  575. :value="i.dictValue"
  576. :label="i.dictLabel"
  577. ></el-option>
  578. </el-select>
  579. </el-form-item>
  580. </el-col>
  581. <el-col :span="12">
  582. <el-form-item label="经济来源" prop="moneyCome">
  583. <el-select v-model="form.moneyCome" class="inp">
  584. <el-option
  585. v-for="i in moneyCome"
  586. :key="i.dictValue"
  587. :value="i.dictValue"
  588. :label="i.dictLabel"
  589. ></el-option>
  590. </el-select>
  591. </el-form-item>
  592. </el-col>
  593. </el-row>
  594. <el-row>
  595. <el-col :span="12">
  596. <el-form-item label="月收入" prop="moneyMonth">
  597. <el-input
  598. v-model="form.moneyMonth"
  599. placeholder="请输入月收入"
  600. class="inp"
  601. />
  602. </el-form-item>
  603. </el-col>
  604. <el-col :span="12">
  605. <el-form-item label="社保卡号" prop="cardCode">
  606. <el-input
  607. v-model="form.cardCode"
  608. placeholder="请输入社保卡号"
  609. class="inp"
  610. />
  611. </el-form-item>
  612. </el-col>
  613. </el-row>
  614. <el-form-item label="慢性疾病" prop="slowIllness">
  615. <el-checkbox-group v-model="form.checked">
  616. <el-checkbox
  617. v-for="i in slowIllness"
  618. :key="i.dictValue"
  619. :label="i.dictValue"
  620. >{{ i.dictLabel }}</el-checkbox
  621. >
  622. </el-checkbox-group>
  623. </el-form-item>
  624. <el-row>
  625. <el-col :span="12">
  626. <el-form-item label="血型" prop="bloodType">
  627. <el-select v-model="form.bloodType" class="inp">
  628. <el-option
  629. v-for="i in bloodType"
  630. :key="i.dictValue"
  631. :value="i.dictValue"
  632. :label="i.dictLabel"
  633. ></el-option>
  634. </el-select>
  635. </el-form-item>
  636. </el-col>
  637. <el-col :span="12">
  638. <el-form-item label="失能情况" prop="shiStatus">
  639. <el-select v-model="form.shiStatus" class="inp">
  640. <el-option
  641. v-for="i in shiStatus"
  642. :key="i.dictValue"
  643. :value="i.dictValue"
  644. :label="i.dictLabel"
  645. ></el-option>
  646. </el-select>
  647. </el-form-item>
  648. </el-col>
  649. </el-row>
  650. <el-row>
  651. <el-col :span="12">
  652. <el-form-item label="残疾情况" prop="disablityStatus">
  653. <el-select v-model="form.disablityStatus" class="inp">
  654. <el-option
  655. v-for="i in disablityStatus"
  656. :key="i.dictValue"
  657. :value="i.dictValue"
  658. :label="i.dictLabel"
  659. ></el-option>
  660. </el-select>
  661. </el-form-item>
  662. </el-col>
  663. <el-col :span="12">
  664. <el-form-item label="残疾等级" prop="disablityEntry">
  665. <el-select v-model="form.disablityEntry" class="inp">
  666. <el-option
  667. v-for="i in disablityEntry"
  668. :key="i.dictValue"
  669. :value="i.dictValue"
  670. :label="i.dictLabel"
  671. ></el-option>
  672. </el-select>
  673. </el-form-item>
  674. </el-col>
  675. </el-row>
  676. <el-row>
  677. <el-col :span="12">
  678. <el-form-item label="文化程度" prop="educaLevel">
  679. <el-select v-model="form.educaLevel" class="inp">
  680. <el-option
  681. v-for="i in educaLevel"
  682. :key="i.dictValue"
  683. :value="i.dictValue"
  684. :label="i.dictLabel"
  685. ></el-option>
  686. </el-select>
  687. </el-form-item>
  688. </el-col>
  689. <el-col :span="12">
  690. <el-form-item label="专业" prop="special">
  691. <el-input
  692. v-model="form.special"
  693. placeholder="请输入专业"
  694. class="inp"
  695. />
  696. </el-form-item>
  697. </el-col>
  698. </el-row>
  699. <el-row>
  700. <el-col :span="12">
  701. <el-form-item label="职称" prop="title">
  702. <el-input
  703. v-model="form.title"
  704. placeholder="请输入职称"
  705. class="inp"
  706. />
  707. </el-form-item>
  708. </el-col>
  709. <el-col :span="12">
  710. <el-form-item label="原单位" prop="unity">
  711. <el-input
  712. v-model="form.unity"
  713. placeholder="请输入原单位"
  714. class="inp"
  715. />
  716. </el-form-item>
  717. </el-col>
  718. </el-row>
  719. <el-form-item label="性格心理" prop="natureHeart">
  720. <el-input v-model="form.natureHeart" placeholder="请输入性格心理" />
  721. </el-form-item>
  722. <el-form-item label="饮食特点" prop="eatPoint">
  723. <el-input v-model="form.eatPoint" placeholder="请输入饮食特点" />
  724. </el-form-item>
  725. <el-form-item label="特长" prop="speciality">
  726. <el-checkbox-group v-model="form.specialityChecked">
  727. <el-checkbox
  728. v-for="i in speciality"
  729. :key="i.dictValue"
  730. :label="i.dictValue"
  731. >{{ i.dictLabel }}</el-checkbox
  732. >
  733. </el-checkbox-group>
  734. </el-form-item>
  735. <el-form-item label="爱好" prop="hobby">
  736. <el-checkbox-group v-model="form.hobbyChecked">
  737. <el-checkbox
  738. v-for="i in hobby"
  739. :key="i.dictValue"
  740. :label="i.dictValue"
  741. >{{ i.dictLabel }}</el-checkbox
  742. >
  743. </el-checkbox-group>
  744. </el-form-item>
  745. <el-form-item label="照片" prop="photo">
  746. <imageUpload
  747. :limit="1"
  748. url="/system/profile/photoUpload"
  749. name="file"
  750. ></imageUpload>
  751. </el-form-item>
  752. <el-form-item label="其他照片" prop="otherPhoto">
  753. <imageUpload
  754. :limit="1"
  755. url="/system/profile/otherPhotoUpload"
  756. name="file"
  757. ></imageUpload>
  758. </el-form-item>
  759. <el-form-item label="备注" prop="remarks">
  760. <el-input
  761. v-model="form.remarks"
  762. type="textarea"
  763. placeholder="请输入备注"
  764. />
  765. </el-form-item>
  766. </el-form>
  767. <div slot="footer" class="dialog-footer">
  768. <el-button type="primary" @click="submitForm">确 定</el-button>
  769. <el-button @click="cancel">取 消</el-button>
  770. </div>
  771. </el-dialog>
  772. <el-dialog
  773. :title="title"
  774. :visible.sync="toSee"
  775. width="1200px"
  776. append-to-body
  777. >
  778. <el-form
  779. ref="form"
  780. :model="form"
  781. :rules="rules"
  782. label-width="150px"
  783. disabled
  784. >
  785. <el-row>
  786. <el-col :span="12">
  787. <el-form-item label="姓名" prop="name">
  788. <el-input v-model="form.name" class="inp" />
  789. </el-form-item>
  790. </el-col>
  791. <el-col :span="12">
  792. <el-form-item label="性别" prop="gender">
  793. <div>
  794. {{ form.gender == 0 ? "男" : form.gender == 1 ? "女" : "" }}
  795. </div>
  796. </el-form-item>
  797. </el-col>
  798. </el-row>
  799. <el-row>
  800. <el-col :span="12">
  801. <el-form-item label="身份证号" prop="sfzid">
  802. <el-input v-model="form.sfzid" class="inp" />
  803. </el-form-item>
  804. </el-col>
  805. <el-col :span="12">
  806. <el-form-item label="电话1" prop="telOne">
  807. <el-input v-model="form.telOne" class="inp" />
  808. </el-form-item>
  809. </el-col>
  810. </el-row>
  811. <el-row>
  812. <el-col :span="12">
  813. <el-form-item label="出生年月" prop="birthday">
  814. <el-input v-model="form.birthday" class="inp" />
  815. </el-form-item>
  816. </el-col>
  817. <el-col :span="12">
  818. <el-form-item label="电话2" prop="telTwo">
  819. <el-input v-model="form.telTwo" class="inp" />
  820. </el-form-item>
  821. </el-col>
  822. </el-row>
  823. <el-row>
  824. <el-col :span="12">
  825. <el-form-item label="年龄" prop="age">
  826. <el-input v-model="form.age" class="inp" />
  827. </el-form-item>
  828. </el-col>
  829. <el-col :span="12">
  830. <el-form-item label="电话3" prop="telThree">
  831. <el-input v-model="form.telThree" class="inp" />
  832. </el-form-item>
  833. </el-col>
  834. </el-row>
  835. <el-row>
  836. <el-col :span="12">
  837. <el-form-item label="婚姻状况" prop="marrStatus">
  838. <div>{{ marry }}</div>
  839. </el-form-item>
  840. </el-col>
  841. <el-col :span="12">
  842. <el-form-item label="民族" prop="national">
  843. <!-- <el-input v-model="form.national" class="inp" /> -->
  844. <div>{{ minzu }}</div>
  845. </el-form-item>
  846. </el-col>
  847. </el-row>
  848. <el-row>
  849. <el-col>
  850. <el-form-item label="本地户口" prop="local">
  851. <div>
  852. {{ form.local == 0 ? "是" : form.local == 1 ? "否" : "" }}
  853. </div>
  854. </el-form-item>
  855. </el-col>
  856. </el-row>
  857. <el-row>
  858. <el-col>
  859. <el-form-item label="客户类别" prop="clientType">
  860. <div>{{ client }}</div>
  861. </el-form-item>
  862. </el-col>
  863. </el-row>
  864. <el-row>
  865. <el-col>
  866. <el-form-item label="居住情况" prop="liveStatus">
  867. <div>{{ live }}</div>
  868. </el-form-item>
  869. </el-col>
  870. </el-row>
  871. <el-form-item label="家庭地址" prop="familyAddress">
  872. <el-input v-model="form.familyAddress" />
  873. </el-form-item>
  874. <el-form-item label="详细地址" prop="detailAddress">
  875. <el-input v-model="form.detailAddress" />
  876. </el-form-item>
  877. <el-form-item label="户籍地址" prop="houseAddress">
  878. <el-input v-model="form.houseAddress" />
  879. </el-form-item>
  880. <el-form-item label="户籍详细地址" prop="houseDetailAddress">
  881. <el-input v-model="form.houseDetailAddress" />
  882. </el-form-item>
  883. <el-form-item label="所属服务机构" prop="serviceid">
  884. <div>{{ manage }}</div>
  885. </el-form-item>
  886. <el-divider content-position="center">紧急联系人信息</el-divider>
  887. <el-table
  888. :data="tEmergentPeopleList"
  889. :row-class-name="rowTEmergentPeopleIndex"
  890. ref="tEmergentPeople"
  891. style="width: 100%; margin-bottom: 30px"
  892. >
  893. <el-table-column
  894. label="联系人姓名"
  895. prop="name"
  896. width="275"
  897. header-align="center"
  898. align="center"
  899. >
  900. </el-table-column>
  901. <el-table-column
  902. label="电话"
  903. prop="telno"
  904. width="275"
  905. header-align="center"
  906. align="center"
  907. >
  908. </el-table-column>
  909. <el-table-column
  910. label="关系"
  911. prop="relation"
  912. width="275"
  913. header-align="center"
  914. align="center"
  915. >
  916. </el-table-column>
  917. <el-table-column
  918. label="是否接收消息"
  919. prop="isConn"
  920. width="275"
  921. header-align="center"
  922. align="center"
  923. >
  924. </el-table-column>
  925. </el-table>
  926. <el-form-item label="老人身体特征及身体状态" prop="oldmenStatus">
  927. <el-input v-model="form.oldmenStatus" />
  928. </el-form-item>
  929. <el-form-item label="主要改造内容字段">
  930. <!-- <editor v-model="form.changeContent" :min-height="192" /> -->
  931. <el-input v-model="form.changeContent" />
  932. </el-form-item>
  933. <el-row>
  934. <el-col :span="12">
  935. <el-form-item label="失能月数" prop="loseMonth">
  936. <el-input v-model="form.loseMonth" class="inp" />
  937. </el-form-item>
  938. </el-col>
  939. <el-col :span="12">
  940. <el-form-item label="治疗月数" prop="treatMonth">
  941. <el-input v-model="form.treatMonth" class="inp" />
  942. </el-form-item>
  943. </el-col>
  944. </el-row>
  945. <el-row>
  946. <el-col :span="12">
  947. <el-form-item label="是否通过康复治疗" prop="isTreat">
  948. <div>
  949. {{ form.isTreat == 0 ? "是" : form.isTreat == 1 ? "否" : "" }}
  950. </div>
  951. </el-form-item>
  952. </el-col>
  953. <el-col :span="12">
  954. <el-form-item label="服务类型" prop="serviceType">
  955. <div>{{ service }}</div>
  956. </el-form-item>
  957. </el-col>
  958. </el-row>
  959. <el-row>
  960. <el-col :span="12">
  961. <el-form-item label="医疗保障" prop="treateSure">
  962. <div>{{ treate }}</div>
  963. </el-form-item>
  964. </el-col>
  965. <el-col :span="12">
  966. <el-form-item label="经济来源" prop="moneyCome">
  967. <div>{{ money }}</div>
  968. </el-form-item>
  969. </el-col>
  970. </el-row>
  971. <el-row>
  972. <el-col :span="12">
  973. <el-form-item label="月收入" prop="moneyMonth">
  974. <el-input v-model="form.moneyMonth" class="inp" />
  975. </el-form-item>
  976. </el-col>
  977. <el-col :span="12">
  978. <el-form-item label="社保卡号" prop="cardCode">
  979. <el-input v-model="form.cardCode" class="inp" />
  980. </el-form-item>
  981. </el-col>
  982. </el-row>
  983. <el-form-item label="慢性疾病" prop="slowIllness">
  984. <div>{{ illness }}</div>
  985. </el-form-item>
  986. <el-row>
  987. <el-col :span="12">
  988. <el-form-item label="血型" prop="bloodType">
  989. <div>{{ blood }}</div>
  990. </el-form-item>
  991. </el-col>
  992. <el-col :span="12">
  993. <el-form-item label="失能情况" prop="shiStatus">
  994. <div>{{ shi }}</div>
  995. </el-form-item>
  996. </el-col>
  997. </el-row>
  998. <el-row>
  999. <el-col :span="12">
  1000. <el-form-item label="残疾情况" prop="disablityStatus">
  1001. <div>{{ dStatus }}</div>
  1002. </el-form-item>
  1003. </el-col>
  1004. <el-col :span="12">
  1005. <el-form-item label="残疾等级" prop="disablityEntry">
  1006. <div>{{ dEntry }}</div>
  1007. </el-form-item>
  1008. </el-col>
  1009. </el-row>
  1010. <el-row>
  1011. <el-col :span="12">
  1012. <el-form-item label="文化程度" prop="educaLevel">
  1013. <div>{{ educa }}</div>
  1014. </el-form-item>
  1015. </el-col>
  1016. <el-col :span="12">
  1017. <el-form-item label="专业" prop="special">
  1018. <el-input v-model="form.special" class="inp" />
  1019. </el-form-item>
  1020. </el-col>
  1021. </el-row>
  1022. <el-row>
  1023. <el-col :span="12">
  1024. <el-form-item label="职称" prop="title">
  1025. <el-input v-model="form.title" class="inp" />
  1026. </el-form-item>
  1027. </el-col>
  1028. <el-col :span="12">
  1029. <el-form-item label="原单位" prop="unity">
  1030. <el-input v-model="form.unity" class="inp" />
  1031. </el-form-item>
  1032. </el-col>
  1033. </el-row>
  1034. <el-form-item label="性格心理" prop="natureHeart">
  1035. <el-input v-model="form.natureHeart" />
  1036. </el-form-item>
  1037. <el-form-item label="饮食特点" prop="eatPoint">
  1038. <el-input v-model="form.eatPoint" />
  1039. </el-form-item>
  1040. <el-form-item label="特长" prop="speciality">
  1041. <div>{{ forte }}</div>
  1042. </el-form-item>
  1043. <el-form-item label="爱好" prop="hobby">
  1044. <div>{{ aihao }}</div>
  1045. </el-form-item>
  1046. <el-form-item label="照片" prop="photo">
  1047. <el-image
  1048. style="width: 150px; height: 200px"
  1049. :src="form.photo"
  1050. :preview-src-list="[form.photo]"
  1051. >
  1052. </el-image>
  1053. </el-form-item>
  1054. <el-form-item label="其他照片" prop="otherPhoto">
  1055. <el-image
  1056. style="width: 150px; height: 200px"
  1057. :src="form.otherPhoto"
  1058. :preview-src-list="[form.otherPhoto]"
  1059. >
  1060. </el-image>
  1061. </el-form-item>
  1062. <el-form-item label="备注" prop="remarks">
  1063. <el-input v-model="form.remarks" type="textarea" />
  1064. </el-form-item>
  1065. </el-form>
  1066. <div slot="footer" class="dialog-footer">
  1067. <el-button type="primary" @click="submitForm">确 定</el-button>
  1068. <el-button @click="cancel">取 消</el-button>
  1069. </div>
  1070. </el-dialog>
  1071. <el-dialog :visible.sync="openToUpload" width="630px" append-to-body>
  1072. <el-upload
  1073. class="upload-demo"
  1074. drag
  1075. :action="uploadFileUrl"
  1076. multiple
  1077. style="text-align: center"
  1078. :before-upload="handleBeforeUpload"
  1079. :headers="headers"
  1080. :on-success="handleUploadSuccess"
  1081. ref="fileUpload"
  1082. >
  1083. <i class="el-icon-upload"></i>
  1084. <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
  1085. <div
  1086. class="el-upload__tip"
  1087. slot="tip"
  1088. style="font-size: 15px; line-height: 15px"
  1089. >
  1090. 仅允许导入xls、xlsx格式文件
  1091. <el-button type="text" @click="downloadTemplate">下载模板</el-button>
  1092. </div>
  1093. </el-upload>
  1094. </el-dialog>
  1095. </div>
  1096. </template>
  1097. <script>
  1098. import {
  1099. listProfile,
  1100. getProfile,
  1101. delProfile,
  1102. addProfile,
  1103. updateProfile,
  1104. } from "@/api/system/profile";
  1105. import { listManage } from "@/api/system/manage";
  1106. import imageUpload from "@/components/ImageUpload";
  1107. import { getToken } from "@/utils/auth";
  1108. export default {
  1109. name: "Profile",
  1110. data() {
  1111. return {
  1112. openToUpload: false,
  1113. headers: {
  1114. Authorization: "Bearer " + getToken(),
  1115. },
  1116. fileType: ["xlsx", "xls"],
  1117. uploadFileUrl:
  1118. process.env.VUE_APP_BASE_API + "/system/profile/importData",
  1119. // 遮罩层
  1120. loading: true,
  1121. // 选中数组
  1122. ids: [],
  1123. // 子表选中数据
  1124. checkedTEmergentPeople: [],
  1125. // 非单个禁用
  1126. single: true,
  1127. // 非多个禁用
  1128. multiple: true,
  1129. // 显示搜索条件
  1130. showSearch: true,
  1131. // 总条数
  1132. total: 0,
  1133. // 用户档案表格数据
  1134. profileList: [],
  1135. // 紧急联系人表格数据
  1136. tEmergentPeopleList: [],
  1137. // 弹出层标题
  1138. title: "",
  1139. // 是否显示弹出层
  1140. open: false,
  1141. // 查询参数
  1142. queryParams: {
  1143. pageNum: 1,
  1144. pageSize: 10,
  1145. name: null,
  1146. gender: null,
  1147. sfzid: null,
  1148. telOne: null,
  1149. telTwo: null,
  1150. telThree: null,
  1151. birthday: null,
  1152. age: null,
  1153. marrStatus: null,
  1154. national: null,
  1155. local: null,
  1156. clientType: null,
  1157. liveStatus: null,
  1158. familyAddress: null,
  1159. detailAddress: null,
  1160. houseAddress: null,
  1161. houseDetailAddress: null,
  1162. serviceid: null,
  1163. oldmenStatus: null,
  1164. changeContent: null,
  1165. loseMonth: null,
  1166. treatMonth: null,
  1167. isTreat: null,
  1168. serviceType: null,
  1169. treateSure: null,
  1170. moneyCome: null,
  1171. moneyMonth: null,
  1172. cardCode: null,
  1173. slowIllness: null,
  1174. bloodType: null,
  1175. shiStatus: null,
  1176. disablityStatus: null,
  1177. disablityEntry: null,
  1178. educaLevel: null,
  1179. special: null,
  1180. title: null,
  1181. unity: null,
  1182. natureHeart: null,
  1183. eatPoint: null,
  1184. speciality: null,
  1185. hobby: null,
  1186. photo: null,
  1187. otherPhoto: null,
  1188. remarks: null,
  1189. createTime: null,
  1190. },
  1191. // 表单参数
  1192. form: {},
  1193. // 表单校验
  1194. rules: {
  1195. name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
  1196. // gender: [{ required: true, message: "请选择性别", trigger: "change" }],
  1197. sfzid: [
  1198. {
  1199. required: true,
  1200. // message: "请输入身份证号",
  1201. trigger: "blur",
  1202. validator: (rule, value, callback) => {
  1203. const regex =
  1204. /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
  1205. if (!value || value === "" || value === undefined) {
  1206. callback(new Error("请输入身份证号"));
  1207. } else if (
  1208. (value.length === 15 || value.length === 18) &&
  1209. regex.test(value)
  1210. ) {
  1211. callback();
  1212. } else {
  1213. callback(new Error("请输入正确的身份证号"));
  1214. }
  1215. },
  1216. },
  1217. { max: 18, msg: "最大为18位" },
  1218. ],
  1219. telOne: [
  1220. {
  1221. required: true,
  1222. // message: "请输入电话",
  1223. trigger: "blur",
  1224. validator: (rule, value, callback) => {
  1225. if (value === "") {
  1226. callback(new Error("请输入手机号"));
  1227. } else {
  1228. let regIdCard = /^1\d{10}$/;
  1229. if (regIdCard.test(value)) {
  1230. callback();
  1231. } else {
  1232. callback(new Error("请输入正确11位手机号"));
  1233. }
  1234. }
  1235. },
  1236. },
  1237. ],
  1238. // birthday: [
  1239. // { required: true, message: "请选择出生日期", trigger: "change" },
  1240. // ],
  1241. clientType: [
  1242. { required: true, message: "请选择客户类别", trigger: "change" },
  1243. ],
  1244. familyAddress: [
  1245. { required: true, message: "请输入家庭地址", trigger: "blur" },
  1246. ],
  1247. serviceType: [
  1248. { required: true, message: "请选择服务状态", trigger: "change" },
  1249. ],
  1250. },
  1251. marryStatus: [],
  1252. userType: [],
  1253. liveStatus: [],
  1254. manageList: [],
  1255. relation: [],
  1256. serviceType: [],
  1257. treateSure: [],
  1258. moneyCome: [],
  1259. slowIllness: [],
  1260. checked: [],
  1261. bloodType: [],
  1262. shiStatus: [],
  1263. disablityStatus: [],
  1264. disablityEntry: [],
  1265. educaLevel: [],
  1266. speciality: [],
  1267. specialityChecked: [],
  1268. hobby: [],
  1269. hobbyChecked: [],
  1270. toSee: false,
  1271. marry: null,
  1272. client: null,
  1273. live: null,
  1274. manage: null,
  1275. service: null,
  1276. treate: null,
  1277. money: null,
  1278. illness: null,
  1279. blood: null,
  1280. shi: null,
  1281. dStatus: null,
  1282. dEntry: null,
  1283. educa: null,
  1284. forte: null,
  1285. aihao: null,
  1286. nation: [],
  1287. minzu: null,
  1288. sub_flag: false,
  1289. };
  1290. },
  1291. async created() {
  1292. await this.getdict();
  1293. this.getList();
  1294. this.getDicts("sys_relation").then((res) => {
  1295. this.relation = res.data;
  1296. });
  1297. this.getManage();
  1298. },
  1299. watch: {
  1300. "form.national": {
  1301. handler(val) {
  1302. if (val) {
  1303. this.minzu = this.nation[val].dictLabel;
  1304. }
  1305. },
  1306. },
  1307. "form.hobby": {
  1308. handler(val) {
  1309. if (val) {
  1310. let arr = JSON.parse(val);
  1311. this.aihao = [];
  1312. arr.map((item) => {
  1313. this.aihao.push(this.hobby[item].dictLabel);
  1314. });
  1315. this.aihao = this.aihao.join("、");
  1316. }
  1317. },
  1318. },
  1319. "form.speciality": {
  1320. handler(val) {
  1321. if (val) {
  1322. let arr = JSON.parse(val);
  1323. this.forte = [];
  1324. arr.map((item) => {
  1325. this.forte.push(this.speciality[item].dictLabel);
  1326. });
  1327. this.forte = this.forte.join("、");
  1328. }
  1329. },
  1330. },
  1331. "form.checked": {
  1332. handler(val) {
  1333. this.form.slowIllness = JSON.stringify(val);
  1334. },
  1335. },
  1336. "form.specialityChecked": {
  1337. handler(val) {
  1338. this.form.speciality = JSON.stringify(val);
  1339. },
  1340. },
  1341. "form.hobbyChecked": {
  1342. handler(val) {
  1343. this.form.hobby = JSON.stringify(val);
  1344. },
  1345. },
  1346. "form.marrStatus": {
  1347. handler(val) {
  1348. if (val) {
  1349. this.marry = this.marryStatus[val].dictLabel;
  1350. }
  1351. },
  1352. },
  1353. "form.clientType": {
  1354. handler(val) {
  1355. if (val) {
  1356. this.client = this.userType[val].dictLabel;
  1357. }
  1358. },
  1359. },
  1360. "form.liveStatus": {
  1361. handler(val) {
  1362. if (val) {
  1363. this.live = this.liveStatus[val].dictLabel;
  1364. }
  1365. },
  1366. },
  1367. "form.serviceid": {
  1368. handler(val) {
  1369. if (val) {
  1370. this.manageList.map((item) => {
  1371. if (item.id == val) {
  1372. this.manage = item.storeName;
  1373. }
  1374. });
  1375. }
  1376. },
  1377. },
  1378. "form.serviceType": {
  1379. handler(val) {
  1380. if (val) {
  1381. this.service = this.serviceType[val].dictLabel;
  1382. }
  1383. },
  1384. },
  1385. "form.treateSure": {
  1386. handler(val) {
  1387. if (val) {
  1388. this.treate = this.treateSure[val].dictLabel;
  1389. }
  1390. },
  1391. },
  1392. "form.moneyCome": {
  1393. handler(val) {
  1394. if (val) {
  1395. this.money = this.moneyCome[val].dictLabel;
  1396. }
  1397. },
  1398. },
  1399. "form.slowIllness": {
  1400. handler(val) {
  1401. if (val) {
  1402. let arr = JSON.parse(val);
  1403. this.illness = [];
  1404. arr.map((item) => {
  1405. this.illness.push(this.slowIllness[item].dictLabel);
  1406. });
  1407. this.illness = this.illness.join("、");
  1408. }
  1409. },
  1410. },
  1411. "form.bloodType": {
  1412. handler(val) {
  1413. if (val) {
  1414. this.blood = this.bloodType[val].dictLabel;
  1415. }
  1416. },
  1417. },
  1418. "form.shiStatus": {
  1419. handler(val) {
  1420. if (val) {
  1421. this.shi = this.shiStatus[val].dictLabel;
  1422. }
  1423. },
  1424. },
  1425. "form.disablityStatus": {
  1426. handler(val) {
  1427. if (val) {
  1428. this.dStatus = this.disablityStatus[val].dictLabel;
  1429. }
  1430. },
  1431. },
  1432. "form.disablityEntry": {
  1433. handler(val) {
  1434. if (val) {
  1435. this.dEntry = this.disablityEntry[val].dictLabel;
  1436. }
  1437. },
  1438. },
  1439. "form.educaLevel": {
  1440. handler(val) {
  1441. if (val) {
  1442. this.educa = this.educaLevel[val].dictLabel;
  1443. }
  1444. },
  1445. },
  1446. },
  1447. methods: {
  1448. decodeSFZ(e) {
  1449. let sfz = e.target.value;
  1450. if (sfz.length == 18) {
  1451. let year = sfz.slice(6, 10);
  1452. let month = sfz.slice(10, 12);
  1453. let day = sfz.slice(12, 14);
  1454. let nowYear = new Date().getFullYear();
  1455. let gender = sfz.substring(16, 17)
  1456. this.form.birthday = `${year}-${month}-${day}`;
  1457. this.form.age = nowYear - year;
  1458. this.form.gender = gender % 2 == 1 ? 0 : 1
  1459. }
  1460. },
  1461. downloadTemplate() {
  1462. this.download(
  1463. "system/profile/importTemplate",
  1464. {},
  1465. `user_template_${new Date().getTime()}.xlsx`
  1466. );
  1467. },
  1468. handleUploadSuccess(res, file) {
  1469. if (res.code != 200) {
  1470. this.$modal.msgError(`${res.msg}`);
  1471. this.$modal.closeLoading();
  1472. this.$refs.fileUpload.handleRemove(file);
  1473. } else {
  1474. this.$modal.msgSuccess("导入成功");
  1475. this.$modal.closeLoading();
  1476. this.openToUpload = false;
  1477. this.resetQuery();
  1478. }
  1479. },
  1480. handleBeforeUpload(file) {
  1481. // 校检文件类型
  1482. if (this.fileType) {
  1483. const fileName = file.name.split(".");
  1484. const fileExt = fileName[fileName.length - 1];
  1485. const isTypeOk = this.fileType.indexOf(fileExt) >= 0;
  1486. if (!isTypeOk) {
  1487. this.$modal.msgError(
  1488. `文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`
  1489. );
  1490. return false;
  1491. }
  1492. }
  1493. this.$modal.loading("正在上传文件,请稍候...");
  1494. return true;
  1495. },
  1496. getManage() {
  1497. listManage({
  1498. page: 1,
  1499. size: 999,
  1500. storeName: null,
  1501. }).then((res) => {
  1502. this.manageList = res.rows;
  1503. });
  1504. },
  1505. async getdict() {
  1506. let { data: marryStatus } = await this.getDicts("sys_marry_status");
  1507. marryStatus.map((item) => {
  1508. item.dictValue = Number(item.dictValue);
  1509. });
  1510. this.marryStatus = marryStatus;
  1511. let { data: nation } = await this.getDicts("sys_national");
  1512. nation.map((item) => {
  1513. item.dictValue = Number(item.dictValue);
  1514. });
  1515. this.nation = nation;
  1516. let { data: userType } = await this.getDicts("sys_user_type");
  1517. userType.map((item) => {
  1518. item.dictValue = Number(item.dictValue);
  1519. });
  1520. this.userType = userType;
  1521. let { data: liveStatus } = await this.getDicts("sys_live_status");
  1522. liveStatus.map((item) => {
  1523. item.dictValue = Number(item.dictValue);
  1524. });
  1525. this.liveStatus = liveStatus;
  1526. let { data: serviceType } = await this.getDicts("sys_service_type");
  1527. serviceType.map((item) => {
  1528. item.dictValue = Number(item.dictValue);
  1529. });
  1530. this.serviceType = serviceType;
  1531. let { data: treateSure } = await this.getDicts("sys_treate_sure");
  1532. treateSure.map((item) => {
  1533. item.dictValue = Number(item.dictValue);
  1534. });
  1535. this.treateSure = treateSure;
  1536. let { data: moneyCome } = await this.getDicts("sys_money_come");
  1537. moneyCome.map((item) => {
  1538. item.dictValue = Number(item.dictValue);
  1539. });
  1540. this.moneyCome = moneyCome;
  1541. let { data: bloodType } = await this.getDicts("sys_blood_type");
  1542. bloodType.map((item) => {
  1543. item.dictValue = Number(item.dictValue);
  1544. });
  1545. this.bloodType = bloodType;
  1546. let { data: disablityStatus } = await this.getDicts(
  1547. "sys_disablity_status"
  1548. );
  1549. disablityStatus.map((item) => {
  1550. item.dictValue = Number(item.dictValue);
  1551. });
  1552. this.disablityStatus = disablityStatus;
  1553. let { data: disablityEntry } = await this.getDicts("sys_disablity_entry");
  1554. disablityEntry.map((item) => {
  1555. item.dictValue = Number(item.dictValue);
  1556. });
  1557. this.disablityEntry = disablityEntry;
  1558. let { data: educaLevel } = await this.getDicts("sys_educa_level");
  1559. educaLevel.map((item) => {
  1560. item.dictValue = Number(item.dictValue);
  1561. });
  1562. this.educaLevel = educaLevel;
  1563. let { data: shiStatus } = await this.getDicts("sys_shi_status");
  1564. shiStatus.map((item) => {
  1565. item.dictValue = Number(item.dictValue);
  1566. });
  1567. this.shiStatus = shiStatus;
  1568. let { data: hobby } = await this.getDicts("sys_hobby");
  1569. this.hobby = hobby;
  1570. let { data: speciality } = await this.getDicts("sys_speciality");
  1571. this.speciality = speciality;
  1572. let { data: slowIllness } = await this.getDicts("sys_slow_illness");
  1573. // slowIllness.map(item => {
  1574. // item.dictValue = Number(item.dictValue)
  1575. // })
  1576. this.slowIllness = slowIllness;
  1577. },
  1578. /** 查询用户档案列表 */
  1579. getList() {
  1580. this.loading = true;
  1581. listProfile(this.queryParams).then((response) => {
  1582. this.profileList = response.rows;
  1583. this.profileList.map((item) => {
  1584. item.sex = item.gender == 0 ? "男" : item.gender == 1 ? "女" : "";
  1585. item.local = item.local == 1 ? "是" : item.local == 0 ? "否" : "";
  1586. item.isTreat =
  1587. item.isTreat == 1 ? "是" : item.isTreat == 0 ? "否" : "";
  1588. if (item.marrStatus != null) {
  1589. item.marrystatus = this.marryStatus[item.marrStatus].dictLabel;
  1590. }
  1591. if (item.national != null) {
  1592. item.nation = this.nation[item.national].dictLabel;
  1593. }
  1594. if (item.clientType != null) {
  1595. item.clienttype = this.userType[item.clientType].dictLabel;
  1596. }
  1597. if (item.liveStatus != null) {
  1598. item.livestatus = this.liveStatus[item.liveStatus].dictLabel;
  1599. }
  1600. if (item.serviceType != null) {
  1601. item.servicetype = this.serviceType[item.serviceType].dictLabel;
  1602. }
  1603. if (item.treateSure != null) {
  1604. item.treatesure = this.treateSure[item.treateSure].dictLabel;
  1605. }
  1606. if (item.moneyCome != null) {
  1607. item.moneycome = this.moneyCome[item.moneyCome].dictLabel;
  1608. }
  1609. if (item.bloodType != null) {
  1610. item.bloodtype = this.bloodType[item.bloodType].dictLabel;
  1611. }
  1612. if (item.disablityStatus != null) {
  1613. item.disablitystatus =
  1614. this.disablityStatus[item.disablityStatus].dictLabel;
  1615. }
  1616. if (item.disablityEntry != null) {
  1617. item.disablityentry =
  1618. this.disablityEntry[item.disablityEntry].dictLabel;
  1619. }
  1620. if (item.educaLevel != null) {
  1621. item.educalevel = this.educaLevel[item.educaLevel].dictLabel;
  1622. }
  1623. if (item.shiStatus != null) {
  1624. item.shistatus = this.shiStatus[item.shiStatus].dictLabel;
  1625. }
  1626. if (item.slowIllness != null && item.slowIllness != "") {
  1627. let arr = JSON.parse(item.slowIllness);
  1628. item.checked = JSON.parse(JSON.stringify(arr));
  1629. item.slowillness = [];
  1630. arr.map((i) => {
  1631. item.slowillness.push(this.slowIllness[i].dictLabel);
  1632. });
  1633. item.slowillness = item.slowillness.join("、");
  1634. }
  1635. if (item.speciality != null && item.speciality != "") {
  1636. let arr = JSON.parse(item.speciality);
  1637. item.forte = [];
  1638. arr.map((i) => {
  1639. item.forte.push(this.speciality[i].dictLabel);
  1640. });
  1641. item.forte = item.forte.join("、");
  1642. }
  1643. if (item.hobby != null && item.hobby != "") {
  1644. let arr = JSON.parse(item.hobby);
  1645. item.aihao = [];
  1646. arr.map((i) => {
  1647. item.aihao.push(this.hobby[i].dictLabel);
  1648. });
  1649. item.aihao = item.aihao.join("、");
  1650. }
  1651. if (item.serviceid != null) {
  1652. this.manageList.map((i) => {
  1653. if (i.id == item.serviceid) {
  1654. item.service = i.storeName;
  1655. }
  1656. });
  1657. }
  1658. });
  1659. this.total = response.total;
  1660. this.loading = false;
  1661. });
  1662. },
  1663. // 取消按钮
  1664. cancel() {
  1665. this.open = false;
  1666. this.reset();
  1667. },
  1668. // 表单重置
  1669. reset() {
  1670. this.form = {
  1671. id: null,
  1672. name: null,
  1673. gender: null,
  1674. sfzid: null,
  1675. telOne: null,
  1676. telTwo: null,
  1677. telThree: null,
  1678. birthday: null,
  1679. age: null,
  1680. marrStatus: null,
  1681. national: null,
  1682. local: null,
  1683. clientType: null,
  1684. liveStatus: null,
  1685. familyAddress: null,
  1686. detailAddress: null,
  1687. houseAddress: null,
  1688. houseDetailAddress: null,
  1689. serviceid: null,
  1690. oldmenStatus: null,
  1691. changeContent: null,
  1692. loseMonth: null,
  1693. treatMonth: null,
  1694. isTreat: null,
  1695. serviceType: null,
  1696. treateSure: null,
  1697. moneyCome: null,
  1698. moneyMonth: null,
  1699. cardCode: null,
  1700. slowIllness: null,
  1701. bloodType: null,
  1702. shiStatus: null,
  1703. disablityStatus: null,
  1704. disablityEntry: null,
  1705. educaLevel: null,
  1706. special: null,
  1707. title: null,
  1708. unity: null,
  1709. natureHeart: null,
  1710. eatPoint: null,
  1711. speciality: null,
  1712. hobby: null,
  1713. photo: null,
  1714. otherPhoto: null,
  1715. remarks: null,
  1716. createTime: null,
  1717. checked: [],
  1718. specialityChecked: [],
  1719. hobbyChecked: [],
  1720. };
  1721. this.tEmergentPeopleList = [];
  1722. this.resetForm("form");
  1723. },
  1724. /** 搜索按钮操作 */
  1725. handleQuery() {
  1726. this.queryParams.pageNum = 1;
  1727. this.getList();
  1728. },
  1729. /** 重置按钮操作 */
  1730. resetQuery() {
  1731. this.resetForm("queryForm");
  1732. this.handleQuery();
  1733. },
  1734. // 多选框选中数据
  1735. handleSelectionChange(selection) {
  1736. this.ids = selection.map((item) => item.id);
  1737. this.single = selection.length !== 1;
  1738. this.multiple = !selection.length;
  1739. },
  1740. /** 新增按钮操作 */
  1741. handleAdd() {
  1742. this.reset();
  1743. this.open = true;
  1744. this.form.serviceType = 0;
  1745. this.title = "添加用户档案";
  1746. },
  1747. /** 修改按钮操作 */
  1748. handleUpdate(row) {
  1749. this.reset();
  1750. const id = row.id || this.ids;
  1751. getProfile(id).then((response) => {
  1752. if (response.data.slowIllness)
  1753. response.data.checked = JSON.parse(response.data.slowIllness);
  1754. if (response.data.speciality)
  1755. response.data.specialityChecked = JSON.parse(
  1756. response.data.speciality
  1757. );
  1758. if (response.data.hobby)
  1759. response.data.hobbyChecked = JSON.parse(response.data.hobby);
  1760. console.log(response.data, 8888);
  1761. this.form = response.data;
  1762. console.log(this.form);
  1763. this.tEmergentPeopleList = response.data.temergentPeopleList;
  1764. this.open = true;
  1765. this.title = "修改用户档案";
  1766. });
  1767. },
  1768. handleSee(row) {
  1769. this.reset();
  1770. const id = row.id;
  1771. getProfile(id).then((response) => {
  1772. this.form = response.data;
  1773. this.tEmergentPeopleList = response.data.temergentPeopleList;
  1774. if (this.tEmergentPeopleList.length) {
  1775. this.tEmergentPeopleList.map((item) => {
  1776. item.relation = this.relation[item.relation].dictLabel;
  1777. item.isConn =
  1778. item.isConn == 1 ? "是" : item.isConn == 0 ? "否" : "";
  1779. });
  1780. }
  1781. this.toSee = true;
  1782. this.title = "查看用户档案";
  1783. });
  1784. },
  1785. /** 提交按钮 */
  1786. submitForm() {
  1787. // if (this.sub_flag) {
  1788. // return
  1789. // }
  1790. // this.sub_flag = true
  1791. this.$refs["form"].validate((valid) => {
  1792. this.form.temergentPeopleList = this.tEmergentPeopleList;
  1793. if (valid) {
  1794. if (this.form.id != null) {
  1795. updateProfile(this.form).then(
  1796. (response) => {
  1797. this.$modal.msgSuccess("修改成功");
  1798. this.open = false;
  1799. // this.sub_flag = false
  1800. this.getList();
  1801. },
  1802. (err) => {
  1803. // this.sub_flag = false
  1804. }
  1805. );
  1806. } else {
  1807. addProfile(this.form).then(
  1808. (response) => {
  1809. this.$modal.msgSuccess("新增成功");
  1810. this.open = false;
  1811. // this.sub_flag = false
  1812. this.getList();
  1813. },
  1814. (err) => {
  1815. // this.sub_flag = false
  1816. }
  1817. );
  1818. }
  1819. }else{
  1820. this.$modal.msgError("请完善用户信息");
  1821. }
  1822. });
  1823. },
  1824. /** 删除按钮操作 */
  1825. handleDelete(row) {
  1826. const ids = row.id || this.ids;
  1827. this.$modal
  1828. .confirm('是否确认删除用户档案编号为"' + ids + '"的数据项?')
  1829. .then(function () {
  1830. return delProfile(ids);
  1831. })
  1832. .then(() => {
  1833. this.getList();
  1834. this.$modal.msgSuccess("删除成功");
  1835. })
  1836. .catch(() => {});
  1837. },
  1838. /** 紧急联系人序号 */
  1839. rowTEmergentPeopleIndex({ row, rowIndex }) {
  1840. row.index = rowIndex + 1;
  1841. },
  1842. /** 紧急联系人添加按钮操作 */
  1843. handleAddTEmergentPeople() {
  1844. if (this.tEmergentPeopleList.length >= 2) {
  1845. this.$modal.msgError("最多可添加两个");
  1846. return;
  1847. }
  1848. let obj = {};
  1849. obj.name = "";
  1850. obj.telno = "";
  1851. obj.relation = "";
  1852. obj.isConn = "";
  1853. this.tEmergentPeopleList.push(obj);
  1854. },
  1855. /** 紧急联系人删除按钮操作 */
  1856. handleDeleteTEmergentPeople() {
  1857. if (this.checkedTEmergentPeople.length == 0) {
  1858. this.$modal.msgError("请先选择要删除的紧急联系人数据");
  1859. } else {
  1860. const tEmergentPeopleList = this.tEmergentPeopleList;
  1861. const checkedTEmergentPeople = this.checkedTEmergentPeople;
  1862. this.tEmergentPeopleList = tEmergentPeopleList.filter(function (item) {
  1863. return checkedTEmergentPeople.indexOf(item.index) == -1;
  1864. });
  1865. }
  1866. },
  1867. /** 复选框选中数据 */
  1868. handleTEmergentPeopleSelectionChange(selection) {
  1869. this.checkedTEmergentPeople = selection.map((item) => item.index);
  1870. },
  1871. /** 导出按钮操作 */
  1872. handleExport() {
  1873. this.download(
  1874. "system/profile/export",
  1875. {
  1876. ...this.queryParams,
  1877. },
  1878. `profile_${new Date().getTime()}.xlsx`
  1879. );
  1880. },
  1881. handleUpload() {
  1882. this.openToUpload = true;
  1883. },
  1884. },
  1885. };
  1886. </script>
  1887. <style scoped>
  1888. .inp /deep/ .el-input__inner {
  1889. color: #000 !important;
  1890. /* cursor: pointer; */
  1891. }
  1892. </style>