Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
		| @@ -5,12 +5,12 @@ | ||||
|         <ai-search-bar> | ||||
|           <template #left> | ||||
|             <el-button type="primary" size="small" icon="iconfont iconAdd" @click="changeIntegral('',0)"> 批量调整积分</el-button> | ||||
|             <el-cascader ref="cascader1" clearable v-model="search.girdId" :options="girdOptions" placeholder="所属网格" size="small"  | ||||
|             <el-cascader ref="cascader1" clearable v-model="girdIdList" :options="girdOptions" placeholder="所属网格" size="small"  | ||||
|               :props="defaultProps" :show-all-levels="false" @change="gridChange"></el-cascader> | ||||
|           </template> | ||||
|           <template #right> | ||||
|             <el-input size="small" placeholder="姓名" v-model="search.name" clearable | ||||
|               @clear="current = 1, search.name = '', getTableData()" suffix-icon="iconfont iconSearch" | ||||
|             <el-input size="small" placeholder="姓名" v-model="search.userName" clearable | ||||
|               @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"> | ||||
| @@ -20,21 +20,6 @@ | ||||
|         </ai-search-bar> | ||||
|         <ai-table :tableData="tableData" :total="page.total" :current.sync="current" :size.sync="page.size" | ||||
|                   @getList="getTableData()" :col-configs="colConfigs" :dict="dict" @sort-change="changeTableSort"> | ||||
|           <el-table-column slot="integral" label="积分余额" align="center" prop="integral" :sortable="'custom'"> | ||||
|             <template slot-scope="{ row }"> | ||||
|               <span>{{ row.integral }}</span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column slot="totalIntegral" label="累计积分" align="center" prop="totalIntegral" :sortable="'custom'"> | ||||
|             <template slot-scope="{ row }"> | ||||
|               <span>{{ row.totalIntegral }}</span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column slot="usedIntegral" label="已用积分" align="center" prop="usedIntegral" :sortable="'custom'"> | ||||
|             <template slot-scope="{ row }"> | ||||
|               <span>{{ row.usedIntegral }}</span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column slot="options" label="操作"  align="center"> | ||||
|             <template slot-scope="{ row }"> | ||||
|               <el-button type="text" @click="changeIntegral(row,1)">调整积分</el-button> | ||||
| @@ -52,27 +37,27 @@ | ||||
|         @onConfirm="onConfirm" | ||||
|         @closed="form={},chooseUserList=[]"> | ||||
|       <el-form ref="form" :model="form" :rules="rules" label-width="80px"> | ||||
|         <el-form-item label="选择人员" prop="ids" required> | ||||
|           <!-- <ai-person-select :instance="instance" :customClicker="true" :chooseUserList="chooseUserList" | ||||
|                             :url="'/app/appgirdmemberinfo/list?size=10'" | ||||
|                             :isMultiple="true" dialogTitle="选择" @selectPerson="selectPerson"> | ||||
|         <el-form-item label="选择人员" prop="ids"> | ||||
|           <ai-person-select :instance="instance" :customClicker="true" :chooseUserList="chooseUserList" | ||||
|               :url="'/app/appgirdmemberinfo/list?size=10'" headerTitle="网格员列表" | ||||
|               :isMultiple="true" dialogTitle="选择" @selectPerson="selectPerson" class="aipersonselect"> | ||||
|             <template name="option" v-slot:option="{ item }"> | ||||
|               <span class="iconfont iconProlife">{{ item.name }}</span> | ||||
|               <ai-id mode="show" :show-eyes="false" :value="item.idNumber"/> | ||||
|             </template> | ||||
|           </ai-person-select> --> | ||||
|           </ai-person-select> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="调整说明" prop="eventDesc" required> | ||||
|         <el-form-item label="调整说明" prop="eventDesc"> | ||||
|           <el-input v-model.trim="form.eventDesc" placeholder="请输入..." type="textarea" :rows="4" show-word-limit | ||||
|                     maxlength="100"></el-input> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="上传凭证"> | ||||
|           <ai-uploader :instance="instance" fileType="file" v-model="form.file" :limit="1"></ai-uploader> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="类型" prop="integralCalcType" required> | ||||
|         <el-form-item label="类型" prop="integralCalcType"> | ||||
|           <ai-select v-model="form.integralCalcType" :selectList="dict.getDict('integralCalcType')"/> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="积分" prop="integral" required> | ||||
|         <el-form-item label="积分" prop="integral"> | ||||
|           <el-input v-model.trim="form.integral" placeholder="请输入正数" size="small"></el-input> | ||||
|         </el-form-item> | ||||
|       </el-form> | ||||
| @@ -94,13 +79,14 @@ export default { | ||||
|   data() { | ||||
|     return { | ||||
|       search: { | ||||
|         name: '', | ||||
|         userName: '', | ||||
|         girdId: '', | ||||
|         current: 1,  | ||||
|         size: 10, | ||||
|         sortFiled: '', | ||||
|         sortRule: '', | ||||
|       }, | ||||
|       girdIdList: [], | ||||
|       tableData: [], | ||||
|       page: {size: 10, total: 0}, | ||||
|       current: 1, | ||||
| @@ -135,10 +121,10 @@ export default { | ||||
|     colConfigs() { | ||||
|       return [ | ||||
|         { prop: "userName", label: '姓名', align: "left",  }, | ||||
|         { prop: "girdName", label: '所属网格', align: "center",  }, | ||||
|         { slot: "integral", label: '积分余额', align: "center", }, | ||||
|         { slot: "totalIntegral", label: '累计积分', align: "center", }, | ||||
|         { slot: "usedIntegral", label: '已用积分', align: "center", }, | ||||
|         { prop: "girdName", label: '所属网格' }, | ||||
|         { prop: "integral", label: '积分余额', align: "center", sortable: true }, | ||||
|         { prop: "totalIntegral", label: '累计积分', align: "center", sortable: true }, | ||||
|         { prop: "usedIntegral", label: '已用积分', align: "center", sortable: true  }, | ||||
|         { slot: "options" }, | ||||
|       ] | ||||
|     }, | ||||
| @@ -147,7 +133,8 @@ export default { | ||||
|         ids: [{required: true, message: '请选择人员', trigger: 'blur'}], | ||||
|         eventDesc: [{required: true, message: '请输入调整说明', trigger: 'blur'}], | ||||
|         integralCalcType: [{required: true, message: '请选择类型', trigger: 'change'}], | ||||
|         integral: [{required: true, validator: (r, v, cb) => v > 0 ? cb() : cb("请输入正数")}], | ||||
|         integral: [{required: true, message: '请输入积分', trigger: 'blur' }, | ||||
|         {pattern: /^([1-9]\d*|0)(\.\d{1,2})?$/, message: '请输入正数且最多只能保留两位小数'}], | ||||
|       } | ||||
|     }, | ||||
|   }, | ||||
| @@ -218,6 +205,7 @@ export default { | ||||
|     }, | ||||
|  | ||||
|     gridChange(val) { | ||||
|       this.girdIdList = val | ||||
|       this.search.girdId = val?.[val.length - 1] | ||||
|       this.$refs.cascader1.dropDownVisible = false; | ||||
|       this.getTableData() | ||||
| @@ -225,36 +213,30 @@ export default { | ||||
|  | ||||
|     changeTableSort(col) { | ||||
|       if(col.prop === 'integral') { // 剩余积分 | ||||
|         this.search.sortFiled = 0 | ||||
|         if(col.order === 'ascending') { | ||||
|           this.search.sortFiled = 0 | ||||
|           this.search.sortRule = true | ||||
|         } else if(col.order === 'descending') { | ||||
|           this.search.sortFiled = 0 | ||||
|           this.search.sortRule = false | ||||
|         } else if(col.order === null) { | ||||
|           this.search.sortFiled = '' | ||||
|           this.search.sortRule = '' | ||||
|         } | ||||
|       } else if(col.prop === 'totalIntegral') {  // 累计积分 | ||||
|         this.search.sortFiled = 1 | ||||
|         if(col.order === 'ascending') { | ||||
|           this.search.sortFiled = 1 | ||||
|           this.search.sortRule = true | ||||
|         } else if(col.order === 'descending') { | ||||
|           this.search.sortFiled = 1 | ||||
|           this.search.sortRule = false | ||||
|         } else if(col.order === null) { | ||||
|           this.search.sortFiled = '' | ||||
|           this.search.sortRule = '' | ||||
|         } | ||||
|       } else if(col.prop === 'usedIntegral') {  // 已用积分 | ||||
|         this.search.sortFiled = 2 | ||||
|         if(col.order === 'ascending') { | ||||
|           this.search.sortFiled = 2 | ||||
|           this.search.sortRule = true | ||||
|         } else if(col.order === 'descending') { | ||||
|           this.search.sortFiled = 2 | ||||
|           this.search.sortRule = false | ||||
|         } else if(col.order === null) { | ||||
|           this.search.sortFiled = '' | ||||
|           this.search.sortRule = '' | ||||
|         } | ||||
|       } | ||||
| @@ -277,12 +259,15 @@ export default { | ||||
|             integralCalcType: this.form.integralCalcType, | ||||
|             integral: this.form.integral, | ||||
|           }).then(res => { | ||||
|             if(res.code == 0) { | ||||
|             if(res?.code == 0) { | ||||
|               this.$message.success('调整积分成功') | ||||
|               setTimeout(() =>{ | ||||
|                 this.getTableData() | ||||
|                 this.dialog = false | ||||
|               }) | ||||
|                 this.getTableData() | ||||
|                 this.flag = false | ||||
|               }, 600) | ||||
|             } else { | ||||
|               this.flag = false | ||||
|             } | ||||
|           }) | ||||
|         } | ||||
| @@ -309,5 +294,65 @@ export default { | ||||
|   ::v-deep .ai-dialog .ai-dialog__content { | ||||
|     overflow-y: hidden; | ||||
|   } | ||||
|  | ||||
|    | ||||
|  | ||||
|   .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; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   ::v-deep .selectCont .pagination { | ||||
|     width: 100%!important; | ||||
|     background: pink; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| @@ -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.systemRuleId" :options="rulesOps" placeholder="请选择事件/类型" clearable :props="rulesProps" @change="handleTypeSearch" ref="eventTypeSearch"/> | ||||
|             <el-cascader size="small" v-model="systemRuleIdList" :options="rulesOps" placeholder="请选择事件/类型" clearable :props="rulesProps" @change="handleTypeSearch" ref="eventTypeSearch"/> | ||||
|             <ai-select v-model="search.status" @change="(page.current = 1), getList()" placeholder="请选择状态" :selectList="$dict.getDict('integralRuleStatus')"> | ||||
|             </ai-select> | ||||
|           </template> | ||||
| @@ -42,8 +42,8 @@ | ||||
|             <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="form.systemRuleId == '自定义'"> | ||||
|             <el-input placeholder="请输入,周期范围内,不填写表示不限制" v-model="form.ruleName" clearable/> | ||||
|           <el-form-item label="自定义事件" v-if="form.systemRuleId == '自定义'" prop="ruleName" :required="form.systemRuleId == '自定义'"> | ||||
|             <el-input placeholder="请输入,周期范围内,不填写表示不限制" v-model="form.ruleName" clearable maxlength="10" show-word-limit /> | ||||
|           </el-form-item> | ||||
|  | ||||
|           <el-form-item label="规则"> | ||||
| @@ -82,7 +82,7 @@ | ||||
|           </el-form-item> | ||||
|  | ||||
|           <el-form-item label="奖励次数"> | ||||
|             <el-input placeholder="请输入,周期范围内,不填写表示不限制" v-model.number="form.numberLimit" clearable/> | ||||
|             <el-input type="number" placeholder="请输入,周期范围内,不填写表示不限制" v-model.number="form.numberLimit" clearable/> | ||||
|           </el-form-item> | ||||
|  | ||||
|           <el-form-item label="积分分值" prop="integral"> | ||||
| @@ -97,13 +97,18 @@ | ||||
|           </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()" >{{ girdInfoList.length ? "已选择" : "请选择" }}</el-button> | ||||
|             <el-button type="text" @click="(showGrid = true), beforeSelectTree()" >{{ girdInfoList.length ? "重新选择" : "请选择" }}</el-button> | ||||
|             <div v-if="girdInfoList.length"> | ||||
|               <span v-for="(e,index) in girdNameList" :key="index" style="margin-right: 8px;">{{e}}</span> | ||||
|             </div> | ||||
|           </el-form-item> | ||||
|         </el-form> | ||||
|       </div> | ||||
|       <ai-dialog title="选择网格" :visible.sync="showGrid" :customFooter="true" :destroyOnClose="true" border width="720px" append-to-body> | ||||
|         <div class="grid"> | ||||
|           <el-tree :data="treeObj.treeList" :props="treeObj.defaultProps" node-key="id" ref="tree" :check-strictly="true" show-checkbox default-expand-all :default-checked-keys="currCheckedKeys" @check="onCheckChange"> | ||||
|           <el-tree :data="treeObj.treeList" :props="treeObj.defaultProps" node-key="id" ref="tree"  | ||||
|             show-checkbox lazy :check-strictly="true" :load="loadNode" :default-expanded-keys="currCheckedKeys" | ||||
|              :default-checked-keys="currCheckedKeys" @check="onCheckChange"> | ||||
|           </el-tree> | ||||
|         </div> | ||||
|         <div class="dialog-footer" slot="footer"> | ||||
| @@ -125,12 +130,28 @@ export default { | ||||
|     permissions: Function, | ||||
|   }, | ||||
|   data() { | ||||
|     var validcode = (rule, value, callback) => { | ||||
|       if(value) { | ||||
|         if (value != 0) { | ||||
|           if(!/^([+-]?([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/.test(value)) { | ||||
|             callback(new Error('请输入积分分值,可输入正数、负数、最多保留两位小数')) | ||||
|           }else{ | ||||
|             callback(); | ||||
|           } | ||||
|         } else { | ||||
|           callback(new Error('请输入有效的积分分值')); | ||||
|         } | ||||
|       } else { | ||||
|         callback(new Error('请输入积分分值')); | ||||
|       } | ||||
|     } | ||||
|     return { | ||||
|       search: { | ||||
|         status: "", | ||||
|         systemRuleId: "", | ||||
|         ruleName: "" | ||||
|       }, | ||||
|       systemRuleIdList: [], | ||||
|       page: { current: 1, size: 10, total: 0 }, | ||||
|       colConfigs: [ | ||||
|         { | ||||
| @@ -187,16 +208,13 @@ export default { | ||||
|         systemRuleId: [ | ||||
|           { required: true, message: "请选择事件/类型", trigger: "change" }, | ||||
|         ], | ||||
|         ruleName: [ | ||||
|           { required: true, message: "请输入自定义事件", trigger: "change" }, | ||||
|         ], | ||||
|         scoringCycle: [ | ||||
|           { required: true, message: "请选择周期范围", trigger: "change" }, | ||||
|         ], | ||||
|         integral: [ | ||||
|           { | ||||
|             required: true, | ||||
|             pattern: /^\d*[.\d]\d?$/, | ||||
|             message: "请输入积分分值,最多保留一位小数", | ||||
|           }, | ||||
|         ], | ||||
|         integral: [{required: true, validator: validcode, trigger: "blur"},], | ||||
|         validRangeType: [ | ||||
|           { required: true, message: "请选择有效范围", trigger: "change" }, | ||||
|         ], | ||||
| @@ -214,19 +232,24 @@ export default { | ||||
|         defaultProps: { | ||||
|           label: "girdName", | ||||
|           value: "id", | ||||
|           children: 'children', | ||||
|           isLeaf: 'leaf' | ||||
|         }, | ||||
|         checkedKeys: [], | ||||
|       }, | ||||
|       girdInfoList: [], | ||||
|       currCheckedKeys: [], | ||||
|       rulueType: "0", | ||||
|       girdNameList: [], | ||||
|     }; | ||||
|   }, | ||||
|   created() { | ||||
|     this.$dict.load("integralRuleStatus","integralRuleRuleType","integralRuleScoringCycle","integralRuleEvent","integralRuleEventType").then(() => { | ||||
|     this.$dict.load("integralRuleStatus","integralRuleRuleType","integralRuleScoringCycle", | ||||
|     "integralRuleEvent","integralRuleEventType").then(() => { | ||||
|         this.getList(); | ||||
|         this.getRulesList(); | ||||
|         this.beforeSelectTree(); | ||||
|         // this.getList12() | ||||
|       }); | ||||
|   }, | ||||
|   methods: { | ||||
| @@ -256,16 +279,22 @@ export default { | ||||
|         validRangeType: "0", | ||||
|         validRangeData: "", | ||||
|       }; | ||||
|       if(!this.isEdit) { | ||||
|          this.girdInfoList = [] | ||||
|       } | ||||
|     }, | ||||
|     toEdit(row) { | ||||
|       this.form = {...row} | ||||
|       this.girdInfoList = this.form?.validRangeData?.split(","); | ||||
|       if(this.form?.validRangeData) { | ||||
|         this.girdInfoList = JSON.parse(this.form.validRangeData) | ||||
|         this.girdNameList = this.girdInfoList.map(e=>e.girdName) | ||||
|       } | ||||
|       this.$nextTick(() => { | ||||
|         this.dialog = true; | ||||
|       }); | ||||
|     }, | ||||
|     remove(id) { | ||||
|       this.$confirm("删除后不可恢复,是否要删除该事项?", { | ||||
|       this.$confirm("删除后不可恢复,是否要删除该规则?", { | ||||
|         type: "error", | ||||
|       }).then(() => { | ||||
|         this.instance | ||||
| @@ -299,9 +328,6 @@ export default { | ||||
|       this.getList(); | ||||
|     }, | ||||
|     onConfirm() { | ||||
|       // if(this.form.ruleType==1 && !this.form.ladderRule.length) { | ||||
|       //   return this.$message.error('请添加规则') | ||||
|       // } | ||||
|       this.$refs.DialogForm.validate((valid) => { | ||||
|         if (valid) { | ||||
|           let formData = this.$copy(this.form); | ||||
| @@ -324,6 +350,7 @@ export default { | ||||
|       }); | ||||
|     }, | ||||
|     handleTypeSearch(v) { | ||||
|       this.systemRuleIdList = v | ||||
|       this.search.systemRuleId = v?.[v.length - 1]; | ||||
|       this.search.ruleName = this.$refs.eventTypeSearch.getCheckedNodes()[0]?.label | ||||
|       this.page.current = 1; | ||||
| @@ -403,58 +430,85 @@ export default { | ||||
|       if (!this.$refs.tree.getCheckedNodes().length) { | ||||
|         return this.$message.error("请选择网格"); | ||||
|       } | ||||
|       // console.log(this.girdInfoList, this.$refs.tree.getCheckedNodes()); | ||||
|  | ||||
|       this.girdInfoList = this.$refs.tree.getCheckedNodes().map((item) => { | ||||
|         return { ...item, checkType: true }; | ||||
|       }); | ||||
|       // this.$set(this.girdInfoList, this.currIndex, { | ||||
|       //   ...this.$refs.tree.getCheckedNodes(), | ||||
|       //   checkType: true | ||||
|       // }) | ||||
|       this.form.validRangeData = this.$refs.tree | ||||
|         .getCheckedNodes() | ||||
|         .map((e) => e.id) | ||||
|         .toString(); | ||||
|  | ||||
|        | ||||
|  | ||||
|       let validRangeData = this.$refs.tree.getCheckedNodes().map((e) => { | ||||
|         return { | ||||
|           id: e.id, | ||||
|           girdName: e.girdName | ||||
|           } | ||||
|         } | ||||
|       ) | ||||
|       this.girdNameList = validRangeData.map(e=>e.girdName) | ||||
|       this.form.validRangeData = JSON.stringify(validRangeData) | ||||
|  | ||||
|       this.showGrid = false; | ||||
|     }, | ||||
|  | ||||
|     beforeSelectTree() { | ||||
|       this.treeObj.checkedKeys = []; | ||||
|       this.instance | ||||
|         .post(`/app/appgirdinfo/listAll3`, null, null) | ||||
|         .then((res) => { | ||||
|       this.instance.post(`/app/appgirdinfo/listAll3`, null, null).then((res) => { | ||||
|           if (res.code == 0) { | ||||
|             // res.data.forEach((item)=>{ | ||||
|             //   const isChecked = this.girdInfoList.find((checkedId)=>{ | ||||
|             //     return item.id === checkedId | ||||
|             //   }) | ||||
|             //   if(isChecked) item.checkType = true | ||||
|             // }) | ||||
|             // console.log(res.data) | ||||
|             let tree = this.girdToTree(res.data); | ||||
|             this.treeObj.treeList = this.addKey(tree) | ||||
|  | ||||
|             this.treeObj.treeList = this.girdToTree(res.data); | ||||
|             this.girdInfoList.map((e) => { | ||||
|               this.treeObj.checkedKeys.push(e.id); | ||||
|             }); | ||||
|              | ||||
|             this.$nextTick(() => { | ||||
|               this.currCheckedKeys = this.girdInfoList; | ||||
|               this.currCheckedKeys = this.girdInfoList.map(v=>v.id) | ||||
|               this.$nextTick(() => { | ||||
|                 this.$refs.tree?.getCheckedKeys(this.currCheckedKeys); | ||||
|                 this.$refs.tree?.setCheckedKeys(this.currCheckedKeys); | ||||
|               }); | ||||
|             }); | ||||
|           } | ||||
|         }); | ||||
|     }, | ||||
|  | ||||
|     // 最后一级追加属性 | ||||
|     addKey(arr) { | ||||
|       for (let index = 0; index < arr.length; index++) { | ||||
|         const item = arr[index] | ||||
|         if (!item.children || !item.children.length) { | ||||
|           item.leaf = true | ||||
|         } else { | ||||
|           this.addKey(item.children) | ||||
|         } | ||||
|       } | ||||
|       return arr | ||||
|     }, | ||||
|  | ||||
|     // el-tree懒加载 | ||||
|     loadNode(node, resolve) { | ||||
|       if (node.level === 0) { | ||||
|         return resolve(this.treeObj.treeList); | ||||
|       } | ||||
|       if (node.level >= 1 || node.data.children && node.data.children.length) { | ||||
|         return resolve(node.data.children) | ||||
|       } else { | ||||
|         return resolve({ | ||||
|           name: 'girdName', | ||||
|           isLeaf: true | ||||
|         }) | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     onCheckChange(e) { | ||||
|       // this.$nextTick(() => { | ||||
|       //   this.$refs.tree.getCheckedKeys().forEach(v => { | ||||
|       //     this.$refs.tree.setChecked(v, false) | ||||
|       //   }) | ||||
|       //   this.$refs.tree.setChecked(e.id, true) | ||||
|       // }) | ||||
|       // console.log(e); | ||||
|       this.$refs.tree.setChecked(e.id, true); | ||||
|       this.girdInfoList.forEach((item) => { | ||||
|         if(item.id == e.id) { | ||||
|           console.log(111); | ||||
|           this.$refs.tree.setChecked(e.id, false); | ||||
|         } else { | ||||
|           console.log(222); | ||||
|           this.$refs.tree.setChecked(e.id, true); | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|   }, | ||||
|   computed: { | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|             <span v-for="(item,index) in timeCheck" :key="index" :class="type == index? 'active':''" | ||||
|              @click="timeChange(index)">{{ item }}</span> | ||||
|           </div> | ||||
|             <el-cascader ref="cascader1" v-model="girdId" :options="girdOptions" placeholder="所属网格" size="small"  | ||||
|             <el-cascader ref="cascader1" v-model="girdArr" :options="girdOptions" placeholder="所属网格" size="small"  | ||||
|               :props="defaultProps" :show-all-levels="false" @change="gridChange" clearable></el-cascader> | ||||
|         </div> | ||||
|       </div> | ||||
| @@ -56,7 +56,7 @@ | ||||
|       <template #content> | ||||
|         <ai-search-bar> | ||||
|           <template #left> | ||||
|             <el-cascader ref="cascader2" v-model="search.girdId" :options="girdOptions" placeholder="所属网格" size="small"  | ||||
|             <el-cascader ref="cascader2" v-model="girdIdArr" :options="girdOptions" placeholder="所属网格" size="small"  | ||||
|               :props="defaultProps" :show-all-levels="false" clearable @change="gridChangeOpt"></el-cascader> | ||||
|             <ai-select v-model="search.integralType" placeholder="请选择类型" @change="current=1, getTableData()"  | ||||
|             :selectList="dict.getDict('integralType')"/> | ||||
| @@ -103,7 +103,7 @@ | ||||
|         </template> | ||||
|       </ai-detail> | ||||
|       <span slot="footer" class="dialog-footer" center> | ||||
|         <el-button @click="dialog = false">关闭</el-button> | ||||
|         <el-button @click="dialog = false" style="width: 92px">关闭</el-button> | ||||
|       </span> | ||||
|     </el-dialog> | ||||
|  | ||||
| @@ -140,6 +140,7 @@ export default { | ||||
|         startTime: '', | ||||
|         endTime: '', | ||||
|       }, | ||||
|       girdIdArr:[], | ||||
|       page: { | ||||
|         size: 10, | ||||
|         total: 0, | ||||
| @@ -156,10 +157,12 @@ export default { | ||||
|       endTime: '', | ||||
|       data: {}, | ||||
|       girdId: '', | ||||
|       girdArr: [], | ||||
|       girdOptions: [], | ||||
|       defaultProps: { | ||||
|         label: 'girdName', | ||||
|         value: 'id', | ||||
|         children: 'children', | ||||
|         checkStrictly: true, | ||||
|       }, | ||||
|       details: {}, | ||||
| @@ -247,6 +250,7 @@ export default { | ||||
|     }, | ||||
|  | ||||
|     gridChangeOpt(val) { | ||||
|       this.girdIdArr = val | ||||
|       this.search.girdId = val?.[val.length - 1] | ||||
|       this.$refs.cascader2.dropDownVisible = false; | ||||
|       this.getTableData() | ||||
| @@ -387,6 +391,7 @@ export default { | ||||
|       this.myChart2.resize() | ||||
|     }, | ||||
|     gridChange(val) { | ||||
|       this.girdArr = val | ||||
|       this.girdId = val?.[val.length - 1] | ||||
|       this.$refs.cascader1.dropDownVisible = false; | ||||
|       this.getStatistics() | ||||
|   | ||||
| @@ -103,10 +103,8 @@ export default { | ||||
|       return [ | ||||
|         {prop: 'doTime', label: '时间', width: 200}, | ||||
|         {prop: "type", label: "类型", dict: "integralDetailType", align: 'center'}, | ||||
|         { | ||||
|           prop: 'changeIntegral', align: 'center', label: '变动积分', | ||||
|           render: (h, {row}) => h('p', `${row.integralCalcType == 1 ? '+' : '-'}${row.changeIntegral}`) | ||||
|         }, | ||||
|         {prop: 'changeIntegral', align: 'center', label: '变动积分',render:  | ||||
|          (h, {row}) => h('p', `${row.integralCalcType == 1 ? '+' : '-'}${row.changeIntegral}`)}, | ||||
|         {prop: 'nowIntegral', align: 'center', label: '剩余积分'}, | ||||
|         {prop: 'eventDesc', label: '事件', width: 500} | ||||
|       ] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user