BaseForm.vue 57 KB

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