关键词管理
This commit is contained in:
		| @@ -4,7 +4,7 @@ | ||||
|       <template #content> | ||||
|         <ai-search-bar> | ||||
|           <template #left> | ||||
|             <el-button size="small" type="primary" icon="iconfont iconAdd" @click="toAdd('')">添加</el-button> | ||||
|             <el-button size="small" type="primary" icon="iconfont iconAdd" @click="add('')">添加</el-button> | ||||
|           </template> | ||||
|           <template #right> | ||||
|             <el-input size="small" placeholder="关键词搜索" v-model="search.name" clearable | ||||
| @@ -16,7 +16,8 @@ | ||||
|                   @getList="getTableData()" :col-configs="colConfigs" :dict="dict"> | ||||
|           <el-table-column slot="options" label="操作"  align="center"> | ||||
|             <template slot-scope="{ row }"> | ||||
|               <el-button type="text" @click="edit(row)">启用</el-button> | ||||
|               <el-button type="text" @click="changeStatus(row, '停用', 0)" v-if="row.status == 1">停用</el-button> | ||||
|               <el-button type="text" @click="changeStatus(row, '启用', 1)" v-else>启用</el-button> | ||||
|               <el-button type="text" @click="edit(row)">编辑</el-button> | ||||
|               <el-button type="text" @click="del(row)">删除</el-button> | ||||
|             </template> | ||||
| @@ -32,14 +33,20 @@ | ||||
|         @onConfirm="onConfirm" | ||||
|         @closed="form={}"> | ||||
|       <el-form ref="form" :model="form" :rules="rules" label-width="80px"> | ||||
|         <el-form-item label="敏感词" prop="registerCount"> | ||||
|           <el-input v-model.trim="form.registerCount" placeholder="请输入正整数" size="small"></el-input> | ||||
|         <el-form-item label="敏感词" prop="wordName"> | ||||
|           <el-input v-model.trim="form.wordName" placeholder="请输入敏感词" size="small"></el-input> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="生效地区" prop="friendCount"> | ||||
|           <el-input v-model.trim="form.friendCount" placeholder="请输入正整数" size="small"></el-input> | ||||
|         <el-form-item label="生效地区" prop="areaList"> | ||||
|           <ai-area-get :instance="instance" :fullname.sync="form.areaName" v-model="form.areaList" :root="user.info.areaId" multiple></ai-area-get> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="生效部门" prop="confidantCount"> | ||||
|           <el-input v-model.trim="form.confidantCount" placeholder="请输入正整数" size="small"></el-input> | ||||
|         <el-form-item label="生效部门" prop="deptList"> | ||||
|           <ai-picker :instance="instance" v-model="form.deptList" @pick="e => onUserChange(e)" :multiple="true" dialogTitle="选择部门" action="/app/wxcp/wxdepartment/departList"> | ||||
|             <div class="time-select"> | ||||
|               <span class="dept-name" v-if="form.deptList && form.deptList.length">已选择{{form.deptList.length}}个部门</span> | ||||
|               <span class="dept-name" style="color:#999;" v-else>请选择</span> | ||||
|               <i class="el-icon-arrow-down"></i> | ||||
|             </div> | ||||
|           </ai-picker> | ||||
|         </el-form-item> | ||||
|       </el-form> | ||||
|     </ai-dialog> | ||||
| @@ -61,66 +68,49 @@ export default { | ||||
|   data() { | ||||
|     return { | ||||
|       search: { | ||||
|         name: '', | ||||
|         departmentId: '', | ||||
|         wordName: '', | ||||
|         current: 1, | ||||
|         size: 10, | ||||
|         areaId: '', | ||||
|       }, | ||||
|       departIdList: [], | ||||
|       tableData: [], | ||||
|       size: 10, | ||||
|       total: 0, | ||||
|       current: 1, | ||||
|       girdList: [], | ||||
|       form: { | ||||
|         registerCount: 0, | ||||
|         friendCount: 0, | ||||
|         confidantCount: 0 | ||||
|         wordName: '', | ||||
|         areaList: [], | ||||
|         deptList: [], | ||||
|       }, | ||||
|       personList: [], | ||||
|       dialog: false, | ||||
|       girdOptions: [], | ||||
|       defaultProps: { | ||||
|         label: 'name', | ||||
|         value: 'id', | ||||
|         checkStrictly: true, | ||||
|       }, | ||||
|       chooseUserList: [], | ||||
|       flag: false, | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|     this.$dict.load('integralCalcType') | ||||
|     this.getTableData() | ||||
|     this.getGridList() | ||||
|   }, | ||||
|   computed: { | ||||
|     ...mapState(['user']), | ||||
|     colConfigs() { | ||||
|       return [ | ||||
|         { prop: "name", label: '关键词', align: "left"}, | ||||
|         { prop: "areaName", label: '创建时间'}, | ||||
|         { prop: "departmentName", label: '创建人'}, | ||||
|         { prop: "phone", label: '生效地区'}, | ||||
|         { prop: "registerCount", label: '生效部门'}, | ||||
|         { prop: "wordName", label: '关键词', align: "left"}, | ||||
|         { prop: "createTime", label: '创建时间'}, | ||||
|         { prop: "createUserName", label: '创建人'}, | ||||
|         { prop: "areaNames", label: '生效地区'}, | ||||
|         { prop: "departmentNames", label: '生效部门'}, | ||||
|         { slot: "options" }, | ||||
|       ] | ||||
|     }, | ||||
|     rules() { | ||||
|       return { | ||||
|         registerCount: [{required: true, message: '请输入登记数', trigger: 'blur' }, | ||||
|           {pattern: /^[0-9]+$/, message: '请输入正整数'}], | ||||
|         friendCount: [{required: true, message: '请输入朋友数', trigger: 'blur' }, | ||||
|           {pattern: /^[0-9]+$/, message: '请输入正整数'}], | ||||
|         confidantCount: [{required: true, message: '请输入知己数', trigger: 'blur' }, | ||||
|           {pattern: /^[0-9]+$/, message: '请输入正整数'}], | ||||
|         wordName: [{required: true, message: '请输入敏感词', trigger: 'blur' }], | ||||
|         areaList: [{required: true, message: '请选择生效地区', trigger: 'blur' }], | ||||
|         deptList: [{required: true, message: '请选择生效部门', trigger: 'blur' }], | ||||
|       } | ||||
|     }, | ||||
|   }, | ||||
|   methods: { | ||||
|     getTableData() { | ||||
|       this.instance.post(`/app/appwxuserfamiliarityrate/list`,null,{ | ||||
|       this.instance.post(`/app/appsessionarchivekeywordinfo/list`,null,{ | ||||
|         params: { | ||||
|           ...this.search, | ||||
|           current: this.current, | ||||
| @@ -134,16 +124,9 @@ export default { | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     onAreaChange () { | ||||
|       this.search.current = 1 | ||||
|  | ||||
|       this.$nextTick(() => { | ||||
|         this.getTableData() | ||||
|       }) | ||||
|     }, | ||||
|     del(row) { | ||||
|       this.$confirm('确定删除该数据?').then(() => { | ||||
|         this.instance.post(`/app/appwxuserfamiliarityrate/delete?id=${row.id}`).then(res => { | ||||
|         this.instance.post(`/app/appsessionarchivekeywordinfo/delete?ids=${row.id}`).then(res => { | ||||
|           if (res.code == 0) { | ||||
|             this.$message.success('删除成功!') | ||||
|             this.getTableData() | ||||
| @@ -151,67 +134,52 @@ export default { | ||||
|         }) | ||||
|       }) | ||||
|     }, | ||||
|  | ||||
|     edit(row) { | ||||
|       this.dialog = true | ||||
|       this.form = {...row} | ||||
|     }, | ||||
|  | ||||
|     selectPerson(val) { | ||||
|       console.log(val) | ||||
|       if (val) { | ||||
|         this.personList = val | ||||
|         this.form.ids = [...this.personList.map(e => e.sysUserId)] | ||||
|       } else { | ||||
|         this.form.ids = this.chooseUserList.map(e => e.sysUserId) | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     getGridList() { | ||||
|       this.instance.post(`/app/wxcp/wxdepartment/listAll`).then((res) => { | ||||
|         if (res.code == 0) { | ||||
|           this.girdOptions = this.toTree(res.data) | ||||
|         } | ||||
|     changeStatus(row, text, status) { | ||||
|       this.$confirm(`确定${text}该关键词?`).then(() => { | ||||
|         this.instance.post(`/app/appsessionarchivekeywordinfo/updateStatusById?id=${row.id}&status=${status}`).then(res => { | ||||
|           if (res.code == 0) { | ||||
|             this.$message.success('操作成功!') | ||||
|             this.getTableData() | ||||
|           } | ||||
|         }) | ||||
|       }) | ||||
|     }, | ||||
|  | ||||
|     // 转树形结构 | ||||
|     toTree(data) { | ||||
|       let result = []; | ||||
|       if (!Array.isArray(data)) { | ||||
|         return result | ||||
|       } | ||||
|       let map = {}; | ||||
|       data.forEach(item => { | ||||
|         map[item.id] = item; | ||||
|       }); | ||||
|       data.forEach(item => { | ||||
|         let parent = map[item.parentid]; | ||||
|         if (parent) { | ||||
|           (parent.children || (parent.children = [])).push(item); | ||||
|         } else { | ||||
|           result.push(item); | ||||
|         } | ||||
|       }); | ||||
|       return result; | ||||
|     edit(row) { | ||||
|       this.form = {...row} | ||||
|       this.form.deptList = [] | ||||
|       this.form.areaList = this.form.areaIds.split(',') | ||||
|       var deptList = row.departmentIds.split(',') | ||||
|       var deptNameList = row.departmentNames.split(',') | ||||
|       deptList.map((item, index) => { | ||||
|         var i = {id: item, name: deptNameList[index], checked: true} | ||||
|         this.form.deptList[index] = i | ||||
|       }) | ||||
|       this.dialog = true | ||||
|     }, | ||||
|  | ||||
|     gridChange(val) { | ||||
|       this.departIdList = val | ||||
|       this.search.departmentId = val?.[val.length - 1] | ||||
|       this.$refs.cascader1.dropDownVisible = false; | ||||
|       this.getTableData() | ||||
|     add() { | ||||
|       this.dialog = true | ||||
|     }, | ||||
|     onUserChange (e) { | ||||
|       this.form.deptList = e | ||||
|       this.$forceUpdate() | ||||
|     }, | ||||
|  | ||||
|     onConfirm() { | ||||
|       if(this.flag) return | ||||
|  | ||||
|       this.$refs.form.validate((valid)=> { | ||||
|         if(valid) { | ||||
|           this.flag = true | ||||
|           this.instance.post(`/app/appwxuserfamiliarityrate/webUpdate`,{...this.form}).then(res => { | ||||
|           var departmentIds = [] | ||||
|           this.form.deptList.map((item) => { | ||||
|             departmentIds.push(item.id) | ||||
|           }) | ||||
|           this.instance.post(`/app/appsessionarchivekeywordinfo/addOrUpdate`,{ | ||||
|             ...this.form, | ||||
|             areaIds: this.form.areaList.join(','), | ||||
|             departmentIds: departmentIds.join(',') | ||||
|           }).then(res => { | ||||
|             if(res?.code == 0) { | ||||
|               this.$message.success('分类信息修改成功') | ||||
|               this.$message.success(this.form.id ? '关键词编辑成功' : '关键词添加成功') | ||||
|               setTimeout(() =>{ | ||||
|                 this.dialog = false | ||||
|                 this.getTableData() | ||||
| @@ -225,15 +193,6 @@ export default { | ||||
|       }) | ||||
|  | ||||
|     }, | ||||
|  | ||||
|     toDetail(id) { | ||||
|       this.$emit('change', { | ||||
|         type: 'Detail', | ||||
|         params: { | ||||
|           id: id | ||||
|         } | ||||
|       }) | ||||
|     } | ||||
|   }, | ||||
| } | ||||
| </script> | ||||
| @@ -242,68 +201,24 @@ export default { | ||||
| .AppKeywordManagement { | ||||
|   height: 100%; | ||||
|  | ||||
|   :deep( .ai-dialog .ai-dialog__content ){ | ||||
|     max-height: 600px!important; | ||||
|   } | ||||
|  | ||||
|  | ||||
|  | ||||
|   .userlist { | ||||
|     display: inline-block; | ||||
|   } | ||||
|  | ||||
|   .userlist, .user { | ||||
|     display: inline-block; | ||||
|   } | ||||
|  | ||||
|   .user { | ||||
|     position: relative; | ||||
|     width: 70px; | ||||
|     text-align: center; | ||||
|  | ||||
|     .remove-icon { | ||||
|       position: absolute; | ||||
|       right: 7px; | ||||
|       top: -4px; | ||||
|       line-height: 1; | ||||
|       padding: 6px 0; | ||||
|       font-size: 16px; | ||||
|       cursor: pointer; | ||||
|  | ||||
|       &:hover { | ||||
|         color: crimson; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     img, h2 { | ||||
|       display: block; | ||||
|       width: 40px; | ||||
|       height: 40px; | ||||
|       line-height: 40px; | ||||
|       text-align: center; | ||||
|       margin: 0 auto 4px; | ||||
|       font-size: 14px; | ||||
|       color: #fff; | ||||
|       border-radius: 50%; | ||||
|     } | ||||
|  | ||||
|     h2 { | ||||
|       background-color: $primaryColor; | ||||
|     } | ||||
|  | ||||
|     span { | ||||
|       color: #666; | ||||
|       font-size: 14px; | ||||
|       white-space: nowrap; | ||||
|       overflow: hidden; | ||||
|       word-break: break-all; | ||||
|       text-overflow: ellipsis; | ||||
|   .time-select { | ||||
|     padding: 0 16px; | ||||
|     height: 32px; | ||||
|     line-height: 32px; | ||||
|     border: 1px solid #d0d4dc; | ||||
|     border-radius: 4px; | ||||
|     display: flex; | ||||
|     justify-content: space-between; | ||||
|     cursor: pointer; | ||||
|     .el-icon-arrow-down { | ||||
|       line-height: 32px; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   :deep( .selectCont .pagination ){ | ||||
|     width: 100%!important; | ||||
|     background: pink; | ||||
|   :deep .is-error { | ||||
|     .time-select { | ||||
|       border: 1px solid #f46!important; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user