From e735896a68d8c1742859a06d7bc1c7c1bb61f57d Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期四, 23 一月 2025 14:08:52 +0800
Subject: [PATCH] 新增页面

---
 src/views/specialOperationsPay/notCoalPay/index.vue |  245 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 164 insertions(+), 81 deletions(-)

diff --git a/src/views/specialOperationsPay/notCoalPay/index.vue b/src/views/specialOperationsPay/notCoalPay/index.vue
index 5500d37..fc8b607 100644
--- a/src/views/specialOperationsPay/notCoalPay/index.vue
+++ b/src/views/specialOperationsPay/notCoalPay/index.vue
@@ -5,7 +5,9 @@
         size="medium"
         style="margin-bottom: 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"
@@ -18,49 +20,68 @@
         start-placeholder="开始日期"
         end-placeholder="结束日期">
       </el-date-picker>
-      <el-select v-model="queryParams.institutionId"  size="small" style="margin-left: 15px;" placeholder="请选择行政区划">
+      <el-select v-model="queryParams.districtCode" size="small" style="margin-left: 15px;margin-right: 15px" placeholder="行政区划">
         <el-option
-          v-for="item in districtList"
+          v-for="item in areaList"
           :key="item.id"
-          :label="item.institutionalName"
-          :value="item.id">
+          :label="item.name"
+          :value="item.code">
         </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.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" size="small" :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">
+          <span v-if="scope.row.payPersonType == 1">已开启</span>
+          <span v-if="scope.row.payPersonType == 2" style="color:red">已关闭</span>
+          <el-button type="text" style="color:lightcoral" @click="updatePayType(scope.row)" 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" size="mini" type="text" style="color: #1890ff" @click="handleBatchPay(scope.row,'')">批量缴费</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 +92,170 @@
       :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();
+    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(){
+    getList() {
       this.loading = true;
-      this.expertList = [
-        {
-          id: 1,
-
-        }
-      ]
-          this.total = 1
+      this.loading = false;
+      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.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) {
+      this.$refs.batchPayRef.openDialog(val);
     },
-    handleViewStu(val){
-      this.$refs.stuDialogRef.openDialog(val);
-    },
-    handleQuery(){
+    handleQuery() {
       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){
+      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