index.vue 53 KB

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