Przeglądaj źródła

required 报空异常修复

yuhongqi 21 godzin temu
rodzic
commit
0c450e0353

+ 57 - 7
src/views/fastGpt/fastGptChatKeyword/index.vue

@@ -62,6 +62,11 @@
         </template>
       </el-table-column>
       <el-table-column label="匹配内容" align="center" prop="content" />
+      <el-table-column label="绑定客服" align="center" prop="roles" min-width="120">
+        <template slot-scope="scope">
+          {{ getRoleNameById(scope.row.roles) }}
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -109,6 +114,23 @@
         <el-form-item label="匹配内容" v-if="form.type==1" required >
           <el-input   type="textarea" :rows="2" v-model="form.content" placeholder="请输入回复内容" />
         </el-form-item>
+        <el-form-item label="绑定客服" prop="roles">
+          <el-select
+            v-model="form.roles"
+            multiple
+            placeholder="请选择客服"
+            filterable
+            clearable
+            size="small"
+          >
+            <el-option
+              v-for="item in roleOptions"
+              :key="item.roleId"
+              :label="item.roleName"
+              :value="item.roleId"
+            />
+          </el-select>
+        </el-form-item>
 <!--        <el-form-item label="所属应用" prop="roles">-->
 <!--          <el-input v-model="form.roles" placeholder="请输入所属应用" />-->
 <!--        </el-form-item>-->
@@ -123,6 +145,7 @@
 
 <script>
 import { listFastgptChatKeyword, getFastgptChatKeyword, delFastgptChatKeyword, addFastgptChatKeyword, updateFastgptChatKeyword, exportFastgptChatKeyword } from "@/api/fastGpt/fastGptChatKeyword";
+import { getAllRoleList } from "@/api/fastGpt/fastGptRole";
 
 export default {
   name: "FastgptChatKeyword",
@@ -134,6 +157,8 @@ export default {
       exportLoading: false,
       // 选中数组
       ids: [],
+      roleOptions: [],
+      roleMap: {},
       // 非单个禁用
       single: true,
       // 非多个禁用
@@ -175,7 +200,7 @@ export default {
           { required: true, message: "内容不能为空", trigger: "blur" }
         ],
         roles: [
-          { required: true, message: "角色不能为空", trigger: "blur"}
+          { required: true, message: "请至少选择一个客服", trigger: "change", type: "array" }
         ]
 
       }
@@ -186,8 +211,25 @@ export default {
       this.typeOptions = response.data;
     });
     this.getList();
+    getAllRoleList().then(response => {
+      this.roleOptions = response.data || [];
+      this.roleMap = this.roleOptions.reduce((map, role) => {
+        map[role.roleId] = role.roleName;
+        return map;
+      }, {});
+    });
   },
   methods: {
+    getRoleNameById(roles) {
+      if (!roles) {
+        return "-";
+      }
+      const idArray = Array.isArray(roles) ? roles : roles.split(",").map(id => id.trim());
+      return idArray
+        .map(id => this.roleMap[id])
+        .filter(name => name)
+        .join("、") || "-";
+    },
     /** 查询关键字列表 */
     getList() {
       this.loading = true;
@@ -212,7 +254,7 @@ export default {
         companyId: null,
         createTime: null,
         updateTime: null,
-        roles: null
+        roles: []
       };
       this.resetForm("form");
     },
@@ -243,8 +285,12 @@ export default {
       this.reset();
       const keywordId = row.keywordId || this.ids
       getFastgptChatKeyword(keywordId).then(response => {
-        this.form = response.data;
-        this.form.type = response.data.type.toString();
+        const data = response.data;
+        this.form = {
+          ...data,
+          type: data.type != null ? data.type.toString() : "1",
+          roles: data.roles ? data.roles.split(",").map(Number) : []
+        };
         this.open = true;
         this.title = "修改关键字";
       });
@@ -253,14 +299,18 @@ export default {
     submitForm() {
       this.$refs["form"].validate(valid => {
         if (valid) {
-          if (this.form.keywordId != null) {
-            updateFastgptChatKeyword(this.form).then(response => {
+          const submitData = {
+            ...this.form,
+            roles: Array.isArray(this.form.roles) ? this.form.roles.join(",") : this.form.roles
+          };
+          if (submitData.keywordId != null) {
+            updateFastgptChatKeyword(submitData).then(response => {
               this.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addFastgptChatKeyword(this.form).then(response => {
+            addFastgptChatKeyword(submitData).then(response => {
               this.msgSuccess("新增成功");
               this.open = false;
               this.getList();

+ 10 - 5
src/views/qw/sopTemp/updateSopTemp.vue

@@ -428,7 +428,8 @@
                                                 <i class="el-icon-picture-outline"></i>
                                                 <span>图片内容</span>
                                               </div>
-                                              <el-form-item label="上传图片" required>
+                                              <el-form-item label="上传图片" prop="imgUrl"
+                                                           :rules="[{ required: true, message: '请上传图片', trigger: 'change' }]">
                                                 <ImageUpload :disabled="formType == 3 || !roles.includes('edit_sop_temp_content')"
                                                            v-model="setList.imgUrl"
                                                            type="image" :num="1" :width="150" :height="150"/>
@@ -443,20 +444,23 @@
                                                 <i class="el-icon-link"></i>
                                                 <span>链接内容</span>
                                               </div>
-                                              <el-form-item label="链接标题" label-width="100px" required>
+                                              <el-form-item label="链接标题" label-width="100px" prop="linkTitle"
+                                                            :rules="[{ required: true, message: '请输入链接标题', trigger: 'blur' }]">
                                                 <el-input :disabled="formType == 3 || (form.sendType == 11 && contentIndex != 0 && setIndex == 0)" v-model="setList.linkTitle"
                                                           @change="updateAll(setIndex, item, 'linkTitle', $event)"
                                                           placeholder="请输入链接标题"
                                                           style="width: 90%;"/>
                                               </el-form-item>
-                                              <el-form-item label="链接描述" label-width="100px" required>
+                                              <el-form-item label="链接描述" label-width="100px" prop="linkDescribe"
+                                                            :rules="[{ required: true, message: '请输入链接描述', trigger: 'blur' }]">
                                                 <el-input :disabled="formType == 3 || (form.sendType == 11 && contentIndex != 0 && setIndex == 0)" type="textarea" :rows="3"
                                                           v-model="setList.linkDescribe"
                                                           @change="updateAll(setIndex, item, 'linkDescribe', $event)"
                                                           placeholder="请输入链接描述"
                                                           style="width: 90%;margin-top: 1%;"/>
                                               </el-form-item>
-                                              <el-form-item label="链接封面" label-width="100px" required>
+                                              <el-form-item label="链接封面" label-width="100px" prop="linkImageUrl"
+                                                            :rules="[{ required: true, message: '请上传链接封面', trigger: 'change' }]">
                                                 <ImageUpload :disabled="formType == 3 || (form.sendType == 11 && contentIndex != 0 && setIndex == 0)" v-model="setList.linkImageUrl"
                                                              type="image" :num="1"
                                                              @input="updateAll(setIndex, item, 'linkImageUrl', $event)"
@@ -464,7 +468,8 @@
                                                              style="margin-top: 1%;"/>
                                               </el-form-item>
                                               <div v-if="content.type != 2" class="link-url-section">
-                                                <el-form-item label="链接地址" label-width="100px" required>
+                                                <el-form-item label="链接地址" label-width="100px" prop="linkUrl"
+                                                              :rules="[{ required: true, message: '请输入链接地址', trigger: 'blur' }]">
                                                   <el-input :disabled="formType == 3 || !roles.includes('edit_sop_temp_content')" v-model="setList.linkUrl"
                                                             placeholder="请输入链接地址"
                                                             style="width: 90%;"/>