classifyManageEdit.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <!-- 字典项编辑弹窗 -->
  2. <template>
  3. <ele-modal
  4. width="500px"
  5. :visible="visible"
  6. :close-on-click-modal="true"
  7. :title="isUpdate ? '编辑分类信息' : '新增分类信息'"
  8. @update:visible="updateVisible"
  9. >
  10. <el-form :model="formData" ref="formRef" :rules="rules" label-width="96px">
  11. <el-form-item label="父级节点:" prop="code">
  12. <el-input
  13. clearable
  14. :maxlength="20"
  15. v-model="formData.code"
  16. placeholder="请输入"
  17. />
  18. </el-form-item>
  19. <el-form-item label="层级全览:" prop="name">
  20. <el-input
  21. clearable
  22. :maxlength="20"
  23. v-model="formData.name"
  24. placeholder="请输入"
  25. />
  26. </el-form-item>
  27. <el-form-item label="节点编码:" prop="type">
  28. <el-select
  29. clearable
  30. :maxlength="20"
  31. v-model="formData.type"
  32. placeholder="请选择"
  33. >
  34. <el-option
  35. v-for="item in typeList"
  36. :key="item.code"
  37. :label="item.label"
  38. :value="item.code"
  39. >
  40. </el-option>
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item label="节点名称:" prop="remark">
  44. <el-input
  45. clearable
  46. type="textarea"
  47. :maxlength="20"
  48. v-model="formData.remark"
  49. placeholder="请输入"
  50. />
  51. </el-form-item>
  52. <el-form-item label="与下层分隔:" prop="remark">
  53. <el-input
  54. clearable
  55. type="textarea"
  56. :maxlength="20"
  57. v-model="formData.remark"
  58. placeholder="请输入"
  59. />
  60. </el-form-item>
  61. <el-form-item label="本层排序:" prop="remark">
  62. <el-input
  63. clearable
  64. type="textarea"
  65. :maxlength="20"
  66. v-model="formData.remark"
  67. placeholder="请输入"
  68. />
  69. </el-form-item>
  70. </el-form>
  71. <template v-slot:footer>
  72. <el-button type="primary" :loading="loading" @click="save">
  73. 保存
  74. </el-button>
  75. <el-button @click="updateVisible(false)">返回 </el-button>
  76. </template>
  77. </ele-modal>
  78. </template>
  79. <script>
  80. import { saveOrUpdate } from '@/api/classifyManage';
  81. export default {
  82. props: {},
  83. data() {
  84. const defaultForm = {
  85. name: '',
  86. code: '',
  87. type: '',
  88. remark: '',
  89. parentId: 0
  90. };
  91. return {
  92. visible: false,
  93. defaultForm,
  94. // 表单数据
  95. formData: { ...defaultForm },
  96. typeList: [{ label: '产品分类', code: 3 }],
  97. // 表单验证规则
  98. rules: {
  99. name: [
  100. {
  101. required: true,
  102. message: '请输入类型名称',
  103. trigger: 'blur'
  104. }
  105. ],
  106. code: [
  107. {
  108. required: true,
  109. message: '请输入类型编码',
  110. trigger: 'blur'
  111. }
  112. ],
  113. type: [
  114. {
  115. required: true,
  116. message: '请选择类型用途',
  117. trigger: 'change'
  118. }
  119. ]
  120. },
  121. // 提交状态
  122. loading: false,
  123. // 是否是修改
  124. isUpdate: false,
  125. parentData: {}
  126. };
  127. },
  128. methods: {
  129. open(parentData, data) {
  130. this.parentData = parentData;
  131. this.data = data;
  132. this.visible = true;
  133. },
  134. /* 保存编辑 */
  135. save() {
  136. this.$refs.formRef.validate((valid) => {
  137. if (!valid) {
  138. return false;
  139. }
  140. this.loading = true;
  141. saveOrUpdate({
  142. ...this.formData
  143. })
  144. .then((msg) => {
  145. this.loading = false;
  146. this.$message.success(msg);
  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. /* 更新visible */
  157. updateVisible(value) {
  158. this.visible = value;
  159. }
  160. },
  161. watch: {
  162. visible(visible) {
  163. if (visible) {
  164. if (this.data) {
  165. this.$util.assignObject(this.formData, this.data);
  166. this.isUpdate = true;
  167. } else {
  168. this.isUpdate = false;
  169. }
  170. } else {
  171. this.$refs.formRef.clearValidate();
  172. this.formData = { ...this.defaultForm };
  173. }
  174. }
  175. }
  176. };
  177. </script>