积分规则需求变更
This commit is contained in:
		| @@ -8,56 +8,64 @@ | ||||
|         <ai-search-bar bottomBorder> | ||||
|           <template slot="left"> | ||||
|             <ai-select | ||||
|               v-model="search.classification" | ||||
|               @change="search.current = 1, getList()" | ||||
|               placeholder="请选择分类" | ||||
|               :selectList="dict.getDict('atWillReportType')"> | ||||
|                 v-model="search.classification" | ||||
|                 @change="search.current = 1, getList()" | ||||
|                 placeholder="请选择分类" | ||||
|                 :selectList="dict.getDict('atWillReportType')"> | ||||
|             </ai-select> | ||||
| <!--            <ai-select--> | ||||
| <!--                v-model="search.integralType"--> | ||||
| <!--                @change="search.current = 1, getList()"--> | ||||
| <!--                placeholder="请选择类型"--> | ||||
| <!--                :selectList="dict.getDict('integralIntegralType')">--> | ||||
| <!--            </ai-select>--> | ||||
|             <ai-select | ||||
|               v-model="search.integralType" | ||||
|               @change="search.current = 1, getList()" | ||||
|               placeholder="请选择类型" | ||||
|               :selectList="dict.getDict('integralIntegralType')"> | ||||
|             </ai-select> | ||||
|             <ai-select | ||||
|               v-model="search.ruleStatus" | ||||
|               @change="search.current = 1, getList()" | ||||
|               placeholder="请选择状态" | ||||
|               :selectList="dict.getDict('integralRuleStatus')"> | ||||
|                 v-model="search.ruleStatus" | ||||
|                 @change="search.current = 1, getList()" | ||||
|                 placeholder="请选择状态" | ||||
|                 :selectList="dict.getDict('integralRuleStatus')"> | ||||
|             </ai-select> | ||||
|           </template> | ||||
|           <template slot="right"> | ||||
|           </template> | ||||
|         </ai-search-bar> | ||||
|         <ai-search-bar style="margin-top: 16px;"> | ||||
|           <template #left> | ||||
|             <el-button type="primary" icon="iconfont iconAdd" @click="addRule">添加</el-button> | ||||
|           </template> | ||||
|         </ai-search-bar> | ||||
| <!--        <ai-search-bar style="margin-top: 16px;">--> | ||||
| <!--          <template #left>--> | ||||
| <!--            <el-button type="primary" icon="iconfont iconAdd" @click="addRule">添加</el-button>--> | ||||
| <!--          </template>--> | ||||
| <!--        </ai-search-bar>--> | ||||
|         <ai-table | ||||
|           :tableData="tableData" | ||||
|           :col-configs="colConfigs" | ||||
|           :total="total" | ||||
|           ref="aitableex" | ||||
|           :current.sync="search.current" | ||||
|           :size.sync="search.size" | ||||
|           @getList="getList"> | ||||
|         <el-table-column slot="integral" label="分值" align="center"> | ||||
|           <template slot-scope="{ row }"> | ||||
|             :tableData="tableData" | ||||
|             :col-configs="colConfigs" | ||||
|             :total="total" | ||||
|             ref="aitableex" | ||||
|             :current.sync="search.current" | ||||
|             :size.sync="search.size" | ||||
|             @getList="getList"> | ||||
|           <el-table-column slot="integral" label="分值" align="center"> | ||||
|             <template slot-scope="{ row }"> | ||||
|             <span | ||||
|               v-if="row.integralValueType == 1"> | ||||
|               {{ row.integralStart > 0 ? '+' + row.integralStart : row.integralStart }} ~ {{ row.integralEnd > 0 ? '+' + row.integralEnd : row.integralEnd }} | ||||
|                 v-if="row.integralValueType == 1"> | ||||
|               {{ | ||||
|                 row.integralStart > 0 ? '+' + row.integralStart : row.integralStart | ||||
|               }} ~ {{ row.integralEnd > 0 ? '+' + row.integralEnd : row.integralEnd }} | ||||
|             </span> | ||||
|             <span v-else>{{ row.integral > 0 ? '+' : '' }}{{ row.integral }}</span> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|               <span v-else>{{ row.integral > 0 ? '+' : '' }}{{ row.integral }}</span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column slot="options" label="操作" align="center" fixed="right" width="200"> | ||||
|             <template slot-scope="{ row }"> | ||||
|               <div class="table-options"> | ||||
|                 <el-button type="text" :disabled="!$permissions('app_appvillagerintegralrule_edit')" @click="changeStatus(row.id, 0)" v-if="row.ruleStatus == 1">停用</el-button> | ||||
|                 <el-button type="text" :disabled="!$permissions('app_appvillagerintegralrule_edit')" @click="changeStatus(row.id, 1)" v-else >启用</el-button> | ||||
|                 <el-button type="text" :disabled="!$permissions('app_appvillagerintegralrule_edit')" @click="toEdit(row)">编辑</el-button> | ||||
|                 <el-button type="text" :disabled="!$permissions('app_appvillagerintegralrule_del')" @click="remove(row.id)">删除</el-button> | ||||
|                 <el-button type="text" :disabled="!$permissions('app_appvillagerintegralrule_edit')" | ||||
|                            @click="changeStatus(row.id, 0)" v-if="row.ruleStatus == 1">停用 | ||||
|                 </el-button> | ||||
|                 <el-button type="text" :disabled="!$permissions('app_appvillagerintegralrule_edit')" | ||||
|                            @click="changeStatus(row.id, 1)" v-else>启用 | ||||
|                 </el-button> | ||||
|                 <el-button type="text" :disabled="!$permissions('app_appvillagerintegralrule_edit')" | ||||
|                            @click="toEdit(row)">编辑 | ||||
|                 </el-button> | ||||
|                 <!--                <el-button type="text" :disabled="!$permissions('app_appvillagerintegralrule_del')" @click="remove(row.id)">删除</el-button>--> | ||||
|               </div> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
| @@ -66,72 +74,54 @@ | ||||
|     </ai-list> | ||||
|  | ||||
|     <ai-dialog | ||||
|       :title="dialog.title" | ||||
|       :visible.sync="dialog.visible" | ||||
|       :customFooter="true" | ||||
|       :destroyOnClose="true" | ||||
|       @close="init('ruleForm')" | ||||
|       width="520px"> | ||||
|         :title="dialog.title" | ||||
|         :visible.sync="dialog.visible" | ||||
|         :customFooter="true" | ||||
|         :destroyOnClose="true" | ||||
|         @close="init('ruleForm')" | ||||
|         width="520px"> | ||||
|       <div class="form_div"> | ||||
|         <el-form | ||||
|           ref="ruleForm" | ||||
|           :model="dialogInfo" | ||||
|           :rules="formRules" | ||||
|           size="small" | ||||
|           label-suffix=":" | ||||
|           label-width="100px"> | ||||
|             ref="ruleForm" | ||||
|             :model="dialogInfo" | ||||
|             :rules="formRules" | ||||
|             size="small" | ||||
|             label-suffix=":" | ||||
|             label-width="120px"> | ||||
|           <el-form-item label="类别" prop="classification"> | ||||
|             <ai-select | ||||
|               size="small" | ||||
|               v-model="dialogInfo.classification" | ||||
|               placeholder="请选择..." | ||||
|               :selectList="dict.getDict('atWillReportType')"> | ||||
|             </ai-select> | ||||
|             <ai-select v-model="dialogInfo.classification" :selectList="dict.getDict('atWillReportType')" | ||||
|                        :disabled="!!dialogInfo.id"/> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="事项" prop="ruleName"> | ||||
|             <el-input placeholder="请输入…" v-model="dialogInfo.ruleName"></el-input> | ||||
|           <el-form-item label="获得积分" prop="integral"> | ||||
|             <el-input placeholder="请输入自然数" v-model.number="dialogInfo.integral" clearable/> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="规则说明" prop="ruleDescription"> | ||||
|             <el-input | ||||
|               type="textarea" | ||||
|               :rows="3" | ||||
|               maxlength="500" | ||||
|               show-word-limit | ||||
|               placeholder="请输入…" | ||||
|               v-model="dialogInfo.ruleDescription"> | ||||
|             </el-input> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="类型" prop="integralType"> | ||||
|             <el-radio-group v-model="dialogInfo.integralType"> | ||||
|               <el-radio label="1">加分</el-radio> | ||||
|               <el-radio label="0">扣分</el-radio> | ||||
|             </el-radio-group> | ||||
|           </el-form-item> | ||||
|           <!-- <el-form-item label="分值" prop="integralValueType"> | ||||
|             <el-radio-group v-model="dialogInfo.integralValueType" @change="numTypeChange"> | ||||
|               <el-radio label="0">固定分值</el-radio> | ||||
|               <el-radio label="1">区间分值</el-radio> | ||||
|             </el-radio-group> | ||||
|           </el-form-item> --> | ||||
|           <!-- <el-form-item label="积分" required v-if="dialogInfo.integralValueType == '1'"> | ||||
|             <el-col :span="7" style="width: 30%;"> | ||||
|               <el-form-item prop="integralStart"> | ||||
|                 <el-input placeholder="请输入整数" v-model="dialogInfo.integralStart"></el-input> | ||||
|               </el-form-item> | ||||
|             </el-col> | ||||
|             <el-col class="line" :span="1" style="width: 4%;text-align:center;">-</el-col> | ||||
|             <el-col :span="7" style="width: 30%;"> | ||||
|               <el-form-item prop="integralEnd"> | ||||
|                 <el-input placeholder="请输入整数" v-model="dialogInfo.integralEnd"></el-input> | ||||
|               </el-form-item> | ||||
|             </el-col> | ||||
|             <el-col class="line" :span="9" style="width: 36%;"></el-col> | ||||
|           </el-form-item> --> | ||||
|           <el-form-item label="积分" required v-if="dialogInfo.integralValueType == '0'"> | ||||
|             <el-form-item prop="integral"> | ||||
|               <el-input placeholder="请输入自然数" v-model="dialogInfo.integral"></el-input> | ||||
|             </el-form-item> | ||||
|           <el-form-item label="每天获取次数" prop="upperLimit"> | ||||
|             <el-input placeholder="请输入自然数" v-model.number="dialogInfo.upperLimit" clearable/> | ||||
|           </el-form-item> | ||||
|           <!--          <el-form-item label="事项" prop="ruleName">--> | ||||
|           <!--            <el-input placeholder="请输入…" v-model="dialogInfo.ruleName"></el-input>--> | ||||
|           <!--          </el-form-item>--> | ||||
|           <!--          <el-form-item label="规则说明" prop="ruleDescription">--> | ||||
|           <!--            <el-input--> | ||||
|           <!--              type="textarea"--> | ||||
|           <!--              :rows="3"--> | ||||
|           <!--              maxlength="500"--> | ||||
|           <!--              show-word-limit--> | ||||
|           <!--              placeholder="请输入…"--> | ||||
|           <!--              v-model="dialogInfo.ruleDescription">--> | ||||
|           <!--            </el-input>--> | ||||
|           <!--          </el-form-item>--> | ||||
|           <!--          <el-form-item label="类型" prop="integralType">--> | ||||
|           <!--            <el-radio-group v-model="dialogInfo.integralType">--> | ||||
|           <!--              <el-radio label="1">加分</el-radio>--> | ||||
|           <!--              <el-radio label="0">扣分</el-radio>--> | ||||
|           <!--            </el-radio-group>--> | ||||
|           <!--          </el-form-item>--> | ||||
|           <!--          <el-form-item label="积分" required v-if="dialogInfo.integralValueType == '0'">--> | ||||
|           <!--            <el-form-item prop="integral">--> | ||||
|           <!--              <el-input placeholder="请输入自然数" v-model="dialogInfo.integral"></el-input>--> | ||||
|           <!--            </el-form-item>--> | ||||
|           <!--          </el-form-item>--> | ||||
|         </el-form> | ||||
|       </div> | ||||
|       <div class="dialog-footer" slot="footer"> | ||||
| @@ -152,7 +142,7 @@ export default { | ||||
|   }, | ||||
|  | ||||
|   data() { | ||||
|     var integralPass = (rule, value, callback) => { | ||||
|     let integralPass = (rule, value, callback) => { | ||||
|       if (value) { | ||||
|         if ((/(^[0-9]\d*$)/.test(value))) { | ||||
|           callback(); | ||||
| @@ -163,7 +153,7 @@ export default { | ||||
|         callback(new Error("请输入积分")); | ||||
|       } | ||||
|     }; | ||||
|     var integralStartPass = (rule, value, callback) => { | ||||
|     const integralStartPass = (rule, value, callback) => { | ||||
|       if (value) { | ||||
|         if ((/(^[1-9]\d*$)/.test(value))) { | ||||
|           callback(); | ||||
| @@ -174,7 +164,7 @@ export default { | ||||
|         callback(new Error("请输入积分")); | ||||
|       } | ||||
|     }; | ||||
|     var integralEndPass = (rule, value, callback) => { | ||||
|     const integralEndPass = (rule, value, callback) => { | ||||
|       if (value) { | ||||
|         if ((/(^[1-9]\d*$)/.test(value))) { | ||||
|           if (Number(value) < Number(this.dialogInfo.integralStart)) { | ||||
| @@ -204,18 +194,9 @@ export default { | ||||
|           formart: (classification) => | ||||
|               this.dict.getLabel("atWillReportType", classification), | ||||
|         }, | ||||
|         {prop: "ruleName", label: "事项", "show-overflow-tooltip": true, width: 260}, | ||||
|         {prop: "ruleDescription", label: "规则说明", width: 390}, | ||||
|         { | ||||
|           prop: "integralType", | ||||
|           label: "类型", | ||||
|           width: 60, | ||||
|           formart: (integralType) => | ||||
|               this.dict.getLabel("integralIntegralType", integralType), | ||||
|         }, | ||||
|         {prop: "upperLimit", label: "每天获取次数",align: 'center'}, | ||||
|         {slot: "integral", label: "分值", width: 70}, | ||||
|         {prop: "doTime", label: "最后编辑时间", width: 160}, | ||||
|         {prop: "doUserName", label: "操作人", width: 120}, | ||||
|         { | ||||
|           prop: "ruleStatus", | ||||
|           label: "状态", | ||||
| @@ -232,10 +213,11 @@ export default { | ||||
|             ); | ||||
|           }, | ||||
|         }, | ||||
|         {prop: "doTime", label: "最后编辑时间", width: 160}, | ||||
|         {prop: "doUserName", label: "操作人", width: 120}, | ||||
|         {slot: "options", label: "操作", align: "center"}, | ||||
|       ], | ||||
|       tableData: [], | ||||
|  | ||||
|       dialog: { | ||||
|         title: "", | ||||
|         visible: false, | ||||
| @@ -271,6 +253,9 @@ export default { | ||||
|         integral: [ | ||||
|           {required: true, validator: integralPass, trigger: "change"}, | ||||
|         ], | ||||
|         upperLimit: [ | ||||
|           {required: true, message: "请输入每天获取次数"}, | ||||
|         ], | ||||
|         integralStart: [ | ||||
|           {required: true, validator: integralStartPass, trigger: "change"}, | ||||
|         ], | ||||
| @@ -302,7 +287,6 @@ export default { | ||||
|         } | ||||
|       }); | ||||
|     }, | ||||
|  | ||||
|     toEdit(row) { | ||||
|       this.dialog.title = "编辑积分规则"; | ||||
|       this.dialog.visible = true; | ||||
| @@ -311,24 +295,20 @@ export default { | ||||
|       this.dialogInfo.integralEnd = Math.abs(this.dialogInfo.integralEnd) | ||||
|       this.dialogInfo.integral = Math.abs(this.dialogInfo.integral) | ||||
|     }, | ||||
|  | ||||
|     remove(id) { | ||||
|       this.$confirm("删除后不可恢复,是否要删除该事项?", { | ||||
|         type: 'error' | ||||
|       }).then(() => { | ||||
|         this.instance | ||||
|         .post(`/app/appvillagerintegralrule/delete?ids=${id}`) | ||||
|         .then((res) => { | ||||
|           if (res.code == 0) { | ||||
|         this.instance.post(`/app/appvillagerintegralrule/delete?ids=${id}`).then(res => { | ||||
|           if (res?.code == 0) { | ||||
|             this.$message.success("删除成功!"); | ||||
|             this.getList(); | ||||
|           } | ||||
|         }); | ||||
|       }); | ||||
|     }, | ||||
|  | ||||
|     changeStatus(id, status) { | ||||
|       var text = status == 1 ? '启用' : '停用' | ||||
|       const text = status == 1 ? '启用' : '停用'; | ||||
|       this.$confirm(`确定${text}该条规则?`).then(() => { | ||||
|         this.instance | ||||
|         .post(`/app/appvillagerintegralrule/enableOrDisable?id=${id}`) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user