xiongzhu 4 年之前
父節點
當前提交
a7911e0671
共有 2 個文件被更改,包括 67 次插入9 次删除
  1. 59 3
      src/main/vue/src/views/CollectionEdit.vue
  2. 8 6
      src/main/vue/src/views/MinterEdit.vue

+ 59 - 3
src/main/vue/src/views/CollectionEdit.vue

@@ -28,8 +28,29 @@
                     <el-form-item prop="detail" label="详情" style="width: calc(100vw - 450px)">
                         <rich-text v-model="formData.detail"></rich-text>
                     </el-form-item>
-                    <el-form-item prop="properties" label="特性">
-                        <div></div>
+                    <el-form-item prop="properties" label="特性" style="width: calc(100vw - 450px)" size="mini">
+                        <el-table :data="formData.properties">
+                            <el-table-column prop="name" label="名称">
+                                <template v-slot="{ row }">
+                                    <el-input v-model="row.name" placeholder="20字以内" maxlength="20"></el-input>
+                                </template>
+                            </el-table-column>
+                            <el-table-column prop="value" label="内容">
+                                <template v-slot="{ row }">
+                                    <el-input v-model="row.value" placeholder="20字以内" maxlength="20"></el-input>
+                                </template>
+                            </el-table-column>
+                            <el-table-column width="80" align="center">
+                                <template v-slot="{ row, $index }">
+                                    <el-button type="danger" plain size="mini" @click="delProperty($index)">
+                                        删除
+                                    </el-button>
+                                </template>
+                            </el-table-column>
+                        </el-table>
+                    </el-form-item>
+                    <el-form-item>
+                        <el-button size="mini" @click="addProperty"> 添加 </el-button>
                     </el-form-item>
                     <el-form-item prop="type" label="类型">
                         <el-select v-model="formData.type" clearable filterable placeholder="请选择">
@@ -88,6 +109,7 @@ export default {
             this.$http
                 .get('collection/get/' + this.$route.query.id)
                 .then(res => {
+                    res.properties = res.properties || [];
                     this.formData = res;
                 })
                 .catch(e => {
@@ -99,7 +121,7 @@ export default {
     data() {
         return {
             saving: false,
-            formData: { onShelf: true },
+            formData: { onShelf: true, properties: [] },
             rules: {
                 name: [
                     {
@@ -177,6 +199,31 @@ export default {
                         message: '请输入价格',
                         trigger: 'blur'
                     }
+                ],
+                properties: [
+                    {
+                        validator: (rule, value, callback) => {
+                            if (value) {
+                                if (!(value instanceof Array)) {
+                                    callback(new Error('properties must be array!'));
+                                    return;
+                                } else {
+                                    for (let i = 0; i < value.length; i++) {
+                                        if (value[i].name === '' || value[i].name === undefined) {
+                                            callback(new Error('请填写名称'));
+                                            return;
+                                        }
+                                        if (value[i].value === '' || value[i].value === undefined) {
+                                            callback(new Error('请填写内容'));
+                                            return;
+                                        }
+                                    }
+                                }
+                            }
+                            callback();
+                        },
+                        trigger: 'blur'
+                    }
                 ]
             },
             typeOptions: [
@@ -238,6 +285,15 @@ export default {
             console.log(e);
             this.$set(this.formData, 'minter', e.nickname);
             this.$set(this.formData, 'minterAvatar', e.avatar);
+        },
+        addProperty() {
+            this.formData.properties.push({
+                name: '',
+                value: ''
+            });
+        },
+        delProperty(i) {
+            this.formData.properties.splice(i, 1);
         }
     }
 };

+ 8 - 6
src/main/vue/src/views/MinterEdit.vue

@@ -38,7 +38,7 @@
                         <el-input v-model="formData.password"></el-input>
                     </el-form-item>
                     <el-form-item prop="phone" label="手机">
-                        <el-input v-model="formData.phone" :disabled="formData.id"></el-input>
+                        <el-input v-model="formData.phone" :disabled="!!formData.id"></el-input>
                     </el-form-item>
                     <el-form-item prop="intro" label="简介">
                         <el-input
@@ -167,11 +167,13 @@ export default {
                     this.saving = false;
                     this.$message.success('成功');
                     this.formData = res;
-                    this.$router.replace({
-                        query: {
-                            id: res.id
-                        }
-                    });
+                    this.$router
+                        .replace({
+                            query: {
+                                id: res.id
+                            }
+                        })
+                        .catch(_ => {});
                 })
                 .catch(e => {
                     console.log(e);