BaseForm.vue 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494
  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="handleFresh()">刷新位置</a-button>
  8. <a-button style="margin-left: 8px" @click="handleCancel()">返回</a-button>
  9. </span>
  10. </a-col>
  11. </a-row>
  12. <title-divider title="基本信息" width="90px"></title-divider>
  13. <a-form :form="form">
  14. <a-form-item v-show="false" >
  15. <a-input v-decorator="['id']" type="hidden"/>
  16. <a-input v-decorator="['parentId']" type="hidden"/>
  17. </a-form-item>
  18. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  19. <a-col :lg="12" :md="24" :sm="24">
  20. <a-form-item
  21. label="设备(新号)"
  22. :labelCol="BaseTool.Constant.labelCol"
  23. :wrapperCol="BaseTool.Constant.wrapperCol"
  24. >
  25. <a-input
  26. v-decorator="['no', {rules: [{required: true, message: '不能为空'}]}]" />
  27. </a-form-item>
  28. </a-col>
  29. <a-col :lg="12" :md="24" :sm="24">
  30. <a-form-item
  31. label="设备(旧号)"
  32. :labelCol="BaseTool.Constant.labelCol"
  33. :wrapperCol="BaseTool.Constant.wrapperCol"
  34. >
  35. <a-input
  36. v-decorator="['zbh', {rules: [{required: false, message: '不能为空'}]}]" />
  37. </a-form-item>
  38. </a-col>
  39. </a-row>
  40. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  41. <a-col :lg="12" :md="24" :sm="24">
  42. <a-form-item
  43. label="设备名称"
  44. :labelCol="BaseTool.Constant.labelCol"
  45. :wrapperCol="BaseTool.Constant.wrapperCol"
  46. >
  47. <a-input
  48. v-decorator="['name', {rules: [{required: true, message: '设备名称不能为空'}]}]" />
  49. </a-form-item>
  50. </a-col>
  51. <a-col :lg="12" :md="24" :sm="24">
  52. <a-form-item
  53. label="型号"
  54. :labelCol="BaseTool.Constant.labelCol"
  55. :wrapperCol="BaseTool.Constant.wrapperCol"
  56. >
  57. <a-input
  58. v-decorator="['model', {rules: [{required: true, message: '设备型号不能为空'}]}]" />
  59. </a-form-item>
  60. </a-col>
  61. </a-row>
  62. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  63. <a-col :lg="12" :md="24" :sm="24">
  64. <a-form-item
  65. label="是否固定资产"
  66. :labelCol="BaseTool.Constant.labelCol"
  67. :wrapperCol="BaseTool.Constant.wrapperCol"
  68. >
  69. <a-select v-decorator="['isFinancing', { rules: [{required: true, message: '是否显示不能为空'}]}]" placeholder="请选择">
  70. <a-select-option
  71. v-for="(label,value) in isFinancingMap"
  72. :key="value"
  73. :label="label"
  74. :value="parseInt(value)">{{ label }}
  75. </a-select-option>
  76. </a-select>
  77. </a-form-item>
  78. </a-col>
  79. </a-row>
  80. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  81. <a-col :lg="12" :md="24" :sm="24">
  82. <a-form-item
  83. label="设备等级"
  84. :labelCol="BaseTool.Constant.labelCol"
  85. :wrapperCol="BaseTool.Constant.wrapperCol"
  86. >
  87. <a-select v-decorator="['level', {initialValue:1, rules: [{required: true, message: '设备等级不能为空'}]}]" placeholder="请选择">
  88. <a-select-option
  89. v-for="(label,value) in levelMap"
  90. :key="value"
  91. :label="label"
  92. :value="parseInt(value)">{{ label }}
  93. </a-select-option>
  94. </a-select>
  95. </a-form-item>
  96. </a-col>
  97. <a-col :lg="12" :md="24" :sm="24">
  98. <a-form-item
  99. label="设备价格"
  100. :labelCol="BaseTool.Constant.labelCol"
  101. :wrapperCol="BaseTool.Constant.wrapperCol"
  102. >
  103. <a-input-number
  104. style="width: 100%"
  105. :min="0"
  106. :step="0.01"
  107. :formatter="BaseTool.Amount.formatter"
  108. :parser="BaseTool.Amount.parser"
  109. v-decorator="['initialValue', {rules: [{required: true, message: '设备原值不能为空'}]}]" />
  110. </a-form-item>
  111. </a-col>
  112. </a-row>
  113. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  114. <a-col :lg="12" :md="24" :sm="24">
  115. <a-form-item
  116. label="设备类型"
  117. :labelCol="BaseTool.Constant.labelCol"
  118. :wrapperCol="BaseTool.Constant.wrapperCol"
  119. >
  120. <a-tree-select
  121. style="width: 100%"
  122. :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }"
  123. :treeData="sbTypeTreeData"
  124. :treeNodeFilterProp="'title'"
  125. :showSearch="true"
  126. v-decorator="['typeId', {rules: [{required: true, message: '设备类型不能为空'}]}]"
  127. placeholder="请选择"
  128. >
  129. </a-tree-select>
  130. </a-form-item>
  131. </a-col>
  132. <a-col :lg="12" :md="24" :sm="24">
  133. <a-form-item
  134. label="自定义类型"
  135. :labelCol="BaseTool.Constant.labelCol"
  136. :wrapperCol="BaseTool.Constant.wrapperCol"
  137. >
  138. <a-select @change="handleChange" v-decorator="['useType', {rules: [{required: true, message: '自定义类型不能为空'}]}]" placeholder="请选择">
  139. <a-select-option
  140. v-for="(label,value) in useTypeMap"
  141. :key="value"
  142. :label="label"
  143. :value="parseInt(value)">{{ label }}
  144. </a-select-option>
  145. </a-select>
  146. </a-form-item>
  147. </a-col>
  148. </a-row>
  149. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  150. <a-col :lg="12" :md="24" :sm="24">
  151. <a-form-item
  152. label="状态"
  153. :labelCol="BaseTool.Constant.labelCol"
  154. :wrapperCol="BaseTool.Constant.wrapperCol"
  155. >
  156. <a-select v-decorator="['status', {rules: [{required: true, message: '状态不能为空'}]}]" placeholder="请选择">
  157. <a-select-option
  158. v-for="(label,value) in statusMap"
  159. :key="value"
  160. :label="label"
  161. :value="parseInt(value)">{{ label }}
  162. </a-select-option>
  163. </a-select>
  164. </a-form-item>
  165. </a-col>
  166. </a-row>
  167. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  168. <a-col :lg="12" :md="24" :sm="24">
  169. <a-form-item
  170. label="大小/尺寸"
  171. :labelCol="BaseTool.Constant.labelCol"
  172. :wrapperCol="BaseTool.Constant.wrapperCol"
  173. >
  174. <a-input
  175. v-decorator="['zz']" />
  176. </a-form-item>
  177. </a-col>
  178. <a-col :lg="12" :md="24" :sm="24">
  179. <a-form-item
  180. label="系列号(出厂编号)"
  181. :labelCol="BaseTool.Constant.labelCol"
  182. :wrapperCol="BaseTool.Constant.wrapperCol"
  183. >
  184. <a-input
  185. v-decorator="['zzh']" />
  186. </a-form-item>
  187. </a-col>
  188. </a-row>
  189. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  190. <a-col :lg="12" :md="24" :sm="24">
  191. <a-form-item
  192. label="使用位置"
  193. :labelCol="BaseTool.Constant.labelCol"
  194. :wrapperCol="BaseTool.Constant.wrapperCol"
  195. >
  196. <a-input
  197. v-decorator="['cph']" />
  198. </a-form-item>
  199. </a-col>
  200. <a-col :lg="12" :md="24" :sm="24">
  201. <a-form-item
  202. label="生产商"
  203. :labelCol="BaseTool.Constant.labelCol"
  204. :wrapperCol="BaseTool.Constant.wrapperCol"
  205. >
  206. <a-input
  207. style="width: 70%"
  208. disabled
  209. v-decorator="['producerName', {rules: [{required: true, message: '生产商不能为空'}]}]" />
  210. <a-button style="width: 30%" type="primary" @click="handleProducerSelect">选择</a-button>
  211. </a-form-item>
  212. <a-form-item
  213. label="生产商"
  214. :labelCol="BaseTool.Constant.labelCol"
  215. :wrapperCol="BaseTool.Constant.wrapperCol"
  216. v-show="false"
  217. >
  218. <a-input
  219. v-decorator="['producerId', {rules: [{required: true, message: '生产商不能为空'}]}]" />
  220. </a-form-item>
  221. </a-col>
  222. </a-row>
  223. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  224. <a-col :lg="12" :md="24" :sm="24">
  225. <a-form-item
  226. label="父设备"
  227. :labelCol="BaseTool.Constant.labelCol"
  228. :wrapperCol="BaseTool.Constant.wrapperCol"
  229. >
  230. <a-input
  231. disabled
  232. style="width: 60%"
  233. v-decorator="['parentSbName']"/>
  234. <a-button type="primary" style="width: 20%" @click="handleSbSelect">选择</a-button>
  235. <a-button type="default" style="width: 20%" @click="clearParent">清空</a-button>
  236. </a-form-item>
  237. </a-col>
  238. <a-col :lg="12" :md="24" :sm="24">
  239. <a-form-item
  240. label="是否子设备"
  241. :labelCol="BaseTool.Constant.labelCol"
  242. :wrapperCol="BaseTool.Constant.wrapperCol"
  243. >
  244. <a-select @change="childChange" v-decorator="['isChild', { rules: [{required: true, message: '是否子设备不能为空'}]}]" placeholder="请选择">
  245. <a-select-option
  246. v-for="(label,value) in isChildMap"
  247. :key="value"
  248. :label="label"
  249. :value="parseInt(value)">{{ label }}
  250. </a-select-option>
  251. </a-select>
  252. </a-form-item>
  253. </a-col>
  254. </a-row>
  255. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  256. <a-col :lg="12" :md="24" :sm="24">
  257. <a-form-item
  258. label="存放位置"
  259. :labelCol="BaseTool.Constant.labelCol"
  260. :wrapperCol="BaseTool.Constant.wrapperCol"
  261. >
  262. <a-input
  263. style="width: 100%"
  264. v-decorator="['positionId']" />
  265. </a-form-item>
  266. </a-col>
  267. <a-col :lg="12" :md="24" :sm="24">
  268. <a-form-item
  269. label="是否显示"
  270. :labelCol="BaseTool.Constant.labelCol"
  271. :wrapperCol="BaseTool.Constant.wrapperCol"
  272. >
  273. <a-select v-decorator="['isShow', { rules: [{required: true, message: '是否显示不能为空'}]}]" placeholder="请选择">
  274. <a-select-option
  275. v-for="(label,value) in isShowMap"
  276. :key="value"
  277. :label="label"
  278. :value="parseInt(value)">{{ label }}
  279. </a-select-option>
  280. </a-select>
  281. </a-form-item>
  282. </a-col>
  283. </a-row>
  284. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  285. <a-col :lg="12" :md="24" :sm="24">
  286. <a-form-item
  287. label="水平位置"
  288. :labelCol="BaseTool.Constant.labelCol"
  289. :wrapperCol="BaseTool.Constant.wrapperCol"
  290. >
  291. <a-input-number
  292. :step="1"
  293. :min="85"
  294. style="width:70%"
  295. v-decorator="['zjm']"
  296. placeholder="请输入离屏幕左上角的右方距离,最低85"/>
  297. <a-button style="width: 30%" type="primary" @click="handlePoint">设置预览</a-button>
  298. </a-form-item>
  299. </a-col>
  300. <a-col :lg="12" :md="24" :sm="24">
  301. <a-form-item
  302. label="垂直位置"
  303. :labelCol="BaseTool.Constant.labelCol"
  304. :wrapperCol="BaseTool.Constant.wrapperCol"
  305. >
  306. <a-input-number
  307. :step="1"
  308. :min="340"
  309. style="width:70%"
  310. v-decorator="['jbdh']"
  311. placeholder="请输入离屏幕左上角的下方位置,最低340"/>
  312. <a-button style="width: 30%" type="primary" @click="handlePoint">设置预览</a-button>
  313. </a-form-item>
  314. </a-col>
  315. </a-row>
  316. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  317. <a-col :lg="12" :md="24" :sm="24">
  318. <a-form-item
  319. label="备注"
  320. :labelCol="BaseTool.Constant.labelCol"
  321. :wrapperCol="BaseTool.Constant.wrapperCol"
  322. >
  323. <a-input
  324. v-decorator="['remark', {rules: [{required: false, message: '备注不能为空'}]}]" />
  325. </a-form-item>
  326. </a-col>
  327. <a-col :lg="12" :md="24" :sm="24">
  328. <a-form-item
  329. label="使用机台"
  330. :labelCol="BaseTool.Constant.labelCol"
  331. :wrapperCol="BaseTool.Constant.wrapperCol"
  332. >
  333. <a-select v-decorator="['saveUser', {rules: [{required: true, message: '项目部不能为空'}]}]" placeholder="请选择">
  334. <a-select-option
  335. v-for="({userId, realName}) in userList"
  336. :key="userId"
  337. :label="realName"
  338. :value="userId">{{ realName }}
  339. </a-select-option>
  340. </a-select>
  341. </a-form-item>
  342. </a-col>
  343. </a-row>
  344. <!-- <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  345. <a-col :lg="12" :md="24" :sm="24">
  346. <a-form-item
  347. label="所属区域"
  348. :labelCol="BaseTool.Constant.labelCol"
  349. :wrapperCol="BaseTool.Constant.wrapperCol"
  350. >
  351. <a-select @change="handleAreaChange" v-decorator="['useArea', {rules: [{required: true, message: '所属区域不能为空'}]}]" placeholder="请选择">
  352. <a-select-option
  353. v-for="({deptId, name}) in areaList"
  354. :key="deptId"
  355. :label="name"
  356. :value="deptId">{{ name }}
  357. </a-select-option>
  358. </a-select>
  359. </a-form-item>
  360. </a-col>
  361. <a-col :lg="12" :md="24" :sm="24">
  362. <a-form-item
  363. label="所属公司"
  364. :labelCol="BaseTool.Constant.labelCol"
  365. :wrapperCol="BaseTool.Constant.wrapperCol"
  366. >
  367. <a-select @change="handleCompanyChange" v-decorator="['useCompany', {rules: [{required: true, message: '所属公司不能为空'}]}]" placeholder="请选择">
  368. <a-select-option
  369. v-for="({deptId, name}) in companyList"
  370. :key="deptId"
  371. :label="name"
  372. :value="deptId">{{ name }}
  373. </a-select-option>
  374. </a-select>
  375. </a-form-item>
  376. </a-col>
  377. </a-row>
  378. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  379. <a-col :lg="12" :md="24" :sm="24">
  380. <a-form-item
  381. label="所属项目部"
  382. :labelCol="BaseTool.Constant.labelCol"
  383. :wrapperCol="BaseTool.Constant.wrapperCol"
  384. >
  385. <a-select @change="handleProjectChange" v-decorator="['useProject', {rules: [{required: true, message: '项目部不能为空'}]}]" placeholder="请选择">
  386. <a-select-option
  387. v-for="({deptId, name}) in projectList"
  388. :key="deptId"
  389. :label="name"
  390. :value="deptId">{{ name }}
  391. </a-select-option>
  392. </a-select>
  393. </a-form-item>
  394. </a-col>
  395. <a-col :lg="12" :md="24" :sm="24">
  396. <a-form-item
  397. label="所属部门"
  398. :labelCol="BaseTool.Constant.labelCol"
  399. :wrapperCol="BaseTool.Constant.wrapperCol"
  400. >
  401. <a-select @change="handleDeptChange" v-decorator="['useDept', {rules: [{required: true, message: '所属公司不能为空'}]}]" placeholder="请选择">
  402. <a-select-option
  403. v-for="({deptId, name}) in deptList"
  404. :key="deptId"
  405. :label="name"
  406. :value="deptId">{{ name }}
  407. </a-select-option>
  408. </a-select>
  409. </a-form-item>
  410. </a-col>
  411. </a-row>-->
  412. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  413. <!-- <a-col :lg="12" :md="24" :sm="24">
  414. <a-form-item
  415. label="所属班组"
  416. :labelCol="BaseTool.Constant.labelCol"
  417. :wrapperCol="BaseTool.Constant.wrapperCol"
  418. >
  419. <a-select @change="handleGroupChange" v-decorator="['useGroup', {rules: [{required: true, message: '项目部不能为空'}]}]" placeholder="请选择">
  420. <a-select-option
  421. v-for="({deptId, name}) in groupList"
  422. :key="deptId"
  423. :label="name"
  424. :value="deptId">{{ name }}
  425. </a-select-option>
  426. </a-select>
  427. </a-form-item>
  428. </a-col>-->
  429. <a-col :lg="12" :md="24" :sm="24">
  430. <a-form-item
  431. label="维修人"
  432. :labelCol="BaseTool.Constant.labelCol"
  433. :wrapperCol="BaseTool.Constant.wrapperCol"
  434. >
  435. <a-select v-decorator="['repairUser']" placeholder="请选择">
  436. <a-select-option
  437. v-for="({userId, realName}) in userList"
  438. :key="userId"
  439. :label="realName"
  440. :value="userId">{{ realName }}
  441. </a-select-option>
  442. </a-select>
  443. </a-form-item>
  444. </a-col>
  445. <a-col :lg="12" :md="24" :sm="24">
  446. <a-form-item
  447. label="第二维修人员"
  448. :labelCol="BaseTool.Constant.labelCol"
  449. :wrapperCol="BaseTool.Constant.wrapperCol"
  450. >
  451. <a-select v-decorator="['repairUserSecond']" placeholder="请选择">
  452. <a-select-option
  453. v-for="({userId, realName}) in userList"
  454. :key="userId"
  455. :label="realName"
  456. :value="userId">{{ realName }}
  457. </a-select-option>
  458. </a-select>
  459. </a-form-item>
  460. </a-col>
  461. </a-row>
  462. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  463. <a-col :lg="12" :md="24" :sm="24">
  464. <a-form-item
  465. label="购置日期"
  466. :labelCol="BaseTool.Constant.labelCol"
  467. :wrapperCol="BaseTool.Constant.wrapperCol"
  468. >
  469. <a-date-picker
  470. style="width: 100%"
  471. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  472. v-decorator="['buyDate']" />
  473. </a-form-item>
  474. </a-col>
  475. <a-col :lg="12" :md="24" :sm="24">
  476. <a-form-item
  477. label="投用日期"
  478. :labelCol="BaseTool.Constant.labelCol"
  479. :wrapperCol="BaseTool.Constant.wrapperCol"
  480. >
  481. <a-date-picker
  482. style="width: 100%"
  483. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  484. v-decorator="['startDate']" />
  485. </a-form-item>
  486. </a-col>
  487. </a-row>
  488. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  489. <a-col :lg="12" :md="24" :sm="24">
  490. <a-form-item
  491. label="使用寿命"
  492. :labelCol="BaseTool.Constant.labelCol"
  493. :wrapperCol="BaseTool.Constant.wrapperCol"
  494. >
  495. <a-input
  496. style="width: 100%"
  497. suffix="年"
  498. :formatter="BaseTool.Amount.formatter"
  499. :parser="BaseTool.Amount.parser"
  500. v-decorator="['workYear']" />
  501. </a-form-item>
  502. </a-col>
  503. </a-row>
  504. <title-divider title="自定义参数" width="120px"></title-divider>
  505. <div class="table-operator">
  506. <a-button type="primary" @click="handleParam">
  507. <a-icon type="plus"/>
  508. 添加
  509. </a-button>
  510. </div>
  511. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  512. <a-col v-for="(item, index) in paramList" :lg="12" :md="24" :sm="24">
  513. <a-form-item
  514. :label="item.name"
  515. :labelCol="BaseTool.Constant.labelCol"
  516. :wrapperCol="BaseTool.Constant.wrapperCol"
  517. >
  518. <a-input
  519. style="width: 70%"
  520. :defaultValue="item.name"
  521. disabled
  522. />
  523. <a-button style="width: 30%" type="primary" @click="handleDelParam(index)">删除</a-button>
  524. </a-form-item>
  525. </a-col>
  526. </a-row>
  527. <title-divider title="资产编号" width="90px"></title-divider>
  528. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  529. <a-col :lg="12" :md="24" :sm="24">
  530. <a-form-item
  531. label="资产编号1"
  532. :labelCol="BaseTool.Constant.labelCol"
  533. :wrapperCol="BaseTool.Constant.wrapperCol"
  534. >
  535. <a-input
  536. v-decorator="['financingNo']" />
  537. </a-form-item>
  538. </a-col>
  539. <a-col :lg="12" :md="24" :sm="24">
  540. <a-form-item
  541. label="资产编号1"
  542. :labelCol="BaseTool.Constant.labelCol"
  543. :wrapperCol="BaseTool.Constant.wrapperCol"
  544. >
  545. <a-input
  546. v-decorator="['financingNoTwo']" />
  547. </a-form-item>
  548. </a-col>
  549. </a-row>
  550. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  551. <a-col :lg="12" :md="24" :sm="24">
  552. <a-form-item
  553. label="资产编号3"
  554. :labelCol="BaseTool.Constant.labelCol"
  555. :wrapperCol="BaseTool.Constant.wrapperCol"
  556. >
  557. <a-input
  558. v-decorator="['financingNoThird']" />
  559. </a-form-item>
  560. </a-col>
  561. <a-col :lg="12" :md="24" :sm="24">
  562. <a-form-item
  563. label="资产编号4"
  564. :labelCol="BaseTool.Constant.labelCol"
  565. :wrapperCol="BaseTool.Constant.wrapperCol"
  566. >
  567. <a-input
  568. v-decorator="['financingNoFour']" />
  569. </a-form-item>
  570. </a-col>
  571. </a-row>
  572. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  573. <a-col :lg="12" :md="24" :sm="24">
  574. <a-form-item
  575. label="资产编号5"
  576. :labelCol="BaseTool.Constant.labelCol"
  577. :wrapperCol="BaseTool.Constant.wrapperCol"
  578. >
  579. <a-input
  580. v-decorator="['financingNoFive']" />
  581. </a-form-item>
  582. </a-col>
  583. </a-row>
  584. <title-divider v-show="useType == 5" title="特种信息" width="90px"></title-divider>
  585. <div v-show="useType == 5" >
  586. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  587. <a-col :lg="12" :md="24" :sm="24">
  588. <a-form-item
  589. label="注册代码"
  590. :labelCol="BaseTool.Constant.labelCol"
  591. :wrapperCol="BaseTool.Constant.wrapperCol"
  592. >
  593. <a-input
  594. v-decorator="['registerNo']" />
  595. </a-form-item>
  596. </a-col>
  597. <a-col :lg="12" :md="24" :sm="24">
  598. <a-form-item
  599. label="介质属性"
  600. :labelCol="BaseTool.Constant.labelCol"
  601. :wrapperCol="BaseTool.Constant.wrapperCol"
  602. >
  603. <a-input
  604. v-decorator="['characterType']" />
  605. </a-form-item>
  606. </a-col>
  607. </a-row>
  608. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  609. <a-col :lg="12" :md="24" :sm="24">
  610. <a-form-item
  611. label="设备批号"
  612. :labelCol="BaseTool.Constant.labelCol"
  613. :wrapperCol="BaseTool.Constant.wrapperCol"
  614. >
  615. <a-input
  616. v-decorator="['batchNo']" />
  617. </a-form-item>
  618. </a-col>
  619. <a-col :lg="12" :md="24" :sm="24">
  620. <a-form-item
  621. label="使用登记证编号"
  622. :labelCol="BaseTool.Constant.labelCol"
  623. :wrapperCol="BaseTool.Constant.wrapperCol"
  624. >
  625. <a-input
  626. v-decorator="['usedNo']" />
  627. </a-form-item>
  628. </a-col>
  629. </a-row>
  630. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  631. <a-col :lg="12" :md="24" :sm="24">
  632. <a-form-item
  633. label="维护供应商"
  634. :labelCol="BaseTool.Constant.labelCol"
  635. :wrapperCol="BaseTool.Constant.wrapperCol"
  636. >
  637. <a-input
  638. v-decorator="['supplier']" />
  639. </a-form-item>
  640. </a-col>
  641. <a-col :lg="12" :md="24" :sm="24">
  642. <a-form-item
  643. label="登记日期"
  644. :labelCol="BaseTool.Constant.labelCol"
  645. :wrapperCol="BaseTool.Constant.wrapperCol"
  646. >
  647. <a-date-picker
  648. style="width: 100%"
  649. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  650. v-decorator="['registerDate']" />
  651. </a-form-item>
  652. </a-col>
  653. </a-row>
  654. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  655. <a-col :lg="12" :md="24" :sm="24">
  656. <a-form-item
  657. label="设计到期年限"
  658. :labelCol="BaseTool.Constant.labelCol"
  659. :wrapperCol="BaseTool.Constant.wrapperCol"
  660. >
  661. <a-date-picker
  662. style="width: 100%"
  663. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  664. v-decorator="['retirementDate']" />
  665. </a-form-item>
  666. </a-col>
  667. </a-row>
  668. </div>
  669. <title-divider v-show="useType == 4" title="计量信息" width="90px"></title-divider>
  670. <div v-show="useType == 4" >
  671. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  672. <a-col :lg="12" :md="24" :sm="24">
  673. <a-form-item
  674. label="测量设备编号"
  675. :labelCol="BaseTool.Constant.labelCol"
  676. :wrapperCol="BaseTool.Constant.wrapperCol"
  677. >
  678. <a-input
  679. v-decorator="['cardNo']" />
  680. </a-form-item>
  681. </a-col>
  682. <a-col :lg="12" :md="24" :sm="24">
  683. <a-form-item
  684. label="准确度等级"
  685. :labelCol="BaseTool.Constant.labelCol"
  686. :wrapperCol="BaseTool.Constant.wrapperCol"
  687. >
  688. <a-input
  689. v-decorator="['fdjxh']" />
  690. </a-form-item>
  691. </a-col>
  692. </a-row>
  693. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  694. <a-col :lg="12" :md="24" :sm="24">
  695. <a-form-item
  696. label="检定单位"
  697. :labelCol="BaseTool.Constant.labelCol"
  698. :wrapperCol="BaseTool.Constant.wrapperCol"
  699. >
  700. <a-input
  701. v-decorator="['dph']" />
  702. </a-form-item>
  703. </a-col>
  704. <a-col :lg="12" :md="24" :sm="24">
  705. <a-form-item
  706. label="检定人"
  707. :labelCol="BaseTool.Constant.labelCol"
  708. :wrapperCol="BaseTool.Constant.wrapperCol"
  709. >
  710. <a-input
  711. v-decorator="['zaiz']" />
  712. </a-form-item>
  713. </a-col>
  714. </a-row>
  715. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  716. <a-col :lg="12" :md="24" :sm="24">
  717. <a-form-item
  718. label="检定结论"
  719. :labelCol="BaseTool.Constant.labelCol"
  720. :wrapperCol="BaseTool.Constant.wrapperCol"
  721. >
  722. <a-select v-decorator="['rlType']" placeholder="请选择">
  723. <a-select-option
  724. v-for="(label,value) in rlTypeMap"
  725. :key="value"
  726. :label="label"
  727. :value="parseInt(value)">{{ label }}
  728. </a-select-option>
  729. </a-select>
  730. </a-form-item>
  731. </a-col>
  732. <a-col :lg="12" :md="24" :sm="24">
  733. <a-form-item
  734. label="是否周检查"
  735. :labelCol="BaseTool.Constant.labelCol"
  736. :wrapperCol="BaseTool.Constant.wrapperCol"
  737. >
  738. <a-select v-decorator="['color']" placeholder="请选择">
  739. <a-select-option
  740. v-for="(label,value) in colorMap"
  741. :key="value"
  742. :label="label"
  743. :value="parseInt(value)">{{ label }}
  744. </a-select-option>
  745. </a-select>
  746. </a-form-item>
  747. </a-col>
  748. </a-row>
  749. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  750. <a-col :lg="12" :md="24" :sm="24">
  751. <a-form-item
  752. label="检定证书编号"
  753. :labelCol="BaseTool.Constant.labelCol"
  754. :wrapperCol="BaseTool.Constant.wrapperCol"
  755. >
  756. <a-input
  757. v-decorator="['sbdh']" />
  758. </a-form-item>
  759. </a-col>
  760. <a-col :lg="12" :md="24" :sm="24">
  761. <a-form-item
  762. label="预警天数"
  763. :labelCol="BaseTool.Constant.labelCol"
  764. :wrapperCol="BaseTool.Constant.wrapperCol"
  765. >
  766. <a-input-number
  767. style="width: 100%"
  768. :min="0"
  769. :step="0.01"
  770. :formatter="BaseTool.Amount.formatter"
  771. :parser="BaseTool.Amount.parser"
  772. v-decorator="['seatNumber']" />
  773. </a-form-item>
  774. </a-col>
  775. </a-row>
  776. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  777. <a-col :lg="12" :md="24" :sm="24">
  778. <a-form-item
  779. label="检定日期"
  780. :labelCol="BaseTool.Constant.labelCol"
  781. :wrapperCol="BaseTool.Constant.wrapperCol"
  782. >
  783. <a-date-picker
  784. style="width: 100%"
  785. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  786. v-decorator="['checkDate']" />
  787. </a-form-item>
  788. </a-col>
  789. <a-col :lg="12" :md="24" :sm="24">
  790. <a-form-item
  791. label="检定周期"
  792. :labelCol="BaseTool.Constant.labelCol"
  793. :wrapperCol="BaseTool.Constant.wrapperCol"
  794. >
  795. <a-input
  796. style="width: 100%"
  797. suffix="月"
  798. :formatter="BaseTool.Amount.formatter"
  799. :parser="BaseTool.Amount.parser"
  800. v-decorator="['checkPeriod']" />
  801. </a-form-item>
  802. </a-col>
  803. </a-row>
  804. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  805. <a-col :lg="12" :md="24" :sm="24">
  806. <a-form-item
  807. label="检定有效期至"
  808. :labelCol="BaseTool.Constant.labelCol"
  809. :wrapperCol="BaseTool.Constant.wrapperCol"
  810. >
  811. <a-date-picker
  812. style="width: 100%"
  813. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  814. v-decorator="['nextCheckDate']" />
  815. </a-form-item>
  816. </a-col>
  817. </a-row>
  818. </div>
  819. <title-divider title="文件信息" width="90px"></title-divider>
  820. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  821. <a-col :lg="12" :md="24" :sm="24">
  822. <a-form-item
  823. label="维保手册"
  824. :labelCol="BaseTool.Constant.labelCol"
  825. :wrapperCol="BaseTool.Constant.wrapperCol"
  826. >
  827. <a-upload
  828. :action="uploadUrl"
  829. :multiple="true"
  830. :file-list="this.defaultRepairFileList"
  831. @change="handleRepairFileChange"
  832. :headers="headers"
  833. >
  834. <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
  835. </a-upload>
  836. </a-form-item>
  837. </a-col>
  838. <a-col :lg="12" :md="24" :sm="24">
  839. <a-form-item
  840. label="使用手册"
  841. :labelCol="BaseTool.Constant.labelCol"
  842. :wrapperCol="BaseTool.Constant.wrapperCol"
  843. >
  844. <a-upload
  845. :action="uploadUrl"
  846. :multiple="true"
  847. :file-list="this.defaultUseFileList"
  848. @change="handleUseFileChange"
  849. :headers="headers"
  850. >
  851. <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
  852. </a-upload>
  853. </a-form-item>
  854. </a-col>
  855. </a-row>
  856. <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
  857. <a-col :lg="12" :md="24" :sm="24">
  858. <a-form-item
  859. label="验收文件"
  860. :labelCol="BaseTool.Constant.labelCol"
  861. :wrapperCol="BaseTool.Constant.wrapperCol"
  862. >
  863. <a-upload
  864. :action="uploadUrl"
  865. :multiple="true"
  866. :file-list="this.defaultRecheckFileList"
  867. @change="handleRecheckFileChange"
  868. :headers="headers"
  869. >
  870. <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
  871. </a-upload>
  872. </a-form-item>
  873. </a-col>
  874. <a-col :lg="12" :md="24" :sm="24">
  875. <a-form-item
  876. label="设备图片"
  877. :labelCol="BaseTool.Constant.labelCol"
  878. :wrapperCol="BaseTool.Constant.wrapperCol"
  879. >
  880. <a-upload
  881. :action="uploadUrl"
  882. :multiple="true"
  883. :file-list="this.defaultSbFileList"
  884. @change="handleSbFileChange"
  885. accept="image/*"
  886. :headers="headers"
  887. >
  888. <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
  889. </a-upload>
  890. </a-form-item>
  891. </a-col>
  892. </a-row>
  893. </a-form>
  894. <sb-model-select-modal ref="sbModelSelectModal" @selected="handleSbModelSelected"/>
  895. <sb-info-select-modal ref="sbInfoSelectModal" @selected="handleSbSelectd"/>
  896. <firm-producer-select-modal ref="producerSelectModal" @selected="handleProducerSelected"/>
  897. <param-form ref="paramForm" @ok="handleParamList" />
  898. </a-card>
  899. </template>
  900. <script>
  901. import pick from 'lodash.pick'
  902. import { addSbInfo, updateSbInfo, fetchSbInfo, copySbInfo } from '@/api/sb/info'
  903. import { fetchSbTypeTree } from '@/api/sb/type'
  904. import FirmProducerSelectModal from '@/views/firm/producer/modules/FirmProducerSelectModal'
  905. import SbGuigeSelectModal from '@/views/sb/guige/modules/SbGuigeSelectModal'
  906. import SbModelSelectModal from '@/views/sb/model/modules/SbModelSelectModal'
  907. import BaseTool from '../../../../utils/tool'
  908. import { queryUserDeptByUserDeptId } from '@/api/upms/user-dept'
  909. import { ACCESS_TOKEN } from '@/store/mutation-types'
  910. import Vue from 'vue'
  911. import { uploadUrl } from '@/api/upms/file'
  912. import { queryDept, getDeptsAllByParentId } from '@/api/upms/dept'
  913. import { queryUser } from '@/api/upms/user'
  914. import DetailList from '@/components/tools/DetailList'
  915. import SbInfoSelectModal from '@/views/sb/info/modules/SbInfoSelectModal'
  916. import ParamForm from './ParamForm'
  917. const DetailListItem = DetailList.Item
  918. export default {
  919. name: 'BaseSbInfo',
  920. components: {
  921. FirmProducerSelectModal,
  922. SbGuigeSelectModal,
  923. SbModelSelectModal,
  924. SbInfoSelectModal,
  925. ParamForm,
  926. DetailList,
  927. DetailListItem
  928. },
  929. data () {
  930. return {
  931. confirmLoading: false,
  932. modalTitle: null,
  933. form: this.$form.createForm(this),
  934. areaList: {},
  935. companyList: {},
  936. paramList: [],
  937. projectList: {},
  938. deptList: {},
  939. groupList: {},
  940. visible: false,
  941. sbTypeTreeData: [],
  942. // sbInfoTreeData: [],
  943. // sourceSbInfoTreeData: [],
  944. // sbPositionTreeData: [],
  945. depreciationTypeMap: {},
  946. sourceTypeMap: {},
  947. levelMap: {},
  948. rlTypeMap: {},
  949. colorMap: {},
  950. useTypeMap: {},
  951. statusMap: {},
  952. isChildMap: {},
  953. isShowMap: {},
  954. isFinancingMap: {},
  955. userList: {},
  956. unitMap: {},
  957. sbInfoSelectType: null,
  958. repairFileList: [], // 维修手册
  959. defaultRepairFileList: [],
  960. defaultUseFileList: [],
  961. defaultRecheckFileList: [],
  962. defaultSbFileList: [],
  963. useFileList: [], // 使用手册
  964. recheckFileList: [], // 验收手册
  965. sbFileList: [], // 设备图片,
  966. uploadUrl: uploadUrl,
  967. qrcodesrc: null,
  968. id: null,
  969. fileList: [],
  970. type: null,
  971. headers: {
  972. Authorization: 'Bearer ' + Vue.ls.get(ACCESS_TOKEN)
  973. }
  974. }
  975. },
  976. props: {
  977. useType: {
  978. type: Number,
  979. default: 3
  980. }
  981. },
  982. created () {
  983. this.depreciationTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_DEPRECIATIONTYPE)
  984. this.levelMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_LEVEL)
  985. this.colorMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_COLOR)
  986. this.rlTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.RANLIAO_TYPE)
  987. this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_INFO_STATUS)
  988. this.unitMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_UNIT)
  989. this.sourceTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBTYPE_SOURCETYPE)
  990. this.useTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_USE_TYPE)
  991. this.isChildMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_IS_CHILD)
  992. this.isShowMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_IS_SHOW)
  993. this.isFinancingMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_IS_FINANCING)
  994. },
  995. methods: {
  996. base (record, type) {
  997. this.setTree(record)
  998. // 清除文件列表
  999. this.visible = true
  1000. // 选择框查询条件
  1001. // 如果是空标识添加
  1002. if (this.BaseTool.Object.isBlank(record)) {
  1003. this.qrcodesrc = null
  1004. this.modalTitle = '添加'
  1005. this.clearFileList()
  1006. return
  1007. }
  1008. this.useType = record.useType
  1009. this.modalTitle = '编辑'
  1010. this.id = record.id
  1011. this.qrcodesrc = record.qrCode
  1012. this.repairFileList = record.repairFileList
  1013. this.useFileList = record.useFileList
  1014. this.recheckFileList = record.recheckFileList
  1015. this.sbFileList = record.sbFileList
  1016. this.defaultRepairFileList = this.BaseTool.UPLOAD.transImg(this.repairFileList)
  1017. this.defaultUseFileList = this.BaseTool.UPLOAD.transImg(this.useFileList)
  1018. this.defaultRecheckFileList = this.BaseTool.UPLOAD.transImg(this.recheckFileList)
  1019. this.defaultSbFileList = this.BaseTool.UPLOAD.transImg(this.sbFileList)
  1020. this.paramList = JSON.parse(record.paramList)
  1021. if (type === 1) {
  1022. this.type = type
  1023. this.modalTitle = '复制'
  1024. this.qrcodesrc = null
  1025. record.no = null
  1026. this.clearFileList()
  1027. }
  1028. const { form: { setFieldsValue } } = this
  1029. // 日期处理
  1030. // record.buyDate = this.BaseTool.Moment(record.buyDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1031. // record.startDate = this.BaseTool.Moment(record.startDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1032. // record.nextCheckDate = this.BaseTool.Moment(record.nextCheckDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1033. // record.guaranteeDate = this.BaseTool.Moment(record.guaranteeDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1034. // record.retirementDate = this.BaseTool.Moment(record.retirementDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1035. // record.lastRepaireTime = this.BaseTool.Moment(record.lastRepaireTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1036. // record.lastBaoyangTime = this.BaseTool.Moment(record.lastBaoyangTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1037. if (record.buyDate != null) {
  1038. record.buyDate = this.BaseTool.Moment(record.buyDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1039. this.$nextTick(() => {
  1040. setFieldsValue(Object.assign(pick(record, [
  1041. 'buyDate'
  1042. ])))
  1043. })
  1044. }
  1045. if (record.startDate != null) {
  1046. record.startDate = this.BaseTool.Moment(record.startDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1047. this.$nextTick(() => {
  1048. setFieldsValue(Object.assign(pick(record, [
  1049. 'startDate'
  1050. ])))
  1051. })
  1052. }
  1053. if (record.checkDate != null) {
  1054. record.checkDate = this.BaseTool.Moment(record.checkDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1055. this.$nextTick(() => {
  1056. setFieldsValue(Object.assign(pick(record, [
  1057. 'checkDate'
  1058. ])))
  1059. })
  1060. }
  1061. if (record.nextCheckDate != null) {
  1062. record.nextCheckDate = this.BaseTool.Moment(record.nextCheckDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1063. this.$nextTick(() => {
  1064. setFieldsValue(Object.assign(pick(record, [
  1065. 'nextCheckDate'
  1066. ])))
  1067. })
  1068. }
  1069. if (record.retirementDate != null) {
  1070. record.retirementDate = this.BaseTool.Moment(record.retirementDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1071. this.$nextTick(() => {
  1072. setFieldsValue(Object.assign(pick(record, [
  1073. 'retirementDate'
  1074. ])))
  1075. })
  1076. }
  1077. if (record.registerDate != null) {
  1078. record.registerDate = this.BaseTool.Moment(record.registerDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1079. this.$nextTick(() => {
  1080. setFieldsValue(Object.assign(pick(record, [
  1081. 'registerDate'
  1082. ])))
  1083. })
  1084. }
  1085. record.unitName = this.BaseTool.Object.getField(this.unitMap, record.unit)
  1086. record.useTypeName = this.BaseTool.Object.getField(this.useTypeMap, record.useType)
  1087. this.$nextTick(() => {
  1088. setFieldsValue(Object.assign(pick(record, [
  1089. 'id',
  1090. 'no',
  1091. 'parentId',
  1092. 'parentSbName',
  1093. 'isChild',
  1094. 'isShow',
  1095. 'isFinancing',
  1096. 'financingNo',
  1097. 'financingNoTwo',
  1098. 'financingNoThird',
  1099. 'financingNoFour',
  1100. 'financingNoFive',
  1101. 'name',
  1102. 'model',
  1103. 'cph',
  1104. 'positionId',
  1105. 'producerName',
  1106. 'useArea',
  1107. 'useCompany',
  1108. 'useProject',
  1109. 'useDept',
  1110. 'saveUser',
  1111. 'repairUser',
  1112. 'useGroup',
  1113. 'typeId',
  1114. 'level',
  1115. 'initialValue',
  1116. // 'cutValue',
  1117. 'producerId',
  1118. // 'sourceType',
  1119. 'unit',
  1120. 'buyDate',
  1121. 'startDate',
  1122. 'zbh',
  1123. // 'wbFile',
  1124. // 'useFile',
  1125. // 'checkFile',
  1126. // 'sbImage',
  1127. 'status',
  1128. 'remark',
  1129. 'zzh',
  1130. 'zz',
  1131. 'zjm',
  1132. 'jbdh',
  1133. 'useType',
  1134. 'cardNo',
  1135. 'fdjxh',
  1136. 'checkDate',
  1137. 'checkPeriod',
  1138. 'nextCheckDate',
  1139. 'dph',
  1140. 'zaiz',
  1141. 'rlType',
  1142. 'color',
  1143. 'sbdh',
  1144. 'seatNumber',
  1145. 'registerNo',
  1146. 'characterType',
  1147. 'usedNo',
  1148. 'supplier',
  1149. 'repairUserSecond',
  1150. 'batchNo',
  1151. 'workYear',
  1152. 'retirementDate',
  1153. 'registerDate'
  1154. ])))
  1155. })
  1156. },
  1157. save () {
  1158. const { form: { validateFieldsAndScroll } } = this
  1159. this.confirmLoading = true
  1160. validateFieldsAndScroll((errors, values) => {
  1161. if (errors) {
  1162. this.confirmLoading = false
  1163. return
  1164. }
  1165. // 日期数据的处理
  1166. values.buyDate = BaseTool.Date.formatter(values.buyDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1167. values.startDate = BaseTool.Date.formatter(values.startDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1168. values.checkDate = BaseTool.Date.formatter(values.checkDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1169. values.nextCheckDate = BaseTool.Date.formatter(values.nextCheckDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1170. values.guaranteeDate = BaseTool.Date.formatter(values.guaranteeDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1171. values.retirementDate = BaseTool.Date.formatter(values.retirementDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1172. values.lastRepaireTime = this.BaseTool.Date.formatter(values.lastRepaireTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1173. values.lastBaoyangTime = this.BaseTool.Date.formatter(values.lastBaoyangTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1174. values.spDate = this.BaseTool.Date.formatter(values.spDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1175. values.jbdDate = this.BaseTool.Date.formatter(values.jbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1176. values.sbdDate = this.BaseTool.Date.formatter(values.sbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1177. values.sbDate = this.BaseTool.Date.formatter(values.sbDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
  1178. // 上传文件
  1179. values.repairFileList = this.repairFileList
  1180. values.useFileList = this.useFileList
  1181. values.recheckFileList = this.recheckFileList
  1182. values.sbFileList = this.sbFileList
  1183. values.paramList = JSON.stringify(this.paramList)
  1184. values.useType = this.useType
  1185. if (this.BaseTool.String.isBlank(values.id)) {
  1186. addSbInfo(values)
  1187. .then(() => {
  1188. this.handleCancel(values)
  1189. }).catch(() => {
  1190. this.confirmLoading = false
  1191. })
  1192. } else {
  1193. if (this.type == null) {
  1194. updateSbInfo(values)
  1195. .then(() => {
  1196. this.handleCancel(values)
  1197. }).catch(() => {
  1198. this.confirmLoading = false
  1199. })
  1200. } else {
  1201. copySbInfo(values)
  1202. .then(() => {
  1203. this.handleCancel(values)
  1204. }).catch(() => {
  1205. this.confirmLoading = false
  1206. })
  1207. }
  1208. }
  1209. })
  1210. },
  1211. getQrcodeSrc () {
  1212. console.log(111, 22)
  1213. },
  1214. handleCancel () {
  1215. this.visible = false
  1216. this.confirmLoading = false
  1217. this.form.resetFields()
  1218. this.$emit('ok')
  1219. },
  1220. handleFresh () {
  1221. fetchSbInfo({ id: this.id }).then(res => {
  1222. const { form: { setFieldsValue } } = this
  1223. const record = res.data
  1224. this.$nextTick(() => {
  1225. setFieldsValue(Object.assign(pick(record, [
  1226. 'zjm',
  1227. 'jbdh'
  1228. ])))
  1229. })
  1230. })
  1231. },
  1232. setTree (record = {}) {
  1233. fetchSbTypeTree().then(res => {
  1234. this.sbTypeTreeData = res.data
  1235. })
  1236. // getSbInfoTree({ id: record.id }).then(res => {
  1237. // this.sbInfoTreeData = res.data
  1238. // this.sourceSbInfoTreeData = res.data
  1239. // })
  1240. // getSbPositionTree().then(res => {
  1241. // this.sbPositionTreeData = res.data
  1242. // })
  1243. queryDept({ nature: this.DictCache.VALUE.SYS_DEPT_NATURE.JITUAN }).then(res => {
  1244. this.areaList = res.data
  1245. })
  1246. if (record.useArea != null) {
  1247. getDeptsAllByParentId({ deptId: record.useArea, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.FEN_GONG_SI }).then(res => {
  1248. this.companyList = res.data
  1249. })
  1250. getDeptsAllByParentId({ deptId: record.useCompany, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.XIANG_MU_BU }).then(res => {
  1251. this.projectList = res.data
  1252. })
  1253. getDeptsAllByParentId({ deptId: record.useProject, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BU_MEN }).then(res => {
  1254. this.deptList = res.data
  1255. })
  1256. getDeptsAllByParentId({ deptId: record.useDept, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BAN_ZU }).then(res => {
  1257. this.groupList = res.data
  1258. })
  1259. queryUser({ }).then(res => {
  1260. this.userList = res.data
  1261. })
  1262. }
  1263. queryUser({ }).then(res => {
  1264. this.userList = res.data
  1265. })
  1266. },
  1267. handleSbModelSelect () {
  1268. const modal = this.$refs.sbModelSelectModal
  1269. modal.base()
  1270. },
  1271. handleSbModelSelected (keys, rows) {
  1272. const [ key ] = keys
  1273. const [ row ] = rows
  1274. const { form: { setFieldsValue } } = this
  1275. this.$nextTick(() => {
  1276. setFieldsValue({
  1277. 'modelId': key,
  1278. 'name': row.name,
  1279. 'model': row.model,
  1280. 'nameModel': row.nameModel,
  1281. 'typeId': row.typeId,
  1282. 'typeName': row.typeName,
  1283. 'level': row.level,
  1284. 'initialValue': row.value,
  1285. 'useType': row.useType,
  1286. 'useTypeName': this.BaseTool.Object.getField(this.useTypeMap, row.useType),
  1287. 'producerId': row.producerId,
  1288. 'producerName': row.producerName,
  1289. 'unit': row.unit,
  1290. 'unitName': this.BaseTool.Object.getField(this.unitMap, row.unit)
  1291. })
  1292. })
  1293. },
  1294. beforeRecheckFileListUpload (file) {
  1295. const reg = /\.(xls|xlsx)(\?.*)?$/
  1296. return new Promise((resolve, reject) => {
  1297. if (reg.test(file.name)) {
  1298. this.recheckFileList = [file]
  1299. return true
  1300. } else {
  1301. this.$message.error(`请上传正确的xls|xlsx文件`)
  1302. reject(new Error('请上传正确的xls|xlsx文件'))
  1303. return false
  1304. }
  1305. })
  1306. },
  1307. beforeUploadPic (file) {
  1308. const reg = /\.(jpg|jpeg|png)(\?.*)?$/
  1309. return new Promise((resolve, reject) => {
  1310. if (reg.test(file.name)) {
  1311. this.sbFileList = [file]
  1312. return true
  1313. } else {
  1314. this.$message.error(`请上传正确的jpg|jpeg|png文件`)
  1315. reject(new Error('请上传正确的jpg|jpeg|png文件'))
  1316. return false
  1317. }
  1318. })
  1319. },
  1320. clearFileList () {
  1321. this.repairFileList = []
  1322. this.useFileList = []
  1323. this.recheckFileList = []
  1324. this.sbFileList = []
  1325. },
  1326. handleRepairFileChange (info) {
  1327. this.defaultRepairFileList = info.fileList
  1328. this.repairFileList = this.setFileList(info, 1)
  1329. },
  1330. handleUseFileChange (info) {
  1331. this.defaultUseFileList = info.fileList
  1332. this.useFileList = this.setFileList(info, 2)
  1333. },
  1334. handleAreaChange (value) {
  1335. getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.FEN_GONG_SI }).then(res => {
  1336. this.companyList = res.data
  1337. })
  1338. },
  1339. handleCompanyChange (value) {
  1340. getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.XIANG_MU_BU }).then(res => {
  1341. this.projectList = res.data
  1342. })
  1343. },
  1344. handleProjectChange (value) {
  1345. getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BU_MEN }).then(res => {
  1346. this.deptList = res.data
  1347. })
  1348. },
  1349. handleDeptChange (value) {
  1350. getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BAN_ZU }).then(res => {
  1351. this.groupList = res.data
  1352. })
  1353. },
  1354. handleGroupChange (value) {
  1355. queryUserDeptByUserDeptId({ deptId: value }).then(res => {
  1356. this.userList = res.data
  1357. })
  1358. },
  1359. handleRecheckFileChange (info) {
  1360. this.defaultRecheckFileList = info.fileList
  1361. this.recheckFileList = this.setFileList(info, 3)
  1362. },
  1363. handleSbFileChange (info) {
  1364. this.defaultSbFileList = info.fileList
  1365. this.sbFileList = this.setFileList(info, 4)
  1366. },
  1367. setFileList1 (info, type) {
  1368. const fileList = [...info.fileList]
  1369. const file = [...info.file]
  1370. if (file.status === 'done') {
  1371. return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
  1372. } else if (file.status === 'removed') {
  1373. return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
  1374. } else if (file.status === 'error') {
  1375. this.$message.error('上传失败')
  1376. return []
  1377. }
  1378. },
  1379. clearParent () {
  1380. const { form: { setFieldsValue } } = this
  1381. // 日期处理
  1382. this.$nextTick(() => {
  1383. setFieldsValue(Object.assign({
  1384. 'parentId': null,
  1385. 'parentSbName': null
  1386. }))
  1387. })
  1388. },
  1389. // 主子设备切换
  1390. childChange (value) {
  1391. if (value === this.DictCache.VALUE.SB_IS_CHILD.IS_PARENT || value === this.DictCache.VALUE.SB_IS_CHILD.IS_NORMAL) {
  1392. const { form: { setFieldsValue } } = this
  1393. // 日期处理
  1394. this.$nextTick(() => {
  1395. setFieldsValue(Object.assign({
  1396. 'parentId': null,
  1397. 'parentSbName': null
  1398. }))
  1399. })
  1400. }
  1401. },
  1402. handleSbSelect () {
  1403. this.$refs.sbInfoSelectModal.base({}, { isChild: this.DictCache.VALUE.SB_IS_CHILD.IS_PARENT })
  1404. },
  1405. handleSbSelectd (keys, rows) {
  1406. const [ key ] = keys
  1407. const [ row ] = rows
  1408. const { form: { setFieldsValue } } = this
  1409. // 日期处理
  1410. this.$nextTick(() => {
  1411. setFieldsValue(Object.assign({
  1412. 'parentId': key,
  1413. 'parentSbName': row.name,
  1414. 'isChild': this.DictCache.VALUE.SB_IS_CHILD.IS_CHILD
  1415. }))
  1416. })
  1417. },
  1418. handleChange (value) {
  1419. this.useType = value
  1420. },
  1421. handleProducerSelect () {
  1422. const modal = this.$refs.producerSelectModal
  1423. modal.base({}, { type: 1 })
  1424. },
  1425. handleProducerSelected (record, selectedRowKeys, selectedRow) {
  1426. const { form: { setFieldsValue } } = this
  1427. const [ key ] = selectedRowKeys
  1428. const [ row ] = selectedRow
  1429. setFieldsValue({
  1430. 'producerId': key,
  1431. 'producerName': row.name
  1432. })
  1433. },
  1434. setFileList (info, type) {
  1435. // { file, fileList }
  1436. const file = info.file
  1437. const fileList = info.fileList
  1438. // fileList = fileList.slice(-2)
  1439. // console.log(111, this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type))
  1440. if (file.status === 'done') {
  1441. return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
  1442. } else if (file.status === 'removed') {
  1443. return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
  1444. } else if (file.status === 'error') {
  1445. this.$message.error('上传失败')
  1446. return null
  1447. }
  1448. },
  1449. handlePoint () {
  1450. const { form: { getFieldValue } } = this
  1451. const zjm = getFieldValue('zjm')
  1452. const jbdh = getFieldValue('jbdh')
  1453. const a = document.createElement('a')
  1454. a.href = '/hitch-screen/point.html?id=' + this.id + '&zjm=' + zjm + '&jbdh=' + jbdh
  1455. a.target = '_blank'
  1456. a.click()
  1457. },
  1458. handleParam () {
  1459. const modal = this.$refs.paramForm
  1460. modal.base(this.model)
  1461. },
  1462. handleParamList (values) {
  1463. console.log(values)
  1464. if (this.paramList == null) {
  1465. this.paramList = []
  1466. }
  1467. this.paramList.push(values)
  1468. },
  1469. handleDelParam (index) {
  1470. console.log(index)
  1471. this.paramList.splice(index, 1)
  1472. }
  1473. }
  1474. }
  1475. </script>