马宇豪
2025-03-04 509f1d71c91242b11fd287cfcdeafe3d19b2d807
新增
已修改15个文件
已添加3个文件
952 ■■■■■ 文件已修改
.env.development 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/specialOperationsPay/coalPay.js 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/studentInfo.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/count/index.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/learnRecord/index.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialOperationsPay/coalCalculate/index.vue 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialOperationsPay/coalPay/components/studentDialog.vue 96 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialOperationsPay/coalPay/index.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialOperationsPay/notCoalCalculate/components/detailDialog.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialOperationsPay/notCoalCalculate/index.vue 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialOperationsPay/notCoalPay/components/batchPay.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialOperationsPay/notCoalPay/components/studentDialog.vue 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialOperationsPay/notCoalPay/index.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialOperationsPay/notCoalWorkType/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialOperationsPay/singlePage/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/dept/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -5,18 +5,18 @@
ENV = 'development'
# 若依管理系统/开发环境
#黄镇
#VUE_APP_BASE_API = 'http://192.168.0.47:8085/api'
#新线上
#VUE_APP_BASE_API = 'http://117.190.86.66:8581/api'
#董
#VUE_APP_BASE_API = 'http://192.168.2.24:8085/api'
VUE_APP_BASE_API = 'http://192.168.2.24:8085/api'
#孔
#VUE_APP_BASE_API = 'http://192.168.2.15:8085/api'
#贺
#VUE_APP_BASE_API = 'http://192.168.2.11:8085/api'
#线上
VUE_APP_BASE_API = 'http://106.15.95.149:8086/api'
#VUE_APP_BASE_API = 'http://106.15.95.149:8086/api'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
package.json
@@ -64,7 +64,8 @@
    "vue-print-nb": "^1.7.5",
    "vue-router": "3.4.9",
    "vuedraggable": "2.24.3",
    "vuex": "3.6.0"
    "vuex": "3.6.0",
    "xlsx": "^0.18.5"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "4.4.6",
src/api/specialOperationsPay/coalPay.js
@@ -1,11 +1,11 @@
import request from '@/utils/request'
// 数据分页
export function getCoalPayCategory(data) {
export function getCoalPayCategory(query) {
  return request({
    url: '/pay/coalCategory/list',
    method: 'post',
    data: data
    method: 'get',
    params: query
  })
}
@@ -37,11 +37,11 @@
}
// 缴费列表
export function getCoalPayList(data) {
export function getCoalPayList(query) {
  return request({
    url: '/pay/coalPay/list',
    method: 'post',
    data: data
    method: 'get',
    params: query
  })
}
@@ -157,3 +157,19 @@
    params: query
  })
}
export function coalCount(query) {
  return request({
    url: '/pay/coalCategory/count',
    method: 'get',
    params: query
  })
}
export function notCoalCount(query) {
  return request({
    url: '/pay/nonCoalCategory/count',
    method: 'get',
    params: query
  })
}
src/assets/studentInfo.xlsx
Binary files differ
src/main.js
@@ -40,6 +40,11 @@
import '@/utils/filter'
import '@/utils/validate'
import Print from 'vue-print-nb'
import FileSaver from 'file-saver'
import * as XLSX from 'xlsx';
//import XLSX from 'xlsx'  //无效导入,XLSX是undefined
// 将excel表格模板设置全局
// 全局方法挂载
Vue.prototype.getDicts = getDicts
@@ -51,7 +56,8 @@
Vue.prototype.selectDictLabels = selectDictLabels
Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
Vue.prototype.$FileSaver = FileSaver
Vue.prototype.$XLSX = XLSX
// 全局组件挂载
Vue.component('DictTag', DictTag)
Vue.component('Pagination', Pagination)
src/views/onlineEducation/count/index.vue
@@ -51,13 +51,13 @@
        @click="resetQuery()"
      >重置</el-button>
    </div>
    <el-table v-loading="loading" :data="expertList">
    <el-table v-loading="loading" :data="expertList" show-summary :summary-method="getSummaries">
      <el-table-column label="平台" align="center" prop="institutionName" />
      <el-table-column label="培训总人数" align="center" prop="studentCount" />
      <el-table-column label="培训学时达标人数" align="center" prop="finishCount" />
      <el-table-column label="学时合格率" align="center" prop="classHourRate" />
      <el-table-column label="考试总人数" align="center" prop="eaxmStudentCount" />
      <el-table-column label="考试合格人数" align="center" prop="passCount" />
      <el-table-column label="自测考试总人数" align="center" prop="eaxmStudentCount" />
      <el-table-column label="自测考试合格人数" align="center" prop="passCount" />
      <el-table-column label="考试合格率" align="center" prop="passRate">
        <template #default="scope">
          <span>{{scope.row.passRate}}%</span>
@@ -195,8 +195,33 @@
      this.time = []
      this.getList()
    },
    handleAdd(){
    getSummaries(param) {
      const { columns, data } = param
      const sums = [];
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = '总计';
          return
        }
        if (index === columns.length - 1) {
          sums[index] = '--';
          return
        }
        const values = data.map(item => Number(item[column.property]))
        if (!values.every(value => isNaN(value))) {
          sums[index] = values.reduce((prev, curr) => {
            const value = Number(curr);
            if (!isNaN(value)) {
              return prev + curr;
            } else {
              return prev;
            }
          }, 0)
        } else {
          sums[index] = '--';
        }
      })
      return sums;
    }
  }
};
src/views/onlineEducation/learnRecord/index.vue
@@ -1,10 +1,49 @@
<template>
  <div class="app-container">
    <el-radio-group v-model="queryParams.status" style="margin-bottom: 10px;" @change="changeTimeStatus">
    <el-radio-group v-model="queryParams.status" @change="changeTimeStatus" style="margin-bottom: 10px">
      <el-radio-button label="0">全部</el-radio-button>
      <el-radio-button label="2">异常记录</el-radio-button>
      <el-radio-button label="1">正常记录</el-radio-button>
    </el-radio-group>
    <div style="margin-bottom: 10px">
      <el-select v-model="queryParams.institutionId" placeholder="请选择平台" style="margin-right: 10px">
        <el-option
          v-for="item in platformList"
          :key="item.id"
          :label="item.institutionalName"
          :value="item.id">
        </el-option>
      </el-select>
      <el-input
        v-model="queryParams.idcard"
        placeholder="请输入身份证号"
        clearable
        style="width: 300px;margin-right: 10px"
      />
      <el-date-picker
        v-model="dateValue"
        value-format="yyyy-MM-dd HH:mm:ss"
        type="datetimerange"
        range-separator="-"
        start-placeholder="开始日期"
        end-placeholder="结束日期"
        style="width: 380px"
      ></el-date-picker>
      <el-button
        size="small"
        type="primary"
        style="margin-bottom: 10px;margin-left: 20px"
        @click="handleQuery()"
      >查询
      </el-button>
      <el-button
        size="small"
        type="primary"
        style="margin-bottom: 10px"
        @click="resetQuery()"
      >重置
      </el-button>
    </div>
    <el-table v-loading="loading" :data="expertList" :row-class-name="tableAddClass">
      <el-table-column label="记录编号" align="center" prop="id" />
      <el-table-column label="身份证号" align="center" prop="idcard" :show-overflow-tooltip="true" />
@@ -45,13 +84,13 @@
import detailDialog from './components/detailDialog.vue'
import { listRecord, listStudent } from '@/api/onlineEducation/student'
import Cookies from 'js-cookie'
import {listPlatSelect} from "@/api/onlineEducation/plat";
export default {
  name: "nPeopleManage",
  dicts: [],
  components: { detailDialog},
  data() {
    return {
      loading: false,
      single: true,
      multiple: true,
@@ -60,24 +99,40 @@
      total: 0,
      expertTypes: [],
      expertList: [],
      platformList: [],
      dateValue: [],
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        status: 0,
        institutionId: null,
        idcard: '',
        startTime: '',
        endTime: ''
      },
    };
  },
  created() {
      this.getList();
      this.getList()
      this.getPlat()
  },
  methods: {
    getList(){
      this.loading = true;
      this.loading = true
      this.queryParams.startTime = this.dateValue[0]?this.dateValue[0]:''
      this.queryParams.endTime = this.dateValue[1]?this.dateValue[1]:''
      listRecord( this.queryParams).then((res) => {
        if (res.code == 200) {
          this.expertList = res.rows
          this.total = res.total
          this.loading = false;
          this.loading = false
        }
      })
    },
    getPlat() {
      listPlatSelect().then((res) => {
        if (res.code == 200) {
          this.platformList = res.data
        }
      })
    },
@@ -94,10 +149,21 @@
    },
    handleQuery(){
      this.queryParams.pageNum = 1
      this.getList();
    },
    resetQuery(){
      this.queryParams = {
        pageNum: 1,
        pageSize: 10,
        status: 0,
        institutionId: null,
        idcard: '',
        startTime: '',
        endTime: ''
      }
      this.dateValue = []
      this.getList()
    },
    handleView(data){
      this.$refs.detailDialogRef.openDialog(data);
src/views/specialOperationsPay/coalCalculate/index.vue
对比新文件
@@ -0,0 +1,167 @@
<template>
  <div class="app-container">
    <div>
      <el-date-picker
        v-model="queryParams.year"
        type="year"
        style="width: 300px"
        value-format="yyyy"
        placeholder="选择年">
      </el-date-picker>
      <el-select v-model="queryParams.quarter" placeholder="请选择季度" style="width: 300px;margin-left: 5px" clearable>
        <el-option
          v-for="item in quarterList"
          :key="item.id"
          :label="item.label"
          :value="item.id">
        </el-option>
      </el-select>
      <el-cascader v-model="queryParams.deptId" :show-all-levels="false" style="margin-left: 10px" filterable :options="deptOptions"
                   placeholder="组织架构"
                   :props="{ emitPath: false,value:'deptId',label: 'deptName' }"></el-cascader>
      <el-button
        type="primary"
        style="margin-left: 20px"
        @click="handleQuery()"
      >查询
      </el-button>
      <el-button
        type="primary"
        @click="resetQuery()"
      >重置
      </el-button>
      <!--      <el-select v-model="queryParams.districtCode" placeholder="所辖行政区划" style="width: 100%;">-->
      <!--        <el-option-->
      <!--          v-for="item in areaList"-->
      <!--          :key="item.id"-->
      <!--          :label="item.name"-->
      <!--          :value="item.code">-->
      <!--        </el-option>-->
      <!--      </el-select>-->
    </div>
    <el-table v-loading="loading" :data="dataList" style="margin-top: 20px" :row-class-name="tableAddClass">
      <el-table-column label="工种类别" align="center" prop="subjectName"></el-table-column>
      <el-table-column label="缴费人次" align="center" prop="num" :show-overflow-tooltip="true"/>
      <el-table-column label="缴费标准" align="center" prop="amount">
        <template #default="scope">
          {{ scope.row.amount }}元/人次
        </template>
      </el-table-column>
      <el-table-column label="总额" align="center" prop="totalMoney"/>
      <el-table-column label="上缴费中央" align="center" prop="turnContent"/>
      <el-table-column label="自治区级" align="center" prop="autonomy"/>
      <!--      <el-table-column label="地(州、市级)" align="center" prop="describe" />-->
    </el-table>
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
  </div>
</template>
<script>
import {
  coalCount
} from '@/api/specialOperationsPay/coalPay'
import Cookies from 'js-cookie'
import {listDept} from "@/api/system/dept";
export default {
  name: "coalCalculate",
  dicts: [],
  components: {},
  data() {
    return {
      loading: false,
      single: true,
      multiple: true,
      showSearch: true,
      dataList: [],
      deptOptions: [],
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        year: '',
        quarter: null,
        deptId: null
      },
      total: 0,
      quarterList: [
        {
          id: 1,
          label: '第一季度'
        },
        {
          id: 2,
          label: '第二季度'
        },
        {
          id: 3,
          label: '第三季度'
        },
        {
          id: 4,
          label: '第四季度'
        }
      ]
    };
  },
  created() {
    this.getList()
    this.getDeptTree()
  },
  methods: {
    getList() {
      this.loading = true;
      coalCount(this.queryParams).then((res) => {
        if (res.code == 200) {
          this.dataList = res.rows
          this.total = res.total
          this.loading = false
        }
      })
    },
    getDeptTree() {
      listDept({
        deptName: undefined,
        status: undefined
      }).then(response => {
        this.deptOptions = this.handleTree(response.data, "deptId")
      })
    },
    changeStatus(val) {
      this.getList()
    },
    tableAddClass({row, rowIndex}) {
      if (row.difference < row.duration) {
        return "tr-red";
      }
      return "";
    },
    handleQuery() {
      this.getList();
    },
    resetQuery() {
      this.queryParams = {
        pageNum: 1,
        pageSize: 10,
        year: '',
        quarter: null,
        deptId: null
      }
      this.getList()
    },
  }
};
</script>
<style scoped>
.app-container /deep/ .el-table .tr-red {
  color: red !important;
}
</style>
src/views/specialOperationsPay/coalPay/components/studentDialog.vue
@@ -24,12 +24,12 @@
        <el-row :gutter="24">
          <el-col :span="12" v-if="stuInfo.payType === 1 || stuInfo.payType === 3 || stuInfo.payType === 4">
            <el-form-item label="理论类别:">
              <span>{{stuInfo.coalCategoryList.find(i=>i.categoryType == 1).subjectName}}</span>
              <span>{{stuInfo.coalCategoryList.find(i => i.categoryType == 1) && stuInfo.coalCategoryList.find(i => i.categoryType == 1).subjectName }}</span>
            </el-form-item>
          </el-col>
          <el-col :span="12" v-if="stuInfo.payType === 2 || stuInfo.payType === 3">
            <el-form-item label="实操类别:">
              <span>{{stuInfo.coalCategoryList.find(i=>i.categoryType == 2).subjectName}}</span>
              <span>{{stuInfo.coalCategoryList.find(i => i.categoryType == 2) && stuInfo.coalCategoryList.find(i => i.categoryType == 2).subjectName }}</span>
            </el-form-item>
          </el-col>
        </el-row>
@@ -75,18 +75,21 @@
      </el-form>
  <!--    表格-->
      <div style="margin: 20px 15px;display: flex">
        <el-button size="small"  type="primary" @click="handleAddStu('add',{})">添加学员</el-button>
        <el-button size="small"  type="primary" @click="importDialog = true">批量导入</el-button>
      <div style="margin: 20px 15px;display: flex;justify-content: space-between">
        <div>
          <el-button size="small"  type="primary" @click="handleAddStu('add',{})">添加学员</el-button>
          <el-button size="small"  type="primary" @click="importDialog = true">批量导入</el-button>
        </div>
        <el-button type="text" @click="exportExcel">导出清单</el-button>
      </div>
      <el-table v-loading="loading" :data="stuList">
      <el-table v-loading="loading" :data="stuList" id="table_excel">
        <el-table-column label="序号" align="center" type="index" />
        <el-table-column label="姓名" align="center" prop="name" />
        <el-table-column label="身份证号" align="center" prop="idCard" />
        <el-table-column label="手机号" align="center" prop="phone" />
        <el-table-column label="性别" align="center" prop="sex">
          <template #default="scope">
            {{scope.row.sex == 0?'男':scope.row.sex == 1?'女':'未知'}}
            {{(parseInt(scope.row.idCard.substr(16, 1))) % 2 === 0 ? "女" : "男"}}
          </template>
        </el-table-column>
        <el-table-column label="财政缴款码" align="center" prop="payCode">
@@ -96,9 +99,11 @@
        </el-table-column>
        <el-table-column label="是否已缴" align="center" prop="payStatus">
          <template #default="scope">
            {{scope.row.payStatus == 0?'未缴':scope.row.payStatus == 1?'已缴':'未缴'}}
            <span v-if="scope.row.payStatus == 1" style="color: green">已缴</span>
            <span v-else style="color: red">未缴</span>
          </template>
        </el-table-column>
        <el-table-column label="培训机构" align="center" prop="train" />
        <el-table-column label="类别" align="center" prop="payType">
          <template #default="scope">
            {{scope.row.payType == 1?'个人':scope.row.payType == 2?'集体':'个人'}}
@@ -106,9 +111,10 @@
        </el-table-column>
        <el-table-column label="操作" align="center">
          <template #default="scope">
            <el-button size="mini" type="text" v-if="scope.row.payStatus == 1" style="color: #1890ff">查看票据</el-button>
            <el-button size="mini" type="text" style="color: #1890ff" @click="handleAddStu('edit',scope.row)">修改</el-button>
            <el-button size="mini" type="text" style="color:lightcoral" @click="handleDelete(scope.row)">删除</el-button>
            <el-button size="mini" type="text" v-if="scope.row.payStatus == 1" style="color: #1890ff" @click="checkTicket">查看票据</el-button>
            <el-button size="mini" type="text" v-if="scope.row.payStatus == 0" style="color: #1890ff" @click="goPay(scope.row)">去缴费</el-button>
            <el-button size="mini" type="text" style="color: #1890ff" v-if="!(scope.row.payCode && scope.row.payCode!=='')" @click="handleAddStu('edit',scope.row)">修改</el-button>
            <el-button size="mini" type="text" style="color:lightcoral" v-if="!(scope.row.payCode && scope.row.payCode!=='')" @click="handleDelete(scope.row)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -137,6 +143,9 @@
            <el-radio :label="0">男</el-radio>
            <el-radio :label="1">女</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item label="培训机构:">
          <el-input v-model.trim="dataForm.train"/>
        </el-form-item>
        <el-form-item label="身份证号:" prop="idCard">
          <el-input v-model.trim="dataForm.idCard"/>
@@ -202,7 +211,15 @@
</template>
<script>
import {verifyIdCard, verifySimplePhone} from "@/utils/validate";
import {addCoalPayStu, delCoalPayStu, editCoalPayStu, getCoalPayStudentList} from "@/api/specialOperationsPay/coalPay";
import {
  addCoalPayStu,
  coalPersonPay,
  delCoalPayStu,
  editCoalPayStu,
  getCoalPayStudentList
} from "@/api/specialOperationsPay/coalPay";
import * as XLSX from 'xlsx';
import { saveAs } from 'file-saver';
import exampleFile from '@/assets/studentInfo.xlsx'
import {getToken} from "@/utils/auth";
export default {
@@ -262,6 +279,38 @@
    };
  },
  methods: {
    exportExcel() {
      var xlsxParam = { raw: true }
      let tables = document.getElementById('table_excel')
      let clonedTable = tables.cloneNode(true); // 深度克隆
      // 删除克隆表格中的最后一列
      const allRows = clonedTable.querySelectorAll('tr');
      allRows.forEach((row,index) => {
        const cells = row.querySelectorAll('th,td');
        if (cells.length > 0) {
          if(index == 0){
            row.removeChild(cells[cells.length - 2]); // 表头行要特殊处理
          }else{
            row.removeChild(cells[cells.length - 1]); // 移除最后一个单元格
          }
        }
      })
      let table_book = this.$XLSX.utils.table_to_book(clonedTable, xlsxParam);
      const table_write = this.$XLSX.write(table_book, {
        bookType: 'xlsx',
        bookSST: true,
        type: 'array'
      });
      try {
        this.$FileSaver.saveAs(
          new Blob([table_write], { type: 'application/octet-stream' }),
          `${this.stuInfo.batchName}批次学员缴费清单.xlsx`
        );
      } catch (e) {
        if (typeof console !== 'undefined') console.log(e, table_write);
      }
      return table_write
    },
    openDialog(val) {
      this.stuInfo = val
      this.getStuList(this.stuInfo.id)
@@ -401,6 +450,29 @@
        }
      })
    },
    checkTicket(){
      window.open('http://finpt.xjcz.gov.cn/fs-public/index.do')
    },
    async goPay(item){
      if(item.payCode && item.payCode !== ''){
        window.open(`http://finpt.xjcz.gov.cn/fs-public/billQuery/findByOrderId.do?orderId=${item.orderId}&deviceType=1`)
      }else{
        const query = {
          coalPayId: item.coalPayId,
          studentId: item.id
        }
        const res = await coalPersonPay(query)
        if(res.code == 200) {
          window.open(`http://finpt.xjcz.gov.cn/fs-public/billQuery/findByOrderId.do?orderId=${res.msg}&deviceType=1`)
        }else{
          this.payLoading = false
          this.$message({
            type:'warning',
            message: res.msg
          })
        }
      }
    },
    handleDelete(row){
      this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
        confirmButtonText: '确定',
src/views/specialOperationsPay/coalPay/index.vue
@@ -2,7 +2,6 @@
  <div class="app-container">
    <div>
      <el-button
        size="medium"
        style="margin-bottom: 10px;background-color: #0FC7F0;color: white"
        @click="handleAdd('add',{})"
        v-if="isAhthority"
@@ -10,7 +9,6 @@
      </el-button>
      <el-date-picker
        style="margin-left: 30px;width: 300px"
        size="small"
        v-model="dateValue"
        @change="changeDate"
        type="daterange"
@@ -20,16 +18,14 @@
        start-placeholder="开始日期"
        end-placeholder="结束日期">
      </el-date-picker>
      <el-cascader v-model="queryParams.deptId" size="small" style="margin-left: 15px" :options="deptOptions" placeholder="组织架构" :props="{ expandTrigger: 'hover',checkStrictly: true,emitPath: false,value: 'id' }"></el-cascader>
      <el-cascader v-model="queryParams.deptId" style="margin-left: 15px" :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
        size="small"
        type="primary"
        style="margin-bottom: 10px"
        @click="resetQuery()"
@@ -53,11 +49,11 @@
          <span>{{scope.row.havePayNum}}</span>/{{scope.row.totalNum}}
        </template>
      </el-table-column>
      <el-table-column label="学员个人缴费" align="center" prop="batchName">
      <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>
          <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" size="small" @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">
@@ -186,6 +182,13 @@
      this.getList()
    },
    updatePayType(row){
      if(row.totalNum < 2){
        this.$message({
          type: 'warning',
          message: '批量缴费人数不能小于二人'
        })
        return
      }
      this.$confirm('一旦关闭则无法重新开启个人缴费,必须批量缴完剩余所有学员。是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
@@ -196,17 +199,17 @@
          this.$message({
            type: 'success',
            message: '删除成功!'
          });
          })
          await this.getList()
        }else{
          this.$message({
            type: 'warning',
            message: res.msg
          });
          })
        }
      }).catch(() => {
      });
      })
    },
    handleDelete(row){
src/views/specialOperationsPay/notCoalCalculate/components/detailDialog.vue
对比新文件
@@ -0,0 +1,138 @@
<template>
  <el-dialog
    :title="title"
    :visible.sync="dialogVisible"
    :modal-append-to-body="false"
    :close-on-click-modal="false"
    width="450px"
    :before-close="handleClose"
  >
    <el-form ref="dataForm" :model="dataForm"  :rules="rules" label-position="right" label-width="150px" style="padding-right: 50px" element-loading-text="保存中...">
      <el-form-item label="类别:" prop="categoryType">
        <el-radio-group v-model="dataForm.categoryType">
          <el-radio :label="1">理论</el-radio>
          <el-radio :label="2">实操</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="科目名称:" prop="subjectName">
        <el-input v-model.trim="dataForm.subjectName"/>
      </el-form-item>
      <el-form-item label="金额:" prop="amount">
        <el-input v-model.trim.number="dataForm.amount">
          <template #append>元</template>
        </el-input>
      </el-form-item>
      <el-form-item label="业务代码:" prop="businessCode">
        <el-input v-model.trim="dataForm.businessCode"/>
      </el-form-item>
      <el-form-item label="描述:" prop="describe">
        <el-input v-model.trim="dataForm.describe"/>
      </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button @click="handleClose">取 消</el-button>
      <el-button type="primary" @click="onSubmit">确 定</el-button>
    </span>
  </el-dialog>
</template>
<script >
import { addPlat, updatePlat } from '@/api/onlineEducation/plat'
import { verifySimplePhone } from '@/utils/validate'
import {addCoalPayCategory, updateCoalPayCategory} from "@/api/specialOperationsPay/coalPay";
export default {
  name: 'detailDialog',
  components: {
  },
  data() {
    return {
      dialogVisible: false,
      title: '',
      rules: {
        categoryType: [{ required: true, message: '请选择类别', trigger: 'blur' }],
        subjectName: [{ required: true, message: '请输入科目名称', trigger: 'blur' }],
        amount: [{ required: true, message: '请输入金额', trigger: 'blur' }]
      },
      dataForm: {},
    }
  },
  created() {
  },
  methods: {
    openDialog (type, data) {
      this.resetDataForm()
      this.dialogVisible = true
      this.title = type == 'add'?'新增':'编辑'
      if(this.title == '编辑') {
        const {id,categoryType,subjectName,amount,describe} = data
        this.dataForm = {id,categoryType,subjectName,amount,describe}
      }
      this.$nextTick(() => {
        this.$refs['dataForm'].clearValidate()
      })
    },
    handleClose() {
      this.dialogVisible = false;
      this.$emit("getList");
    },
    onSubmit() {
      this.$refs["dataForm"].validate( async valid => {
        if (valid) {
          if(this.title == '新增'){
            console.log("this.dataForm",this.dataForm)
            const res = await addCoalPayCategory(this.dataForm);
            if(res.code == 200) {
              this.$emit("getList");
              this.dialogVisible = false;
              this.$message({
                type:'success',
                message: '新增成功'
              })
            }else{
              this.$message({
                type:'warning',
                message: res.msg
              })
            }
          }else {
            const res = await updateCoalPayCategory(this.dataForm);
            if(res.code == 200) {
              this.$emit("getList");
              this.dialogVisible = false;
              this.$message({
                type:'success',
                message: '编辑成功'
              })
            }else{
              this.$message({
                type:'warning',
                message: res.msg
              })
            }
          }
        }
      })
    },
    resetDataForm() {
      this.dataForm = {
      }
    },
  }
}
</script>
<style scoped>
.infoTitle{
  margin-top:-10px;
  margin-bottom:20px;
  display: flex;
  justify-content: space-around;
  font-weight: 800;
  font-size: 16px
}
</style>
src/views/specialOperationsPay/notCoalCalculate/index.vue
对比新文件
@@ -0,0 +1,202 @@
<template>
  <div class="app-container">
    <div>
      <el-date-picker
        v-model="queryParams.year"
        type="year"
        style="width: 300px"
        value-format="yyyy"
        placeholder="选择年">
      </el-date-picker>
      <el-select v-model="queryParams.quarter" placeholder="请选择季度" style="width: 300px;margin-left: 5px" clearable>
        <el-option
          v-for="item in quarterList"
          :key="item.id"
          :label="item.label"
          :value="item.id">
        </el-option>
      </el-select>
      <el-select v-model="queryParams.districtCode" placeholder="所辖行政区划" @change="changeDeptList" style="width: 300px;margin-left: 5px">
        <el-option
          v-for="item in areaList"
          :key="item.id"
          :label="item.name"
          :value="item.code">
        </el-option>
      </el-select>
      <el-cascader v-model="queryParams.deptId" style="margin-left: 10px" :show-all-levels="false" filterable :options="deptList" placeholder="组织架构"
                   :props="{ emitPath: false,value:'deptId',label: 'deptName' }"></el-cascader>
      <el-button
        type="primary"
        style="margin-left: 20px"
        @click="handleQuery()"
      >查询
      </el-button>
      <el-button
        type="primary"
        @click="resetQuery()"
      >重置
      </el-button>
    </div>
    <el-table v-loading="loading" :data="dataList" style="margin-top: 20px" :row-class-name="tableAddClass">
      <el-table-column label="工种类别" align="center" prop="subjectName"></el-table-column>
      <el-table-column label="缴费人次" align="center" prop="num" :show-overflow-tooltip="true"/>
      <el-table-column label="缴费标准" align="center" prop="amount">
        <template #default="scope">
          {{ scope.row.amount }}元/人次
        </template>
      </el-table-column>
      <el-table-column label="总额" align="center" prop="totalMoney"/>
      <el-table-column label="上缴费中央" align="center" prop="turnContent"/>
      <el-table-column label="自治区级" align="center" prop="autonomy"/>
      <el-table-column label="地(州、市级)" align="center" prop="prefecuture"/>
    </el-table>
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
  </div>
</template>
<script>
import {
  notCoalCount
} from '@/api/specialOperationsPay/coalPay'
import Cookies from 'js-cookie'
import {getAreaList} from "@/api/coalMine/placeManage/train";
import {deptTreeSelect} from "@/api/system/user";
import {listDept} from "@/api/system/dept";
export default {
  name: "notCoalCalculate",
  dicts: [],
  components: {},
  data() {
    return {
      loading: false,
      single: true,
      multiple: true,
      showSearch: true,
      dataList: [],
      areaList: [],
      deptOptions: [],
      deptList: [],
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        year: '',
        quarter: null,
        districtCode: '',
        deptId: null
      },
      total: 0,
      quarterList: [
        {
          id: 1,
          label: '第一季度'
        },
        {
          id: 2,
          label: '第二季度'
        },
        {
          id: 3,
          label: '第三季度'
        },
        {
          id: 4,
          label: '第四季度'
        }
      ]
    };
  },
  created() {
    this.getList()
    this.getArea()
    this.getDeptTree()
  },
  methods: {
    getList() {
      this.loading = true
      notCoalCount(this.queryParams).then((res) => {
        if (res.code == 200) {
          this.dataList = res.rows
          this.total = res.total
          this.loading = false
        }
      })
    },
    async getArea() {
      const res = await getAreaList();
      if (res.code == 200) {
        this.areaList = res.data;
      }
    },
    getDeptTree() {
      listDept({
        deptName: undefined,
        status: undefined
      }).then(response => {
        this.deptOptions = this.handleTree(response.data, "deptId")
        this.deptList = this.deptOptions
      })
    },
    changeStatus(val) {
      this.getList()
    },
    changeDeptList(){
      const code = this.queryParams.districtCode
      if(this.getListByCode(this.deptOptions,code)){
        this.deptList = this.getListByCode(this.deptOptions,code)
      }else{
        this.deptList = this.deptOptions
      }
    },
    tableAddClass({row, rowIndex}) {
      if (row.difference < row.duration) {
        return "tr-red";
      }
      return "";
    },
    handleQuery() {
      this.getList();
    },
    resetQuery() {
      this.queryParams = {
        pageNum: 1,
        pageSize: 10,
        year: '',
        quarter: null,
        districtCode: '',
        deptId: null
      }
      this.getList()
    },
    getListByCode(tree,code){
      for(let i of tree){
        if(i.districtCode == code){
          return i.children
        }
        if(i.children){
          const foundList = this.getListByCode(i.children,code)
          if(foundList){
            return foundList
          }
        }
      }
      return null
    }
  }
};
</script>
<style scoped>
.app-container /deep/ .el-table .tr-red {
  color: red !important;
}
</style>
src/views/specialOperationsPay/notCoalPay/components/batchPay.vue
@@ -30,7 +30,7 @@
<script >
import { verifySimplePhone } from '@/utils/validate'
import {coalTeamPay} from "@/api/specialOperationsPay/coalPay";
import {nonCoalTeamPay} from "@/api/specialOperationsPay/notCoalPay";
import {nonCoalPersonPay, nonCoalTeamPay} from "@/api/specialOperationsPay/notCoalPay";
export default {
  name: 'batchPay',
@@ -76,12 +76,21 @@
          if(this.dialogStatus == 'add'){
            const res = await nonCoalTeamPay(this.dataForm);
            if(res.code == 200) {
              this.$emit("getList");
              this.dialogVisible = false;
              this.$message({
                type:'success',
                message: '提交成功'
              })
              this.$emit("getList")
              this.dialogVisible = false
              const query = {
                id: this.dataForm.id,
                payType: 2
              }
              const res = await nonCoalPersonPay(query)
              if(res.code == 200) {
                window.open(`http://finpt.xjcz.gov.cn/fs-public/billQuery/findByOrderId.do?orderId=${res.msg}&deviceType=1`)
              }else{
                this.$message({
                  type:'warning',
                  message: res.msg
                })
              }
            }else{
              this.$message({
                type:'warning',
src/views/specialOperationsPay/notCoalPay/components/studentDialog.vue
@@ -26,12 +26,12 @@
        <el-row :gutter="24">
          <el-col :span="12" v-if="stuInfo.payType === 1 || stuInfo.payType === 3 || stuInfo.payType === 4">
            <el-form-item label="理论类别:">
              <span>{{stuInfo.nonCoalPayCategoryList.find(i=>i.categoryType == 1).subjectName}}</span>
              <span>{{stuInfo.nonCoalPayCategoryList.find(i => i.categoryType == 1) && stuInfo.nonCoalPayCategoryList.find(i => i.categoryType == 1).subjectName }}</span>
            </el-form-item>
          </el-col>
          <el-col :span="12" v-if="stuInfo.payType === 2 || stuInfo.payType === 3">
            <el-form-item label="实操类别:">
              <span>{{stuInfo.nonCoalPayCategoryList.find(i=>i.categoryType == 2).subjectName}}</span>
              <span>{{stuInfo.nonCoalPayCategoryList.find(i => i.categoryType == 2) && stuInfo.nonCoalPayCategoryList.find(i => i.categoryType == 2).subjectName }}</span>
            </el-form-item>
          </el-col>
        </el-row>
@@ -77,18 +77,21 @@
      </el-form>
  <!--    表格-->
      <div style="margin: 20px 15px;display: flex">
        <el-button size="small"  type="primary" @click="handleAddStu('add',{})">添加学员</el-button>
        <el-button size="small"  type="primary" @click="importDialog = true">批量导入</el-button>
      <div style="margin: 20px 15px;display: flex;justify-content: space-between">
        <div>
          <el-button size="small" type="primary" @click="handleAddStu('add',{})">添加学员</el-button>
          <el-button size="small" type="primary" @click="importDialog = true">批量导入</el-button>
        </div>
        <el-button type="text" @click="exportExcel">导出清单</el-button>
      </div>
      <el-table v-loading="loading" :data="stuList">
      <el-table v-loading="loading" :data="stuList" id="table_excel">
        <el-table-column label="序号" align="center" type="index" />
        <el-table-column label="姓名" align="center" prop="name" />
        <el-table-column label="身份证号" align="center" prop="idCard" />
        <el-table-column label="手机号" align="center" prop="phone" />
        <el-table-column label="性别" align="center" prop="sex">
          <template #default="scope">
            {{scope.row.sex == 0?'男':scope.row.sex == 1?'女':'未知'}}
            {{(parseInt(scope.row.idCard.substr(16, 1))) % 2 === 0 ? "女" : "男"}}
          </template>
        </el-table-column>
        <el-table-column label="财政缴款码" align="center" prop="payCode">
@@ -98,9 +101,11 @@
        </el-table-column>
        <el-table-column label="是否已缴" align="center" prop="payStatus">
          <template #default="scope">
            {{scope.row.payStatus == 0?'未缴':scope.row.payStatus == 1?'已缴':''}}
            <span v-if="scope.row.payStatus == 1" style="color: green">已缴</span>
            <span v-else style="color: red">未缴</span>
          </template>
        </el-table-column>
        <el-table-column label="培训机构" align="center" prop="train" />
        <el-table-column label="类别" align="center" prop="payType">
          <template #default="scope">
            {{scope.row.payType == 1?'个人':scope.row.payType == 2?'集体':''}}
@@ -108,9 +113,10 @@
        </el-table-column>
        <el-table-column label="操作" align="center">
          <template #default="scope">
            <el-button size="mini" type="text" v-if="scope.row.payStatus == 1" style="color: #1890ff">查看票据</el-button>
            <el-button size="mini" type="text" style="color: #1890ff" @click="handleAddStu('edit',scope.row)">修改</el-button>
            <el-button size="mini" type="text" style="color:lightcoral" @click="handleDelete(scope.row)">删除</el-button>
            <el-button size="mini" type="text" v-if="scope.row.payStatus == 1" style="color: #1890ff" @click="checkTicket">查看票据</el-button>
            <el-button size="mini" type="text" v-if="scope.row.payStatus == 0" style="color: #1890ff" @click="goPay(scope.row)">去缴费</el-button>
            <el-button size="mini" type="text" style="color: #1890ff" v-if="!(scope.row.payCode && scope.row.payCode!=='')" @click="handleAddStu('edit',scope.row)">修改</el-button>
            <el-button size="mini" type="text" style="color:lightcoral" v-if="!(scope.row.payCode && scope.row.payCode!=='')" @click="handleDelete(scope.row)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -139,6 +145,9 @@
            <el-radio :label="0">男</el-radio>
            <el-radio :label="1">女</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item label="培训机构:">
          <el-input v-model.trim="dataForm.train"/>
        </el-form-item>
        <el-form-item label="身份证号:" prop="idCard">
          <el-input v-model.trim="dataForm.idCard"/>
@@ -205,15 +214,18 @@
<script>
import {verifyIdCard, verifySimplePhone} from "@/utils/validate";
import {verifyIdCard, verifySimplePhone} from "@/utils/validate"
import * as XLSX from 'xlsx';
import { saveAs } from 'file-saver';
import {
  addNonCoalStu, delNonCalStu, delNonCoalPay,
  editNonCoalStu,
  getNonCoalPayStudents,
  getPayTypeInfo
  getPayTypeInfo, nonCoalPersonPay
} from "@/api/specialOperationsPay/notCoalPay";
import exampleFile from '@/assets/studentInfo.xlsx'
import {getToken} from "@/utils/auth";
import {coalPersonPay} from "@/api/specialOperationsPay/coalPay";
export default {
  name: 'addStu',
  components: {},
@@ -270,6 +282,38 @@
    };
  },
  methods: {
    exportExcel() {
      var xlsxParam = { raw: true }
      let tables = document.getElementById('table_excel')
      let clonedTable = tables.cloneNode(true); // 深度克隆
      // 删除克隆表格中的最后一列
      const allRows = clonedTable.querySelectorAll('tr');
      allRows.forEach((row,index) => {
        const cells = row.querySelectorAll('th,td');
        if (cells.length > 0) {
          if(index == 0){
            row.removeChild(cells[cells.length - 2]); // 表头行要特殊处理
          }else{
            row.removeChild(cells[cells.length - 1]); // 移除最后一个单元格
          }
        }
      })
      let table_book = this.$XLSX.utils.table_to_book(clonedTable, xlsxParam);
      const table_write = this.$XLSX.write(table_book, {
        bookType: 'xlsx',
        bookSST: true,
        type: 'array'
      });
      try {
        this.$FileSaver.saveAs(
          new Blob([table_write], { type: 'application/octet-stream' }),
          `${this.stuInfo.batchName}批次学员缴费清单.xlsx`
        );
      } catch (e) {
        if (typeof console !== 'undefined') console.log(e, table_write);
      }
      return table_write
    },
    openDialog(id) {
      this.getStuList(id)
      this.id = id
@@ -292,7 +336,6 @@
        const {id,nonCoalPayId,name,idCard,sex,phone} = data
        this.dataForm = {id,nonCoalPayId,name,idCard,sex,phone}
      }
      console.log(this.dataForm,'form')
      this.dialogStatus = type
    },
@@ -395,6 +438,28 @@
        }
      })
    },
    checkTicket(){
      window.open('http://finpt.xjcz.gov.cn/fs-public/index.do')
    },
    async goPay(item){
      if(item.payCode && item.payCode !== ''){
        window.open(`http://finpt.xjcz.gov.cn/fs-public/billQuery/findByOrderId.do?orderId=${item.orderId}&deviceType=1`)
      }else{
        const query = {
          id: item.id,
          payType: 1
        }
        const res = await nonCoalPersonPay(query)
        if(res.code == 200) {
          window.open(`http://finpt.xjcz.gov.cn/fs-public/billQuery/findByOrderId.do?orderId=${res.msg}&deviceType=1`)
        }else{
          this.$message({
            type:'warning',
            message: res.msg
          })
        }
      }
    },
    handleDelete(row){
      this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
        confirmButtonText: '确定',
src/views/specialOperationsPay/notCoalPay/index.vue
@@ -2,7 +2,6 @@
  <div class="app-container">
    <div>
      <el-button
        size="medium"
        style="margin-right: 10px;background-color: #0FC7F0;color: white"
        @click="handleAdd('add',{})"
        v-if="isAhthority"
@@ -10,7 +9,6 @@
      </el-button>
      <el-date-picker
        style="width: 300px"
        size="small"
        v-model="dateValue"
        @change="changeDate"
        type="daterange"
@@ -37,16 +35,14 @@
<!--        </el-option>-->
<!--      </el-select>-->
<!--      <treeselect v-model="queryParams.deptId" :options="deptOptions" :show-count="true" placeholder="请选择组织架构" />-->
      <el-cascader v-model="queryParams.deptId" size="small" style="margin-left: 10px" :options="deptOptions" placeholder="组织架构" :props="{ expandTrigger: 'hover',checkStrictly: true,emitPath: false,value: 'id' }"></el-cascader>
      <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
        size="small"
        type="primary"
        style="margin-bottom: 10px"
        @click="resetQuery()"
@@ -70,11 +66,11 @@
          <span>{{scope.row.havePayNum}}</span>/{{scope.row.totalNum}}
        </template>
      </el-table-column>
      <el-table-column label="学员个人缴费" align="center" prop="batchName">
      <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>
          <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">
@@ -162,7 +158,6 @@
  methods: {
    getList() {
      this.loading = true;
      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) => {
@@ -204,6 +199,7 @@
      this.$refs.batchPayRef.openDialog(val,type);
    },
    handleQuery() {
      this.queryParams.pageNum = 1
      this.getList();
    },
    resetQuery() {
@@ -221,6 +217,13 @@
      this.getList();
    },
    updatePayType(row){
      if(row.totalNum < 2){
        this.$message({
          type: 'warning',
          message: '批量缴费人数不能小于二人'
        })
        return
      }
      this.$confirm('一旦关闭则无法重新开启个人缴费,必须批量缴完剩余所有学员。是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
src/views/specialOperationsPay/notCoalWorkType/index.vue
@@ -22,14 +22,12 @@
<!--        </el-option>-->
<!--      </el-select>-->
      <el-button
        size="small"
        type="primary"
        style="margin-bottom: 10px;margin-left: 20px"
        @click="handleQuery()"
      >查询
      </el-button>
      <el-button
        size="small"
        type="primary"
        style="margin-bottom: 10px"
        @click="resetQuery()"
src/views/specialOperationsPay/singlePage/index.vue
@@ -65,7 +65,7 @@
            </div>
            <div>总计应缴:<span class="cardCont">{{ item.amount }}元</span></div>
            <el-button style="margin-top: 5px" type="primary" size="small" v-if="item.payStatus == 0" @click="goPay(item)">去缴费</el-button>
            <el-button style="margin-top: 5px" type="success" size="small" v-if="item.payStatus == 1" @click="checkTicket(item)">查看票据</el-button>
            <el-button style="margin-top: 5px" type="success" size="small" v-if="item.payStatus == 1" @click="checkTicket()">查看票据</el-button>
          </div>
        </div>
        <div v-else class="feeList">
@@ -87,7 +87,7 @@
            </div>
            <div>总计应缴:<span class="cardCont" v-if="item.coalPays">{{ item.coalPays.amount }}元</span></div>
            <el-button style="margin-top: 5px" type="primary" size="small" v-if="item.payStatus == 0" @click="goPay(item)">去缴费</el-button>
            <el-button style="margin-top: 5px" type="success" size="small" v-if="item.payStatus == 1" @click="checkTicket(item)">查看票据</el-button>
            <el-button style="margin-top: 5px" type="success" size="small" v-if="item.payStatus == 1" @click="checkTicket()">查看票据</el-button>
          </div>
        </div>
      </div>
@@ -327,6 +327,9 @@
        }
      }
    },
    checkTicket(){
      window.open('http://finpt.xjcz.gov.cn/fs-public/index.do')
    },
    resetDataForm() {
      this.dataForm = {
      }
src/views/system/dept/index.vue
@@ -57,18 +57,18 @@
      :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
    >
      <el-table-column prop="deptName" label="组织架构名称"></el-table-column>
      <el-table-column prop="orderNum" label="排序" width="200"></el-table-column>
      <el-table-column prop="status" label="状态" width="200">
      <el-table-column prop="orderNum" label="排序" width="50"></el-table-column>
      <el-table-column prop="status" label="状态" width="70">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
        </template>
      </el-table-column>
      <el-table-column label="创建时间" align="center" prop="createTime" width="200">
      <el-table-column label="创建时间" align="center" prop="createTime" width="160">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding" width="200">
      <el-table-column label="操作" align="center" class-name="small-padding" width="160">
        <template slot-scope="scope">
          <el-button
            size="mini"