From e17642e99816a4908f81f9500759483b2925d167 Mon Sep 17 00:00:00 2001 From: qinxianzhangyao <11053546+qinxianzhangyao@user.noreply.gitee.com> Date: 星期四, 12 十月 2023 18:21:08 +0800 Subject: [PATCH] grsf --- src/store/modules/user.js | 1 src/views/login.vue | 10 + src/api/system/examcharge.js | 37 ++++ src/views/system/examcharge/index.vue | 491 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 539 insertions(+), 0 deletions(-) diff --git a/src/api/system/examcharge.js b/src/api/system/examcharge.js new file mode 100644 index 0000000..44c2c6f --- /dev/null +++ b/src/api/system/examcharge.js @@ -0,0 +1,37 @@ +import request from '@/utils/request' + +// 鑾峰彇浣撴璐圭敤 +export function getTjPrice() { + return request({ + url: '/hosp/new/water/getTjPrice', + method: 'get', + }) +} + +// 鏌ヨ鍙傛暟鍒楄〃 +export function getFlowingWaterList(query) { + return request({ + url: '/hosp/new/water/getFlowingWaterList', + method: 'get', + params: query + }) + } + + +// 浣撴鏀惰垂鎺ュ彛 +export function addOrderAndDetail(data) { + return request({ + url: '/hosp/new/water/addOrderAndDetail', + method: 'post', + data + }) +} + +// 浣撴閫�璐规寜閽帴鍙� +export function tjRefund(data) { + return request({ + url: '/hosp/new/water/tjRefund', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 20a2c06..4c23e5e 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -62,6 +62,7 @@ GetInfo({ commit, state }) { return new Promise((resolve, reject) => { getInfo().then(res => { + localStorage.setItem("securitMessage", JSON.stringify(res.securitMessage)); const user = res.user const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar; if (res.roles && res.roles.length > 0) { // 楠岃瘉杩斿洖鐨剅oles鏄惁鏄竴涓潪绌烘暟缁� diff --git a/src/views/login.vue b/src/views/login.vue index 511cc79..0e7e3c4 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -218,6 +218,16 @@ }); } else { + const securitMessage = JSON.parse(localStorage.getItem("securitMessage")); + if (securitMessage) { + if (securitMessage != null) { + this.$message({ + message: securitMessage, + type: 'success' + }); + localStorage.removeItem("securitMessage"); + } + } this.$router.push({ path: this.redirect || "/" }).catch(() => { }); } diff --git a/src/views/system/examcharge/index.vue b/src/views/system/examcharge/index.vue new file mode 100644 index 0000000..8f0d5b3 --- /dev/null +++ b/src/views/system/examcharge/index.vue @@ -0,0 +1,491 @@ +<template> + <!-- <div class="app-container"> + <div class="grid-content bg-purple"> + <el-form :inline="true" ref="form" :model="form" class="demo-form-inline" label-width="80px" :rules="rules"> + <el-form-item label="濮撳悕" prop="name"> + <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鍚�" /> + </el-form-item> + <el-form-item label="鑱旂郴鐢佃瘽" prop="phone"> + <el-input v-model="form.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" /> + </el-form-item> + <el-form-item label="浣撴椤圭洰" prop="tjPro"> + <el-input ref="inputName" v-model="form.tjPro" placeholder="璇疯緭鍏ヤ綋妫�椤圭洰" /> + </el-form-item> + <el-form-item label="鏁伴噺" prop="number"> + <el-input ref="inputName" v-model="form.number" placeholder="璇疯緭鍏ユ暟閲�" style="width: 100px;" /> + </el-form-item> + <el-form-item label="搴旀敹閲戦" prop="ys"> + <el-input v-model="form.ys" placeholder="閲戦" :disabled="true" style="width: 100px;"></el-input> + </el-form-item> + <el-form-item label="浼樻儬鎶樻墸" prop="zk"> + <el-input-number v-model="form.zk" :precision="2" :step="0.1" :max="10" :min="1" @change="numberChange" + :disabled="isfalse"></el-input-number> + </el-form-item> + <el-form-item label="瀹炴敹閲戦" prop="ss"> + <el-input v-model="form.ss" placeholder="瀹炰粯" style="width: 100px;"> + </el-input> + </el-form-item> + <el-form-item label="浠樻绫诲瀷" prop="type"> + <el-select style="width: 198px" v-model="form.type" placeholder="璇烽�夋嫨浠樻绫诲瀷"> + <el-option v-for="dict in dict.type.dict_pay_type" :key="dict.value" :label="dict.label" + :value="dict.value"></el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button style="margin-left: 15px" type="primary" size="mini" :disabled="disabled == 1 ? true : false" + @click="SubmitEvent">鏀惰垂</el-button> + <el-button style="margin-left: 10px" type="primary" size="mini" @click="resetQuery">閲嶇疆</el-button> + <el-button v-bind:icon="iconData" size="mini" @click="handleToggleSearch"></el-button> + </el-form-item> + </el-form> + </div> + + <el-row :gutter="10" class="mb8" v-if="toggleSearchStatus == '1'"> + <el-col :span="1.5"> + <el-form :inline="true" ref="form" :model="queryParams" class="demo-form-inline" label-width="80px" :rules="rules"> + <el-form-item label="濮撳悕" prop="name"> + <el-input v-model="queryParams.name" placeholder="璇疯緭鍏ュ鍚�" /> + </el-form-item> + <el-form-item label="鑱旂郴鐢佃瘽" prop="phone"> + <el-input v-model="queryParams.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" /> + </el-form-item> + </el-form> + </el-col> + <el-col :span="1.5"> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleUpdate" + v-hasPermi="['hosp:org:edit']">鏌ヨ</el-button> + </el-col> + </el-row> + <el-table v-loading="loading" :data="tableList" @selection-change="handleSelect" border> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="濮撳悕" align="center" prop="customer.cusName" width="110px" /> + <el-table-column label="鎵嬫満鍙�" align="center" prop="customer.cusPhone" width="120px" + :show-overflow-tooltip="true"></el-table-column> + <el-table-column label="璁㈠崟娴佹按鍙�" align="center" prop="waterId" width="210px" /> + <el-table-column label="浣撴椤圭洰" align="center" prop="proname" /> + <el-table-column label="搴旀敹閲戦" align="center" prop="copeWith" /> + <el-table-column label="瀹炴敹閲戦" align="center" prop="paidIn" /> + <el-table-column label="浠樻绫诲瀷" align="center" prop="payType" width="100px"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.dict_pay_type" :value="scope.row.payType" /> + </template> + </el-table-column> + <el-table-column label="鏀惰垂鍛�" align="center" prop="updateBy" /> + <el-table-column fixed="right" label="鎿嶄綔" align="center" class-name="small-padding "> + <template slot-scope="scope"> + <el-button size="mini" type="text" @click="handlerefund(scope.row)" v-hasPermi="['system:dept:edit']" + v-if="scope.row.payStasus == '1'">閫�璐�</el-button> + </template> + </el-table-column> + </el-table> + </div> --> + <div class="app-container"> + <el-row :gutter="24"> + <!--閮ㄩ棬鏁版嵁--> + <el-col :span="4" :xs="24"> + <el-form :inline="true" ref="form" :model="form" class="demo-form-inline" label-width="78px" :rules="rules"> + <el-form-item label="濮撳悕" prop="name"> + <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鍚�" /> + </el-form-item> + <el-form-item label="鑱旂郴鐢佃瘽" prop="phone"> + <el-input v-model="form.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" /> + </el-form-item> + <el-form-item label="浣撴椤圭洰" prop="tjPro"> + <el-input ref="inputName" v-model="form.tjPro" placeholder="璇疯緭鍏ヤ綋妫�椤圭洰" /> + </el-form-item> + <el-form-item label="鏁伴噺" prop="number"> + <el-input ref="inputName" v-model="form.number" placeholder="璇疯緭鍏ユ暟閲�" /> + </el-form-item> + <el-form-item label="搴旀敹閲戦" prop="ys"> + <el-input v-model="form.ys" placeholder="閲戦" :disabled="true"></el-input> + </el-form-item> + <el-form-item label="浼樻儬鎶樻墸" prop="zk"> + <el-input-number v-model="form.zk" :precision="2" :step="0.1" :max="10" :min="1" + @change="numberChange" :disabled="isfalse"></el-input-number> + </el-form-item> + <el-form-item label="瀹炴敹閲戦" prop="ss"> + <el-input v-model="form.ss" placeholder="瀹炰粯"> + </el-input> + </el-form-item> + <el-form-item label="浠樻绫诲瀷" prop="type"> + <el-select style="width: 198px" v-model="form.type" placeholder="璇烽�夋嫨浠樻绫诲瀷"> + <el-option v-for="dict in dict.type.dict_pay_type" :key="dict.value" :label="dict.label" + :value="dict.value"></el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button style="margin-left: 15px" type="primary" size="mini" + :disabled="disabled == 1 ? true : false" @click="SubmitEvent">鏀惰垂</el-button> + <el-button style="margin-left: 10px" type="primary" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + </el-col> + + <!--鐢ㄦ埛鏁版嵁--> + <el-col :span="17" :xs="24" style="padding: 0 10px;"> + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-form :inline="true" ref="form" :model="queryParams" class="demo-form-inline" label-width="80px" + :rules="rules"> + <el-form-item label="濮撳悕" prop="name"> + <el-input v-model="queryParams.name" placeholder="璇疯緭鍏ュ鍚�" /> + </el-form-item> + <el-form-item label="鑱旂郴鐢佃瘽" prop="phone"> + <el-input v-model="queryParams.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" /> + </el-form-item> + </el-form> + </el-col> + <el-col :span="1.5"> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleUpdate" + v-hasPermi="['hosp:org:edit']">鏌ヨ</el-button> + </el-col> + </el-row> + <div style="margin-bottom: 10px;"> + <el-radio-group v-model="queryParams.type" @input="handleUpdate" style="margin-left: 30px"> + <el-radio-button label="1">鏀惰垂璁板綍</el-radio-button> + <el-radio-button label="2">閫�璐硅褰�</el-radio-button> + </el-radio-group> + </div> + + + <el-table v-loading="loading" :data="tableList" @selection-change="handleSelect" border max-height="740px" + :row-style="changRed" style="margin-left: 30px;"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="濮撳悕" align="center" prop="customer.cusName" width="90px" /> + <el-table-column label="鎵嬫満鍙�" align="center" prop="customer.cusPhone" width="120px" + :show-overflow-tooltip="true"></el-table-column> + <el-table-column label="璁㈠崟娴佹按鍙�" align="center" prop="waterId" width="210px" /> + <el-table-column label="浣撴椤圭洰" align="center" prop="proname" /> + <el-table-column label="搴旀敹閲戦" align="center" prop="copeWith" width="90px" /> + <el-table-column label="瀹炴敹閲戦" align="center" prop="paidIn" width="90px" /> + <el-table-column label="浠樻绫诲瀷" align="center" prop="payType" width="90px"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.dict_pay_type" :value="scope.row.payType" /> + </template> + </el-table-column> + <el-table-column label="鏀惰垂鍛�" align="center" prop="updateBy" width="110px" /> + <el-table-column label="鏀堕��鏃堕棿" align="center" prop="updateTime" /> + <el-table-column fixed="right" label="鎿嶄綔" align="center" class-name="small-padding " width="120px" + v-if="queryParams.type == '1'"> + <template slot-scope="scope"> + <el-button size="mini" type="text" @click="handlerefund(scope.row)" + v-hasPermi="['system:dept:edit']" v-if="scope.row.remarks != '宸查��璐�'">閫�璐�</el-button> + <el-button size="mini" type="text" v-hasPermi="['system:dept:edit']" + v-if="scope.row.remarks == '宸查��璐�'">{{ scope.row.remarks }}</el-button> + <el-button size="mini" type="text" v-hasPermi="['system:dept:edit']" + v-if="scope.row.remarks != '宸查��璐�'" @click="receipt(scope.row)">琛ユ墦灏忕エ</el-button> + </template> + </el-table-column> + </el-table> + </el-col> + + </el-row> + <div style=" + position: absolute; + bottom: 100px; + width: 360px; + display: none; + "> + <div id="printBill" style="width: 280px;font-size: 1px;" ref="printContent"> + <div style="font-size: 1px;"> + <div style="text-align: center;"> + <h3>{{ hospName }}灏忕エ</h3> + </div> + + <div style="margin-top: 4px;"> + <div> + 濮撳悕:{{ formIn.name }} + </div> + <div> + 鐢佃瘽:{{ formIn.phone }} + </div> + <div> + 浣撴椤圭洰:{{ formIn.tjPro }} + </div> + <div> + 鎶樻墸:{{ formIn.zk + "%" }} + </div> + <div> + 瀹炴敹閲戦:{{ formIn.ss }}鍏� + </div> + <div> + 鏀惰垂鏃堕棿:{{ currentDate + " " + currentTime }} + </div> + </div> + </div> + </div> + </div> + </div> +</template> + +<script> +import { getTjPrice, addOrderAndDetail, tjRefund, getFlowingWaterList } from "@/api/system/examcharge"; +import { getInfo } from "@/api/login"; +import printJS from "print-js"; +export default { + dicts: ["dict_pay_type"], + name: "Examcharge", + + data() { + return { + + // 閬僵灞� + loading: false, + disabled: "", + iconData: "el-icon-arrow-down", + DataList: [], + tableList: [], + list: [], + // 閫変腑鏁扮粍 + ids: [], + getInfodis: "", + waterId: "", + isfalse: false, + toggleSearchStatus: "0", + queryParams: { + name: "", + phone: "", + type: "1" + }, + formIn: { + name: "", + tjPro: "浣撴璐�", + phone: "", + number: 1, + ys: "0", + ss: "0", + type: "0", + zk: 10, + + }, + hospName:"", + currentDate: "", + currentTime: "", + // 琛ㄥ崟鍙傛暟 + form: { + name: "", + tjPro: "浣撴璐�", + phone: "", + number: 1, + ys: "0", + ss: "0", + type: "0", + zk: 10, + + }, + // 琛ㄥ崟鏍¢獙 + rules: { + name: [{ required: true, message: "濮撳悕涓嶈兘涓虹┖", trigger: "change" }], + tjPro: [ + { required: true, message: "浣撴椤圭洰涓嶈兘涓虹┖", trigger: "change" }, + ], + type: [ + { required: true, message: "浠樻绫诲瀷涓嶈兘涓虹┖", trigger: "blur" }, + ], + }, + }; + }, + created() { + this.getList(); + this.handleUpdate(); + this.getCurrentDateTime() + + this.startTimer() + }, + methods: { + getCurrentDateTime() { + + const currentDate = new Date() + + // 鏍煎紡鍖栨棩鏈燂細YYYY-MM-DD + + const year = currentDate.getFullYear() + + const month = String(currentDate.getMonth() + 1).padStart(2, '0') + + const day = String(currentDate.getDate()).padStart(2, '0') + + this.currentDate = `${year}-${month}-${day}` + + // 鏍煎紡鍖栨椂闂达細HH:mm:ss + + const hours = String(currentDate.getHours()).padStart(2, '0') + + const minutes = String(currentDate.getMinutes()).padStart(2, '0') + + const seconds = String(currentDate.getSeconds()).padStart(2, '0') + + this.currentTime = `${hours}:${minutes}:${seconds}` + + }, + + startTimer() { + + this.timer = setInterval(() => { + + this.getCurrentDateTime() + + }, 1000) //姣忕閽熸洿鏂颁竴娆� + + }, + + beforeDestroy() { + + clearInterval(this.timer) + + },//娓呴櫎瀹氭椂鍣紝浠ラ伩鍏嶅唴瀛樻硠闇层�� + + getList() { + getTjPrice().then(res => { + if (res.data) { + const r = /^\+?[0-9][0-9]*$/; //姝f暣鏁帮紙鍙互0鎵撳ご锛� + if (r.test(res.data)) { + this.form.ys = res.data + ".00"; + } else { + this.form.ys = res.data + } + + this.form.ss = this.form.ys + } + }) + getInfo(this.queryParams).then((response) => { + this.hospName = response.hospName; + }); + + }, + changRed({ row }) { + if (row.remarks == '宸查��璐�') { // 鍙橀鑹茬殑鏉′欢 + return { + backgroundColor: "#9cdcfe" // 杩欎釜return鐨勫氨鏄牱寮� 鍙互鏄痗olor 涔熷彲浠ユ槸backgroundColor + } + } + }, + handleToggleSearch() { + if (this.toggleSearchStatus == "0") { + this.toggleSearchStatus = "1" + this.iconData = "el-icon-arrow-up" + } else { + this.toggleSearchStatus = "0" + this.iconData = "el-icon-arrow-down" + } + + }, + //閲嶇疆鎸夐挳 + resetQuery() { + this.form = { + name: null, + tjPro: "浣撴璐�", + phone: null, + number: 1, + ys: "0", + ss: "0", + type: "0", + zk: 10, + }; + this.resetForm("form"); + }, + + // 琛ㄦ牸鍗曢�� + handleSelect(selection, val) { + this.DataList = this.$refs.multipleTable.selection; + }, + handleUpdate() { + getFlowingWaterList(this.queryParams).then(res => { + this.tableList = res.data + this.tableList.forEach(element => { + element.proname = "浣撴璐�" + }); + }) + }, + + // 鎶樻墸 + numberChange(currentValue, oldValue) { + this.form.zk = currentValue; + this.form.ss = ( + this.form.ys * + (this.form.zk / 10) + ).toFixed(2); + const r = /^\+?[0-9][0-9]*$/; //姝f暣鏁帮紙鍙互浠ユ墦澶达級 + //const r=/^\+?[1-9][0-9]*$/;//姝f暣鏁� + if (r.test(this.form.ss)) { + this.form.ss = this.form.ss + ".00"; + } + }, + receipt(row) { + this.formIn = { + name: row.customer.cusName, + tjPro: "浣撴璐�", + phone: row.customer.cusPhone, + ys: row.copeWith, + ss: row.paidIn, + zk: row.discount, + } + this.$nextTick(() => { + const style = + "@media print { @page{margin:0 10mm,size:4mm 6mm;}};"; //鎵撳嵃鏃跺幓鎺夌湁椤电湁灏� + printJS({ + printable: "printBill", // 鏍囩鍏冪礌id + noPrint: ".noPrint", + type: 'html', + header: "", + targetStyles: ["*"], + maxWidth: "800", + scanStyles: true, //鎵撳嵃蹇呴』鍔犱笂锛屼笉鐒堕〉闈笂鐨刢ss鏍峰紡鏃犳晥 + style, + }); + }); + }, + + // 鏀惰垂 + SubmitEvent() { + if (this.form.name) { + this.formIn = this.form + addOrderAndDetail(this.form).then(res => { + if (res.code == 200) { + this.$modal.msgSuccess("鏀惰垂鎴愬姛"); + + this.receipt() + this.resetQuery() + this.handleUpdate() + this.getList() + } + }) + } else { + this.$modal.msgError("璇峰~鍐欏甫鏄熷彿淇℃伅"); + } + + }, + handlerefund(row) { + this.$confirm('鎮ㄧ‘瀹氳閫�璐瑰悧?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + let data = { + waterId: row.waterId + } + tjRefund(data).then(res => { + if (res.code == 200) { + this.$modal.msgSuccess("閫�璐规垚鍔�"); + this.handleUpdate() + } + + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堥��璐�' + }); + }); + + + } + }, +}; +</script> + +<style> +#sig .el-table__header-wrapper .el-checkbox { + display: none; +} +</style> \ No newline at end of file -- Gitblit v1.8.0