BaseForm.vue 55 KB

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