su
su1124
2023-12-25 8181583ea89c7af496e16df4f6a4953857923f63
src/views/reservation/resercopy/index.vue
@@ -1,18 +1,50 @@
<template>
  <div class="app-container">
    <el-form :model="objs" :rules="rules" ref="form" size="small" :inline="true" label-width="100px">
    <el-form
      :model="objs"
      :rules="rules"
      ref="form"
      size="small"
      :inline="true"
      label-width="100px"
    >
      <el-form-item label="单位名称" prop="drugManufacturerId">
        <el-select :remote-method="getRemoteData" v-model="objs.drugManufacturerId" remote filterable style="width: 200px"
          placeholder="请选择单位名称" clearable @clear="getCompanyList" @change="idFn">
          <el-option v-for="dict in CompanyList" :key="dict.cnName" :label="dict.cnName"
            :value="dict.drugManufacturerId" />
        <el-select
          :remote-method="getRemoteData"
          v-model="objs.drugManufacturerId"
          remote
          filterable
          style="width: 200px"
          placeholder="请选择单位名称"
          clearable
          @clear="getCompanyList"
          @change="idFn"
        >
          <el-option
            v-for="dict in CompanyList"
            :key="dict.cnName"
            :label="dict.cnName"
            :value="dict.drugManufacturerId"
          />
        </el-select>
        <i class="el-icon-circle-plus-outline" @click="handleAdd"></i>
      </el-form-item>
      <el-form-item label="部门" prop="dwDeptName">
        <el-select v-model="objs.dwDeptName" placeholder="请选择部门" style="width: 200px" clearable @change="idBm">
          <el-option v-for="dict in deptList" :key="dict.id" :label="dict.dwDeptName" :value="dict.id" />
        <el-select
          v-model="objs.dwDeptName"
          placeholder="请选择部门"
          style="width: 200px"
          clearable
          @change="idBm"
        >
          <el-option
            v-for="dict in deptList"
            :key="dict.id"
            :label="dict.dwDeptName"
            :value="dict.id"
          />
        </el-select>
        <i class="el-icon-circle-plus-outline" @click="handleAddbumen"></i>
      </el-form-item>
      <!-- <el-form-item label="分组" prop="payType">
        <el-select v-model="objs.payType" placeholder="请选择结算方式" style="width: 200px" clearable>
@@ -20,52 +52,130 @@
        </el-select>
      </el-form-item> -->
      <el-form-item label="预约时间" prop="reservationTime">
        <el-date-picker clearable v-model="objs.reservationTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
          style="width: 220px" placeholder="请选择预约日期" @change="selectTime" :picker-options="setDisabled">
        <el-date-picker
          clearable
          v-model="objs.reservationTime"
          type="date"
          format="yyyy-MM-dd"
          value-format="yyyy-MM-dd"
          style="width: 220px"
          placeholder="请选择预约日期"
          @change="selectTime"
          :picker-options="setDisabled"
        >
        </el-date-picker>
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8" style="margin: 5px 20px;">
    <el-row :gutter="10" class="mb8" style="margin: 5px 20px">
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
        <el-button
          type="primary"
          icon="el-icon-refresh"
          size="mini"
          @click="resetQuery"
          >重置</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-upload2" size="mini" @click="handleImport"
          v-hasPermi="['system:user:import']">导入</el-button>
        <el-button
          type="primary"
          icon="el-icon-upload2"
          size="mini"
          @click="handleImport"
          v-hasPermi="['system:user:import']"
          >导入</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" class="btn" icon="el-icon-thumb" :disabled="isdisabled" size="mini" @click="submitForm">
          确认</el-button>
        <el-button
          type="primary"
          icon="el-icon-upload2"
          size="mini"
         @click="importTemplate"
          v-hasPermi="['system:user:import']"
          >下载模板</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="primary"
          class="btn"
          icon="el-icon-thumb"
          :disabled="isdisabled"
          size="mini"
          @click="submitForm"
        >
          确认</el-button
        >
      </el-col>
    </el-row>
    <div style="margin: 5px 20px;width: 94%">
      <el-table v-loading="loading" :data="userList" :summary-method="getSummaries" show-summary border>
        <el-table-column label="单位名称" align="center" prop="company" width="200" />
      <el-table
        v-loading="loading"
        :data="userList"
        :summary-method="getSummaries"
        show-summary
        border
      >
        <el-table-column
          label="单位名称"
          align="center"
          prop="company"
          width="200"
        />
        <el-table-column label="工号" align="center" prop="jobNo" width="80" />
        <el-table-column label="姓名" align="center" prop="name" width="75" />
        <el-table-column label="性别" align="center" prop="sex" width="75">
          <template slot-scope="scope">
            <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" />
            <dict-tag
              :options="dict.type.sys_user_sex"
              :value="scope.row.sex"
            />
          </template>
        </el-table-column>
        <el-table-column label="身份证号" align="center" prop="idCard" width="200" />
        <el-table-column
          label="身份证号"
          align="center"
          prop="idCard"
          width="200"
        />
        <el-table-column label="年龄" align="center" prop="age" width="75" />
        <el-table-column label="出生日期" align="center" prop="birthday" width="100" />
        <el-table-column
          label="出生日期"
          align="center"
          prop="birthday"
          width="100"
        />
        <el-table-column label="职位" align="center" prop="position" />
        <el-table-column label="部门" align="center" prop="department" />
        <el-table-column label="部门编号" align="center" prop="departmentId" />
        <el-table-column label="联系电话" align="center" prop="phoe" width="120" />
        <el-table-column
          label="联系电话"
          align="center"
          prop="phoe"
          width="120"
        />
        <el-table-column label="地址" align="center" prop="address" />
        <el-table-column label="婚姻状况" align="center" prop="marriage" key="marriage" >
        <el-table-column
          label="婚姻状况"
          align="center"
          prop="marriage"
          key="marriage"
        >
        <template slot-scope="scope">
                    <dict-tag :options="dict.type.dict_user_marry" :value="scope.row.marriage" />
            <dict-tag
              :options="dict.type.dict_user_marry"
              :value="scope.row.marriage"
            />
                </template>
                </el-table-column>
      <el-table-column label="民族" align="center" prop="nation" key="nation" >
        <template slot-scope="scope">
                    <dict-tag :options="dict.type.dict_user_national" :value="scope.row.nation" />
            <dict-tag
              :options="dict.type.dict_user_national"
              :value="scope.row.nation"
            />
                </template>
                </el-table-column>
        <el-table-column label="联系邮箱" align="center" prop="email" />
@@ -76,10 +186,25 @@
    </div>
    <!-- 用户导入对话框 -->
    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
      <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :data="data" :action="upload.url"
        :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess"
        :auto-upload="false" drag>
    <el-dialog
      :title="upload.title"
      :visible.sync="upload.open"
      width="400px"
      append-to-body
    >
      <el-upload
        ref="upload"
        :limit="1"
        accept=".xlsx, .xls"
        :headers="upload.headers"
        :data="data"
        :action="upload.url"
        :disabled="upload.isUploading"
        :on-progress="handleFileUploadProgress"
        :on-success="handleFileSuccess"
        :auto-upload="false"
        drag
      >
        <i class="el-icon-upload"></i>
        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
        <div class="el-upload__tip text-center" slot="tip">
@@ -88,8 +213,13 @@
            是否更新已经存在的用户数据
          </div>
          <span>仅允许导入xls、xlsx格式文件。</span>
          <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
            @click="importTemplate">下载模板</el-link>
          <el-link
            type="primary"
            :underline="false"
            style="font-size: 12px; vertical-align: baseline"
            @click="importTemplate"
            >下载模板</el-link
          >
        </div>
      </el-upload>
      <div slot="footer" class="dialog-footer">
@@ -98,11 +228,21 @@
      </div>
    </el-dialog>
    <!-- 添加或修改体检单位信息维护对话框 -->
    <div class="dia">
      <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
        <el-form ref="form" :model="form" :rules="rules" label-width="100px" :inline="true">
      <el-dialog
        :title="title"
        :visible.sync="open"
        width="1000px"
        append-to-body
      >
        <el-form
          ref="form"
          :model="form"
          :rules="rules"
          label-width="100px"
          :inline="true"
        >
          <el-form-item label="单位名称" prop="cnName">
            <el-input v-model="form.cnName" placeholder="请输入中文名称" />
          </el-form-item>
@@ -110,7 +250,10 @@
            <el-input v-model="form.contactPerson" placeholder="请输入联系人" />
          </el-form-item>
          <el-form-item label="联系电话" prop="contactPhone">
            <el-input v-model="form.contactPhone" placeholder="请输入联系电话" />
            <el-input
              v-model="form.contactPhone"
              placeholder="请输入联系电话"
            />
          </el-form-item>
          <el-form-item label="税号" prop="taxNumber">
            <el-input v-model="form.taxNumber" placeholder="请输入税号" />
@@ -119,10 +262,16 @@
            <el-input v-model="form.legalPerson" placeholder="请输入法人" />
          </el-form-item>
          <el-form-item label="注册地址" prop="registerAddress">
            <el-input v-model="form.registerAddress" placeholder="请输入注册地址" />
            <el-input
              v-model="form.registerAddress"
              placeholder="请输入注册地址"
            />
          </el-form-item>
          <el-form-item label="通讯地址" prop="mailingAddress">
            <el-input v-model="form.mailingAddress" placeholder="请输入通讯地址" />
            <el-input
              v-model="form.mailingAddress"
              placeholder="请输入通讯地址"
            />
          </el-form-item>
          <el-form-item label="开户银行" prop="bankAccount">
            <el-input v-model="form.bankAccount" placeholder="请输入开户银行" />
@@ -143,19 +292,34 @@
            <el-input v-model="form.faxNumber" placeholder="请输入传真" />
          </el-form-item>
          <el-form-item label="行政区划名称" prop="areaName">
            <el-input v-model="form.areaName" placeholder="请输入行政区划名称" />
            <el-input
              v-model="form.areaName"
              placeholder="请输入行政区划名称"
            />
          </el-form-item>
          <el-form-item label="排序" prop="orderNum">
            <el-input v-model="form.orderNum" placeholder="请输入排序" />
          </el-form-item>
          <el-form-item label="有效时间" prop="validTime">
            <el-date-picker clearable v-model="form.validTime" type="date" value-format="yyyy-MM-dd"
              placeholder="请选择有效时间">
            </el-date-picker>
          </el-form-item><br>
            <el-date-picker
              clearable
              v-model="form.validTime"
              type="date"
              value-format="yyyy-MM-dd"
              placeholder="请选择有效时间"
            >
            </el-date-picker> </el-form-item
          ><br />
          <el-form-item label="备注" prop="remark">
            <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" :rows="2" label-width="400px"
              style="width: 830px" resize="none"></el-input>
            <el-input
              v-model="form.remark"
              type="textarea"
              placeholder="请输入内容"
              :rows="2"
              label-width="400px"
              style="width: 830px"
              resize="none"
            ></el-input>
          </el-form-item>
        </el-form>
        <div slot="footer" class="dialog-footer2">
@@ -164,11 +328,69 @@
        </div>
      </el-dialog>
    </div>
    <!-- 添加或修改部门信息维护对话框 -->
    <div class="dia">
      <el-dialog
        :title="title"
        :visible.sync="open1"
        width="1000px"
        append-to-body
      >
        <el-form
          ref="form"
          :model="form"
          :rules="rules"
          label-width="100px"
          :inline="true"
        >
        <el-form-item label="单位名称" prop="drugManufacturerId">
        <el-select
          :remote-method="getRemoteData"
          v-model="objs.drugManufacturerId"
          remote
          filterable
          style="width: 200px"
          placeholder="请选择单位名称"
          clearable
          @clear="getCompanyList"
          @change="idFn1"
        >
          <el-option
            v-for="dict in CompanyList"
            :key="dict.cnName"
            :label="dict.cnName"
            :value="dict.drugManufacturerId"
          />
        </el-select>
      </el-form-item>
          <el-form-item label="部门名称" prop="dwDeptName">
            <el-input v-model="form.dwDeptName" placeholder="请输入部门名称" />
          </el-form-item>
          <el-form-item label="签约金额" prop="signingPrice">
            <el-input
              v-model="form.signingPrice"
              placeholder="请输入签约金额"
            />
          </el-form-item>
        </el-form>
        <div slot="footer" class="dialog-footer2">
          <el-button type="primary" @click="handleAddDept">确 定</el-button>
          <el-button @click="cancel">取 消</el-button>
        </div>
      </el-dialog>
    </div>
  </div>
</template>
<script>
import { addComp, Deptlist, getDwAndDwDept, newExcelImport } from "@/api/system/comp";
import {
  addDept,
  addComp,
  Deptlist,
  getDwAndDwDept,
  newExcelImport,
} from "@/api/system/comp";
import { newConfirm, getCompany, queryCompany } from "@/api/team/tuanti";
import { getToken } from "@/utils/auth";
import { read, utils } from "xlsx";
@@ -180,20 +402,20 @@
    "sys_yes_no",
    "sys_user_sex",
    "reservation_pay_type",
    "sys_normal_disable"
    "sys_normal_disable",
  ],
  name: "Tijian",
  data() {
    let checkPhoneNum = (rule, value, callback) => {
         console.log( value)
      console.log(value);
      let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/);
      if (value == "" && value == undefined && !value) {
        return callback('');
        return callback("");
      }  else if(value != undefined && value != ""){
        return callback();
      }else if (!patter.test(value)) {
        return callback('');
        return callback("");
      }
    };
    return {
@@ -239,6 +461,7 @@
      data: {
        dwId: "",
        dwDeptId: "",
        dwName:"",
      },
      objs: {
@@ -274,7 +497,8 @@
        headers: { Authorization: "Bearer " + getToken() },
        // 上传的地址
        url:
          process.env.VUE_APP_BASE_API + "/reservation/reservation/newExcelImport",
          process.env.VUE_APP_BASE_API +
          "/reservation/reservation/newExcelImport",
      },
      // 查询参数
      queryParam: {
@@ -318,38 +542,36 @@
          { required: true, validator: checkPhoneNum,  trigger: "blur" },
        ],
        contactPerson: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" }
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        contactPhone: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" }
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        taxNumber: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" }
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        legalPerson: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" }
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        registerAddress: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" }
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        bankAccount: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" }
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        countNum: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" }
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        principal: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" }
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        faxNumber: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" }
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        mailingAddress: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" }
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        email: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" }
        ],
        email: [{ required: true, validator: checkPhoneNum, trigger: "blur" }],
        pacName: [
          { required: true, validator: checkPhoneNum,  trigger: "change" },
        ],
@@ -371,9 +593,7 @@
        createTime: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" },
        ],
        cnName: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" },
        ],
        cnName: [{ required: true, validator: checkPhoneNum, trigger: "blur" }],
        businessLicenseNumber: [
          { required: true, validator: checkPhoneNum,  trigger: "blur" },
        ],
@@ -390,9 +610,7 @@
            trigger: "change",
          },
        ],
        name: [
          { required: true, validator: checkPhoneNum,  trigger: "change" },
        ],
        name: [{ required: true, validator: checkPhoneNum, trigger: "change" }],
        contactPhone: [
          { required: true, validator: checkPhoneNum,  trigger: "change" },
        ],
@@ -417,6 +635,7 @@
      title: "",
      // 是否显示弹出层
      open: false,
      open1: false,
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -441,17 +660,44 @@
    },
  },
  methods: {
    // 保存部门
    handleAddDept() {
        let data = {
        dwName: this.data.dwName,
        dwId: this.data.dwId,
        dwDeptName: this.form.dwDeptName,
        signingPrice: this.form.signingPrice,
      };
      addDept(data).then((response) => {
        if (response.code == 200) {
          this.$modal.msgSuccess("新增成功");
          this.open1 = false;
        }
      });
    },
    idFn(value) {
      console.log(value);
      if (value) {
        this.data.dwId = value
        this.data.dwId = value;
        Deptlist(value).then((response) => {
          this.deptList = response.data;
        });
      }
    },
    idFn1(value) {
      console.log(value);
      if (value) {
        this.data.dwId = value;
        this.CompanyList.forEach(item=>{
          console.log(item);
          if(item.drugManufacturerId == this.data.dwId){
            this.data.dwName = item.cnName
          }
        })
      }
    },
    idBm(value) {
      this.data.dwDeptId = value
      this.data.dwDeptId = value;
    },
    getSummaries(param) {
@@ -459,11 +705,11 @@
      const sums = [];
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = '合计';
          sums[index] = "合计";
          return;
        }
        if (index === 1) {
          sums[index] = '总计人数';
          sums[index] = "总计人数";
          return;
        }
        if (index === 2) {
@@ -471,7 +717,7 @@
          return;
        }
        if (index === 7) {
          sums[index] = '男组人数';
          sums[index] = "男组人数";
          return;
        }
        if (index === 8) {
@@ -479,7 +725,7 @@
          return;
        }
        if (index === 9) {
          sums[index] = '男组金额';
          sums[index] = "男组金额";
          return;
        }
        if (index === 10) {
@@ -487,7 +733,7 @@
          return;
        }
        if (index === 12) {
          sums[index] = '女组人数';
          sums[index] = "女组人数";
          return;
        }
        if (index === 13) {
@@ -495,7 +741,7 @@
          return;
        }
        if (index === 14) {
          sums[index] = '女组金额';
          sums[index] = "女组金额";
          return;
        }
        if (index === 15) {
@@ -503,17 +749,15 @@
          return;
        }
        if (index === 16) {
          sums[index] = '合计金额';
          sums[index] = "合计金额";
          return;
        }
        if (index === 17) {
          sums[index] = this.ListObj.hjMoney;
          return;
        }
      });
      return sums
      return sums;
    },
    // 搜索
    getRemoteData(query) {
@@ -549,7 +793,12 @@
      this.open = true;
      this.title = "添加体检单位信息维护";
    },
    /** 部门新增按钮操作 */
    handleAddbumen() {
      this.reset();
      this.open1 = true;
      this.title = "添加部门信息维护";
    },
    /** 提交按钮 */
    submitFormS() {
@@ -572,7 +821,7 @@
        name: null,
        phoe: null,
        signingPic: null,
        pacStatus: "启用"
        pacStatus: "启用",
      };
      this.resetForm("form");
    },
@@ -600,16 +849,15 @@
        this.upload.title = "用户导入";
        this.upload.open = true;
      } else {
        this.$modal.msgError("请选择单位或部门")
        this.$modal.msgError("请选择单位或部门");
      }
    },
    /** 下载模板操作 */
    importTemplate() {
      this.download(
        "/reservation/reservation/importTemplate",
        {},
        `user_template_${new Date().getTime()}.xlsx`
        `团体预约Excel模版.xls`
      );
    },
    // 文件上传中处理
@@ -618,8 +866,8 @@
    },
    // 文件上传成功处理
    handleFileSuccess(response, file, fileList) {
      this.ListObj = response.data
      this.userList = response.data.list
      this.ListObj = response.data;
      this.userList = response.data.list;
      this.upload.open = false;
      this.upload.isUploading = false;
      this.$refs.upload.clearFiles();
@@ -719,7 +967,6 @@
      } else {
        this.$modal.msgError("请填写带星号内容");
      }
    },
  },
};