user-edit.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <!-- 用户编辑弹窗 -->
  2. <template>
  3. <ele-modal width="1060px" :visible="visible" :append-to-body="true" :close-on-click-modal="true"
  4. custom-class="ele-dialog-form" :title="isUpdate ? '修改工艺路线' : '添加工艺路线'" @update:visible="updateVisible">
  5. <header-title title="基本信息"> </header-title>
  6. <el-form ref="form" :model="form" :rules="rules" label-width="140px">
  7. <el-row>
  8. <el-col :span="8">
  9. <el-form-item label="工艺路线组编码:" prop="code">
  10. <el-input clearable disabled v-model="form.code" placeholder="请输入" />
  11. </el-form-item>
  12. </el-col>
  13. <el-col :span="8">
  14. <el-form-item label="工艺路线组名称:" prop="name">
  15. <el-input v-model="form.name" clearable placeholder="请输入" />
  16. </el-form-item>
  17. </el-col>
  18. <el-col :span="8">
  19. <el-form-item label="所属工厂:" prop="factoryId">
  20. <el-select v-model="form.factoryId" placeholder="请选择" filterable>
  21. <el-option v-for="item in fList" :key="item.id" :label="item.name" :value="item.id">
  22. </el-option>
  23. </el-select>
  24. </el-form-item>
  25. </el-col>
  26. <el-col :span="8">
  27. <el-form-item label="生产版本:" prop="produceVersionId">
  28. <el-select v-model="form.produceVersionId" filterable placeholder="请选择" :style="{ width: '100%' }">
  29. <el-option v-for="item in versionList" :key="item.code" :label="item.code + '-' + item.name"
  30. :value="item.id">
  31. </el-option>
  32. </el-select>
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="8">
  36. <el-form-item label="工艺路线版本:" prop="version">
  37. <el-input disabled v-model="form.version" />
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="8">
  41. <el-form-item label="状态:" prop="status">
  42. <el-select v-model="form.status" placeholder="" filterable>
  43. <el-option v-for="item in statusList" :key="item.value" :label="item.label" :value="item.value">
  44. </el-option>
  45. </el-select>
  46. </el-form-item>
  47. </el-col>
  48. </el-row>
  49. </el-form>
  50. <template v-slot:footer>
  51. <el-button @click="updateVisible(false)">取消</el-button>
  52. <el-button type="primary" :loading="loading" @click="save">
  53. 保存
  54. </el-button>
  55. </template>
  56. </ele-modal>
  57. </template>
  58. <script>
  59. import route from '@/api/technology/route';
  60. import { pageList } from '@/api/technology/version/version.js';
  61. export default {
  62. components: {
  63. },
  64. props: {
  65. // 弹窗是否打开
  66. visible: Boolean,
  67. // 修改回显的数据
  68. data: Object
  69. },
  70. data() {
  71. const defaultForm = {
  72. code: '',
  73. name: '',
  74. factoryId: '',
  75. status: -1,
  76. categoryId: '',
  77. version: '1.0',
  78. id: '',
  79. };
  80. return {
  81. defaultForm,
  82. fList: [], //仓库列表
  83. categoryCode: '',
  84. categoryName: '',
  85. // 表单数据
  86. form: { ...defaultForm },
  87. statusList: [
  88. { label: '草稿', value: -1 },
  89. { label: '失效', value: 0 },
  90. { label: '生效', value: 1 }
  91. ],
  92. // 表单验证规则
  93. rules: {
  94. name: [
  95. { required: true, message: '请输入工艺路线名称', trigger: 'blur' }
  96. ],
  97. code: [
  98. { required: true, message: '请输入工艺路线编码', trigger: 'blur' }
  99. ],
  100. factoryId: [
  101. { required: true, message: '请输入工艺路线', trigger: 'blur' }
  102. ],
  103. status: [
  104. { required: true, message: '请输入工艺路线版本', trigger: 'blur' }
  105. ],
  106. version: [
  107. { required: true, message: '请输入工艺路线版本', trigger: 'blur' }
  108. ]
  109. },
  110. versionList: [],
  111. // 提交状态
  112. loading: false,
  113. // 是否是修改
  114. isUpdate: false
  115. };
  116. },
  117. computed: {
  118. statusTitle() {
  119. return this.isUpdate ? '修改' : '保存';
  120. },
  121. // 是否开启响应式布局
  122. styleResponsive() {
  123. return this.$store.state.theme.styleResponsive;
  124. }
  125. },
  126. methods: {
  127. /* 保存编辑 */
  128. save() {
  129. this.$refs.form.validate((valid) => {
  130. if (!valid) {
  131. return false;
  132. }
  133. if (!this.data) {
  134. delete this.form.id;
  135. }
  136. this.loading = true;
  137. let title = this.isUpdate ? '修改' : '新建'; // 提交的名称或编号是否有效率有用的标识,
  138. route
  139. .save(this.form)
  140. .then((msg) => {
  141. this.form = {};
  142. this.categoryName = '';
  143. this.categoryCode = '';
  144. this.loading = false;
  145. let tit = title + msg;
  146. this.$message.success(tit);
  147. this.updateVisible(false);
  148. this.$emit('done');
  149. })
  150. .catch((e) => {
  151. this.loading = false;
  152. // this.$message.error(e.message);
  153. });
  154. });
  155. },
  156. async getVersionList() {
  157. const res = await pageList({
  158. pageNum: 1,
  159. size: 100
  160. });
  161. this.versionList = res.list;
  162. },
  163. /* 更新visible */
  164. updateVisible(value) {
  165. this.$emit('update:visible', value);
  166. }
  167. },
  168. watch: {
  169. async visible(visible) {
  170. if (visible) {
  171. this.getVersionList()
  172. const res = await route.Flist({
  173. pageNum: 1,
  174. size: -1,
  175. type: 1
  176. });
  177. this.fList = res.list;
  178. if (this.data) {
  179. const res = await route.getById(this.data.id);
  180. this.$util.assignObject(this.form, {
  181. ...res
  182. });
  183. this.isUpdate = true;
  184. } else {
  185. const res = await route.getCode();
  186. this.form.code = res;
  187. this.isUpdate = false;
  188. }
  189. } else {
  190. this.$refs.form.clearValidate();
  191. this.form = { ...this.defaultForm };
  192. }
  193. }
  194. }
  195. };
  196. </script>