From db905ecd14f63dba9337b4f4715584ef2d7e8c7e Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 07 三月 2025 14:45:00 +0800
Subject: [PATCH] 修改

---
 src/views/specialOperationsPay/notCoalPay/index.vue |  277 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 185 insertions(+), 92 deletions(-)

diff --git a/src/views/specialOperationsPay/notCoalPay/index.vue b/src/views/specialOperationsPay/notCoalPay/index.vue
index 5500d37..6949c22 100644
--- a/src/views/specialOperationsPay/notCoalPay/index.vue
+++ b/src/views/specialOperationsPay/notCoalPay/index.vue
@@ -2,13 +2,13 @@
   <div class="app-container">
     <div>
       <el-button
-        size="medium"
-        style="margin-bottom: 10px;background-color: #0FC7F0;color: white"
+        style="margin-right: 10px;background-color: #0FC7F0;color: white"
         @click="handleAdd('add',{})"
-      >录入批次</el-button>
+        v-if="isAhthority"
+      >录入批次
+      </el-button>
       <el-date-picker
-        style="margin-left: 30px;width: 300px"
-        size="small"
+        style="width: 300px"
         v-model="dateValue"
         @change="changeDate"
         type="daterange"
@@ -18,49 +18,66 @@
         start-placeholder="开始日期"
         end-placeholder="结束日期">
       </el-date-picker>
-      <el-select v-model="queryParams.institutionId"  size="small" style="margin-left: 15px;" placeholder="请选择行政区划">
-        <el-option
-          v-for="item in districtList"
-          :key="item.id"
-          :label="item.institutionalName"
-          :value="item.id">
-        </el-option>
-      </el-select>
-      <el-select v-model="queryParams.institutionId"  size="small" style="margin-left: 15px;" placeholder="请选择考试点">
-        <el-option
-          v-for="item in examList"
-          :key="item.id"
-          :label="item.institutionalName"
-          :value="item.id">
-        </el-option>
-      </el-select>
+<!--      <el-select v-model="queryParams.districtCode" size="small" style="margin-left: 15px;margin-right: 15px" placeholder="行政区划">-->
+<!--        <el-option-->
+<!--          v-for="item in areaList"-->
+<!--          :key="item.id"-->
+<!--          :label="item.name"-->
+<!--          :value="item.code">-->
+<!--        </el-option>-->
+<!--      </el-select>-->
+<!--      <el-select v-model="queryParams.deptId" size="small" style="margin-left: 15px;" placeholder="请选择考试点">-->
+<!--        <el-option-->
+<!--          v-for="item in examList"-->
+<!--          :key="item.siteId"-->
+<!--          :label="item.siteName"-->
+<!--          :value="item.siteId">-->
+<!--        </el-option>-->
+<!--      </el-select>-->
+<!--      <treeselect v-model="queryParams.deptId" :options="deptOptions" :show-count="true" placeholder="请选择组织架构" />-->
+      <el-cascader v-model="queryParams.deptId" style="margin-left: 10px" :options="deptOptions" placeholder="组织架构" :props="{ expandTrigger: 'hover',checkStrictly: true,emitPath: false,value: 'id' }"></el-cascader>
       <el-button
-        size="small"
         type="primary"
         style="margin-bottom: 10px;margin-left: 20px"
         @click="handleQuery()"
-      >查询</el-button>
+      >查询
+      </el-button>
       <el-button
-        size="small"
         type="primary"
         style="margin-bottom: 10px"
         @click="resetQuery()"
-      >重置</el-button>
+      >重置
+      </el-button>
     </div>
-    <el-table v-loading="loading" :data="expertList" style="margin-top: 10px">
-      <el-table-column label="序号" align="center" type="index" />
-      <el-table-column label="提交时间" align="center" prop="createTime" />
-      <el-table-column label="批次名称" align="center" prop="batchName" />
-      <el-table-column label="考试点" align="center" prop="batchName" />
-      <el-table-column label="所属地州" align="center" prop="batchName" />
-      <el-table-column label="缴费类型" align="center" prop="batchName" />
-      <el-table-column label="单人(元)" align="center" prop="batchName" />
-      <el-table-column label="人数" align="center" prop="batchName" />
+    <el-table v-loading="loading" :data="payList" style="margin-top: 10px">
+      <el-table-column label="序号" align="center" type="index"/>
+      <el-table-column label="提交时间" align="center" prop="createTime"/>
+      <el-table-column label="批次名称" align="center" prop="batchName"/>
+      <el-table-column label="组织架构" align="center" prop="deptName"/>
+      <el-table-column label="行政管辖" align="center" prop="districtName"/>
+      <el-table-column label="缴费类型" align="center" prop="payType">
+        <template #default="scope">
+          {{scope.row.payType == 1?'初训理论':scope.row.payType == 2?'初训实操':scope.row.payType == 3?'初训理论与实操':scope.row.payType == 4?'复训理论':''}}
+        </template>
+      </el-table-column>
+      <el-table-column label="单人(元)" align="center" prop="amount"/>
+      <el-table-column label="人数" align="center">
+        <template #default="scope">
+          <span>{{scope.row.havePayNum}}</span>/{{scope.row.totalNum}}
+        </template>
+      </el-table-column>
+      <el-table-column label="缴费形式" align="center" prop="batchName">
+        <template #default="scope">
+          <el-tag type="success" v-if="scope.row.payPersonType == 1">个人</el-tag>
+          <el-tag v-if="scope.row.payPersonType == 2">批量</el-tag>
+          <el-button type="text" style="color:lightcoral;margin-left: 5px" @click="updatePayType(scope.row)" size="small" v-if="scope.row.payPersonType == 1">转批量</el-button>
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180px">
-        <template #default="scope" >
-          <el-button size="mini" type="text" style="color: #1890ff" @click="handleViewStu(scope.row)">学员管理</el-button>
-          <el-button size="mini" type="text" style="color: #1890ff" @click="handleViewCourse(scope.row,'')">批量缴费</el-button>
-          <el-button size="mini" type="text" style="color:lightcoral" @click="handleViewCourse(scope.row,'')">删除</el-button>
+        <template #default="scope">
+          <el-button v-if="isAhthority" size="mini" type="text" style="color: #1890ff" @click="handleViewStu(scope.row)">学员管理</el-button>
+          <el-button v-if="isAhthority && scope.row.payPersonType == 2 && (scope.row.havePayNum < scope.row.totalNum)" size="mini" type="text" style="color: #1890ff" @click="handleBatchPay(scope.row,'add')">批量缴费</el-button>
+          <el-button v-if="isAhthority" size="mini" type="text" style="color:lightcoral" @click="handleDelete(scope.row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -71,108 +88,184 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
-    <add-dialog ref="addDialogRef" @getList = "getList"></add-dialog>
-    <stu-dialog ref="stuDialogRef" @getList = "getList"></stu-dialog>
+    <add-dialog ref="addDialogRef" @getList="getList"></add-dialog>
+    <stu-dialog ref="stuDialogRef" @getList="getList"></stu-dialog>
+    <batch-pay ref="batchPayRef" @getList="getList"></batch-pay>
   </div>
 </template>
 
 <script>
-import { delJobRegist } from '@/api/coalMine/jobRegist'
-import { listPlat, listPlatSelect } from '@/api/onlineEducation/plat'
-import { listCourse } from '@/api/onlineEducation/course'
+import {delJobRegist} from '@/api/coalMine/jobRegist'
+import {listPlat, listPlatSelect} from '@/api/onlineEducation/plat'
+import {listCourse} from '@/api/onlineEducation/course'
 import addDialog from './components/addDialog.vue'
 import stuDialog from './components/studentDialog.vue'
+import batchPay from "./components/batchPay.vue"
+import {getExamPage} from "@/api/coalMine/placeManage/exam";
+import {getAreaList} from "@/api/coalMine/placeManage/train";
+import {delNonCoalPay, editPayTypeInfo, getNonCoalPayList} from "@/api/specialOperationsPay/notCoalPay";
+import store from "@/store";
+import {deptTreeSelect} from "@/api/system/user";
+
 export default {
-  name: "nPeopleManage",
+  name: "nCoalPay",
   dicts: [],
-  components: { addDialog,stuDialog },
+  components: {addDialog, stuDialog, batchPay},
   data() {
     return {
-      isDark:true,
+      isDark: true,
       loading: false,
       single: true,
       multiple: true,
       showSearch: true,
       addForm: false,
       total: 0,
-      districtList: [],
-      examList: [],
+      areaList: [],
+      deptOptions: [],
       dateValue: [],
-      expertList: [],
+      payList: [],
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        institutionId: ''
+        districtCode: '',
+        deptId: '',
+        params: {
+          startTime: '',
+          endTime: ''
+        }
       },
+      isAhthority: false
     };
   },
   created() {
-    this.getDistrict();
-    this.getList();
-    this.getExam();
+    const userInfo = store.getters && store.getters.userInfo
+    this.districtCode = userInfo.district.districtCode
+    if(userInfo.district.districtCode !== '65'){
+      this.queryParams.districtCode = this.districtCode
+    }else{
+      this.queryParams.districtCode = ''
+    }
+    this.getDistrict()
+    this.getList()
+    this.getDeptList()
+    const roles = store.getters && store.getters.roles
+    if (roles.includes('admin') || roles.includes('mkexam') || roles.includes('feimeiexam')  ) {
+      this.isAhthority = true
+    } else {
+      this.isAhthority = false
+    }
   },
   methods: {
-    getList(){
-      this.loading = true;
-      this.expertList = [
-        {
-          id: 1,
-
+    getList() {
+      this.loading = true
+      this.queryParams.params.startTime = this.dateValue[0]?this.dateValue[0]:''
+      this.queryParams.params.endTime = this.dateValue[1]?this.dateValue[1]:''
+      getNonCoalPayList( this.queryParams).then((res) => {
+        if (res.code == 200) {
+          this.payList = res.rows
+          this.total = res.total
+          this.loading = false
         }
-      ]
-          this.total = 1
-          this.loading = false;
-      // this.loading = true;
-      // listCourse( this.queryParams).then((res) => {
-      //   if (res.code == 200) {
-      //     this.expertList = res.rows.map(item => {
-      //       return {
-      //         ...item,
-      //         courseNum: item.outline ? item.outline.length : '',
-      //       }
-      //     })
-      //     this.total = res.total
-      //     this.loading = false;
-      //   }
-      // })
+      })
     },
+
+    getDeptList() {
+      deptTreeSelect().then(response => {
+        this.deptOptions = response.data
+      })
+    },
+
     openUrl(url) {
-      window.open(url,'_blank')
+      window.open(url, '_blank')
     },
     //行政区划
-    getDistrict() {
+    async getDistrict() {
+      const res = await getAreaList()
+      if (res.code == 200) {
+        this.areaList = res.data
+      }
+    },
 
+    changeDate(val) {
+      console.log('val', val)
     },
-    //考试点
-    getExam() {
-
+    handleAdd(type, data) {
+      this.$refs.addDialogRef.openDialog(type, data, this.areaList,this.deptOptions);
     },
-    changeDate(val){
-      console.log('val',val)
+    handleViewStu(val) {
+      this.$refs.stuDialogRef.openDialog(val.id);
     },
-    handleAdd(type,data) {
-      this.$refs.addDialogRef.openDialog(type, data);
+    handleBatchPay(val,type) {
+      this.$refs.batchPayRef.openDialog(val,type);
     },
-    handleViewStu(val){
-      this.$refs.stuDialogRef.openDialog(val);
-    },
-    handleQuery(){
+    handleQuery() {
+      this.queryParams.pageNum = 1
       this.getList();
     },
-    resetQuery(){
+    resetQuery() {
       this.queryParams = {
         pageNum: 1,
         pageSize: 10,
-        institutionId: ''
+        districtCode: '',
+        deptId: '',
+        params: {
+          startTime: '',
+          endTime: ''
+        }
       }
+      this.dateValue = []
       this.getList();
     },
-    check(val){
-      this.$confirm('此操作将审核该条数据, 是否继续?', '提示', {
+    updatePayType(row){
+      if(row.totalNum < 2){
+        this.$message({
+          type: 'warning',
+          message: '批量缴费人数不能小于二人'
+        })
+        return
+      }
+      this.$confirm('一旦关闭则无法重新开启个人缴费,必须批量缴完剩余所有学员。是否继续?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(async () => {
+        const res = await editPayTypeInfo({id: row.id,payPersonType: 2})
+        if(res.code == 200){
+          this.$message({
+            type: 'success',
+            message: '删除成功!'
+          });
+          await this.getList()
+        }else{
+          this.$message({
+            type: 'warning',
+            message: res.msg
+          });
+        }
+      }).catch(() => {
+
+      });
+    },
+
+    handleDelete(row){
+      this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const res = await delNonCoalPay(row.id)
+        if(res.code == 200){
+          this.$message({
+            type: 'success',
+            message: '删除成功!'
+          });
+          await this.getList()
+        }else{
+          this.$message({
+            type: 'warning',
+            message: res.msg
+          });
+        }
       }).catch(() => {
 
       });

--
Gitblit v1.9.2