Kaynağa Gözat

特征库v1.1

李志伟 3 yıl önce
ebeveyn
işleme
582295945a

+ 77
- 20
src/components/CharacterResult/edit.vue Dosyayı Görüntüle

1
 <template>
1
 <template>
2
   <div class="body_edit">
2
   <div class="body_edit">
3
-    <h2 style="text-align: center">特征实例编辑</h2>
3
+    <h2 style="text-align: center">
4
+      特征实例{{ this.resultId ? "编辑" : "添加" }}
5
+    </h2>
4
     <el-form ref="form" :model="form" label-width="150px" size="mini">
6
     <el-form ref="form" :model="form" label-width="150px" size="mini">
5
       <el-form-item label="实例名称:">
7
       <el-form-item label="实例名称:">
6
-        <el-input v-model="form.name"></el-input>
8
+        <el-input
9
+          v-model="form.name"
10
+          placeholder="请输入实例名(必填)"
11
+        ></el-input>
7
       </el-form-item>
12
       </el-form-item>
8
       <el-form-item label="特征库图标:">
13
       <el-form-item label="特征库图标:">
9
         <UploadImage />
14
         <UploadImage />
13
       </el-form-item>
18
       </el-form-item>
14
 
19
 
15
       <el-form-item label="特征词:">
20
       <el-form-item label="特征词:">
21
+        <el-select
22
+          v-model="nowList"
23
+          multiple
24
+          filterable
25
+          default-first-option
26
+          placeholder="请选择"
27
+          @change="handleChange"
28
+        >
29
+          <el-option
30
+            v-for="item in wordList"
31
+            :key="item.wordId"
32
+            :label="item.word"
33
+            :value="item.wordId"
34
+          >
35
+          </el-option>
36
+        </el-select>
16
       </el-form-item>
37
       </el-form-item>
17
       <el-form-item>
38
       <el-form-item>
18
         <el-button type="primary" @click="onSubmit">确定</el-button>
39
         <el-button type="primary" @click="onSubmit">确定</el-button>
19
         <el-button @click="onReset">重置</el-button>
40
         <el-button @click="onReset">重置</el-button>
41
+        <el-button @click="handleClose">关闭</el-button>
20
       </el-form-item>
42
       </el-form-item>
21
     </el-form>
43
     </el-form>
22
   </div>
44
   </div>
23
 </template>
45
 </template>
24
 <script>
46
 <script>
25
-import { saveCharacterResult } from "@/api/characterLib";
47
+import {
48
+  saveCharacterResult,
49
+  UpdateCharacterResult,
50
+  getCharacterResultDetail,
51
+} from "@/api/characterLib";
26
 import UploadImage from "@/components/UploadImage/index.vue";
52
 import UploadImage from "@/components/UploadImage/index.vue";
27
 export default {
53
 export default {
28
-  props:{
29
-    libId:String
54
+  props: {
55
+    libId: String,
56
+    resultId: String,
57
+    wordList: {
58
+      type: Array,
59
+      required: true,
60
+    },
30
   },
61
   },
31
   data() {
62
   data() {
32
     return {
63
     return {
34
         name: undefined,
65
         name: undefined,
35
         thumb: undefined,
66
         thumb: undefined,
36
         desc: undefined,
67
         desc: undefined,
37
-        libId:undefined,
38
-        wordList:[]
68
+        libId: undefined,
69
+        wordList: [],
39
       },
70
       },
71
+      nowList:[]
40
     };
72
     };
41
   },
73
   },
42
 
74
 
43
   methods: {
75
   methods: {
44
     onReset() {
76
     onReset() {
45
-      this.form={
77
+      this.form = {
46
         name: undefined,
78
         name: undefined,
47
         thumb: undefined,
79
         thumb: undefined,
48
         desc: undefined,
80
         desc: undefined,
49
-        libId:undefined,
50
-        wordList:[]
51
-      }
81
+        libId: undefined,
82
+        wordList: [],
83
+      };
52
     },
84
     },
85
+    handleChange(val) {},
53
     onSubmit() {
86
     onSubmit() {
54
-      this.form.libId=this.libId
55
-      console.log(this.form)
56
-      
57
-      saveCharacterResult(this.form).then((res) => {
58
-        this.$message('添加实例成功')
59
-        console.log(res);
60
-      });
61
-    }
87
+      this.form.wordList = this.wordList.filter((item) =>
88
+        this.nowList.some((v) => v == item.wordId)
89
+      );
90
+      this.form.libId = this.libId;
91
+      if (this.form.name) {
92
+        if (this.resultId) {
93
+          UpdateCharacterResult(this.form,this.resultId).then((res) => {
94
+            this.$message("修改实例成功");
95
+            //告诉父页面实例表需要刷新并且关闭当前组件
96
+            this.$emit("handleRefresh", true);
97
+          });
98
+        } else {
99
+          saveCharacterResult(this.form).then((res) => {
100
+            this.$message("添加实例成功");
101
+            //告诉父页面实例表需要刷新并且关闭当前组件
102
+            this.$emit("handleRefresh", true);
103
+          });
104
+        }
105
+      } else {
106
+        this.$message("请输入实例名");
107
+      }
108
+    },
109
+    handleClose() {
110
+      this.$emit("handleClose", true);
111
+    },
62
   },
112
   },
63
   //进入页面执行的方法
113
   //进入页面执行的方法
64
   mounted: function () {
114
   mounted: function () {
65
-    if (this.$route?.query.row) {
115
+    if (this.resultId) {
116
+      getCharacterResultDetail(this.resultId).then((res) => {
117
+        this.form = res.data;
118
+        let list=res.data.wordList
119
+        list.map((item)=>{
120
+          this.nowList.push(item.wordId)
121
+        })
122
+      });
66
     }
123
     }
67
   },
124
   },
68
   components: {
125
   components: {

+ 7
- 3
src/components/CharacterResult/index.vue Dosyayı Görüntüle

44
   methods: {
44
   methods: {
45
     handleEdit(row) {
45
     handleEdit(row) {
46
       // 向外传送数据row.resultId
46
       // 向外传送数据row.resultId
47
+      this.$emit("handleEdit", row.resultId);
47
     },
48
     },
48
     handleDelete(row) {
49
     handleDelete(row) {
49
-      // deleteCharacterResult(row.resultId).then(() => {
50
-      //   this.onRefresh();
51
-      // });
50
+      deleteCharacterResult(row.resultId).then(() => {
51
+        this.onRefresh();
52
+        this.$message("删除实例成功");
53
+        //关闭编辑实例页面防止编辑页面还没关闭就删除当前实例了
54
+        this.$emit("handleClose", true);
55
+      });
52
     },
56
     },
53
     onSearch() {
57
     onSearch() {
54
       getCharacterResultList({ name: this.name }).then((res) => {
58
       getCharacterResultList({ name: this.name }).then((res) => {

+ 35
- 3
src/views/characterLibManage/edit.vue Dosyayı Görüntüle

21
           <el-form-item>
21
           <el-form-item>
22
             <el-button type="primary" @click="onEdit">修改</el-button>
22
             <el-button type="primary" @click="onEdit">修改</el-button>
23
             <el-button @click="onCancel">取消</el-button>
23
             <el-button @click="onCancel">取消</el-button>
24
-            <el-button type="primary" @click="onCancel">添加实例</el-button>
24
+            <el-button type="primary" @click="handleAddRusult"
25
+              >添加实例</el-button
26
+            >
25
           </el-form-item>
27
           </el-form-item>
26
         </el-form>
28
         </el-form>
27
       </el-col>
29
       </el-col>
36
     </el-row>
38
     </el-row>
37
     <el-row :gutter="20">
39
     <el-row :gutter="20">
38
       <el-col :span="10">
40
       <el-col :span="10">
39
-        <CharacterResult />
41
+        <CharacterResult ref="CharacterResult" @handleEdit="handleEdit" @handleClose="handleClose"/>
40
       </el-col>
42
       </el-col>
41
       <el-col :span="10">
43
       <el-col :span="10">
42
         实例详情
44
         实例详情
43
-        <CharacterResultEdit :libId="characterLib.libId" />
45
+        <CharacterResultEdit
46
+          v-if="isDisplay"
47
+          :libId="characterLib.libId"
48
+          :resultId="resultId"
49
+          :wordList="this.characterLib.wordList"
50
+          @handleRefresh="handleRefresh"
51
+          @handleClose="handleClose"
52
+        />
44
       </el-col>
53
       </el-col>
45
     </el-row>
54
     </el-row>
46
   </div>
55
   </div>
56
 export default {
65
 export default {
57
   data() {
66
   data() {
58
     return {
67
     return {
68
+      isDisplay: false,
59
       characterLib: {
69
       characterLib: {
60
         libId: undefined,
70
         libId: undefined,
61
         name: undefined,
71
         name: undefined,
63
         remark: undefined,
73
         remark: undefined,
64
         wordList: [],
74
         wordList: [],
65
       },
75
       },
76
+      resultId: undefined,
66
     };
77
     };
67
   },
78
   },
68
 
79
 
69
   methods: {
80
   methods: {
81
+    //上方实例库的方法
70
     onCancel() {
82
     onCancel() {
71
       this.$router.go(-1);
83
       this.$router.go(-1);
72
     },
84
     },
77
         }
89
         }
78
       );
90
       );
79
     },
91
     },
92
+    //添加实例
93
+    handleAddRusult() {
94
+      this.isDisplay = true;
95
+    },
96
+
97
+    //实例列表的方法
80
     handleDelete(val) {
98
     handleDelete(val) {
81
       if (this.characterLib.libId) {
99
       if (this.characterLib.libId) {
82
         let nowWordId = undefined;
100
         let nowWordId = undefined;
125
         });
143
         });
126
       }
144
       }
127
     },
145
     },
146
+    handleEdit(val) {
147
+      this.isDisplay = true;
148
+      this.resultId = val;
149
+    },
150
+
151
+    //实例编辑页面调用实例列表的刷新方法 兄弟组件调用方法
152
+    handleRefresh() {
153
+      this.handleClose();
154
+      this.$refs.CharacterResult.onRefresh();
155
+    },
156
+    handleClose() {
157
+      this.isDisplay = false;
158
+      this.resultId=undefined
159
+    },
128
   },
160
   },
129
   //进入页面执行的方法
161
   //进入页面执行的方法
130
   mounted: function () {
162
   mounted: function () {