From 887851419d98568a815de95a6a96fbdfb3dfcf38 Mon Sep 17 00:00:00 2001 From: qx <1084500556@qq.com> Date: 星期四, 26 六月 2025 15:21:22 +0800 Subject: [PATCH] qx --- src/views/reservation/roupsettlement/index.vue | 619 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 619 insertions(+), 0 deletions(-) diff --git a/src/views/reservation/roupsettlement/index.vue b/src/views/reservation/roupsettlement/index.vue new file mode 100644 index 0000000..5c34e59 --- /dev/null +++ b/src/views/reservation/roupsettlement/index.vue @@ -0,0 +1,619 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> + <el-row> + <el-col> + <el-form-item label="濮撳悕" prop="name"> + <el-input style="width: 120px" v-model="queryParams.name" placeholder="璇疯緭鍏ュ鍚�" clearable + @keyup.enter.native="handleQuery" /> + </el-form-item> + <el-form-item label="韬唤璇佸彿" prop="idCard"> + <el-input v-model="queryParams.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" clearable @keyup.enter.native="handleQuery" /> + </el-form-item> + + <el-form-item label="鍗曚綅鍚嶇О" prop="company"> + <el-select :remote-method="getRemoteData" v-model="queryParams.company" remote default-first-option + allow-create filterable style="width: 200px" placeholder="璇烽�夋嫨鍗曚綅鍚嶇О" clearable @change="idFn1"> + <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="handleAdd1"></i> + </el-form-item> + + <el-form-item label="缁撶畻鏃堕棿"> + <el-date-picker clearable v-model="queryParams.reservationTime" type="date" value-format="yyyy-MM-dd" + placeholder="璇烽�夋嫨缁撶畻鏃堕棿"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col> + <el-form-item label="鑱旂郴鐢佃瘽" prop="phoe"> + <el-input v-model="queryParams.phoe" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" clearable @keyup.enter.native="handleQuery" + style="width: 140px" /> + </el-form-item> + <el-form-item label="缁撶畻鐘舵��" prop="isExpire"> + <el-select v-model="queryParams.isExpire" placeholder="璇烽�夋嫨鏄惁瓒呮湡" clearable style="width: 140px"> + <el-option v-for="dict in options" :key="dict.value" :label="dict.label" :value="dict.value" /> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-col> + </el-row> + </el-form> + <el-row :gutter="10" style="margin: 10px 15px"> + <el-col :span="1.5"> + <el-button type="primary" size="mini" :disabled="multiple" @click="batch">缁撶畻</el-button> + <!-- v-hasPermi="['reservation:reservation:remove']" --> + </el-col> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <el-table border v-loading="loading" :data="reservationList" @selection-change="handleSelectionChange" + :default-sort="{ prop: 'reservationTime', order: 'descending' }" highlight-current-row style="margin-left: 15px"> + <el-table-column type="selection" width="40px" align="center" fixed="left" :selectable="selectHandle" /> + <el-table-column label="濮撳悕" align="center" prop="name" width="90px" :show-overflow-tooltip="true" fixed="left" /> + <el-table-column label="鎬у埆" align="center" prop="sex" width="60px" :show-overflow-tooltip="true"> + <template slot-scope="scope"> + <span v-if="scope.row.sex == '0'">鐢�</span> + <span v-if="scope.row.sex == '1'">濂�</span> + <span v-if="scope.row.sex == '2'">鏈煡</span> + </template> + </el-table-column> + <el-table-column label="骞撮緞" align="center" prop="age" width="60px" :show-overflow-tooltip="true" /> + <el-table-column label="韬唤璇佸彿" align="center" prop="idCard" width="170px" :show-overflow-tooltip="true" /> + <el-table-column label="鍑虹敓鏃ユ湡" align="center" prop="birthday" width="100px" :show-overflow-tooltip="true"> + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.birthday, "{y}-{m}-{d}") }}</span> + </template> + </el-table-column> + <el-table-column label="鑱旂郴鐢佃瘽" align="center" prop="phoe" width="110px" :show-overflow-tooltip="true" /> + <el-table-column label="鍗曚綅鍚嶇О" align="center" prop="company" :show-overflow-tooltip="true" /> + <el-table-column label="鏀惰垂閲戦" align="center" prop="email" width="160px" /> + <el-table-column label="鐧昏鏃堕棿" align="center" prop="reservationTime" width="100px" :show-overflow-tooltip="true" + sortable> + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.reservationTime, "{y}-{m}-{d}") }}</span> + </template> + </el-table-column> + <el-table-column label="缁撶畻鏃堕棿" align="center" prop="reservationTime" width="100px" :show-overflow-tooltip="true" + sortable> + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.reservationTime, "{y}-{m}-{d}") }}</span> + </template> + </el-table-column> + <el-table-column label="缁撶畻鐘舵��" align="center" prop="tjType" width="80px" :show-overflow-tooltip="true"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.dict_team" :value="scope.row.tjType" /> + </template> + </el-table-column> + <el-table-column label="浣撴鐘舵��" align="center" prop="tjType" width="80px" :show-overflow-tooltip="true"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.dict_team" :value="scope.row.tjType" /> + </template> + </el-table-column> + + + + <el-table-column label="鎿嶄綔" align="center" width="90px" fixed="right"> + <template slot-scope="scope"> + <el-button size="mini" type="text" icon="el-icon-s-order" @click="handleUpdate1(scope.row)" + title="缁撶畻"></el-button> + </template> + </el-table-column> + </el-table> + + <div class="pag"> + <div class="pag1"> + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" @pagination="getList" /> + </div> + </div> + + + <el-dialog :title="title" :visible.sync="open1" width="1000px" append-to-body> + <el-form ref="form1" :model="form1" :rules="rules1" label-width="100px" :inline="true"> + <el-form-item label="鍗曚綅鍚嶇О" prop="cnName"> + <el-input v-model="form1.cnName" placeholder="璇疯緭鍏ヤ腑鏂囧悕绉�" /> + </el-form-item> + <el-form-item label="鑱旂郴浜�" prop="contactPerson"> + <el-input v-model="form1.contactPerson" placeholder="璇疯緭鍏ヨ仈绯讳汉" /> + </el-form-item> + <el-form-item label="鑱旂郴鐢佃瘽" prop="contactPhone"> + <el-input v-model="form1.contactPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" /> + </el-form-item> + <el-form-item label="绋庡彿" prop="taxNumber"> + <el-input v-model="form1.taxNumber" placeholder="璇疯緭鍏ョ◣鍙�" /> + </el-form-item> + <el-form-item label="娉曚汉" prop="legalPerson"> + <el-input v-model="form1.legalPerson" placeholder="璇疯緭鍏ユ硶浜�" /> + </el-form-item> + <el-form-item label="娉ㄥ唽鍦板潃" prop="registerAddress"> + <el-input v-model="form1.registerAddress" placeholder="璇疯緭鍏ユ敞鍐屽湴鍧�" /> + </el-form-item> + <el-form-item label="閫氳鍦板潃" prop="mailingAddress"> + <el-input v-model="form1.mailingAddress" placeholder="璇疯緭鍏ラ�氳鍦板潃" /> + </el-form-item> + <el-form-item label="寮�鎴烽摱琛�" prop="bankAccount"> + <el-input v-model="form1.bankAccount" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" /> + </el-form-item> + <el-form-item label="閾惰璐︽埛" prop="countNum"> + <el-input v-model="form1.countNum" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" /> + </el-form-item> + <el-form-item label="閭" prop="email"> + <el-input v-model="form1.email" placeholder="璇疯緭鍏ラ偖绠�" /> + </el-form-item> + <el-form-item label="璐熻矗浜�" prop="principal"> + <el-input v-model="form1.principal" placeholder="璇疯緭鍏ヨ礋璐d汉" /> + </el-form-item> + <el-form-item label="缃戝潃" prop="url"> + <el-input v-model="form1.url" placeholder="璇疯緭鍏ョ綉鍧�" /> + </el-form-item> + <el-form-item label="浼犵湡" prop="faxNumber"> + <el-input v-model="form1.faxNumber" placeholder="璇疯緭鍏ヤ紶鐪�" /> + </el-form-item> + <el-form-item label="琛屾斂鍖哄垝鍚嶇О" prop="areaName"> + <el-input v-model="form1.areaName" placeholder="璇疯緭鍏ヨ鏀垮尯鍒掑悕绉�" /> + </el-form-item> + <el-form-item label="鎺掑簭" prop="orderNum"> + <el-input v-model="form1.orderNum" placeholder="璇疯緭鍏ユ帓搴�" /> + </el-form-item> + <el-form-item label="鏈夋晥鏃堕棿" prop="validTime"> + <el-date-picker clearable v-model="form1.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="form1.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"> + <el-button type="primary" @click="submitFormS">纭� 瀹�</el-button> + <el-button @click="cancel1">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import { addComp } from "@/api/system/comp"; +import { + listReservation, +} from "@/api/reservation/reservation"; +import { + getconfigKey, +} from "@/api/system/tijian"; +import { getCompany, queryCompany } from "@/api/team/tuanti"; +import VTreeTransfer from "../../system/tijian/TreeTransfer.vue"; +export default { + components: { + VTreeTransfer, + }, + name: "Reservation", + dicts: [ + "dict_user_national", + "dict_user_national", + "dict_user_marry", + "sys_yes_no", + "sys_user_sex", + "dict_team", + "tj_time_region", + "dict_tjtype", + "dict_job", + "dict_user_cardtype", + "dict_ageunit", + ], + data() { + let checkPhoneNum = (rule, value, callback) => { + let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/); + if (value == "" && value == undefined && !value) { + return callback(""); + } else if (value != undefined && value != "") { + return callback(); + } else if (!patter.test(value)) { + return callback(""); + } + }; + return { + index: 0, + proIds: "", + alue: "2", + pacName: "", + url: "", + list: [], + // 閬僵灞� + loading: false, + size: "", + tcShow: false, + // 鎼滅储濂楅鍚嶅瓧 + name: "", + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄惁鏄剧ず寮瑰嚭灞� + + pacId: "", + cusIds: [], + createTimeList: "", + startTime: "", + proIds: [], + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鏍戠姸褰㈢姸 + data: [], + // 鏌ヨ鍙傛暟 + queryParam: { + pageNum: 1, + pageSize: 10, + pacName: null, + pacRemark: null, + }, + socket: null, + value: 1, + sendFlag: 0, + sector: 0, + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + }, + + fmobj: {}, + // 琛ㄥ崟鏍¢獙 + form1: {}, + open1: false, + rules1: { + cnName: [{ required: true, trigger: "blur" }], + contactPerson: [{ required: true, trigger: "blur" }], + contactPhone: [ + { + required: true, + trigger: "blur", + }, + { + pattern: /^1[3-9]\d{9}$/, + trigger: "blur", + }, + ], + }, + rules: { + cusName: [ + { required: true, validator: checkPhoneNum, trigger: "blur" }, + ], + cusSex: [ + { required: true, validator: checkPhoneNum, trigger: "change" }, + ], + cusBrithday: [ + { required: true, validator: checkPhoneNum, trigger: "blur" }, + ], + cusPhone: [ + { required: true, validator: checkPhoneNum, trigger: "blur" }, + ], + reservationTime: [ + { required: true, validator: checkPhoneNum, trigger: "change" }, + ], + timeRegion: [ + { required: true, validator: checkPhoneNum, trigger: "blur" }, + ], + }, + options: [ + { + value: "1", + label: "宸茬粨绠�", + }, + { + value: "2", + label: "鏈粨绠�", + }, + ], + CompanyList: [], + // 閬僵灞� + loading: true, + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + // 浣撴棰勭害琛ㄦ牸鏁版嵁 + reservationList: [], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + orderByColumn: "reservationTime", + isAsc: "desc", + name: null, + reservationTime: null, + idCard: null, + phoe: null, + email: null, + tjType: null, + company: null, + reservationTime: null, + isExpire: null, + }, + // 琛ㄥ崟鍙傛暟 + form: {}, + // 琛ㄥ崟鏍¢獙 + rules: { + name: [ + { + required: true, + validator: checkPhoneNum, + trigger: "blur", + }, + ], + idCard: [ + { + required: true, + validator: checkPhoneNum, + trigger: "blur", + }, + ], + phoe: [ + { + required: true, + validator: checkPhoneNum, + trigger: "blur", + }, + ], + + }, + pickerOptions: { + shortcuts: [ + { + text: "鏈�杩戜竴鍛�", + onClick(picker) { + const end = new Date(); + const start = new Date(new Date().setHours(0, 0, 0, 0)); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit("pick", [start, end]); + }, + }, + { + text: "鏈�杩戜竴涓湀", + onClick(picker) { + const end = new Date(); + const start = new Date(new Date().setHours(0, 0, 0, 0)); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); + picker.$emit("pick", [start, end]); + }, + }, + { + text: "鏈�杩戜笁涓湀", + onClick(picker) { + const end = new Date(); + const start = new Date(new Date().setHours(0, 0, 0, 0)); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); + picker.$emit("pick", [start, end]); + }, + }, + ], + }, + }; + }, + created() { + this.getList(); + }, + methods: { + + getCompanyList() { + this.loading = true; + getconfigKey("team_reservation_default_day").then((res) => { + this.queryParams.yxts = res.msg; + }); + getCompany(this.queryParam).then((response) => { + this.CompanyList = response.data; + this.total = response.total; + this.loading = false; + }); + }, + cancel1() { + this.open1 = false; + this.reset1(); + }, + submitFormS() { + this.$refs["form1"].validate((valid) => { + if (valid) { + addComp(this.form1).then((response) => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open1 = false; + this.getCompanyList(); + }); + } + }); + }, + reset1() { + this.form1 = { + company: "", + payType: "", + name: "", + phoe: "", + signingPic: "", + }; + }, + handleAdd1() { + this.reset1(); + this.open1 = true; + this.title = "娣诲姞浣撴鍗曚綅淇℃伅缁存姢"; + }, + idFn1(value) { + if (value) { + this.form.dictCompId = value; + this.CompanyList.forEach((item) => { + if (item.drugManufacturerId == this.form.dictCompId) { + this.form.compName = item.cnName; + this.queryParams.company = item.cnName; + } + }); + } + }, + /** 鏌ヨ浣撴棰勭害鍒楄〃 */ + getList() { + this.loading = true; + listReservation(this.queryParams).then((response) => { + this.reservationList = response.rows; + // response.rows.forEach((item, index) => + // {item.newID =(this.queryParams.pageNum - 1) * this.queryParams.pageSize +index +1; + // }); + this.total = response.total; + this.loading = false; + }); + // 鑾峰彇鍗曚綅淇℃伅闆嗗悎 + getCompany(this.queryParam).then((response) => { + this.CompanyList = response.data; + }); + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + // 浣撴鍏徃鎷奸煶鎼滅储 + getRemoteData(query) { + if (query) { + let compName = query; + queryCompany(compName).then((response) => { + this.CompanyList = response.data; + }); + } + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + id: null, + name: null, + sex: null, + age: null, + idCard: null, + birthday: null, + phoe: null, + email: null, + address: null, + marriage: null, + nation: null, + tjCategory: null, + tjType: null, + proIds: null, + pacId: null, + company: null, + companyId: null, + jobNo: null, + department: null, + departmentId: null, + position: null, + createTime: null, + createBy: null, + updateTime: null, + updateBy: null, + reservationTime: null, + isExpire: null, + deleted: null, + payType: null, + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.startTime = []; + this.createTimeList = []; + this.resetForm("queryForm"); + this.queryParams = { + pageNum: 1, + pageSize: 10, + cusName: null, + cusSex: null, + cusBrithday: null, + cusAddr: null, + cusPhone: null, + yykssj: "", // 棰勭害寮�濮嬫椂闂� + yyjssj: "", // 棰勭害缁撴潫鏃堕棿 + cusPostcode: null, + cusEmail: null, + indexCard: null, + cusNational: null, + cusMarryStatus: null, + cusIdcard: null, + cusIntroduce: null, + cusNumber: null, + cusIsvip: null, + }; + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.cusIds = selection.map((item) => item.idCard); + selection.forEach((item) => { + this.fmobj = item; + }); + this.ids = selection.map((item) => item.id); + this.single = selection.length !== 1; + this.multiple = !selection.length; + }, + selectHandle(row, index) { + if (row.isExpire === 1) { + return false; + } else { + return true; + } + }, + /** 缁撶畻 */ + handleUpdate1(row) { + + }, + + batch() { + + }, + }, +}; +</script> +<style scoped> +.pag { + width: 100%; + display: flex; + justify-content: center; +} + +.pag1 { + width: 30%; +} + +.el-table .el-table__body tr:hover td { + background-color: #e5f3ff; +} + +.el-table__header-wrapper .el-checkbox { + display: none; +} + + +.tab { + display: flex; + width: 100%; +} + +.dialog-footer2 { + width: 960px; + height: 36px; + display: flex; + justify-content: center; +} +</style> -- Gitblit v1.8.0