规则
This commit is contained in:
		| @@ -10,16 +10,16 @@ | ||||
|           </template> | ||||
|           <template #right> | ||||
|             <el-input size="small" placeholder="请输入居民名称或真实姓名" v-model="search.userName" clearable | ||||
|               @clear="page.current = 1, search.userName = '', getTableData()" suffix-icon="iconfont iconSearch" | ||||
|               v-throttle="() => {(page.current = 1), getTableData();}"/> | ||||
|               @clear="current = 1, search.userName = '', getTableData()" suffix-icon="iconfont iconSearch" | ||||
|               v-throttle="() => {(current = 1), getTableData();}"/> | ||||
|             <ai-download :instance="instance" url="`/app/appintegraluser/girdIntegralExport" :params="search" fileName="网格员积分" | ||||
|                          :disabled="tableData.length == 0"> | ||||
|               <el-button size="small">导出</el-button> | ||||
|             </ai-download> | ||||
|           </template> | ||||
|         </ai-search-bar> | ||||
|         <ai-table :tableData="tableData" :total="page.total" :current.sync="page.current" :size.sync="page.size" | ||||
|                   @getList="getTableData" :col-configs="colConfigs" :dict="dict"> | ||||
|         <ai-table :tableData="tableData" :total="page.total" :current.sync="current" :size.sync="page.size" | ||||
|                   @getList="getTableData()" :col-configs="colConfigs" :dict="dict"> | ||||
|           <el-table-column slot="integral" label="积分余额" align="center" :sortable="'custom'"> | ||||
|             <template slot-scope="{ row }"> | ||||
|               <span>{{ row.integral }}</span> | ||||
| @@ -100,9 +100,9 @@ export default { | ||||
|         size: 10, | ||||
|       }, | ||||
|       tableData: [], | ||||
|       page: {current: 1, size: 10, total: 0}, | ||||
|       page: {size: 10, total: 0}, | ||||
|       current: 1, | ||||
|       girdList: [], | ||||
|        | ||||
|       form: { | ||||
|         ids: [], | ||||
|         eventDesc: "",   | ||||
| @@ -153,6 +153,7 @@ export default { | ||||
|         params: { | ||||
|           ...this.page, | ||||
|           ...this.search, | ||||
|           current: this.current | ||||
|         } | ||||
|       }).then(res => { | ||||
|         if(res?.data) { | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|         <ai-search-bar> | ||||
|           <template #left> | ||||
|             <el-button type="primary" icon="iconfont iconAdd" @click="dialog=true">添加</el-button> | ||||
|             <el-cascader size="small" v-model="search.eventType" :options="rulesOpsList" placeholder="请选择事件/类型" clearable | ||||
|             <el-cascader size="small" v-model="search.systemRuleId" :options="rulesOps" placeholder="请选择事件/类型" clearable | ||||
|                          :props="rulesProps" @change="handleTypeSearch" ref="eventTypeSearch" /> | ||||
|             <ai-select | ||||
|                 v-model="search.status" | ||||
| @@ -24,7 +24,7 @@ | ||||
|             :total="page.total" :dict="dict" | ||||
|             :current.sync="page.current" | ||||
|             :size.sync="page.size" | ||||
|             @getList="getList"> | ||||
|             @getList="getList()"> | ||||
|           <el-table-column slot="integral" label="分值" align="center"> | ||||
|             <template slot-scope="{ row }"> | ||||
|             <span | ||||
| @@ -50,22 +50,16 @@ | ||||
|       </template> | ||||
|     </ai-list> | ||||
|     <!-- <ai-empty v-else>暂无应用权限</ai-empty> --> | ||||
|     <ai-dialog :title="dialogTitle" :visible.sync="dialog" @onConfirm="onConfirm" @closed="form={ }" width="900px" > | ||||
|     <ai-dialog :title="dialogTitle" :visible.sync="dialog" @onConfirm="onConfirm" @closed="form={}" width="900px" > | ||||
|       <div class="form_div"> | ||||
|         <el-form ref="DialogForm" :model="form" :rules="formRules" size="small" label-suffix=":" label-width="150px"> | ||||
|           <el-form-item label="规则类型" prop="rulueType" :rules="[{required: true, message: '请选择规则类型', trigger: 'change'}]"> | ||||
|             <el-radio-group v-model="rulueType"> | ||||
|               <el-radio label="0">系统规则</el-radio> | ||||
|               <el-radio label="1">自定义规则</el-radio> | ||||
|             </el-radio-group> | ||||
|           </el-form-item> | ||||
|  | ||||
|           <el-form-item label="事件类型" prop="systemRuleId"> | ||||
|             <el-cascader v-model="form.systemRuleId" :props="etOps" clearable placeholder="请选择" @change="handleTypeForm" | ||||
|             <el-cascader v-model="form.systemRuleId" ref="cascaderArr" :props="etOps" clearable placeholder="请选择" @change="handleTypeForm" | ||||
|                          :options="rulesOps"/> | ||||
|           </el-form-item> | ||||
|  | ||||
|           <el-form-item label="自定义事件" v-if="rulueType == 1"> | ||||
|           <el-form-item label="自定义事件" v-if="form.systemRuleId == '自定义'"> | ||||
|             <el-input placeholder="请输入,周期范围内,不填写表示不限制" v-model="form.ruleName" clearable/> | ||||
|           </el-form-item> | ||||
|  | ||||
| @@ -120,7 +114,7 @@ | ||||
|           </el-form-item> | ||||
|  | ||||
|           <el-form-item label="生效网格" :prop="form.validRangeType == 1? 'validRangeData' :''" :rules="[{required: true, message: '请选择生效网格', trigger: 'change'}]" v-if="form.validRangeType == 1"> | ||||
|             <el-button type="text" @click="showGrid = true,beforeSelectTree()">请选择</el-button> | ||||
|             <el-button type="text" @click="showGrid = true,beforeSelectTree()">{{ girdInfoList.length? '已选择':'请选择' }}</el-button> | ||||
|           </el-form-item> | ||||
|  | ||||
|         </el-form> | ||||
| @@ -159,21 +153,28 @@ export default { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       search: {status: "", eventType: null}, | ||||
|       search: { | ||||
|         status: "",  | ||||
|         systemRuleId: "", | ||||
|       }, | ||||
|       page: {current: 1, size: 10, total: 0}, | ||||
|       colConfigs: [ | ||||
|         {prop: "event", label: "事件", dict: "integralRuleEvent"}, | ||||
|         {prop: "type", label: "类型", dict: "integralRuleEventType"}, | ||||
|         {prop: "parentRuleName", label: "类型", dict: "integralRuleEventType"}, | ||||
|         {prop: "ruleName", label: "事件", dict: "integralRuleEvent"}, | ||||
|         {prop: "ruleType", label: "规则", dict: "integralRuleRuleType"}, | ||||
|         {prop: "scoringCycle", label: "周期范围", dict: "integralRuleScoringCycle"}, | ||||
|         {prop: "scoringCycle", label: "周期范围", dict: "integralRuleScoringCycle",render: (h, {row}) => { | ||||
|           return h('span', { | ||||
|           }, row.numberLimit.length? $dict.getLabel('integralRuleScoringCycle', row.scoringCycle):$dict.getLabel('integralRuleScoringCycle', row.scoringCycle) + row.numberLimit + '次') | ||||
|         }}, | ||||
|         {slot: "integral",label: "积分分值", align: "center"}, | ||||
|         {prop: "validRangeType", label: "有效范围", dict: "integralRuleScoringCycle"}, | ||||
|         {prop: "validRangeType", label: "有效范围", formart: v => v==0? '全局':'指定网格'}, | ||||
|         {prop: "status", label: "状态", align: "center", width: 96, dict: "integralRuleStatus"}, | ||||
|         {slot: "options", label: "操作", align: "center"}, | ||||
|       ], | ||||
|       tableData: [], | ||||
|       dialog: false, | ||||
|       form: { | ||||
|         ruleType: 0, | ||||
|         systemRuleId: '', | ||||
|         ruleName: '', | ||||
|         scoringCycle: '', | ||||
| @@ -185,13 +186,10 @@ export default { | ||||
|       formRules: { | ||||
|         systemRuleId: [{required: true, message: "请选择事件/类型", trigger: "change"}], | ||||
|         scoringCycle: [{required: true, message: "请选择周期范围", trigger: "change"}], | ||||
|         // numberLimit: [{pattern: /^\d*$/, message: "请输入正整数"}], | ||||
|         integral: [{required: true, pattern: /^\d*[.\d]\d?$/, message: "请输入积分分值,最多保留一位小数"}], | ||||
|         validRangeType: [{required: true, message: "请选择有效范围", trigger: "change"}], | ||||
|         // validRangeData: [{required: true, message: "请选择生效网格", trigger: "change"}], | ||||
|       }, | ||||
|       rulesOps: [], | ||||
|       rulesOpsList: [], | ||||
|       rulesProps: { | ||||
|         label: "ruleName", | ||||
|         value: "id", | ||||
| @@ -222,7 +220,10 @@ export default { | ||||
|   methods: { | ||||
|     getList() { | ||||
|       this.instance.post(`/app/appintegralrule/list`, null, { | ||||
|         params: {...this.search, ...this.page}, | ||||
|         params: { | ||||
|           ...this.search, | ||||
|           ...this.page, | ||||
|         }, | ||||
|       }).then(res => { | ||||
|         if (res?.data) { | ||||
|           this.tableData = res.data.records; | ||||
| @@ -231,21 +232,10 @@ export default { | ||||
|       }); | ||||
|     }, | ||||
|     toEdit(row) { | ||||
|       console.log(row); | ||||
|       this.form = this.$copy(row) | ||||
|       let {ladderRule, event, type} = this.form, | ||||
|           dict = 'integralRuleEvent' + event | ||||
|       this.$dict.load(dict).then(() => { | ||||
|         this.form.eventType = [event, type] | ||||
|         this.form.ladderRule = JSON.parse(ladderRule || "[]") | ||||
|         this.cacheOps = this.$dict.getDict('integralRuleEvent').map(e => { | ||||
|           if (e.dictValue == event) { | ||||
|             e.children = this.$dict.getDict(dict).map(d => ({...d, leaf: true})) | ||||
|           } | ||||
|           return e | ||||
|         }) | ||||
|         this.$nextTick(() => { | ||||
|           this.dialog = true | ||||
|         }) | ||||
|       this.$nextTick(() => { | ||||
|         this.dialog = true | ||||
|       }) | ||||
|     }, | ||||
|     remove(id) { | ||||
| @@ -300,18 +290,14 @@ export default { | ||||
|       }); | ||||
|     }, | ||||
|     handleTypeSearch(v) { | ||||
|       this.search.event = v?.[0] | ||||
|       this.search.type = v?.[1] | ||||
|       this.search.systemRuleId = v?.[v.length - 1] | ||||
|       this.page.current = 1 | ||||
|       this.$refs.eventTypeSearch.dropDownVisible = false | ||||
|       this.getList() | ||||
|     }, | ||||
|     handleTypeForm(v) { | ||||
|       if (this.dialog) { | ||||
|         // this.form.event = v?.[0] | ||||
|       if(this.dialog) { | ||||
|         this.form.systemRuleId = v?.[v.length - 1] | ||||
|         console.log(this.form.systemRuleId); | ||||
|         // this.form.ruleType = !this.form.event ? null : this.form.event == 3 ? 1 : 0 | ||||
|       } | ||||
|     }, | ||||
|     handleDelete(i) { | ||||
| @@ -326,8 +312,7 @@ export default { | ||||
|       this.instance.post(`/app/appintegralsystemrule/list?current=1&sizes=3000`).then(res=> { | ||||
|         if(res?.data) { | ||||
|           this.rulesOps = this.toTree(res.data.records) | ||||
|           this.rulesOpsList = this.rulesOps | ||||
|           this.rulesOpsList.push({ | ||||
|           this.rulesOps.push({ | ||||
|             ruleName: '自定义', | ||||
|             id: '自定义' | ||||
|           }) | ||||
| @@ -346,7 +331,6 @@ export default { | ||||
|       }); | ||||
|       data.forEach(item => { | ||||
|         let parent = map[item.parentRuleId]; | ||||
|         console.log(parent); | ||||
|         if (parent) { | ||||
|           (parent.children || (parent.children = [])).push(item); | ||||
|         } else { | ||||
| @@ -385,9 +369,9 @@ export default { | ||||
|         ...this.$refs.tree.getCheckedNodes(), | ||||
|         checkType: true | ||||
|       }) | ||||
|  | ||||
|       // this.girdInfoList = this.$refs.tree.getCheckedNodes() | ||||
|  | ||||
|       console.log(this.$refs.tree.getCheckedNodes()); | ||||
|       this.form.validRangeData = this.$refs.tree.getCheckedNodes().map(e=> e.id).toString() | ||||
|       console.log(this.form.validRangeData); | ||||
|       this.showGrid = false; | ||||
|     }, | ||||
|      | ||||
|   | ||||
| @@ -58,7 +58,7 @@ | ||||
|           <template #left> | ||||
|             <el-cascader ref="cascader2" v-model="search.girdId" :options="girdOptions" placeholder="所属网格" size="small"  | ||||
|               :props="defaultProps" :show-all-levels="false" clearable @change="gridChangeOpt"></el-cascader> | ||||
|             <ai-select v-model="search.integralType" placeholder="请选择类型" @change="page.current=1, getTableData()"  | ||||
|             <ai-select v-model="search.integralType" placeholder="请选择类型" @change="current=1, getTableData()"  | ||||
|             :selectList="dict.getDict('integralType')"/> | ||||
|             <el-date-picker v-model="time" size="small" type="daterange" value-format="yyyy-MM-dd"  | ||||
|               range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="onChange"> | ||||
| @@ -66,11 +66,11 @@ | ||||
|           </template> | ||||
|           <template #right> | ||||
|             <el-input size="small" placeholder="请输入姓名" v-model="search.userName" clearable | ||||
|               @clear="page.current = 1, search.userName = '', getTableData()" suffix-icon="iconfont iconSearch" | ||||
|               v-throttle="() => {(page.current = 1), getTableData();}" /> | ||||
|               @clear="current = 1, search.userName = '', getTableData()" suffix-icon="iconfont iconSearch" | ||||
|               v-throttle="() => {(current = 1), getTableData();}" /> | ||||
|           </template> | ||||
|         </ai-search-bar> | ||||
|         <ai-table :tableData="tableData" :total="page.total" :current.sync="page.current" :size.sync="page.size" | ||||
|         <ai-table :tableData="tableData" :total="page.total" :current.sync="current" :size.sync="page.size" | ||||
|                   @getList="getTableData" :col-configs="colConfigs" :dict="dict"> | ||||
|           <el-table-column slot="changeIntegral" label="积分变动" align="center"> | ||||
|             <template slot-scope="{ row }"> | ||||
| @@ -140,7 +140,12 @@ export default { | ||||
|         startTime: '', | ||||
|         endTime: '', | ||||
|       }, | ||||
|       page: {current: 1, size: 10,total: 0,}, | ||||
|       page: { | ||||
|          | ||||
|         size: 10, | ||||
|         total: 0, | ||||
|       }, | ||||
|       current: '1', | ||||
|       girdList: [], | ||||
|       time: [], | ||||
|       timeCheck: ['昨日','近7天','近30天','自定义'], | ||||
| @@ -239,6 +244,7 @@ export default { | ||||
|         params: { | ||||
|           ...this.page, | ||||
|           ...this.search, | ||||
|           current: this.current | ||||
|         } | ||||
|       }).then(res => { | ||||
|         if(res?.data) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user