CreateTaskForm.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <template>
  2. <a-modal
  3. title="生成任务"
  4. :width="800"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. @cancel="handleCancel"
  8. >
  9. <a-form :form="form">
  10. <row-list :col="1" v-show="false">
  11. <row-item>
  12. <a-form-item>
  13. <a-input v-decorator="['gatherId']" type="hidden"/>
  14. </a-form-item>
  15. </row-item>
  16. </row-list>
  17. <a-row type="flex">
  18. <a-col :sm="20" >
  19. <a-form-item
  20. label="巡检任务名称"
  21. :labelCol="BaseTool.Constant.labelCol"
  22. :wrapperCol="BaseTool.Constant.wrapperCol"
  23. >
  24. <a-input v-decorator="['name', {rules: [{required: true, message: '巡检任务名称不能为空'}]}]" />
  25. </a-form-item>
  26. </a-col>
  27. <a-col :sm="20" >
  28. <a-form-item
  29. label="巡检人"
  30. :labelCol="BaseTool.Constant.labelCol"
  31. :wrapperCol="BaseTool.Constant.wrapperCol"
  32. >
  33. <a-select v-decorator="['checker', {rules: [{required: true, message: '巡检人不能为空'}]}]">
  34. <a-select-option
  35. v-for="item in ipqcMap"
  36. :key="item.userId"
  37. :label="item.realName"
  38. :value="item.userId">
  39. {{ item.realName }}
  40. </a-select-option>
  41. </a-select>
  42. </a-form-item>
  43. </a-col>
  44. <a-col :sm="20" >
  45. <a-form-item
  46. label="巡检主管"
  47. :labelCol="BaseTool.Constant.labelCol"
  48. :wrapperCol="BaseTool.Constant.wrapperCol"
  49. >
  50. <a-select v-decorator="['checkLeader', {rules: [{required: true, message: '巡检主管不能为空'}]}]">
  51. <a-select-option
  52. v-for="item in directorMap"
  53. :key="item.userId"
  54. :label="item.realName"
  55. :value="item.userId">
  56. {{ item.realName }}
  57. </a-select-option>
  58. </a-select>
  59. </a-form-item>
  60. </a-col>
  61. <a-col :sm="20" >
  62. <a-form-item
  63. label="巡检设备"
  64. :labelCol="BaseTool.Constant.labelCol"
  65. :wrapperCol="BaseTool.Constant.wrapperCol"
  66. >
  67. {{ sbIds.length }}台
  68. <a-button style="width: 30% ;float: right;" type="primary" @click="handleSbSelect">选择</a-button>
  69. </a-form-item>
  70. </a-col>
  71. <a-col :sm="20" >
  72. <a-form-item
  73. label="巡检内容项"
  74. :labelCol="BaseTool.Constant.labelCol"
  75. :wrapperCol="BaseTool.Constant.wrapperCol"
  76. >
  77. {{ infoNum }}个
  78. <a-button style="width: 30% ;float: right;" type="primary" @click="handleInfoSelect">查看</a-button>
  79. </a-form-item>
  80. </a-col>
  81. <a-col :sm="20" >
  82. <a-form-item
  83. label="巡检频次"
  84. :labelCol="BaseTool.Constant.labelCol"
  85. :wrapperCol="BaseTool.Constant.wrapperCol"
  86. >
  87. <a-input
  88. type="number"
  89. :min="0"
  90. v-decorator="['period', {rules: [{required: true, message: '巡检频次不能为空'}]}]">
  91. <span slot="suffix">天</span>
  92. </a-input>
  93. </a-form-item>
  94. </a-col>
  95. <a-col :sm="20" >
  96. <a-form-item
  97. label="要求时间"
  98. :labelCol="BaseTool.Constant.labelCol"
  99. :wrapperCol="BaseTool.Constant.wrapperCol"
  100. >
  101. <a-input
  102. type="number"
  103. :min="0"
  104. v-decorator="['requireHour', {rules: [{required: true, message: '要求时间不能为空'}]}]">
  105. <span slot="suffix">小时</span>
  106. </a-input>
  107. </a-form-item>
  108. </a-col>
  109. <a-col :sm="20" >
  110. <a-form-item
  111. label="超时预警时间"
  112. :labelCol="BaseTool.Constant.labelCol"
  113. :wrapperCol="BaseTool.Constant.wrapperCol"
  114. >
  115. <a-input
  116. type="number"
  117. :min="0"
  118. v-decorator="['warningHour', {rules: [{required: true, message: '超时预警时间不能为空'}]}]">
  119. <span slot="suffix">小时</span>
  120. </a-input>
  121. </a-form-item>
  122. </a-col>
  123. </a-row>
  124. </a-form>
  125. <template slot="footer">
  126. <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
  127. </template>
  128. <sb-info-select-modal ref="sbInfoSelectModal" type="checkbox" @selected="handleSbSelectd"/>
  129. <info-select-modal ref="infoSelectModal"/>
  130. </a-modal>
  131. </template>
  132. <script>
  133. import { getQueryUser, addFillTasks } from '@/api/fill/gather'
  134. import SbInfoSelectModal from './SbInfoSelectModal'
  135. import InfoSelectModal from './InfoSelectModal'
  136. export default {
  137. name: 'BaseFillGather',
  138. data () {
  139. return {
  140. form: this.$form.createForm(this),
  141. visible: false,
  142. ipqcMap: [],
  143. model: {},
  144. sbIds: [],
  145. directorMap: [],
  146. infoNum: 0,
  147. confirmLoading: false
  148. }
  149. },
  150. components: {
  151. SbInfoSelectModal,
  152. InfoSelectModal
  153. },
  154. created () {
  155. this.getUser()
  156. },
  157. methods: {
  158. base (record) {
  159. this.visible = true
  160. this.model = record
  161. this.infoNum = record.fillInfos.length
  162. console.log(this.infoNum)
  163. const { form: { setFieldsValue } } = this
  164. this.$nextTick(() => {
  165. setFieldsValue(Object.assign({
  166. gatherId: record.id,
  167. period: record.period,
  168. warningHour: 2
  169. }))
  170. })
  171. },
  172. // 获取巡检人与巡检主管信息
  173. getUser () {
  174. getQueryUser(this.DictCache.VALUE.QUERY_ROLE_TYPE.IPQC).then(res => {
  175. this.ipqcMap = res.data
  176. })
  177. getQueryUser(this.DictCache.VALUE.QUERY_ROLE_TYPE.DIRCTOR).then(res => {
  178. this.directorMap = res.data
  179. })
  180. },
  181. handleSbSelect () {
  182. this.$refs.sbInfoSelectModal.base({}, {})
  183. },
  184. handleInfoSelect () {
  185. this.$refs.infoSelectModal.base(this.model)
  186. },
  187. handleSbSelectd (keys, rows) {
  188. this.sbIds = keys
  189. },
  190. save () {
  191. const { form: { validateFieldsAndScroll } } = this
  192. // this.confirmLoading = true
  193. validateFieldsAndScroll((errors, values) => {
  194. if (errors) {
  195. Object.values(errors).map(item => {
  196. this.$message.error(item.errors[0].message)
  197. })
  198. this.confirmLoading = false
  199. } else if (this.sbIds.length === 0) {
  200. console.log(values)
  201. this.$message.error('巡检设备不能为空!')
  202. return
  203. }
  204. values.sbIds = this.sbIds
  205. console.log(values)
  206. addFillTasks(values).then(res => {
  207. this.$message.success('创建成功!')
  208. this.handleCancel()
  209. })
  210. })
  211. },
  212. handleCancel (values) {
  213. this.visible = false
  214. this.form.resetFields()
  215. this.$emit('ok', values)
  216. }
  217. }
  218. }
  219. </script>
  220. <style lang="less" scoped>
  221. </style>