BaseFormMeasureRelation.vue 37 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037
  1. <template>
  2. <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
  3. <a-row :gutter="48" slot="extra">
  4. <a-col :md="48" :sm="48">
  5. <span class="table-page-search-submitButtons" style="float: right">
  6. <a-button type="primary" @click="save()">提交</a-button>
  7. <a-button style="margin-left: 8px" @click="handleCancel()">返回</a-button>
  8. </span>
  9. </a-col>
  10. </a-row>
  11. <title-divider title="基本信息" width="90px"></title-divider>
  12. <a-form :form="form">
  13. <a-form-item v-show="false" >
  14. <a-input v-decorator="['id']" type="hidden"/>
  15. <a-input v-decorator="['parentId']" type="hidden"/>
  16. </a-form-item>
  17. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  18. <a-col :lg="12" :md="24" :sm="24">
  19. <a-form-item
  20. label="设备(新号)"
  21. :labelCol="BaseTool.Constant.labelCol"
  22. :wrapperCol="BaseTool.Constant.wrapperCol"
  23. >
  24. <a-input
  25. disabled
  26. style='width:70%'
  27. v-decorator="['no', {rules: [{required: true, message: '请选择关联设备'}]}]" />
  28. <a-button style="width: 30%" type="primary" @click="handleSbSelect">选择</a-button>
  29. </a-form-item>
  30. </a-col>
  31. <a-col :lg="12" :md="24" :sm="24">
  32. <a-form-item
  33. label="设备(旧号)"
  34. :labelCol="BaseTool.Constant.labelCol"
  35. :wrapperCol="BaseTool.Constant.wrapperCol"
  36. >
  37. <a-input
  38. disabled
  39. v-decorator="['zbh']" />
  40. </a-form-item>
  41. </a-col>
  42. </a-row>
  43. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  44. <a-col :lg="12" :md="24" :sm="24">
  45. <a-form-item
  46. label="设备名称"
  47. :labelCol="BaseTool.Constant.labelCol"
  48. :wrapperCol="BaseTool.Constant.wrapperCol"
  49. >
  50. <a-input
  51. disabled
  52. v-decorator="['name']" />
  53. </a-form-item>
  54. </a-col>
  55. <a-col :lg="12" :md="24" :sm="24">
  56. <a-form-item
  57. label="生产厂商"
  58. :labelCol="BaseTool.Constant.labelCol"
  59. :wrapperCol="BaseTool.Constant.wrapperCol"
  60. >
  61. <a-input
  62. disabled
  63. v-decorator="['producerName']" />
  64. </a-form-item>
  65. </a-col>
  66. <a-col :lg="12" :md="24" :sm="24">
  67. <a-form-item
  68. label="型号"
  69. :labelCol="BaseTool.Constant.labelCol"
  70. :wrapperCol="BaseTool.Constant.wrapperCol"
  71. >
  72. <a-input
  73. v-decorator="['model']" />
  74. </a-form-item>
  75. </a-col>
  76. <a-col :lg="12" :md="24" :sm="24">
  77. <a-form-item
  78. label="出厂编号"
  79. :labelCol="BaseTool.Constant.labelCol"
  80. :wrapperCol="BaseTool.Constant.wrapperCol"
  81. >
  82. <a-input
  83. v-decorator="['zzh']" />
  84. </a-form-item>
  85. </a-col>
  86. <a-col :lg="12" :md="24" :sm="24">
  87. <a-form-item
  88. label="使用部门"
  89. :labelCol="BaseTool.Constant.labelCol"
  90. :wrapperCol="BaseTool.Constant.wrapperCol"
  91. >
  92. <a-select v-decorator="['saveUser']" placeholder="请选择">
  93. <a-select-option
  94. v-for="({userId, realName}) in userList"
  95. :key="userId"
  96. :label="realName"
  97. :value="userId">{{ realName }}
  98. </a-select-option>
  99. </a-select>
  100. </a-form-item>
  101. </a-col>
  102. <a-col :lg="12" :md="24" :sm="24">
  103. <a-form-item
  104. label="使用位置"
  105. :labelCol="BaseTool.Constant.labelCol"
  106. :wrapperCol="BaseTool.Constant.wrapperCol"
  107. >
  108. <a-input
  109. v-decorator="['cph']" />
  110. </a-form-item>
  111. </a-col>
  112. <a-col :lg="12" :md="24" :sm="24">
  113. <a-form-item
  114. label="存放位置"
  115. :labelCol="BaseTool.Constant.labelCol"
  116. :wrapperCol="BaseTool.Constant.wrapperCol"
  117. >
  118. <a-input
  119. v-decorator="['positionId']" />
  120. </a-form-item>
  121. </a-col>
  122. <a-col :lg="12" :md="24" :sm="24">
  123. <a-form-item
  124. label="生产厂商"
  125. :labelCol="BaseTool.Constant.labelCol"
  126. :wrapperCol="BaseTool.Constant.wrapperCol"
  127. >
  128. <a-input
  129. disabled
  130. v-decorator="['producerName']" />
  131. </a-form-item>
  132. </a-col>
  133. </a-row>
  134. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  135. <a-col :lg="12" :md="24" :sm="24">
  136. <a-form-item
  137. label="是否固定资产"
  138. :labelCol="BaseTool.Constant.labelCol"
  139. :wrapperCol="BaseTool.Constant.wrapperCol"
  140. >
  141. <a-select v-decorator="['isFinancing', { rules: [{required: true, message: '是否显示不能为空'}]}]" placeholder="请选择">
  142. <a-select-option
  143. v-for="(label,value) in isFinancingMap"
  144. :key="value"
  145. :label="label"
  146. :value="parseInt(value)">{{ label }}
  147. </a-select-option>
  148. </a-select>
  149. </a-form-item>
  150. </a-col>
  151. </a-row>
  152. <title-divider v-show="useType == 5" title="特种信息" width="90px"></title-divider>
  153. <div v-show="useType == 5" >
  154. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  155. <a-col :lg="12" :md="24" :sm="24">
  156. <a-form-item
  157. label="注册代码"
  158. :labelCol="BaseTool.Constant.labelCol"
  159. :wrapperCol="BaseTool.Constant.wrapperCol"
  160. >
  161. <a-input
  162. v-decorator="['registerNo']" />
  163. </a-form-item>
  164. </a-col>
  165. <a-col :lg="12" :md="24" :sm="24">
  166. <a-form-item
  167. label="介质属性"
  168. :labelCol="BaseTool.Constant.labelCol"
  169. :wrapperCol="BaseTool.Constant.wrapperCol"
  170. >
  171. <a-input
  172. v-decorator="['characterType']" />
  173. </a-form-item>
  174. </a-col>
  175. </a-row>
  176. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  177. <a-col :lg="12" :md="24" :sm="24">
  178. <a-form-item
  179. label="设备批号"
  180. :labelCol="BaseTool.Constant.labelCol"
  181. :wrapperCol="BaseTool.Constant.wrapperCol"
  182. >
  183. <a-input
  184. v-decorator="['batchNo']" />
  185. </a-form-item>
  186. </a-col>
  187. <a-col :lg="12" :md="24" :sm="24">
  188. <a-form-item
  189. label="使用登记证编号"
  190. :labelCol="BaseTool.Constant.labelCol"
  191. :wrapperCol="BaseTool.Constant.wrapperCol"
  192. >
  193. <a-input
  194. v-decorator="['usedNo']" />
  195. </a-form-item>
  196. </a-col>
  197. </a-row>
  198. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  199. <a-col :lg="12" :md="24" :sm="24">
  200. <a-form-item
  201. label="维护供应商"
  202. :labelCol="BaseTool.Constant.labelCol"
  203. :wrapperCol="BaseTool.Constant.wrapperCol"
  204. >
  205. <a-input
  206. v-decorator="['supplier']" />
  207. </a-form-item>
  208. </a-col>
  209. <a-col :lg="12" :md="24" :sm="24">
  210. <a-form-item
  211. label="登记日期"
  212. :labelCol="BaseTool.Constant.labelCol"
  213. :wrapperCol="BaseTool.Constant.wrapperCol"
  214. >
  215. <a-date-picker
  216. style="width: 100%"
  217. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  218. v-decorator="['registerDate']" />
  219. </a-form-item>
  220. </a-col>
  221. </a-row>
  222. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  223. <a-col :lg="12" :md="24" :sm="24">
  224. <a-form-item
  225. label="预计工作年限"
  226. :labelCol="BaseTool.Constant.labelCol"
  227. :wrapperCol="BaseTool.Constant.wrapperCol"
  228. >
  229. <a-input
  230. style="width: 100%"
  231. suffix="年"
  232. :formatter="BaseTool.Amount.formatter"
  233. :parser="BaseTool.Amount.parser"
  234. v-decorator="['workYear']" />
  235. </a-form-item>
  236. </a-col>
  237. <a-col :lg="12" :md="24" :sm="24">
  238. <a-form-item
  239. label="设计到期年限"
  240. :labelCol="BaseTool.Constant.labelCol"
  241. :wrapperCol="BaseTool.Constant.wrapperCol"
  242. >
  243. <a-date-picker
  244. style="width: 100%"
  245. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  246. v-decorator="['retirementDate']" />
  247. </a-form-item>
  248. </a-col>
  249. </a-row>
  250. </div>
  251. <title-divider v-show="useType == 4" title="计量信息" width="90px"></title-divider>
  252. <div v-show="useType == 4" >
  253. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  254. <a-col :lg="12" :md="24" :sm="24">
  255. <a-form-item
  256. label="计量系统主键"
  257. :labelCol="BaseTool.Constant.labelCol"
  258. :wrapperCol="BaseTool.Constant.wrapperCol"
  259. >
  260. <a-input
  261. v-decorator="['guigeId']" />
  262. </a-form-item>
  263. </a-col>
  264. <a-col :lg="12" :md="24" :sm="24">
  265. <a-form-item
  266. label="测量设备编号"
  267. :labelCol="BaseTool.Constant.labelCol"
  268. :wrapperCol="BaseTool.Constant.wrapperCol"
  269. >
  270. <a-input
  271. v-decorator="['cardNo']" />
  272. </a-form-item>
  273. </a-col>
  274. </a-row>
  275. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  276. <a-col :lg="12" :md="24" :sm="24">
  277. <a-form-item
  278. label="检定单位"
  279. :labelCol="BaseTool.Constant.labelCol"
  280. :wrapperCol="BaseTool.Constant.wrapperCol"
  281. >
  282. <a-input
  283. v-decorator="['dph']" />
  284. </a-form-item>
  285. </a-col>
  286. <a-col :lg="12" :md="24" :sm="24">
  287. <a-form-item
  288. label="检定人"
  289. :labelCol="BaseTool.Constant.labelCol"
  290. :wrapperCol="BaseTool.Constant.wrapperCol"
  291. >
  292. <a-input
  293. v-decorator="['zaiz', {rules: [{required: true, message: '请填写检定人'}]}]" />
  294. </a-form-item>
  295. </a-col>
  296. </a-row>
  297. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  298. <a-col :lg="12" :md="24" :sm="24">
  299. <a-form-item
  300. label="检定结论"
  301. :labelCol="BaseTool.Constant.labelCol"
  302. :wrapperCol="BaseTool.Constant.wrapperCol"
  303. >
  304. <a-select v-decorator="['rlType']" placeholder="请选择">
  305. <a-select-option
  306. v-for="(label,value) in rlTypeMap"
  307. :key="value"
  308. :label="label"
  309. :value="parseInt(value)">{{ label }}
  310. </a-select-option>
  311. </a-select>
  312. </a-form-item>
  313. </a-col>
  314. <a-col :lg="12" :md="24" :sm="24">
  315. <a-form-item
  316. label="是否周检查"
  317. :labelCol="BaseTool.Constant.labelCol"
  318. :wrapperCol="BaseTool.Constant.wrapperCol"
  319. >
  320. <a-select v-decorator="['color']" placeholder="请选择">
  321. <a-select-option
  322. v-for="(label,value) in colorMap"
  323. :key="value"
  324. :label="label"
  325. :value="parseInt(value)">{{ label }}
  326. </a-select-option>
  327. </a-select>
  328. </a-form-item>
  329. </a-col>
  330. </a-row>
  331. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  332. <a-col :lg="12" :md="24" :sm="24">
  333. <a-form-item
  334. label="检定证书编号"
  335. :labelCol="BaseTool.Constant.labelCol"
  336. :wrapperCol="BaseTool.Constant.wrapperCol"
  337. >
  338. <a-input
  339. v-decorator="['sbdh']" />
  340. </a-form-item>
  341. </a-col>
  342. <a-col :lg="12" :md="24" :sm="24">
  343. <a-form-item
  344. label="预警天数"
  345. :labelCol="BaseTool.Constant.labelCol"
  346. :wrapperCol="BaseTool.Constant.wrapperCol"
  347. >
  348. <a-input-number
  349. style="width: 100%"
  350. :min="0"
  351. :step="0.01"
  352. suffix="天"
  353. :formatter="BaseTool.Amount.formatter"
  354. :parser="BaseTool.Amount.parser"
  355. v-decorator="['seatNumber', {rules: [{required: true, message: '请填写预警天数'}]}]" />
  356. </a-form-item>
  357. </a-col>
  358. </a-row>
  359. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  360. <a-col :lg="12" :md="24" :sm="24">
  361. <a-form-item
  362. label="检定日期"
  363. :labelCol="BaseTool.Constant.labelCol"
  364. :wrapperCol="BaseTool.Constant.wrapperCol"
  365. >
  366. <a-date-picker
  367. style="width: 100%"
  368. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  369. v-decorator="['checkDate', {rules: [{required: true, message: '请填写检定日期'}]}]" />
  370. </a-form-item>
  371. </a-col>
  372. <a-col :lg="12" :md="24" :sm="24">
  373. <a-form-item
  374. label="检定周期"
  375. :labelCol="BaseTool.Constant.labelCol"
  376. :wrapperCol="BaseTool.Constant.wrapperCol"
  377. >
  378. <a-input
  379. style="width: 100%"
  380. suffix="月"
  381. :formatter="BaseTool.Amount.formatter"
  382. :parser="BaseTool.Amount.parser"
  383. v-decorator="['checkPeriod', {rules: [{required: true, message: '请填写检定周期'}]}]" />
  384. </a-form-item>
  385. </a-col>
  386. </a-row>
  387. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  388. <a-col :lg="12" :md="24" :sm="24">
  389. <a-form-item
  390. label="检定有效期至"
  391. :labelCol="BaseTool.Constant.labelCol"
  392. :wrapperCol="BaseTool.Constant.wrapperCol"
  393. >
  394. <a-date-picker
  395. style="width: 100%"
  396. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  397. v-decorator="['nextCheckDate', {rules: [{required: true, message: '请填写检定有效期'}]}]" />
  398. </a-form-item>
  399. </a-col>
  400. <a-col :lg="12" :md="24" :sm="24">
  401. <a-form-item
  402. label="准确度等级"
  403. :labelCol="BaseTool.Constant.labelCol"
  404. :wrapperCol="BaseTool.Constant.wrapperCol"
  405. >
  406. <a-input
  407. v-decorator="['fdjxh']" />
  408. </a-form-item>
  409. </a-col>
  410. </a-row>
  411. </div>
  412. <!-- <title-divider title="文件信息" width="90px"></title-divider>
  413. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  414. <a-col :lg="12" :md="24" :sm="24">
  415. <a-form-item
  416. label="维保手册"
  417. :labelCol="BaseTool.Constant.labelCol"
  418. :wrapperCol="BaseTool.Constant.wrapperCol"
  419. >
  420. <a-upload
  421. :action="uploadUrl"
  422. :file-list="this.defaultRepairFileList"
  423. @change="handleRepairFileChange"
  424. :headers="headers"
  425. >
  426. <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
  427. </a-upload>
  428. </a-form-item>
  429. </a-col>
  430. <a-col :lg="12" :md="24" :sm="24">
  431. <a-form-item
  432. label="使用手册"
  433. :labelCol="BaseTool.Constant.labelCol"
  434. :wrapperCol="BaseTool.Constant.wrapperCol"
  435. >
  436. <a-upload
  437. :action="uploadUrl"
  438. :multiple="true"
  439. :file-list="this.defaultUseFileList"
  440. @change="handleUseFileChange"
  441. :headers="headers"
  442. >
  443. <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
  444. </a-upload>
  445. </a-form-item>
  446. </a-col>
  447. </a-row>
  448. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  449. <a-col :lg="12" :md="24" :sm="24">
  450. <a-form-item
  451. label="验收文件"
  452. :labelCol="BaseTool.Constant.labelCol"
  453. :wrapperCol="BaseTool.Constant.wrapperCol"
  454. >
  455. <a-upload
  456. :action="uploadUrl"
  457. :multiple="false"
  458. :file-list="this.defaultRecheckFileList"
  459. @change="handleRecheckFileChange"
  460. :headers="headers"
  461. >
  462. <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
  463. </a-upload>
  464. </a-form-item>
  465. </a-col>
  466. <a-col :lg="12" :md="24" :sm="24">
  467. <a-form-item
  468. label="设备图片"
  469. :labelCol="BaseTool.Constant.labelCol"
  470. :wrapperCol="BaseTool.Constant.wrapperCol"
  471. >
  472. <a-upload
  473. :action="uploadUrl"
  474. :multiple="true"
  475. :file-list="this.defaultSbFileList"
  476. @change="handleSbFileChange"
  477. accept="image/*"
  478. :headers="headers"
  479. >
  480. <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
  481. </a-upload>
  482. </a-form-item>
  483. </a-col>
  484. </a-row>-->
  485. </a-form>
  486. <sb-model-select-modal ref="sbModelSelectModal" @selected="handleSbModelSelected"/>
  487. <sb-info-select-modal ref="sbInfoSelectModal" @selected="handleSbSelectd"/>
  488. <firm-producer-select-modal ref="producerSelectModal" @selected="handleProducerSelected"/>
  489. </a-card>
  490. </template>
  491. <script>
  492. import pick from 'lodash.pick'
  493. import { addSbInfo, updateSbInfo } from '@/api/sb/info'
  494. import { fetchSbTypeTree } from '@/api/sb/type'
  495. import FirmProducerSelectModal from '@/views/firm/producer/modules/FirmProducerSelectModal'
  496. import SbGuigeSelectModal from '@/views/sb/guige/modules/SbGuigeSelectModal'
  497. import SbModelSelectModal from '@/views/sb/model/modules/SbModelSelectModal'
  498. import BaseTool from '../../../../utils/tool'
  499. import { queryUserDeptByUserDeptId } from '@/api/upms/user-dept'
  500. import { ACCESS_TOKEN } from '@/store/mutation-types'
  501. import Vue from 'vue'
  502. import { uploadUrl } from '@/api/upms/file'
  503. import { queryDept, getDeptsAllByParentId } from '@/api/upms/dept'
  504. import { queryUser } from '@/api/upms/user'
  505. import SbInfoSelectModal from '@/views/sb/info/modules/SbInfoSelectModal'
  506. export default {
  507. name: 'BaseSbInfoMeasureRelation',
  508. components: {
  509. FirmProducerSelectModal,
  510. SbGuigeSelectModal,
  511. SbModelSelectModal,
  512. SbInfoSelectModal
  513. },
  514. data () {
  515. return {
  516. confirmLoading: false,
  517. modalTitle: null,
  518. form: this.$form.createForm(this),
  519. areaList: {},
  520. companyList: {},
  521. projectList: {},
  522. deptList: {},
  523. groupList: {},
  524. visible: false,
  525. sbTypeTreeData: [],
  526. // sbInfoTreeData: [],
  527. // sourceSbInfoTreeData: [],
  528. // sbPositionTreeData: [],
  529. depreciationTypeMap: {},
  530. sourceTypeMap: {},
  531. levelMap: {},
  532. rlTypeMap: {},
  533. colorMap: {},
  534. useTypeMap: {},
  535. statusMap: {},
  536. isFinancingMap: {},
  537. userList: {},
  538. unitMap: {},
  539. sbInfoSelectType: null,
  540. repairFileList: [], // 维修手册
  541. defaultRepairFileList: [],
  542. defaultUseFileList: [],
  543. defaultRecheckFileList: [],
  544. defaultSbFileList: [],
  545. useFileList: [], // 使用手册
  546. recheckFileList: [], // 验收手册
  547. sbFileList: [], // 设备图片,
  548. uploadUrl: uploadUrl,
  549. qrcodesrc: null,
  550. fileList: [],
  551. headers: {
  552. Authorization: 'Bearer ' + Vue.ls.get(ACCESS_TOKEN)
  553. }
  554. }
  555. },
  556. props: {
  557. useType: {
  558. type: Number,
  559. default: 3
  560. }
  561. },
  562. created () {
  563. this.depreciationTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_DEPRECIATIONTYPE)
  564. this.levelMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_LEVEL)
  565. this.colorMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_COLOR)
  566. this.rlTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.RANLIAO_TYPE)
  567. this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_INFO_STATUS)
  568. this.unitMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_UNIT)
  569. this.sourceTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBTYPE_SOURCETYPE)
  570. this.useTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_USE_TYPE)
  571. this.isFinancingMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_IS_FINANCING)
  572. },
  573. methods: {
  574. base (record) {
  575. this.setTree(record)
  576. // 清除文件列表
  577. this.visible = true
  578. // 选择框查询条件
  579. // 如果是空标识添加
  580. if (this.BaseTool.Object.isBlank(record)) {
  581. this.qrcodesrc = null
  582. this.modalTitle = '添加关联'
  583. this.clearFileList()
  584. return
  585. }
  586. this.useType = record.useType
  587. this.modalTitle = '编辑关联'
  588. this.qrcodesrc = record.qrCode
  589. this.repairFileList = record.repairFileList
  590. this.useFileList = record.useFileList
  591. this.recheckFileList = record.recheckFileList
  592. this.sbFileList = record.sbFileList
  593. this.defaultRepairFileList = this.BaseTool.UPLOAD.transImg(this.repairFileList)
  594. this.defaultUseFileList = this.BaseTool.UPLOAD.transImg(this.useFileList)
  595. this.defaultRecheckFileList = this.BaseTool.UPLOAD.transImg(this.recheckFileList)
  596. this.defaultSbFileList = this.BaseTool.UPLOAD.transImg(this.sbFileList)
  597. // if (this.BaseTool.Object.isBlank(record.id)) {
  598. // this.modalTitle = '复制'
  599. // this.qrcodesrc = null
  600. // record.no = null
  601. // this.clearFileList()
  602. // }
  603. if (record.isChild === 1) {
  604. record.isChild = '1'
  605. }
  606. if (record.isChild === 2) {
  607. record.isChild = '2'
  608. }
  609. if (record.isChild === 3) {
  610. record.isChild = '3'
  611. }
  612. if (record.isShow === 0) {
  613. record.isShow = '0'
  614. }
  615. if (record.isShow === 1) {
  616. record.isShow = '1'
  617. }
  618. const { form: { setFieldsValue } } = this
  619. // 日期处理
  620. // record.buyDate = this.BaseTool.Moment(record.buyDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  621. // record.startDate = this.BaseTool.Moment(record.startDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  622. // record.nextCheckDate = this.BaseTool.Moment(record.nextCheckDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  623. // record.guaranteeDate = this.BaseTool.Moment(record.guaranteeDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  624. // record.retirementDate = this.BaseTool.Moment(record.retirementDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  625. // record.lastRepaireTime = this.BaseTool.Moment(record.lastRepaireTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  626. // record.lastBaoyangTime = this.BaseTool.Moment(record.lastBaoyangTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  627. if (record.buyDate != null) {
  628. record.buyDate = this.BaseTool.Moment(record.buyDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  629. this.$nextTick(() => {
  630. setFieldsValue(Object.assign(pick(record, [
  631. 'buyDate'
  632. ])))
  633. })
  634. }
  635. if (record.startDate != null) {
  636. record.startDate = this.BaseTool.Moment(record.startDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  637. this.$nextTick(() => {
  638. setFieldsValue(Object.assign(pick(record, [
  639. 'startDate'
  640. ])))
  641. })
  642. }
  643. if (record.checkDate != null) {
  644. record.checkDate = this.BaseTool.Moment(record.checkDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  645. this.$nextTick(() => {
  646. setFieldsValue(Object.assign(pick(record, [
  647. 'checkDate'
  648. ])))
  649. })
  650. }
  651. if (record.nextCheckDate != null) {
  652. record.nextCheckDate = this.BaseTool.Moment(record.nextCheckDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  653. this.$nextTick(() => {
  654. setFieldsValue(Object.assign(pick(record, [
  655. 'nextCheckDate'
  656. ])))
  657. })
  658. }
  659. if (record.retirementDate != null) {
  660. record.retirementDate = this.BaseTool.Moment(record.retirementDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  661. this.$nextTick(() => {
  662. setFieldsValue(Object.assign(pick(record, [
  663. 'retirementDate'
  664. ])))
  665. })
  666. }
  667. if (record.registerDate != null) {
  668. record.registerDate = this.BaseTool.Moment(record.registerDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  669. this.$nextTick(() => {
  670. setFieldsValue(Object.assign(pick(record, [
  671. 'registerDate'
  672. ])))
  673. })
  674. }
  675. record.unitName = this.BaseTool.Object.getField(this.unitMap, record.unit)
  676. record.useTypeName = this.BaseTool.Object.getField(this.useTypeMap, record.useType)
  677. this.$nextTick(() => {
  678. setFieldsValue(Object.assign(pick(record, [
  679. 'id',
  680. 'no',
  681. 'parentId',
  682. 'parentSbName',
  683. 'isChild',
  684. 'isShow',
  685. 'isFinancing',
  686. 'financingNo',
  687. 'name',
  688. 'model',
  689. 'positionId',
  690. 'cph',
  691. 'producerName',
  692. 'saveUserName',
  693. 'zzh',
  694. 'useArea',
  695. 'useCompany',
  696. 'useProject',
  697. 'useDept',
  698. 'saveUser',
  699. 'repairUser',
  700. 'useGroup',
  701. 'typeId',
  702. 'level',
  703. 'initialValue',
  704. // 'cutValue',
  705. 'producerId',
  706. // 'sourceType',
  707. 'unit',
  708. 'buyDate',
  709. 'startDate',
  710. 'zbh',
  711. // 'wbFile',
  712. // 'useFile',
  713. // 'checkFile',
  714. // 'sbImage',
  715. 'status',
  716. 'remark',
  717. 'zz',
  718. 'zjm',
  719. 'jbdh',
  720. 'useType',
  721. 'cardNo',
  722. 'fdjxh',
  723. 'checkDate',
  724. 'checkPeriod',
  725. 'nextCheckDate',
  726. 'dph',
  727. 'zaiz',
  728. 'rlType',
  729. 'color',
  730. 'sbdh',
  731. 'seatNumber',
  732. 'registerNo',
  733. 'characterType',
  734. 'usedNo',
  735. 'supplier',
  736. 'repairUserSecond',
  737. 'batchNo',
  738. 'workYear',
  739. 'retirementDate',
  740. 'registerDate'
  741. ])))
  742. })
  743. },
  744. save () {
  745. const { form: { validateFieldsAndScroll } } = this
  746. this.confirmLoading = true
  747. validateFieldsAndScroll((errors, values) => {
  748. if (errors) {
  749. this.confirmLoading = false
  750. return
  751. }
  752. // 日期数据的处理
  753. values.buyDate = BaseTool.Date.formatter(values.buyDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  754. values.startDate = BaseTool.Date.formatter(values.startDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  755. values.checkDate = BaseTool.Date.formatter(values.checkDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  756. values.nextCheckDate = BaseTool.Date.formatter(values.nextCheckDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  757. values.guaranteeDate = BaseTool.Date.formatter(values.guaranteeDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  758. values.retirementDate = BaseTool.Date.formatter(values.retirementDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  759. values.lastRepaireTime = this.BaseTool.Date.formatter(values.lastRepaireTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  760. values.lastBaoyangTime = this.BaseTool.Date.formatter(values.lastBaoyangTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  761. values.spDate = this.BaseTool.Date.formatter(values.spDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  762. values.jbdDate = this.BaseTool.Date.formatter(values.jbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  763. values.sbdDate = this.BaseTool.Date.formatter(values.sbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  764. values.sbDate = this.BaseTool.Date.formatter(values.sbDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  765. // 上传文件
  766. values.repairFileList = this.repairFileList
  767. values.useFileList = this.useFileList
  768. values.recheckFileList = this.recheckFileList
  769. values.sbFileList = this.sbFileList
  770. values.useType = this.useType
  771. if (this.BaseTool.String.isBlank(values.id)) {
  772. addSbInfo(values)
  773. .then(() => {
  774. this.handleCancel(values)
  775. }).catch(() => {
  776. this.confirmLoading = false
  777. })
  778. } else {
  779. updateSbInfo(values)
  780. .then(() => {
  781. this.handleCancel(values)
  782. }).catch(() => {
  783. this.confirmLoading = false
  784. })
  785. }
  786. })
  787. },
  788. getQrcodeSrc () {
  789. console.log(111, 22)
  790. },
  791. handleCancel () {
  792. this.visible = false
  793. this.confirmLoading = false
  794. this.form.resetFields()
  795. this.$emit('ok')
  796. },
  797. setTree (record = {}) {
  798. fetchSbTypeTree().then(res => {
  799. this.sbTypeTreeData = res.data
  800. })
  801. // getSbInfoTree({ id: record.id }).then(res => {
  802. // this.sbInfoTreeData = res.data
  803. // this.sourceSbInfoTreeData = res.data
  804. // })
  805. // getSbPositionTree().then(res => {
  806. // this.sbPositionTreeData = res.data
  807. // })
  808. queryDept({ nature: this.DictCache.VALUE.SYS_DEPT_NATURE.JITUAN }).then(res => {
  809. this.areaList = res.data
  810. })
  811. if (record.useArea != null) {
  812. getDeptsAllByParentId({ deptId: record.useArea, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.FEN_GONG_SI }).then(res => {
  813. this.companyList = res.data
  814. })
  815. getDeptsAllByParentId({ deptId: record.useCompany, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.XIANG_MU_BU }).then(res => {
  816. this.projectList = res.data
  817. })
  818. getDeptsAllByParentId({ deptId: record.useProject, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BU_MEN }).then(res => {
  819. this.deptList = res.data
  820. })
  821. getDeptsAllByParentId({ deptId: record.useDept, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BAN_ZU }).then(res => {
  822. this.groupList = res.data
  823. })
  824. queryUser({ }).then(res => {
  825. this.userList = res.data
  826. })
  827. }
  828. queryUser({ }).then(res => {
  829. this.userList = res.data
  830. })
  831. },
  832. handleSbModelSelect () {
  833. const modal = this.$refs.sbModelSelectModal
  834. modal.base()
  835. },
  836. handleSbModelSelected (keys, rows) {
  837. const [ key ] = keys
  838. const [ row ] = rows
  839. const { form: { setFieldsValue } } = this
  840. this.$nextTick(() => {
  841. setFieldsValue({
  842. 'modelId': key,
  843. 'name': row.name,
  844. 'model': row.model,
  845. 'nameModel': row.nameModel,
  846. 'typeId': row.typeId,
  847. 'typeName': row.typeName,
  848. 'level': row.level,
  849. 'initialValue': row.value,
  850. 'useType': row.useType,
  851. 'useTypeName': this.BaseTool.Object.getField(this.useTypeMap, row.useType),
  852. 'producerId': row.producerId,
  853. 'producerName': row.producerName,
  854. 'unit': row.unit,
  855. 'unitName': this.BaseTool.Object.getField(this.unitMap, row.unit)
  856. })
  857. })
  858. },
  859. beforeRecheckFileListUpload (file) {
  860. const reg = /\.(xls|xlsx)(\?.*)?$/
  861. return new Promise((resolve, reject) => {
  862. if (reg.test(file.name)) {
  863. this.recheckFileList = [file]
  864. return true
  865. } else {
  866. this.$message.error(`请上传正确的xls|xlsx文件`)
  867. reject(new Error('请上传正确的xls|xlsx文件'))
  868. return false
  869. }
  870. })
  871. },
  872. beforeUploadPic (file) {
  873. const reg = /\.(jpg|jpeg|png)(\?.*)?$/
  874. return new Promise((resolve, reject) => {
  875. if (reg.test(file.name)) {
  876. this.sbFileList = [file]
  877. return true
  878. } else {
  879. this.$message.error(`请上传正确的jpg|jpeg|png文件`)
  880. reject(new Error('请上传正确的jpg|jpeg|png文件'))
  881. return false
  882. }
  883. })
  884. },
  885. clearFileList () {
  886. this.repairFileList = []
  887. this.useFileList = []
  888. this.recheckFileList = []
  889. this.sbFileList = []
  890. },
  891. handleRepairFileChange (info) {
  892. this.defaultRepairFileList = info.fileList
  893. this.repairFileList = this.setFileList(info, 1)
  894. },
  895. handleUseFileChange (info) {
  896. this.defaultUseFileList = info.fileList
  897. this.useFileList = this.setFileList(info, 2)
  898. },
  899. handleAreaChange (value) {
  900. getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.FEN_GONG_SI }).then(res => {
  901. this.companyList = res.data
  902. })
  903. },
  904. handleCompanyChange (value) {
  905. getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.XIANG_MU_BU }).then(res => {
  906. this.projectList = res.data
  907. })
  908. },
  909. handleProjectChange (value) {
  910. getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BU_MEN }).then(res => {
  911. this.deptList = res.data
  912. })
  913. },
  914. handleDeptChange (value) {
  915. getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BAN_ZU }).then(res => {
  916. this.groupList = res.data
  917. })
  918. },
  919. handleGroupChange (value) {
  920. queryUserDeptByUserDeptId({ deptId: value }).then(res => {
  921. this.userList = res.data
  922. })
  923. },
  924. handleRecheckFileChange (info) {
  925. this.defaultRecheckFileList = info.fileList
  926. this.recheckFileList = this.setFileList(info, 3)
  927. },
  928. handleSbFileChange (info) {
  929. this.defaultSbFileList = info.fileList
  930. this.sbFileList = this.setFileList(info, 4)
  931. },
  932. setFileList1 (info, type) {
  933. const fileList = [...info.fileList]
  934. const file = [...info.file]
  935. if (file.status === 'done') {
  936. return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
  937. } else if (file.status === 'removed') {
  938. return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
  939. } else if (file.status === 'error') {
  940. this.$message.error('上传失败')
  941. return []
  942. }
  943. },
  944. handleSbSelect () {
  945. this.$refs.sbInfoSelectModal.base({}, {})
  946. },
  947. handleSbSelectd (keys, rows) {
  948. const [ key ] = keys
  949. const [ row ] = rows
  950. const { form: { setFieldsValue } } = this
  951. // 日期处理
  952. this.$nextTick(() => {
  953. setFieldsValue(Object.assign({
  954. 'id': key,
  955. 'no': row.no,
  956. 'zbh': row.zbh,
  957. 'name': row.name,
  958. 'model': row.model
  959. }))
  960. })
  961. },
  962. handleChange (value) {
  963. this.useType = value
  964. },
  965. handleProducerSelect () {
  966. const modal = this.$refs.producerSelectModal
  967. modal.base({}, { type: 1 })
  968. },
  969. handleProducerSelected (record, selectedRowKeys, selectedRow) {
  970. const { form: { setFieldsValue } } = this
  971. const [ key ] = selectedRowKeys
  972. const [ row ] = selectedRow
  973. setFieldsValue({
  974. 'producerId': key,
  975. 'producerName': row.name
  976. })
  977. },
  978. setFileList (info, type) {
  979. // { file, fileList }
  980. const file = info.file
  981. const fileList = info.fileList
  982. // fileList = fileList.slice(-2)
  983. // console.log(111, this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type))
  984. if (file.status === 'done') {
  985. return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
  986. } else if (file.status === 'removed') {
  987. return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
  988. } else if (file.status === 'error') {
  989. this.$message.error('上传失败')
  990. return null
  991. }
  992. // return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
  993. // 1. Limit the number of uploaded files
  994. // Only to show two recent uploaded files, and old ones will be replaced by the new
  995. // fileList = fileList.slice(-2)
  996. // 2. read from response and show file link
  997. // fileList = fileList.map(file => {
  998. // if (file.response) {
  999. // // Component will show file.url as link
  1000. // const { response: { data } } = file
  1001. // file.url = data.url
  1002. // file.fileName = data.fileName
  1003. // file.fileFormat = data.fileFormat
  1004. // file.name = data.name
  1005. // file.type = type
  1006. // }
  1007. // return file
  1008. // })
  1009. // console.log(6666, fileList)
  1010. // return fileList
  1011. }
  1012. }
  1013. }
  1014. </script>