feat: 规则管理
This commit is contained in:
		| @@ -13,10 +13,10 @@ | ||||
|           <template #left> | ||||
|             <el-button type="primary" icon="iconfont iconAdd" @click="handleAdd">添加</el-button> | ||||
|             <ai-select | ||||
|                 v-model="search.applyItemId" | ||||
|                 v-model="search.type" | ||||
|                 @change="(search.current = 1), getList()" | ||||
|                 placeholder="请选择事件类型" | ||||
|                 :selectList="dictList"> | ||||
|                 :selectList="$dict.getDict('shopScoreType')"> | ||||
|             </ai-select> | ||||
|             <ai-select | ||||
|                 v-model="search.applyItemId" | ||||
| @@ -25,16 +25,10 @@ | ||||
|                 :selectList="dictList"> | ||||
|             </ai-select> | ||||
|             <ai-select | ||||
|                 v-model="search.applyItemId" | ||||
|                 v-model="search.status" | ||||
|                 @change="(search.current = 1), getList()" | ||||
|                 placeholder="请选择状态" | ||||
|                 :selectList="dictList"> | ||||
|             </ai-select> | ||||
|             <ai-select | ||||
|                 v-model="search.applyItemId" | ||||
|                 @change="(search.current = 1), getList()" | ||||
|                 placeholder="有效地区" | ||||
|                 :selectList="dictList"> | ||||
|                 :selectList="$dict.getDict('shopScoreEvent')"> | ||||
|             </ai-select> | ||||
|           </template> | ||||
|         </ai-search-bar> | ||||
| @@ -48,44 +42,52 @@ | ||||
|             @getList="getList"> | ||||
|  | ||||
|           <el-table-column | ||||
|               label="状态" | ||||
|               slot="state"> | ||||
|               label="分值" | ||||
|               slot="score"> | ||||
|             <template v-slot="{ row }"> | ||||
|               <span class="start">启用</span> | ||||
|               <span>{{row.score === 0 ? 0 : row.score > 0 ? `+${row.score}` : row.score}}</span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column | ||||
|               label="状态" | ||||
|               slot="status"> | ||||
|             <template v-slot="{ row }"> | ||||
|               <span class="start" v-if="row.status==='1'">启用</span> | ||||
|               <span class="stop" v-else>停用</span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|  | ||||
|           <el-table-column slot="options" width="180px" fixed="right" label="操作" align="center"> | ||||
|             <template slot-scope="{ row }"> | ||||
|               <div class="table-options"> | ||||
|                 <el-button type="text">停用</el-button> | ||||
|                 <el-button type="text">编辑</el-button> | ||||
|                 <el-button type="text">删除</el-button> | ||||
|                 <el-button type="text" @click="changeState(row)">{{row.status === '1' ? '停用' : '启用'}}</el-button> | ||||
|                 <el-button type="text" @click="handleEdit(row)">编辑</el-button> | ||||
|                 <el-button type="text" @click="handleDelete(row)">删除</el-button> | ||||
|               </div> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|         </ai-table> | ||||
|       </template> | ||||
|     </ai-list> | ||||
|     <ai-dialog title="评分规则" :visible.sync="dialog" width="800px"> | ||||
|       <el-form ref="formRef" :model="form" label-width="120px"> | ||||
|         <el-form-item label="事件类型:"> | ||||
|     <ai-dialog title="评分规则" :visible.sync="dialog" width="800px" @closed="onClosed"> | ||||
|       <el-form ref="formRef" :model="form" :rules="rules" label-width="120px"> | ||||
|         <el-form-item label="事件类型:" prop="type"> | ||||
|           <ai-select | ||||
|               v-model="form.applyItemId" | ||||
|               v-model="form.type" | ||||
|               placeholder="请选择事件类型" | ||||
|               :selectList="dictList"> | ||||
|               :selectList="$dict.getDict('shopScoreType')"> | ||||
|           </ai-select> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="自定义事件:"> | ||||
|           <ai-select | ||||
|               v-model="form.applyItemId" | ||||
|               v-model="form.status" | ||||
|               placeholder="请选择自定义事件" | ||||
|               :selectList="dictList"> | ||||
|               :selectList="$dict.getDict('shopScoreEvent')"> | ||||
|           </ai-select> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="规则:">常规</el-form-item> | ||||
|         <el-form-item label="分值:"> | ||||
|           <el-input v-model="form.num" size="small" placeholder="请输入分值"></el-input> | ||||
|         <el-form-item label="分值:" prop="score"> | ||||
|           <el-input-number v-model="form.score" size="small" placeholder="请输入分值"></el-input-number> | ||||
|         </el-form-item> | ||||
|       </el-form> | ||||
|     </ai-dialog> | ||||
| @@ -96,52 +98,144 @@ | ||||
| <script> | ||||
| export default { | ||||
|   name: "RuleManage", | ||||
|   props: { | ||||
|     instance: Function, | ||||
|     dict: Object, | ||||
|     permissions: Function | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       search:{}, | ||||
|       search:{ | ||||
|         type:'', | ||||
|         status:'', | ||||
|       }, | ||||
|       dictList:[], | ||||
|       cardList: [ | ||||
|         { | ||||
|           label: '规则总数量', | ||||
|           value: 122 | ||||
|           value: 0 | ||||
|         }, | ||||
|         { | ||||
|           label: '正向事件规则项', | ||||
|           value: 122 | ||||
|           value: 0 | ||||
|         }, | ||||
|         { | ||||
|           label: '正向事件总分数', | ||||
|           value: 122 | ||||
|           value: 0 | ||||
|         }, | ||||
|         { | ||||
|           label: '负向事件规则项', | ||||
|           value: 122 | ||||
|           value: 0 | ||||
|         }, | ||||
|         { | ||||
|           label: '负向事件总分数', | ||||
|           value: 122 | ||||
|           value: 0 | ||||
|         }, | ||||
|       ], | ||||
|       total: 10, | ||||
|       colConfigs: [ | ||||
|         {type: "selection"}, | ||||
|         { prop: 'integralUserName',  label: '类型', align: 'center' }, | ||||
|         { prop: 'type',  label: '类型', align: 'center' }, | ||||
|         { prop: 'areaName',  label: '事件', align: 'center' }, | ||||
|         { prop: 'girdName',  label: '规则', align: 'center' }, | ||||
|         { prop: 'createTime',  label: '分值', align: 'center' }, | ||||
|         { slot: 'state',  label: '状态', align: 'center' }, | ||||
|         { prop: 'rule',  label: '规则', align: 'center' }, | ||||
|         { slot: 'score' }, | ||||
|         { slot: 'status'}, | ||||
|       ], | ||||
|       tableData: [], | ||||
|       dialog:false, | ||||
|       form:{} | ||||
|       form:{ | ||||
|         type:'', | ||||
|         score:'' | ||||
|       }, | ||||
|       rules:{ | ||||
|         type:[{ required: true, message: '请选择事件类型', trigger: 'change' },], | ||||
|         score:[{ required: true, message: '请输入分值', trigger: 'blur' },], | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|  | ||||
|   created(){ | ||||
|     this.$dict.load('shopScoreType','shopScoreEvent').then(()=>{ | ||||
|       this.getStatic() | ||||
|       this.getList() | ||||
|     }) | ||||
|   }, | ||||
|  | ||||
|   methods: { | ||||
|     onClosed(){ | ||||
|       this.form = { | ||||
|         type:'', | ||||
|         score:'' | ||||
|       } | ||||
|       this.$refs['formRef'].resetFields() | ||||
|     }, | ||||
|     async changeState({id,status}){ | ||||
|       try { | ||||
|         const {code} = await this.instance.post('/app/appscorerules/isOrNotEnableById',null,{ | ||||
|           params:{id} | ||||
|         }) | ||||
|         if(code===0){ | ||||
|           this.$message.success(status === '1' ? '停用成功' :'启用成功') | ||||
|           this.getStatic() | ||||
|           this.getList() | ||||
|         } | ||||
|       }catch (e) { | ||||
|         console.error(e) | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     handleEdit(row){ | ||||
|       this.form = {...row} | ||||
|       this.dialog = true | ||||
|     }, | ||||
|  | ||||
|     handleDelete({id}){ | ||||
|       this.$confirm("是否要删除此数据?").then( | ||||
|         async ()=>{ | ||||
|           try { | ||||
|             const {code} = await this.instance.post('/app/appscorerules/delete',null,{ | ||||
|               params:{ids:id} | ||||
|             }) | ||||
|             if(code===0){ | ||||
|               this.$message.success('删除成功') | ||||
|               this.getStatic() | ||||
|               this.getList() | ||||
|             } | ||||
|           }catch (e) { | ||||
|             console.error(e) | ||||
|           } | ||||
|         } | ||||
|       ) | ||||
|     }, | ||||
|  | ||||
|     handleAdd(){ | ||||
|       this.dialog = true | ||||
|     }, | ||||
|     getList() { | ||||
|  | ||||
|     async getStatic() { | ||||
|       try { | ||||
|         const {code,data} = await this.instance.post('/app/appscorerules/queryAppScoreRulesCount') | ||||
|         if(code===0){ | ||||
|           const array = ['rulesCount','positiveCount','positiveScore','negativeCount','negativeScore'] | ||||
|           array.forEach((item,index)=>{ | ||||
|             this.cardList[index].value = data[item] | ||||
|           }) | ||||
|         } | ||||
|       }catch (e) { | ||||
|         console.error(e) | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     async getList(){ | ||||
|       try { | ||||
|         const {code,data} = await this.instance.post('/app/appscorerules/list') | ||||
|         if(code===0){ | ||||
|           this.tableData = data.records | ||||
|           this.total = data.total | ||||
|         } | ||||
|       }catch (e) { | ||||
|         console.error(e) | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
| } | ||||
| @@ -185,18 +279,18 @@ export default { | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .start{ | ||||
|     font-size: 14px; | ||||
|     color: #2EA222; | ||||
|   } | ||||
|  | ||||
|   .stop{ | ||||
|     font-size: 14px; | ||||
|     color: #FF4466; | ||||
|   } | ||||
|  | ||||
|   .card:last-child { | ||||
|     margin-right: 0; | ||||
|   } | ||||
| } | ||||
|  | ||||
| :deep(.start){ | ||||
|   font-size: 14px; | ||||
|   color: #2EA222; | ||||
| } | ||||
|  | ||||
| :deep(.stop){ | ||||
|   font-size: 14px; | ||||
|   color: #FF4466; | ||||
| } | ||||
| </style> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user