Kaynağa Gözat

chore: 奖惩规则

cfofpp 5 ay önce
ebeveyn
işleme
be10345565

+ 84 - 0
src/api/powerdistribution/maintenance.js

@@ -59,3 +59,87 @@ export function selectBranchLineCompleteList(params) {
     params,
   });
 }
+
+// 新增时户数考核规则分级
+export function addExamineRoleTarget(data) {
+  return request({
+    url: "/power/examineRoleTarget",
+    method: "post",
+    data: data,
+  });
+}
+
+// 获取时户数考核规则分级详细信息
+export function examineRoleTarget(id) {
+  return request({
+    url: `/power/examineRoleTarget/${id}`,
+    method: "get",
+  });
+}
+
+//删除时户数考核规则分级
+export function dleExamineRoleTarget(ids) {
+  return request({
+    url: `/power/examineRoleTarget/delete/${ids}`,
+    method: "get",
+  });
+}
+//查询时户数考核规则分级列表
+export function examineRoleTargetList(params) {
+  return request({
+    url: `/power/examineRoleTarget/list`,
+    method: "get",
+    params,
+  });
+}
+
+// 修改时户数考核规则分级
+export function updateExamineRoleTarget(data) {
+  return request({
+    url: "/power/examineRoleTarget/update",
+    method: "post",
+    data: data,
+  });
+}
+
+//新增时户数考核规则明细
+export function addExamineRoleDetail(data) {
+  return request({
+    url: "/power/examineRoleDetail/add",
+    method: "post",
+    data: data,
+  });
+}
+
+// 获取时户数考核规则明细详细信息
+export function dxamineRoleDetail(id) {
+  return request({
+    url: `/power/examineRoleDetail/${id}`,
+    method: "get",
+  });
+}
+
+//删除时户数考核规则分级
+export function dleExamineRoleDetail(ids) {
+  return request({
+    url: `/power/examineRoleDetail/delete/${ids}`,
+    method: "get",
+  });
+}
+//查询时户数考核规则分级列表
+export function examineRoleDetailList(params) {
+  return request({
+    url: `/power/examineRoleDetail/list`,
+    method: "get",
+    params,
+  });
+}
+
+// 修改时户数考核规则分级
+export function updateExamineRoleDetail(data) {
+  return request({
+    url: "/power/examineRoleDetail/update",
+    method: "post",
+    data: data,
+  });
+}

+ 28 - 35
src/views/distributionnetwork/power-outage-control/rules/components/UpdateModel.vue

@@ -7,26 +7,24 @@
     append-to-body
   >
     <div class="demo-drawer__content" style="padding: 0 20px">
-      <el-form :model="form" :rules="rules" ref="form" label-width="80px">
+      <el-form :model="form" :rules="rules" ref="form" label-width="100px">
         <el-row :gutter="30">
           <el-col :span="24">
-            <el-form-item label="编码名称" prop="roleName">
-              <el-input v-model="form.roleName" placeholder="请输入"></el-input>
+            <el-form-item label="最大时户数" prop="maxNum">
+              <el-input
+                type="number"
+                v-model="form.maxNum"
+                placeholder="请输入"
+              ></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="编码值" prop="roleCode">
-              <el-input v-model="form.roleCode" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="描述" prop="roleDes">
-              <el-input v-model="form.roleDes" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="备注" prop="remark">
-              <el-input v-model="form.remark" placeholder="请输入"></el-input>
+            <el-form-item label="最小时户数" prop="minNum">
+              <el-input
+                type="number"
+                v-model="form.minNum"
+                placeholder="请输入"
+              ></el-input>
             </el-form-item>
           </el-col>
         </el-row>
@@ -43,10 +41,10 @@
 
 <script>
 import {
-  getRiskRoleInfo,
-  updateRiskRole,
-  addRiskRole,
-} from "@/api/secure/pdm-risk-role";
+  addExamineRoleTarget,
+  updateExamineRoleTarget,
+  examineRoleTarget,
+} from "@/api/powerdistribution/maintenance";
 export default {
   data() {
     return {
@@ -54,20 +52,17 @@ export default {
       visible: false,
       title: "",
       form: {
-        roleName: "",
-        roleCode: "",
-        roleDes: "",
-        remark: "",
+        maxNum: "",
+        minNum: "",
       },
       // 表单校验
       rules: {
-        roleName: [
-          { required: true, message: "编码名称不能为空", trigger: "blur" },
+        maxNum: [
+          { required: true, message: "最大时户数不能为空", trigger: "blur" },
         ],
-        roleCode: [
-          { required: true, message: "编码值不能为空", trigger: "blur" },
+        minNum: [
+          { required: true, message: "最小时户数不能为空", trigger: "blur" },
         ],
-        roleDes: [{ required: true, message: "描述不能为空", trigger: "blur" }],
       },
       loading: false,
     };
@@ -78,7 +73,7 @@ export default {
       this.title = title;
       if (data && data.id) {
         this.title = "编辑";
-        const { data: _data } = await getRiskRoleInfo(data.id);
+        const { data: _data } = await examineRoleTarget(data.id);
         this.form = { ..._data };
       } else {
         this.title = "新增";
@@ -93,8 +88,8 @@ export default {
         if (!v) return;
         this.loading = true;
         const funMap = {
-          编辑: updateRiskRole,
-          新增: addRiskRole,
+          编辑: updateExamineRoleTarget,
+          新增: addExamineRoleTarget,
         };
         funMap[this.title](this.form).then((response) => {
           this.$modal.msgSuccess("操作成功");
@@ -109,10 +104,8 @@ export default {
       this.loading = false;
       this.visible = false;
       this.form = {
-        roleName: "",
-        roleCode: "",
-        roleDes: "",
-        remark: "",
+        maxNum: "",
+        minNum: "",
       };
       this.resetForm("form");
     },

+ 229 - 0
src/views/distributionnetwork/power-outage-control/rules/components/UpdateModelDetail.vue

@@ -0,0 +1,229 @@
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="visible"
+    @close="cancelForm"
+    width="500px"
+    append-to-body
+  >
+    <div class="demo-drawer__content" style="padding: 0 20px">
+      <el-form :model="form" :rules="rules" ref="form" label-width="110px">
+        <el-row :gutter="30">
+          <el-col :span="24">
+            <el-form-item label="最大时户数" prop="maxNum">
+              <el-input
+                type="number"
+                v-model="form.maxNum"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="最小时户数" prop="minNum">
+              <el-input
+                type="number"
+                v-model="form.minNum"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="党政一把手" prop="manageAmt">
+              <el-input
+                type="number"
+                v-model="form.manageAmt"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="分管副经理" prop="manageAssistantAmt">
+              <el-input
+                type="number"
+                v-model="form.manageAssistantAmt"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="部室主任" prop="deptDirectorAmt">
+              <el-input
+                type="number"
+                v-model="form.deptDirectorAmt"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="部室分管主任" prop="deptDirectorAssistantAmt">
+              <el-input
+                type="number"
+                v-model="form.deptDirectorAssistantAmt"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="部室责任专责" prop="deptManageAmt">
+              <el-input
+                type="number"
+                v-model="form.deptManageAmt"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="总负责人" prop="principAmt">
+              <el-input
+                type="number"
+                v-model="form.principAmt"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="工作负责人" prop="workPrincipAmt">
+              <el-input
+                type="number"
+                v-model="form.workPrincipAmt"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="设备主人" prop="ownerAmt">
+              <el-input
+                type="number"
+                v-model="form.ownerAmt"
+                placeholder="请输入"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div class="demo-drawer__footer" style="text-align: right">
+        <el-button @click="cancelForm">取 消 </el-button>
+        <el-button type="primary" @click="handleSubmit" :loading="loading">{{
+          loading ? "提交中 ..." : "确 定"
+        }}</el-button>
+      </div>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import {
+  addExamineRoleDetail,
+  updateExamineRoleDetail,
+  dxamineRoleDetail,
+} from "@/api/powerdistribution/maintenance";
+export default {
+  data() {
+    return {
+      // 遮罩层
+      visible: false,
+      title: "",
+      form: {
+        maxNum: "",
+        minNum: "",
+        targetId: "",
+        manageAmt: "",
+        manageAssistantAmt: "",
+        deptDirectorAmt: "",
+        deptDirectorAssistantAmt: "",
+        deptManageAmt: "",
+        principAmt: "",
+        workPrincipAmt: "",
+        ownerAmt: "",
+      },
+      // 表单校验
+      rules: {
+        maxNum: [
+          { required: true, message: "最大时户数不能为空", trigger: "blur" },
+        ],
+        minNum: [
+          { required: true, message: "最小时户数不能为空", trigger: "blur" },
+        ],
+        manageAmt: [
+          { required: true, message: "党政一把手不能为空", trigger: "blur" },
+        ],
+        manageAssistantAmt: [
+          { required: true, message: "分管副经理不能为空", trigger: "blur" },
+        ],
+        deptDirectorAmt: [
+          { required: true, message: "部室主任不能为空", trigger: "blur" },
+        ],
+        deptDirectorAssistantAmt: [
+          { required: true, message: "部室分管主任不能为空", trigger: "blur" },
+        ],
+        deptManageAmt: [
+          { required: true, message: "部室责任专责不能为空", trigger: "blur" },
+        ],
+        principAmt: [
+          { required: true, message: "总负责人不能为空", trigger: "blur" },
+        ],
+        workPrincipAmt: [
+          { required: true, message: "工作负责人不能为空", trigger: "blur" },
+        ],
+        ownerAmt: [
+          { required: true, message: "设备主人不能为空", trigger: "blur" },
+        ],
+      },
+      loading: false,
+    };
+  },
+  methods: {
+    // 显示弹框
+    async openModel(data, title) {
+      this.title = title;
+      if (data && data.id) {
+        this.title = "编辑";
+        const { data: _data } = await dxamineRoleDetail(data.id);
+        this.form = { ..._data };
+      } else {
+        this.form.targetId = data.targetId;
+        this.title = "新增";
+      }
+      this.visible = true;
+    },
+    handleSubmit() {
+      if (this.loading) {
+        return;
+      }
+      this.$refs.form.validate((v) => {
+        if (!v) return;
+        this.loading = true;
+        const funMap = {
+          编辑: updateExamineRoleDetail,
+          新增: addExamineRoleDetail,
+        };
+        funMap[this.title](this.form).then((response) => {
+          this.$modal.msgSuccess("操作成功");
+          this.loading = false;
+          this.visible = false;
+          this.resetForm("form");
+          this.$emit("refresh");
+        });
+      });
+    },
+    cancelForm() {
+      this.loading = false;
+      this.visible = false;
+      this.form = {
+        maxNum: "",
+        minNum: "",
+        targetId: "",
+        manageAmt: "",
+        manageAssistantAmt: "",
+        deptDirectorAmt: "",
+        deptDirectorAssistantAmt: "",
+        deptManageAmt: "",
+        principAmt: "",
+        workPrincipAmt: "",
+        ownerAmt: "",
+      };
+      this.resetForm("form");
+    },
+  },
+};
+</script>

+ 254 - 80
src/views/distributionnetwork/power-outage-control/rules/index.vue

@@ -1,7 +1,7 @@
 <template>
   <!-- 奖惩规则配置 -->
   <div class="app-container">
-    <el-form
+    <!-- <el-form
       ref="queryForm"
       :model="queryParams"
       size="small"
@@ -26,8 +26,8 @@
           >重置</el-button
         >
       </el-form-item>
-    </el-form>
-    <el-row :gutter="10" class="mb8">
+    </el-form> -->
+    <el-row :gutter="10" class="mb8" v-if="false">
       <el-col :span="1.5">
         <el-button
           type="primary"
@@ -38,6 +38,15 @@
           >新增</el-button
         >
         <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          :disabled="dataList.length == 0"
+          @click="handleAddDetail"
+          >新增明细</el-button
+        >
+        <el-button
           type="danger"
           plain
           icon="el-icon-delete"
@@ -52,84 +61,217 @@
         @queryTable="getList"
       ></right-toolbar>
     </el-row>
-    <div class="table">
-      <el-table
-        ref="renewalTable"
-        v-loading="loading"
-        :data="dataList"
-        @selection-change="handleSelectionChange"
-        row-key="id"
-      >
-        <el-table-column type="selection" width="55" align="center" />
-        <el-table-column prop="date" label="序号" width="80" align="center">
-          <template slot-scope="scope">{{ scope.$index + 1 }}</template>
-        </el-table-column>
-        <el-table-column
-          label="编码名称"
-          align="center"
-          prop="roleName"
-          :show-overflow-tooltip="true"
-        />
-        <el-table-column
-          label="编码值"
-          align="center"
-          prop="roleCode"
-          :show-overflow-tooltip="true"
-        />
-        <el-table-column
-          label="描述"
-          prop="roleDes"
-          align="center"
-          :show-overflow-tooltip="true"
-        >
-        </el-table-column>
-        <el-table-column
-          label="备注"
-          prop="remark"
-          align="center"
-          :show-overflow-tooltip="true"
-        >
-        </el-table-column>
-        <el-table-column
-          label="操作"
-          align="center"
-          class-name="small-padding fixed-width"
-        >
-          <template slot-scope="scope">
+    <el-row :gutter="10">
+      <el-col :span="8">
+        <el-card>
+          <div slot="header" class="clearfix">
+            <span>时户数考核规则分级</span>
             <el-button
-              size="mini"
+              style="float: right; padding: 3px 0"
               type="text"
-              icon="el-icon-edit"
-              @click="handleUpdate(scope.row)"
-              >修改</el-button
+              icon="el-icon-plus"
+              @click="handleAdd"
+              >新增
+            </el-button>
+          </div>
+          <div class="table">
+            <el-table
+              ref="renewalTable"
+              v-loading="loading"
+              :data="dataList"
+              row-key="id"
+              @current-change="handleCurrentChange"
+              highlight-current-row
             >
+              <el-table-column width="25">
+                <template slot-scope="scope">
+                  <el-radio
+                    class="radio"
+                    :label="scope.row"
+                    v-model="currentRow"
+                    >{{ "" }}</el-radio
+                  >
+                </template>
+              </el-table-column>
+              <!-- <el-table-column type="selection" width="55" align="center" /> -->
+              <el-table-column
+                prop="date"
+                label="序号"
+                width="70"
+                align="center"
+              >
+                <template slot-scope="scope">{{ scope.$index + 1 }}</template>
+              </el-table-column>
+              <el-table-column
+                label="目标时户数规则"
+                align="center"
+                prop="targetName"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column
+                label="最小时户数"
+                align="center"
+                prop="minNum"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column
+                label="最大时户数"
+                prop="maxNum"
+                align="center"
+                :show-overflow-tooltip="true"
+              >
+              </el-table-column>
+              <el-table-column
+                label="操作"
+                align="center"
+                class-name="small-padding fixed-width"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-edit"
+                    @click.stop="handleUpdate(scope.row)"
+                    >修改</el-button
+                  >
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click.stop="handleDelete(scope.row)"
+                    >删除</el-button
+                  >
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+        </el-card>
+      </el-col>
+      <el-col :span="16">
+        <el-card header="时户数考核规则明细">
+          <div slot="header" class="clearfix">
+            <span>时户数考核规则明细</span>
             <el-button
-              size="mini"
+              style="float: right; padding: 3px 0"
               type="text"
-              icon="el-icon-delete"
-              @click="handleDelete(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        v-show="total > 0"
-        :total="total"
-        :page.sync="queryParams.pageNum"
-        :limit.sync="queryParams.pageSize"
-        @pagination="getList"
-      />
-    </div>
-    <RiskRoleModel ref="riskRoleModelRef" @refresh="getList()"></RiskRoleModel>
+              icon="el-icon-plus"
+              :disabled="dataList.length == 0"
+              @click="handleAddDetail"
+              >新增
+            </el-button>
+          </div>
+          <div class="table">
+            <el-table :data="childrenList" v-loading="childrenLoading">
+              <el-table-column label="序号" width="70" align="center">
+                <template slot-scope="scope">
+                  {{ scope.$index + 1 }}
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="完成时户数规则"
+                align="center"
+                prop="detailName"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column label="考核金额" align="center">
+                <el-table-column
+                  label="党政一把手"
+                  prop="manageAmt"
+                  align="center"
+                  :show-overflow-tooltip="true"
+                >
+                </el-table-column>
+                <el-table-column
+                  label="分管副经理"
+                  prop="manageAssistantAmt"
+                  align="center"
+                  :show-overflow-tooltip="true"
+                >
+                </el-table-column>
+                <el-table-column
+                  label="部室主任"
+                  prop="deptDirectorAmt"
+                  align="center"
+                  :show-overflow-tooltip="true"
+                />
+                <el-table-column
+                  label="部室分管主任"
+                  prop="deptDirectorAssistantAmt"
+                  align="center"
+                  :show-overflow-tooltip="true"
+                >
+                </el-table-column>
+                <el-table-column
+                  label="部室责任专责"
+                  prop="deptManageAmt"
+                  align="center"
+                  :show-overflow-tooltip="true"
+                />
+                <el-table-column
+                  label="总负责人"
+                  prop="principAmt"
+                  align="center"
+                  :show-overflow-tooltip="true"
+                />
+                <el-table-column
+                  label="工作负责人"
+                  prop="workPrincipAmt"
+                  align="center"
+                />
+                <el-table-column
+                  label="设备主人"
+                  prop="ownerAmt"
+                  align="center"
+                  :show-overflow-tooltip="true"
+                >
+                </el-table-column>
+              </el-table-column>
+              <el-table-column
+                label="操作"
+                align="center"
+                class-name="small-padding fixed-width"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-edit"
+                    @click="handleUpdateDetail(scope.row)"
+                    >修改</el-button
+                  >
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="handleDeleteDetail(scope.row)"
+                    >删除</el-button
+                  >
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+        </el-card>
+      </el-col>
+    </el-row>
+    <UpdateModel ref="addModelRef" @refresh="getList()"></UpdateModel>
+    <UpdateModelDetail
+      ref="addModelDetailRef"
+      @refresh="handleCurrentChange(currentRow)"
+    ></UpdateModelDetail>
   </div>
 </template>
 
 <script>
-import { getRiskRolePage, delRiskRole } from "@/api/secure/pdm-risk-role";
 import UpdateModel from "./components/UpdateModel";
+import UpdateModelDetail from "./components/UpdateModelDetail";
+import {
+  examineRoleTargetList,
+  dleExamineRoleTarget,
+  examineRoleDetailList,
+  dleExamineRoleDetail,
+} from "@/api/powerdistribution/maintenance";
 export default {
-  components: { UpdateModel },
+  components: { UpdateModel, UpdateModelDetail },
   data() {
     return {
       dataList: [],
@@ -146,12 +288,24 @@ export default {
       },
       // 选中数组
       selectedRows: [],
+      childrenList: [],
+      childrenLoading: true,
+      currentRow: null,
     };
   },
   created() {
     this.getList();
   },
   methods: {
+    async handleCurrentChange(row) {
+      this.currentRow = row;
+      this.childrenLoading = true;
+      const data = await examineRoleDetailList({
+        targetId: row.id,
+      });
+      this.childrenList = data.rows;
+      this.childrenLoading = false;
+    },
     // 多选框选中数据
     handleSelectionChange(selectedRows) {
       // 记录选择的行
@@ -159,19 +313,36 @@ export default {
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
-      this.$refs.riskRoleModelRef.openModel({ ...row });
+      this.$refs.addModelRef.openModel({ ...row });
     },
     /** 新增按钮操作 */
     handleAdd() {
-      this.$refs.riskRoleModelRef.openModel({});
+      this.$refs.addModelRef.openModel({});
+    },
+    handleAddDetail() {
+      this.$refs.addModelDetailRef.openModel({ targetId: this.currentRow.id });
+    },
+    handleUpdateDetail(row) {
+      this.$refs.addModelDetailRef.openModel({ ...row });
+    },
+    handleDeleteDetail(row) {
+      this.$modal
+        .confirm("是否确认删除该数据项?")
+        .then(function () {
+          return dleExamineRoleDetail(row.id);
+        })
+        .then(() => {
+          this.handleCurrentChange(this.currentRow);
+          this.$modal.msgSuccess("删除成功");
+        });
     },
     /** 删除按钮操作 */
     handleDelete(row) {
       const roleIds = row.id || this.selectedRows.map((ite) => ite.id);
       this.$modal
-        .confirm('是否确认删除角色编号为"' + roleIds + '"的数据项?')
+        .confirm('是否确认删除编号为"' + roleIds + '"的数据项?')
         .then(function () {
-          return delRiskRole(roleIds);
+          return dleExamineRoleTarget(roleIds);
         })
         .then(() => {
           this.getList();
@@ -184,13 +355,16 @@ export default {
     /** 查询列表 */
     getList() {
       this.loading = true;
-      getRiskRolePage({ ...this.queryParams, riskFlag: "1" }).then(
-        (response) => {
-          this.dataList = response.rows;
-          this.total = response.total;
-          this.loading = false;
+      examineRoleTargetList({ ...this.queryParams }).then((response) => {
+        this.dataList = response.rows;
+        if (this.dataList.length) {
+          this.handleCurrentChange(
+            this.dataList.length ? this.dataList[0] : null
+          );
         }
-      );
+        this.total = response.total;
+        this.loading = false;
+      });
     },
     /** 搜索按钮操作 */
     handleQuery() {