BaseForm.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. <template>
  2. <a-modal
  3. :title="modalTitle"
  4. :width="800"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. class="ant-modal2"
  8. @cancel="handleCancel"
  9. >
  10. <a-form :form="form">
  11. <a-form-item v-show="false">
  12. <a-input v-decorator="['id']" type="hidden"/>
  13. </a-form-item>
  14. <!-- <a-form-item label="计划id" v-show="false">
  15. <a-input
  16. v-decorator="['planId', {rules: [{required: true, message: '计划id不能为空'}]}]"/>
  17. </a-form-item>
  18. <a-form-item label="设备id" v-show="false">
  19. <a-input
  20. v-decorator="['sbId', {rules: [{required: true, message: '设备id不能为空'}]}]"/>
  21. </a-form-item>
  22. <a-form-item label="部件id" v-show="false">
  23. <a-input
  24. v-decorator="['partId', {rules: [{required: false, message: '部件id不能为空'}]}]"/>
  25. </a-form-item>-->
  26. <a-form-item label="标准id" v-show="false">
  27. <a-input
  28. v-decorator="['standardId', {rules: [{required: true, message: '标准id不能为空'}]}]"/>
  29. </a-form-item>
  30. <!-- <a-form-item label="负责人id" v-show="false">
  31. <a-input
  32. v-decorator="['checkUserId', {rules: [{required: false, message: '计划id不能为空'}]}]"/>
  33. </a-form-item>
  34. <row-list :col="2">
  35. <row-item>
  36. <a-form-item
  37. label="任务名称"
  38. :labelCol="BaseTool.Constant.labelCol"
  39. :wrapperCol="BaseTool.Constant.wrapperCol"
  40. >
  41. <a-input
  42. disabled
  43. v-decorator="['name', {rules: [{required: true, message: '负责人不能为空'}]}]"/>
  44. </a-form-item>
  45. </row-item>
  46. <row-item>
  47. <a-form-item
  48. label="计划名称"
  49. :labelCol="BaseTool.Constant.labelCol"
  50. :wrapperCol="BaseTool.Constant.wrapperCol"
  51. >
  52. <a-input
  53. disabled
  54. v-decorator="['planName', {rules: [{required: true, message: '点计划名称不能为空'}]}]"/>
  55. </a-form-item>
  56. </row-item>
  57. <row-item>
  58. <a-form-item
  59. label="计划单号"
  60. :labelCol="BaseTool.Constant.labelCol"
  61. :wrapperCol="BaseTool.Constant.wrapperCol"
  62. >
  63. <a-input
  64. disabled
  65. v-decorator="['planNo', {rules: [{required: true, message: '计划单号不能为空'}]}]"/>
  66. </a-form-item>
  67. </row-item>
  68. <row-item>
  69. <a-form-item
  70. label="负责人"
  71. :labelCol="BaseTool.Constant.labelCol"
  72. :wrapperCol="BaseTool.Constant.wrapperCol"
  73. >
  74. <a-input
  75. disabled
  76. v-decorator="['checkUserName', {rules: [{required: true, message: '负责人不能为空'}]}]"/>
  77. </a-form-item>
  78. </row-item>
  79. <row-item>
  80. <a-form-item
  81. label="设备名称"
  82. :labelCol="BaseTool.Constant.labelCol"
  83. :wrapperCol="BaseTool.Constant.wrapperCol"
  84. >
  85. <a-input
  86. disabled
  87. v-decorator="['sbName', {rules: [{required: true, message: '设备名称不能为空'}]}]"/>
  88. </a-form-item>
  89. </row-item>
  90. <row-item>
  91. <a-form-item
  92. label="执行日期"
  93. :labelCol="BaseTool.Constant.labelCol"
  94. :wrapperCol="BaseTool.Constant.wrapperCol"
  95. >
  96. <a-date-picker
  97. showTime
  98. disabled
  99. style="width: 100%"
  100. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  101. v-decorator="['startTime', {rules: [{required: true, message: '执行日期不能为空'}]}]"/>
  102. </a-form-item>
  103. </row-item>
  104. <row-item>
  105. <a-form-item
  106. label="截至日期"
  107. :labelCol="BaseTool.Constant.labelCol"
  108. :wrapperCol="BaseTool.Constant.wrapperCol"
  109. >
  110. <a-date-picker
  111. showTime
  112. disabled
  113. style="width: 100%"
  114. :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
  115. v-decorator="['endTime', {rules: [{required: true, message: '截至日期不能为空'}]}]"/>
  116. </a-form-item>
  117. </row-item>
  118. <row-item>
  119. <a-form-item
  120. label="实际开始时间"
  121. :labelCol="BaseTool.Constant.labelCol"
  122. :wrapperCol="BaseTool.Constant.wrapperCol"
  123. >
  124. <a-date-picker
  125. showTime
  126. style="width: 100%"
  127. :format="BaseTool.Date.PICKER_NORM_DATETIME_PATTERN"
  128. v-decorator="['actualStartTime']"/>
  129. </a-form-item>
  130. </row-item>
  131. <row-item>
  132. <a-form-item
  133. label="实际结束时间"
  134. :labelCol="BaseTool.Constant.labelCol"
  135. :wrapperCol="BaseTool.Constant.wrapperCol"
  136. >
  137. <a-date-picker
  138. showTime
  139. style="width: 100%"
  140. :format="BaseTool.Date.PICKER_NORM_DATETIME_PATTERN"
  141. v-decorator="['actualEndTime']"/>
  142. </a-form-item>
  143. </row-item>
  144. <row-item>
  145. <a-form-item
  146. label="是否停机"
  147. :labelCol="BaseTool.Constant.labelCol"
  148. :wrapperCol="BaseTool.Constant.wrapperCol"
  149. >
  150. <a-select
  151. v-decorator="['sbStatus', {initialValue:1,rules: [{required: true, message: '是否停机不能为空'}]}]"
  152. placeholder="请选择">
  153. <a-select-option
  154. v-for="(label,value) in sbStatusMap"
  155. :key="value"
  156. :label="label"
  157. :value="parseInt(value)">{{ label }}
  158. </a-select-option>
  159. </a-select>
  160. </a-form-item>
  161. </row-item>
  162. <row-item>
  163. <a-form-item
  164. label="任务状态"
  165. :labelCol="BaseTool.Constant.labelCol"
  166. :wrapperCol="BaseTool.Constant.wrapperCol"
  167. >
  168. <a-select
  169. disabled
  170. v-decorator="['status']"
  171. placeholder="请选择">
  172. <a-select-option
  173. v-for="(label,value) in statusMap"
  174. :key="value"
  175. :label="label"
  176. :value="parseInt(value)">{{ label }}
  177. </a-select-option>
  178. </a-select>
  179. </a-form-item>
  180. </row-item>
  181. </row-list>-->
  182. <row-list :col="1">
  183. <!--<row-item>
  184. <a-form-item
  185. label="要求"
  186. :labelCol="BaseTool.Constant.labelCol2"
  187. :wrapperCol="BaseTool.Constant.wrapperCol2"
  188. >
  189. <a-textarea
  190. disabled
  191. :rows="4"
  192. v-decorator="['requirement']"/>
  193. </a-form-item>
  194. </row-item>
  195. <row-item>
  196. <a-form-item
  197. label="备注"
  198. :labelCol="BaseTool.Constant.labelCol2"
  199. :wrapperCol="BaseTool.Constant.wrapperCol2"
  200. >
  201. <a-textarea
  202. disabled
  203. :rows="4"
  204. v-decorator="['remark']"/>
  205. </a-form-item>
  206. </row-item>-->
  207. <row-item>
  208. <a-form-item
  209. label="检查结果"
  210. :labelCol="BaseTool.Constant.labelCol2"
  211. :wrapperCol="BaseTool.Constant.wrapperCol2"
  212. >
  213. <a-textarea
  214. :rows="4"
  215. v-decorator="['feedback', {rules: [{required: true, message: '检查结果不能为空'}]}]"/>
  216. </a-form-item>
  217. </row-item>
  218. </row-list>
  219. </a-form>
  220. <template slot="footer">
  221. <a-button :loading="confirmLoading" type="primary" @click="save()">完成</a-button>
  222. </template>
  223. </a-modal>
  224. </template>
  225. <script>
  226. import pick from 'lodash.pick'
  227. import { addCheckJob, updateCheckJob, finishJob } from '@/api/check/checkjob'
  228. export default {
  229. name: 'BaseCheckJob',
  230. data () {
  231. return {
  232. confirmLoading: false,
  233. modalTitle: null,
  234. form: this.$form.createForm(this),
  235. visible: false,
  236. // 下拉框map
  237. statusMap: {},
  238. sbStatusMap: {}
  239. }
  240. },
  241. props: {
  242. /**
  243. * 检查类型: 1-负责 2-巡检
  244. */
  245. checkType: {
  246. type: Number,
  247. default: 1
  248. }
  249. },
  250. created () {
  251. // 下拉框map
  252. this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CHECK_JOB_STATUS)
  253. this.sbStatusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.YES_NO)
  254. },
  255. methods: {
  256. base (record) {
  257. this.visible = true
  258. // 如果是空标识添加
  259. console.log(record, 87878)
  260. if (this.BaseTool.Object.isBlank(record)) {
  261. this.modalTitle = '添加'
  262. return
  263. }
  264. this.modalTitle = '编辑'
  265. const { form: { setFieldsValue } } = this
  266. // 日期处理
  267. record.startTime = this.BaseTool.Moment(record.startTime, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
  268. record.endTime = this.BaseTool.Moment(record.endTime, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
  269. record.actualStartTime = this.BaseTool.Moment(record.actualStartTime, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
  270. record.actualEndTime = this.BaseTool.Moment(record.actualEndTime, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
  271. this.$nextTick(() => {
  272. setFieldsValue(Object.assign(pick(record, [
  273. 'id',
  274. 'standardId',
  275. 'feedback'
  276. /* 'name',
  277. 'planId',
  278. 'planNo',
  279. 'planName',
  280. 'sbId',
  281. 'sbName',
  282. 'partId',
  283. 'partName',
  284. 'checkUserId',
  285. 'checkUserName',
  286. 'startTime',
  287. 'endTime',
  288. 'status',
  289. 'sbStatus',
  290. 'requirement',
  291. 'remark' */
  292. ])))
  293. if (record.actualStartTime.isValid()) {
  294. setFieldsValue(Object.assign(pick(record, [
  295. 'actualStartTime'
  296. ])))
  297. }
  298. if (record.actualEndTime.isValid()) {
  299. setFieldsValue(Object.assign(pick(record, [
  300. 'actualEndTime'
  301. ])))
  302. }
  303. })
  304. },
  305. save () {
  306. const { form: { validateFieldsAndScroll } } = this
  307. this.confirmLoading = true
  308. validateFieldsAndScroll((errors, values) => {
  309. if (errors) {
  310. this.confirmLoading = false
  311. return
  312. }
  313. // 日期处理
  314. values.startTime = this.BaseTool.Date.formatter(values.startTime, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
  315. values.endTime = this.BaseTool.Date.formatter(values.endTime, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
  316. values.actualStartTime = this.BaseTool.Date.formatter(values.actualStartTime, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
  317. values.actualEndTime = this.BaseTool.Date.formatter(values.actualEndTime, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
  318. if (this.BaseTool.String.isBlank(values.id)) {
  319. addCheckJob(values)
  320. .then(() => {
  321. this.handleCancel(values)
  322. }).catch(() => {
  323. this.confirmLoading = false
  324. })
  325. } else {
  326. finishJob(values)
  327. .then(() => {
  328. this.handleCancel(values)
  329. }).catch(() => {
  330. this.confirmLoading = false
  331. })
  332. }
  333. })
  334. },
  335. handleCancel (values) {
  336. this.visible = false
  337. this.confirmLoading = false
  338. this.form.resetFields()
  339. if (this.BaseTool.Object.isNotBlank(values)) {
  340. this.$emit('ok', values)
  341. }
  342. }
  343. }
  344. }
  345. </script>