UpkeepForm.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <template>
  2. <a-spin :spinning="confirmLoading">
  3. <j-form-container :disabled="formDisabled">
  4. <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
  5. <div class="cmms-dialog-item-title">保养工单基本信息</div>
  6. <a-row>
  7. <a-col :span="12">
  8. <a-form-model-item label="保养工单编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="upkeepcode">
  9. <!-- {{model.upkeepcode}} -->
  10. <a-input v-model="model.upkeepcode" placeholder="请输入保养工单编号" :disabled="true" ></a-input>
  11. </a-form-model-item>
  12. </a-col>
  13. <a-col :span="12">
  14. <a-form-model-item label="计划名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="planname">
  15. <!-- {{model.planname}} -->
  16. <a-input v-model="model.planname" placeholder="请输入计划名称" :disabled="true" ></a-input>
  17. </a-form-model-item>
  18. </a-col>
  19. <!-- <a-col :span="12">
  20. <a-form-model-item label="保养名称(标题)" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="upkeepname">
  21. <a-input v-model="model.upkeepname" placeholder="请输入保养名称(标题)" ></a-input>
  22. </a-form-model-item>
  23. </a-col>
  24. <a-col :span="12">
  25. <a-form-model-item label="保养计划ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="upkeepplanid">
  26. <a-input v-model="model.upkeepplanid" placeholder="请输入保养计划ID" ></a-input>
  27. </a-form-model-item>
  28. </a-col>
  29. <a-col :span="12">
  30. <a-form-model-item label="保养工作项目ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="upkeepprojid">
  31. <a-input v-model="model.upkeepprojid" placeholder="请输入保养工作项目ID" ></a-input>
  32. </a-form-model-item>
  33. </a-col>
  34. <a-col :span="12">
  35. <a-form-model-item label="工作项目名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="projectname">
  36. <a-input v-model="model.projectname" placeholder="请输入工作项目名称" ></a-input>
  37. </a-form-model-item>
  38. </a-col> -->
  39. <a-col :span="12">
  40. <a-form-model-item label="地点" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="address">
  41. <!-- {{model.address}} -->
  42. <a-input v-model="model.address" placeholder="请输入地点" :disabled="true" ></a-input>
  43. </a-form-model-item>
  44. </a-col>
  45. <!-- <a-col :span="12">
  46. <a-form-model-item label="厂商名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="supplier">
  47. <a-input v-model="model.supplier" placeholder="请输入厂商名称" ></a-input>
  48. </a-form-model-item>
  49. </a-col>
  50. <a-col :span="12">
  51. <a-form-model-item label="厂商电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="suppliertel">
  52. <a-input v-model="model.suppliertel" placeholder="请输入厂商电话" ></a-input>
  53. </a-form-model-item>
  54. </a-col>
  55. <a-col :span="12">
  56. <a-form-model-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="linker">
  57. <a-input v-model="model.linker" placeholder="请输入联系人" ></a-input>
  58. </a-form-model-item>
  59. </a-col>
  60. <a-col :span="12">
  61. <a-form-model-item label="联系人电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="linkertel">
  62. <a-input v-model="model.linkertel" placeholder="请输入联系人电话" ></a-input>
  63. </a-form-model-item>
  64. </a-col> -->
  65. <a-col :span="12">
  66. <a-form-model-item label="负责人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargeruser">
  67. <!-- {{model.chargeruser_dictText}} -->
  68. <j-dict-select-tag v-model="model.chargeruser" placeholder="请选择负责人" dictCode="sys_user,realname,id" :disabled="true"/>
  69. </a-form-model-item>
  70. </a-col>
  71. <a-col :span="12">
  72. <a-form-model-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="status">
  73. <!-- <a-input v-model="model.status" placeholder="请输入状态:0待处理、1已通知、2未执行、3未完成、4已完成" ></a-input> -->
  74. <j-dict-select-tag v-model="model.status" placeholder="请选择状态" dictCode="upkeep_state"/>
  75. </a-form-model-item>
  76. </a-col>
  77. <a-col :span="12">
  78. <a-form-model-item label="选择设备" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentid">
  79. <j-search-select-tag v-model="model.equipmentid" dict="tpm_equipment,equipmentname,id" style="width: 100%" :disabled="true"/>
  80. <!-- <a-button type="primary" icon="search" /> -->
  81. </a-form-model-item>
  82. </a-col>
  83. <!-- <a-col :span="24">
  84. <a-form-model-item label="描述" :labelCol="labelCol2" :wrapperCol="wrapperCol2" prop="upkeepdesc">
  85. <a-textarea v-model="model.upkeepdesc" placeholder="请输入描述" :auto-size="{ minRows: 2, maxRows: 2 }"></a-textarea>
  86. </a-form-model-item>
  87. </a-col> -->
  88. <a-col :span="24">
  89. <a-form-model-item label="照片" :labelCol="labelCol2" :wrapperCol="wrapperCol2" prop="remark">
  90. <j-image-upload text="上传" v-model="model.files" isMultiple></j-image-upload>
  91. </a-form-model-item>
  92. </a-col>
  93. <a-col :span="24">
  94. <a-form-model-item label="处理意见" :labelCol="labelCol2" :wrapperCol="wrapperCol2" prop="opinion">
  95. <a-textarea v-model="model.opinion" placeholder="请输入处理意见" :auto-size="{ minRows: 2, maxRows: 2 }"></a-textarea>
  96. <!-- <a-input v-model="model.opinion" placeholder="请输入处理意见" ></a-input> -->
  97. </a-form-model-item>
  98. </a-col>
  99. <a-col :span="24">
  100. <a-form-model-item label="备注" :labelCol="labelCol2" :wrapperCol="wrapperCol2" prop="remark">
  101. <a-textarea v-model="model.remark" placeholder="请输入备注" :auto-size="{ minRows: 2, maxRows: 2 }"></a-textarea>
  102. </a-form-model-item>
  103. </a-col>
  104. </a-row>
  105. <div class="cmms-dialog-item-title">设备保养设置</div>
  106. <a-table
  107. ref="table"
  108. size="middle"
  109. :scroll="{x:true}"
  110. bordered
  111. rowKey="id"
  112. :columns="columns"
  113. :dataSource="model.cmmsUpkeepItemList"
  114. :pagination="false"
  115. class="j-table-force-nowrap">
  116. </a-table>
  117. </a-form-model>
  118. </j-form-container>
  119. </a-spin>
  120. </template>
  121. <script>
  122. import { httpAction, getAction } from '@/api/manage'
  123. import { validateDuplicateValue } from '@/utils/util'
  124. export default {
  125. name: 'UpkeepForm',
  126. components: {
  127. },
  128. props: {
  129. //表单禁用
  130. disabled: {
  131. type: Boolean,
  132. default: false,
  133. required: false
  134. }
  135. },
  136. data () {
  137. return {
  138. model:{
  139. cmmsUpkeepItemList: []
  140. },
  141. labelCol: {
  142. xs: { span: 24 },
  143. sm: { span: 6 },
  144. },
  145. wrapperCol: {
  146. xs: { span: 24 },
  147. sm: { span: 12 },
  148. },
  149. labelCol2: {
  150. xs: { span: 24 },
  151. sm: { span: 3 },
  152. },
  153. wrapperCol2: {
  154. xs: { span: 24 },
  155. sm: { span: 18 },
  156. },
  157. confirmLoading: false,
  158. validatorRules: {
  159. status: [
  160. { required: true, message: '请选择状态!'},
  161. ],
  162. upkeepdesc: [
  163. { required: true, message: '请输入描述!'},
  164. ],
  165. opinion: [
  166. { required: true, message: '请输入处理意见!'},
  167. ],
  168. },
  169. columns: [
  170. {
  171. title:'保养项ID',
  172. align:"center",
  173. dataIndex: 'id'
  174. },
  175. {
  176. title:'保养项名称',
  177. align:"center",
  178. dataIndex: 'itemname'
  179. },
  180. // {
  181. // title:'设备类型',
  182. // align:"center",
  183. // dataIndex: 'equiptypeName'
  184. // },
  185. {
  186. title:'保养项编号',
  187. align:"center",
  188. dataIndex: 'itemcode'
  189. },
  190. {
  191. title:'保养项标准',
  192. align:"center",
  193. dataIndex: 'itemcontent'
  194. },
  195. {
  196. title:'备注',
  197. align:"center",
  198. dataIndex: 'remark'
  199. },
  200. ],
  201. url: {
  202. add: "/cmmsUpkeep/cmmsUpkeep/add",
  203. edit: "/cmmsUpkeep/cmmsUpkeep/edit",
  204. queryById: "/cmmsUpkeep/cmmsUpkeep/queryById"
  205. }
  206. }
  207. },
  208. computed: {
  209. formDisabled(){
  210. return this.disabled
  211. },
  212. },
  213. created () {
  214. //备份model原始值
  215. this.modelDefault = JSON.parse(JSON.stringify(this.model));
  216. },
  217. methods: {
  218. add () {
  219. this.edit(this.modelDefault);
  220. },
  221. edit (record) {
  222. // this.model = Object.assign({}, record);
  223. getAction(this.url.queryById, record).then((res) => {
  224. console.log(88,res)
  225. this.model = res.result
  226. const b = res.result.files.map((res) => {
  227. return res.url
  228. })
  229. this.model.files = b.join(',')
  230. // this.model.cmmsUpkeepItemDtoList = this.model.cmmsUpkeepItemDtoList.map((res) => {
  231. // return {
  232. // id: id,
  233. // itemcode: res.itemcode,
  234. // itemname: res.itemname,
  235. // itemcontent: res.itemcontent,
  236. // remark: res.remark
  237. // }
  238. // })
  239. })
  240. this.visible = true;
  241. },
  242. submitForm () {
  243. const that = this;
  244. // 触发表单验证
  245. this.$refs.form.validate(valid => {
  246. if (valid) {
  247. that.confirmLoading = true;
  248. let httpurl = '';
  249. let method = '';
  250. if(!this.model.id){
  251. httpurl+=this.url.add;
  252. method = 'post';
  253. }else{
  254. httpurl+=this.url.edit;
  255. method = 'put';
  256. }
  257. if (this.model.files.length != 0) {
  258. const a = this.model.files.split(',')
  259. this.model.files = a.map((res) => {
  260. return {
  261. url: res
  262. }
  263. })
  264. }else{
  265. this.model.files = []
  266. }
  267. httpAction(httpurl,this.model,method).then((res)=>{
  268. if(res.success){
  269. that.$message.success(res.message);
  270. that.$emit('ok');
  271. }else{
  272. that.$message.warning(res.message);
  273. }
  274. }).finally(() => {
  275. that.confirmLoading = false;
  276. })
  277. }
  278. })
  279. },
  280. }
  281. }
  282. </script>
  283. <style scoped>
  284. @import "~@/assets/less/uStyle.less";
  285. </style>