BaseForm.vue 57 KB

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