dist.zipBinary files differ
package.json
@@ -48,6 +48,7 @@ "highlight.js": "9.18.5", "js-beautify": "1.13.0", "js-cookie": "3.0.1", "jsbarcode": "^3.11.6", "jsencrypt": "3.0.0-rc.1", "moment": "^2.29.4", "nprogress": "0.2.0", src/api/doctor/checkAll.js
@@ -9,6 +9,15 @@ }) } // 体检科室列表显示接口 export function getBghsList(query) { return request({ url: '/check/getBghsList', method: 'get', params: query }) } //总检点击体检信息详情 export function getupdateCheckType(tjNumber) { return request({ src/api/sampling/sampling.js
@@ -12,9 +12,27 @@ // 查询体检采样管理列表 export function getList(query) { return request({ url: '/sampling/sampling/getList', url: '/sampling/sampling/getCusList', method: 'get', params: query }) } // export function getCusCyList(cusId) { // return request({ // url: '/sampling/sampling/getCusCyList?cusId=' + cusId, // method: 'get' // }) // } export function getCusCyList(cusId, isSignFor) { return request({ url: '/sampling/sampling/getCusCyList', method: 'get', params: { cusId: cusId, isSignFor: isSignFor } }) } @@ -60,3 +78,22 @@ method: 'delete' }) } // 采样登记合并项目接口 export function mergeCaiYang(data) { return request({ url: '/sampling/sampling/mergeCaiYang', method: 'post', data: data }) } // 撤销采样登记合并项目接口 export function chexiaoCaiYang(data) { return request({ url: '/sampling/sampling/chexiaoCaiYang', method: 'post', data: data }) } src/components/jianqianwenzhen/index.vue
@@ -1,6 +1,6 @@ <template> <div> <span class="txt">问诊信息</span> <span class="txt"></span> <el-form ref="form" :model="form" @@ -274,21 +274,21 @@ </el-table-column> <el-table-column label="疾病id" prop="icdId" v-if="false"> <!-- <template slot-scope="scope"> --> <el-select :remote-method="getRemoteData" v-model="icdId" remote filterable placeholder="请选择病种名" clearable > <el-option v-for="dict in rulesList" :key="dict.id" :label="dict.icdname" :value="dict.id" /> </el-select> <el-select :remote-method="getRemoteData" v-model="icdId" remote filterable placeholder="请选择病种名" clearable > <el-option v-for="dict in rulesList" :key="dict.id" :label="dict.icdname" :value="dict.id" /> </el-select> <!-- </template> --> </el-table-column> <el-table-column label="疾病名称" prop="diseaseName"> @@ -436,21 +436,21 @@ </el-table-column> <el-table-column label="疾病id" prop="icdId" v-if="false"> <!-- <template slot-scope="scope"> --> <el-select :remote-method="getRemoteData" v-model="icdId" remote filterable placeholder="请选择病种名" clearable > <el-option v-for="dict in rulesList" :key="dict.id" :label="dict.icdname" :value="dict.id" /> </el-select> <el-select :remote-method="getRemoteData" v-model="icdId" remote filterable placeholder="请选择病种名" clearable > <el-option v-for="dict in rulesList" :key="dict.id" :label="dict.icdname" :value="dict.id" /> </el-select> <!-- </template> --> </el-table-column> <el-table-column label="疾病名称" prop="diseaseName"> @@ -699,8 +699,8 @@ } }; return { zhiyebingshi:true, jiwangbingshi:true, zhiyebingshi: true, jiwangbingshi: true, diseaseNames: "", zhenghuzangList: [], options: [ @@ -821,6 +821,10 @@ if (this.form.yinjiuyear == null) { this.form.yinjiuyear = "0"; } // 设置默认值 if (this.form.gongLing == null) { this.form.gongLing = 1; // 工龄默认值 } this.form.tjAskHistorysList = response.data.tjAskHistorysList; // this.isdisabled= true }); @@ -843,15 +847,15 @@ } else { this.sex = false; } if (this.form.tjLx === "02") { this.zhiye = true; this.zhiyebingshi = true; this.jiwangbingshi = false; } else { this.zhiye = false; this.zhiyebingshi = false; this.jiwangbingshi = true; } if (this.form.tjLx === "02") { this.zhiye = true; this.zhiyebingshi = true; this.jiwangbingshi = false; } else { this.zhiye = false; this.zhiyebingshi = false; this.jiwangbingshi = true; } if (this.form.xiyan == null) { this.form.xiyan = "1"; } @@ -968,11 +972,11 @@ this.icdId = item.id; } }); this.form.tjAskHistorysList.forEach(item => { if(item.diseaseName == sel){ item.icdId = this.icdId this.form.tjAskHistorysList.forEach((item) => { if (item.diseaseName == sel) { item.icdId = this.icdId; } }) }); }, // 搜索 getRemoteData(query) { @@ -1025,7 +1029,7 @@ this.chageall = selection; }, /** 提交按钮 */ submitForm() { /* submitForm() { // this.form.tjAskHistorysList.forEach(element=>{ // element.icdId = this.icdId; // }) @@ -1033,7 +1037,27 @@ this.$modal.msgSuccess("修改成功"); this.form = response.data; }); }, }, */ submitForm() { this.$refs.form.validate((valid) => { if (valid) { this.$emit('submitLoading', true); updateHistory(this.form) .then((response) => { this.$message.success("修改成功"); this.form = response.data; // 更新表单数据 }) .catch((error) => { this.$message.error("修改失败"); }) .finally(() => { this.$emit('submitLoading', false); }); } else { this.$message.error("请检查表单内容"); } }); } }, }; </script> src/views/doctor/bgsh/index.vue
@@ -1,49 +1,132 @@ <template> <div> <el-form :model="queryParams" ref="tableList" :inline="true" label-width="76px" style="margin-top: 10px"> <el-form :model="queryParams" ref="tableList" :inline="true" label-width="76px" style="margin-top: 10px" > <el-form-item label="姓名" prop="name"> <el-input v-model="queryParams.name" style="width: 120px" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery"></el-input> <el-input v-model="queryParams.name" style="width: 120px" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery" ></el-input> </el-form-item> <el-form-item label="体检号" prop="tjNumber"> <el-input ref="inputName" v-model="queryParams.tjNumber" style="width: 180px" placeholder="请输入体检号" clearable @keyup.enter.native="submitForm" @blur="hb"></el-input> <el-input ref="inputName" v-model="queryParams.tjNumber" style="width: 180px" placeholder="请输入体检号" clearable @keyup.enter.native="submitForm" @blur="hb" ></el-input> </el-form-item> <el-form-item label="体检时间" prop="tjTime"> <el-date-picker v-model="startTime" type="datetimerange" align="right" :picker-options="pickerOptions" style="width: 310px" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:00:00']" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" @change="dateChangebirthday1"> </el-date-picker> </el-form-item> <el-form-item label="单位名称" prop="tjCompName" style="margin-left: 20px;"> <el-select :remote-method="getRemoteData" v-model="queryParams.tjCompName" value-key="drugManufacturerId" style="width: 180px" remote filterable placeholder="请选择单位名称" clearable @change="searchSelect"> <el-option v-for="dict in CompanyList" :key="dict.drugManufacturerId" :label="dict.cnName" :value="dict" /> <el-date-picker v-model="startTime" type="datetimerange" align="right" :picker-options="pickerOptions" style="width: 310px" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:00:00']" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" @change="dateChangebirthday1" > </el-date-picker> </el-form-item> <el-form-item label="单位名称" prop="tjCompName" style="margin-left: 20px" > <el-select :remote-method="getRemoteData" v-model="queryParams.tjCompName" value-key="drugManufacturerId" style="width: 180px" remote filterable placeholder="请选择单位名称" clearable @change="searchSelect" > <el-option v-for="dict in CompanyList" :key="dict.drugManufacturerId" :label="dict.cnName" :value="dict" /> </el-select> </el-form-item> <el-form-item> <el-button type="primary" size="mini" @click="submitForm" style="margin-right:15px;">搜索</el-button> <el-button type="primary" size="mini" @click="submitForm" style="margin-right: 15px" >搜索</el-button > <el-button size="mini" @click="resetQuery">重置</el-button> </el-form-item> </el-form> <el-row :gutter="10" class="mb8" style="margin-left:14px ;"> <el-row :gutter="10" class="mb8" style="margin-left: 14px"> <el-col :span="1.5"> <el-button type="primary" size="mini" @click="radioChange" >核收</el-button> <el-button type="primary" size="mini" @click="radioChange" >核收</el-button > </el-col> </el-row> <template> <el-table v-loading="loading" :data="checkList" ref="table" border @selection-change="handleSelectionChange" style="margin: 20px; width: 98%"> <el-table-column type="selection" width="40px" align="center" fixed="left" /> <el-table v-loading="loading" :data="checkList" ref="table" border @selection-change="handleSelectionChange" style="margin: 20px; width: 98%" > <el-table-column type="selection" width="40px" align="center" fixed="left" /> <!-- <template slot="empty">数据正在加载中</template> --> <el-table-column label="体检号" align="center" prop="tjNumber" :show-overflow-tooltip="true" width="160px" fixed="left" /> <el-table-column label="姓名" align="center" prop="cusName" :show-overflow-tooltip="true" width="100px" fixed="left" /> <el-table-column label="体检号" align="center" prop="tjNumber" :show-overflow-tooltip="true" width="160px" fixed="left" /> <el-table-column label="姓名" align="center" prop="cusName" :show-overflow-tooltip="true" width="100px" fixed="left" /> <el-table-column label="性别" align="center" prop="cusSex" :show-overflow-tooltip="true" width="55px"> <el-table-column label="性别" align="center" prop="cusSex" :show-overflow-tooltip="true" width="55px" > <template slot-scope="scope"> <span v-if="scope.row.cusSex == '0'">男</span> <span v-if="scope.row.cusSex == '1'">女</span> @@ -51,23 +134,63 @@ <span v-if="scope.row.cusSex == '9'">未说明性别</span> </template> </el-table-column> <el-table-column label="出生日期" align="center" prop="cusBrithday" :show-overflow-tooltip="true" width="110px" /> <el-table-column label="电话" align="center" prop="cusPhone" :show-overflow-tooltip="true" width="130px" /> <el-table-column label="出生日期" align="center" prop="cusBrithday" :show-overflow-tooltip="true" width="110px" /> <el-table-column label="电话" align="center" prop="cusPhone" :show-overflow-tooltip="true" width="130px" /> <el-table-column label="体检时间" align="center" prop="tjTime" :show-overflow-tooltip="true" width="110px" /> <el-table-column label="完成时间" align="center" prop="finishTime" :show-overflow-tooltip="true" width="160px" /> <el-table-column label="状态" align="center" prop="tjStatus" :show-overflow-tooltip="true" width="50px"> <el-table-column label="体检时间" align="center" prop="tjTime" :show-overflow-tooltip="true" width="110px" /> <el-table-column label="完成时间" align="center" prop="finishTime" :show-overflow-tooltip="true" width="160px" /> <el-table-column label="状态" align="center" prop="tjStatus" :show-overflow-tooltip="true" width="50px" > <template slot-scope="scope"> <span>{{ scope.row.tjStatus == "1" ? "已检" : "未检" }}</span> </template> </el-table-column> <el-table-column label="单位名称" align="center" prop="tjCompName" :show-overflow-tooltip="true" /> <el-table-column label="单位名称" align="center" prop="tjCompName" :show-overflow-tooltip="true" /> </el-table> <div class="pag"> <div class="pag1"> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.pageSize" @pagination="getList" /> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.pageSize" @pagination="getList" /> </div> </div> </template> @@ -76,7 +199,7 @@ <script> import { getcheckList, heXiaoByIds } from "@/api/doctor/checkAll"; import { getBghsList, heXiaoByIds } from "@/api/doctor/checkAll"; import { getCompany, queryCompany } from "@/api/team/tuanti"; import ViewPdf from "@/components/ViewPdf"; import { getNewDateList } from "@/api/hosp/order"; @@ -153,7 +276,7 @@ created() { // this.getNowTime(); this.getdate(); }, @@ -216,7 +339,7 @@ } // 页面数据 getcheckList(this.queryParams).then((response) => { getBghsList(this.queryParams).then((response) => { if (response.code == 200) { this.loading = false; if (response.data) { @@ -231,7 +354,6 @@ this.checkList = []; } } }), // 获取单位信息集合 getCompany(this.queryParam).then((response) => { @@ -247,12 +369,12 @@ // 单选按钮 radioChange() { this.loading = true; heXiaoByIds(this.orderIds).then((response) => { if(response.code == 200){ if (response.code == 200) { this.$modal.msgSuccess("报告已核收!请前往报告打印页面查看!"); this.getList(); } }); }, @@ -275,9 +397,9 @@ dateChangebirthday1(val) { this.startTime = val; }, hb(){ hb() { console.log(this.queryParams.tjNumber); if (this.queryParams.tjNumber != "") { if (this.queryParams.tjNumber != "") { this.submitForm(); } }, @@ -295,7 +417,7 @@ } // 页面数据 getcheckList(this.queryParams).then((response) => { getBghsList(this.queryParams).then((response) => { if (response.data.customers != null) { this.checkList = response.data.customers; this.checkList.forEach((item) => { @@ -310,7 +432,7 @@ }, // 重置 resetQuery() { this.startTime=[] this.startTime = []; this.resetForm("tableList"); this.submitForm(); }, src/views/doctor/checkAll/index.vue
@@ -493,9 +493,7 @@ </div> <div v-else> <table style="width: 100%" v-if="tjproject != '1'"> <tr style="border: 1px solid #dfe6ec; " > <tr style="border: 1px solid #dfe6ec"> <td style=" border: 1px solid #dfe6ec; @@ -506,7 +504,10 @@ > 检查所见: </td> <td style="border: 1px solid #dfe6ec; height: 52px;" colspan="2"> <td style="border: 1px solid #dfe6ec; height: 52px" colspan="2" > <textarea placeholder="请输入内容" :autosize="{ minRows: 3, maxRows: 4 }" @@ -1151,6 +1152,9 @@ name: "checkAll", data() { return { // 更新总检建议 initialTotalCheckAdvice: "", initialState: "", preObj: {}, baogao: [], flags: false, @@ -1698,6 +1702,21 @@ } }, /* changRed(row) { if (row.label === "↑") { return { color: "green", // 设置上箭头为绿色 }; } else if (row.label === "↓") { return { color: "red", // 设置下箭头为红色 }; } // 默认颜色 return { color: "black", }; }, */ handleCurrentChange(val) { if (val != null) { this.handleClick(val); @@ -1709,15 +1728,7 @@ this.$refs.Pre.open = false; this.tableAll = row; this.tjproject = "0"; // if (this.tableAll.cusSex === 0) { // this.tableAll.cusSex = "男"; // } // if (this.tableAll.cusSex === 1) { // this.tableAll.cusSex = "女"; // } // if (this.tableAll.cusSex === 2) { // this.tableAll.cusSex = "未知"; // } this.tjNumber = this.tableAll.tjNumber; getState(this.tjNumber).then((res) => { this.status = res.data; @@ -1737,8 +1748,17 @@ this.changedate = response.data; if (this.changedate) { this.changedate.forEach((item) => { this.textarea1 = item.checkAdvice; this.textarea1 = item.checkAdvice || ""; }); // 这里设置初始值 this.initialTotalCheckAdvice = this.textarea1; // 保存总检建议 // 保存初始状态 this.initialState = JSON.parse( JSON.stringify(this.changedate) ); for (let i = 0; i < this.changedate.length; i++) { this.remark = this.changedate[i].remark; } @@ -1791,8 +1811,12 @@ for (let i = 0; i < this.changedate.length; i++) { this.remark = this.changedate[i].remark; } this.initialState = JSON.parse( JSON.stringify(this.changedate) ); this.changedate.forEach((item) => { this.textarea1 = item.checkAdvice; this.textarea1 = item.checkAdvice || ""; // this.remark = item.remark; // item.sons.forEach((item3) => { @@ -1805,6 +1829,11 @@ // }); // item.remark = ""; }); // 保存总检建议 this.totalCheckAdvice = this.changedate.map( (item) => item.totalCheckAdvice ); } else { this.$message({ type: "warning ", @@ -1855,29 +1884,44 @@ if (this.loading) { return; } this.$confirm("确定要提交吗?") .then((_) => { this.loading = true; this.timer = setTimeout(() => { done(); this.determine(); // 动画关闭需要一定的时间 setTimeout(() => { this.loading = false; }, 400); }, 2000); }) .catch((_) => { this.drawer = false; let data = { userId: this.userId, tjNumber: this.tjNumber, state: 1, id: this.MsgId, }; getfiedState(data).then((res) => {}); this.submitForm(); }); // 检查是否有修改 let isModified = JSON.stringify(this.changedate) !== JSON.stringify(this.initialState) || (this.textarea1 !== this.initialTotalCheckAdvice && this.textarea1 !== null); console.log("Initial Total Check Advice:", this.initialTotalCheckAdvice); console.log("Current textarea1:", this.textarea1); if (isModified) { // 如果有修改,弹出确认框 this.$confirm("检测内容有修改,确定要提交吗?") .then(() => { this.loading = true; this.timer = setTimeout(() => { done(); this.determine(); setTimeout(() => { this.loading = false; }, 400); }, 2000); }) .catch(() => { // 用户取消操作 this.drawer = false; let data = { userId: this.userId, tjNumber: this.tjNumber, state: 1, id: this.MsgId, }; getfiedState(data).then((res) => {}); this.submitForm(); }); } else { // 如果没有修改,直接关闭 done(); } }, handleClose1() { this.jianqians = false; @@ -1904,7 +1948,7 @@ // } // }, change(vale) {}, determine() { /* determine() { let tjNumber = this.tableAll.tjNumber; let advice = this.textarea1; let data = { @@ -1912,6 +1956,7 @@ advice, checkStatus: 1, }; this.loading = true; getTjdetailList(data).then((response) => { if (response.code === 200) { this.$modal.msgSuccess("提交成功"); @@ -1930,7 +1975,7 @@ this.$modal.msgError( "打印报告失败,请前往报告打印页面补打报告!" ); }); }) getfiedState(data).then((res) => { this.drawer = false; }); @@ -1938,7 +1983,6 @@ this.queryParams.pageSize = 10; this.submitForm(); this.$forceUpdate(); } }); for (let i = 0; i < this.changedate.length; i++) { @@ -1958,6 +2002,89 @@ // this.proIds = item.parentId; // // this.remark = item.remark; // }); }, */ determine() { let tjNumber = this.tableAll.tjNumber; let advice = this.textarea1; let data = { tjNumber, advice, checkStatus: 1, }; // 开始加载 this.loading = true; // 提交数据 getTjdetailList(data) .then((response) => { if (response.code === 200) { this.$modal.msgSuccess("提交成功"); // 准备生成报告的请求数据 let reportData = { userId: this.userId, tjNumber: tjNumber, state: 1, id: this.MsgId, }; // 生成报告并保持 loading 打开 const reportPromise = gettoPdf(tjNumber) .then((res) => { this.$modal.msgSuccess("已生成报告!请前往报告核收页面确认!"); }) .catch((error) => { this.$modal.msgError( "打印报告失败,请前往报告打印页面补打报告!" ); }); // 更新状态并提交修改请求 const statePromise = getfiedState(reportData).then((res) => { this.drawer = false; }); // 处理其他修改操作 const updatePromises = this.changedate.map((item) => { this.proIds = item.parentId; let remarks = item.remark; let updateOrderRemarkVos = [ { tjNumber, proId: this.proIds.toString(), remarks, }, ]; return getModified(updateOrderRemarkVos); // 返回 Promise }); // 等待所有请求完成 Promise.all([reportPromise, statePromise, ...updatePromises]) .then(() => { // 所有请求完成,关闭 loading this.loading = false; // 更新分页信息 this.queryParams.page = 1; this.queryParams.pageSize = 10; this.submitForm(); this.$forceUpdate(); }) .catch((error) => { // 处理错误情况 this.loading = false; console.error("发生错误:", error); }); } else { // 提交失败,关闭 loading this.loading = false; } }) .catch((error) => { // 提交请求失败,关闭 loading this.loading = false; console.error("提交请求失败:", error); }); }, }, }; src/views/hosp/customer/index.vue
@@ -17,17 +17,6 @@ @keyup.enter.native="handleQuery" /> </el-form-item> <!-- <el-form-item label="性别" prop="cusSex"> <el-select v-model="queryParams.cusSex" placeholder="请选择性别" clearable style="width:120px"> <el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value"/> </el-select> </el-form-item> --> <!-- <el-form-item label="出生日期" prop="cusBrithday"> <el-date-picker clearable v-model="queryParams.cusBrithday" type="date" value-format="yyyy-MM-dd" placeholder="请选择出生日期"></el-date-picker> </el-form-item> --> <!-- <el-form-item label="现住址" prop="cusAddr"> <el-input v-model="queryParams.cusAddr" placeholder="请输入现居住地址" clearable @keyup.enter.native="handleQuery"/> </el-form-item> --> <el-form-item label="联系电话" prop="cusPhone"> <el-input v-model="queryParams.cusPhone" src/views/hosp/history/index.vue
@@ -138,7 +138,7 @@ </div> </div> <div class="hist3"> <jianqianwenzhen :jianqianwenzhendata="jianqianwenzhendata"></jianqianwenzhen> <jianqianwenzhen @submitLoading="handleLoading" :jianqianwenzhendata="jianqianwenzhendata"></jianqianwenzhen> </div> </div> @@ -217,6 +217,7 @@ activeName: "1", // 遮罩层 loading: true, tableLoading: false, isdisabled: false, // 选中数组 ids: [], @@ -404,6 +405,8 @@ }); let tjNumber = selection.map((item) => item.tjNumber); this.jianqianwenzhendata = tjNumber; // getInfoById(tjNumber).then((response) => { // this.jianqianwenzhendata = response.data; // if (this.form.xiyan == null) { @@ -436,7 +439,9 @@ } }, handleLoading(isLoading) { this.loading = isLoading; } src/views/hosp/order/index.vue
@@ -246,8 +246,9 @@ :show-overflow-tooltip="true" > <template slot-scope="scope"> <span v-if="scope.row.tjType == '2'">个人</span> <span v-if="scope.row.tjType == '1'">团队</span> <dict-tag :options="dict.type.dict_team" :value="scope.row.tjType" /> <!-- <span v-if="scope.row.tjType == '2'">个人</span> <span v-if="scope.row.tjType == '1'">团队</span> --> </template> </el-table-column> <el-table-column @@ -1425,7 +1426,7 @@ components: { ViewPdf, }, dicts: ["dict_pay_type"], dicts: ["dict_pay_type","dict_team"], name: "Order", data() { return { src/views/sampling/sampling/index.vue
@@ -67,13 +67,13 @@ @click="handleQuery" >查询</el-button > <el-button <!-- <el-button type="primary" icon="el-icon-thumb" size="mini" style="margin:0 15px;" @click="Confirmreceipt" >确认采样</el-button > > --> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" >重置</el-button > @@ -90,9 +90,43 @@ <el-radio-button label="0">已采样</el-radio-button> </el-radio-group> </el-col> <el-col :span="12" v-if="tableList.length > 1 && tjStatus == 0"> <el-button type="primary" plain v-hasPermi="['hosp:detail:add']" >合并样本</el-button <el-col :span="12" style="margin: 10px 15px" v-if="samplingList.length > 0 && tjStatus == 1" > <el-button type="primary" @click="Merging">合并项目</el-button> <el-button type="primary" icon="el-icon-thumb" style="margin: 0 15px" v-hasPermi="['hosp:detail:add']" @click="Confirmreceipt" >确认采样</el-button > <el-button type="primary" :disabled="!disabled" @click="Cancellation" >撤销合并</el-button > <el-button type="primary" :disabled="!selectList.length" @click="Collection" >采样打码</el-button > </el-col> <el-col :span="12" style="margin: 10px 15px" v-show="samplingList.length > 0 && tjStatus == 0" > <el-button type="primary" :disabled="!selectList.length" @click="Collection" >补打条码</el-button > <el-button type="primary" :disabled="!disabled" @click="Cancellation" >撤销合并</el-button > </el-col> </el-row> @@ -101,7 +135,7 @@ <div style="width: 40%; margin-right: 20px"> <el-table id="ta" v-loading="loading" v-loading="loading1" ref="tb" :data="samplingList" @selection-change="handleSelectionChange" @@ -113,19 +147,19 @@ <el-table-column label="体检号" align="center" prop="customer.tjNumber" prop="tjNumber" width="160px" /> <el-table-column label="姓名" align="center" prop="customer.cusName" prop="cusName" width="80px" /> <el-table-column label="性别" align="center" prop="customer.cusSex" prop="cusSex" width="60px" > <!-- <template slot-scope="scope"> @@ -140,17 +174,17 @@ <el-table-column label="手机号" align="center" prop="customer.cusPhone" prop="cusPhone" width="120px" /> <el-table-column label="申请时间" align="center" prop="customer.applicationTime" prop="applicationTime" width="210" > <template slot-scope="scope"> <span>{{ parseTime(scope.row.customer.applicationTime) }}</span> <span>{{ parseTime(scope.row.applicationTime) }}</span> </template> </el-table-column> </el-table> @@ -180,34 +214,37 @@ prop="specimenType" width="120" > <template slot-scope="scope"> <dict-tag :options="dict.type.sys_dict_specimen" :value="scope.row.specimenType" /> </template> </el-table-column> <el-table-column label="项目名称" align="center" prop="proName" /> <el-table-column label="采样编号" align="center" prop="jyxh" :show-overflow-tooltip="true" width="120" /> <el-table-column label="项目名称" align="center" prop="proName" /> <!-- <el-table-column label="性别" align="center" prop="proSex" width="90" /> /> --> <el-table-column label="空腹" label="是否合并" align="center" prop="proCheckMethod" prop="isMerge" width="90" /> <el-table-column label="采样编号" align="center" prop="samplingNumber" :show-overflow-tooltip="true" width="120" /> <el-table-column > <template slot-scope="scope"> <span :style="{ color: scope.row.isMerge === 0 ? '' : '#409EFF' }" > {{ scope.row.isMerge === 0 ? "未合并" : "已合并" }} </span> </template> </el-table-column> <!-- <el-table-column label="采样状态" align="center" prop="isSignFor" @@ -219,7 +256,7 @@ :value="scope.row.isSignFor" /> </template> </el-table-column> </el-table-column> --> <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" @@ -231,6 +268,29 @@ </template> </el-table-column> --> </el-table> </div> <div id="printSection" style="display: none"> <!-- 动态生成多个条形码的容器 --> <div v-for="(item, index) in selectList" :key="index"> <svg :id="'barcode' + index"></svg> <div class="name">{{ item.proName }}</div> <div class="last"> <p>{{ item.cusName }}</p> <div> <span>{{ item.customer.cusSex == 0 ? "男" : "女" }}</span> <span>{{ item.customer.age }}</span> </div> </div> <div class="tj"> <span>体检中心</span> <span>{{ item.cardId.substring(0, 14) }}</span> </div> <div class="tj"> <span>{{ item.jyxh }}</span> <span>{{ formatDate(item.applicationTime) }}</span> </div> </div> </div> </div> <!-- @@ -284,9 +344,13 @@ addSampling, updateSampling, confirmSampling, getCusCyList, mergeCaiYang, chexiaoCaiYang, } from "@/api/sampling/sampling"; import { getNewDateList } from "@/api/hosp/order"; import moment from "moment"; import ItemVue from "../../../layout/components/Sidebar/Item.vue"; export default { dicts: [ @@ -300,10 +364,12 @@ data() { return { list: [], selectList: "", selectList: [], selectedRows: [], createTimeList: [], // 遮罩层 loading: true, loading1: true, // 选中数组 ids: [], // 绑定单选按钮 @@ -380,13 +446,21 @@ }, created() { // this.getNowTime(); this.getdate(); }, mounted() { this.$nextTick(() => { this.$refs.inputName.focus(); }); }, computed: { disabled() { return ( this.selectList.length > 0 && this.selectList[this.selectList.length - 1].isMerge === 1 ); }, }, methods: { getdate() { @@ -429,19 +503,53 @@ dateChangebirthday1(val) { this.createTimeList = val; }, formatDate(applicationTime) { // 确保 applicationTime 是有效的字符串 if (applicationTime) { return applicationTime.split(" ")[0]; // 通过空格分隔日期和时间,只返回日期部分 } return ""; // 如果 applicationTime 无效,返回空字符串 }, /** 查询体检采样管理列表 */ getList() { this.loading = true; this.loading1 = true; this.queryParams.isSignFor = this.tjStatus; if(this.createTimeList){ if (this.createTimeList) { this.queryParams.beginTime = this.createTimeList[0]; this.queryParams.endTime = this.createTimeList[1]; }else if(this.createTimeList == null){ this.queryParams.endTime = this.createTimeList[1]; } else if (this.createTimeList == null) { this.queryParams.beginTime = null; this.queryParams.endTime = null; this.queryParams.endTime = null; } getList(this.queryParams).then((response) => { this.loading1 = false; if (response.data) { if (!response.data.list || response.data.list.length === 0) { this.samplingList = []; this.tableList = []; this.loading1 = false; this.loading = false; return; } else { this.samplingList = response.data.list; console.log(this.samplingList, 888); // 判断是否需要刷新右边表格 this.$nextTick(() => { this.$refs.tb.toggleRowSelection(this.samplingList[0], true); this.fetchData(this.samplingList[0].cusId); }); } this.total = response.data.total; this.loading1 = false; } else { this.samplingList = []; this.tableList = []; this.loading1 = false; } }); /* getList(this.queryParams).then((response) => { if (response.data) { if (response.data.list == null) { this.samplingList = []; @@ -449,6 +557,8 @@ this.loading = false; } else { this.samplingList = response.data.list; console.log(this.samplingList,888); this.loading = false; if (this.samplingList.length != 0) { this.$nextTick(() => { @@ -465,9 +575,8 @@ this.tableList = []; this.loading = false; } }); }); */ }, // 取消按钮 cancel() { this.open = false; @@ -506,15 +615,17 @@ }, /** 重置按钮操作 */ resetQuery() { this.createTimeList=[] this.createTimeList = []; this.resetForm("queryForm"); this.handleQuery(); }, // 单选框选中数据 handleSelectionChange(selection) { /* handleSelectionChange(selection) { this.selectList = selection; selection.forEach((element) => { this.tableList = element.list; console.log(this.tableList, 111); if (this.tableList.length != 0) { this.$nextTick(() => { this.$refs.tab1.toggleAllSelection(this.tableList, true); @@ -530,7 +641,272 @@ } this.single = selection.length !== 1; this.multiple = !selection.length; }, */ handleSelectionChange(selection) { // 清空右侧表格的数据 this.tableList = []; // 只有一个人被选中时进行操作 if (selection.length === 1) { const selectedPerson = selection[0]; // 获取选中的那个人 const cusId = selectedPerson.cusId; // 假设cusId在选中的对象中 this.fetchData(cusId); } else { // 如果选中多人,则取消选中 if (selection.length > 1) { let del_row = selection.shift(); this.$refs.tb.toggleRowSelection(del_row, false); // 设置这一行取消选中 } } // 更新选择状态 this.single = selection.length === 1; this.multiple = selection.length === 0; this.selectedRows = selection; }, fetchData(cusId) { this.loading = true; // 显示加载状态 console.log(this.tjStatus, 999); getCusCyList(cusId, this.tjStatus) // 调用API获取数据 .then((response) => { if (response.data) { this.tableList = response.data; // 确认 list 存在后再进行赋值 console.log(this.tableList, 123); } else { // 如果没有数据或 list 为空,清空表格并提示 this.tableList = []; } }) .catch((error) => { console.error("Error fetching data:", error); }) .finally(() => { this.loading = false; // 隐藏加载状态 }); }, /* 点击合并按钮 */ /* Merging() { // 检查是否选中了数据 if (this.selectedRows.length === 0) { this.$message.error("至少选中一个人"); return; } if (this.selectList.length === 0) { this.$message.error("请选择要合并项目"); return; } // 获取 tableList 第一行的 specimenTypeCode 作为基准 const baseSpecimenTypeCode = this.selectList[0].specimenTypeCode; // 检查 specimenTypeCode 是否一致 const canMergeBySpecimenTypeCode = this.selectList.every( (row) => row.specimenTypeCode === baseSpecimenTypeCode ); // 根据 canMergeBySpecimenTypeCode 判断是否合并 if (canMergeBySpecimenTypeCode) { this.$message.success("合并成功。"); console.log("合并的行:", this.selectedRows); } else { this.$message.error("项目的 不一致,无法合并!"); } }, */ /* 点击合并按钮 */ Merging() { // 检查是否选中了数据 if (this.selectedRows.length === 0) { this.$message.error("至少选中一个人"); return; } if (this.selectList.length === 0) { this.$message.error("请选择要合并项目"); return; } if (this.selectList.every((item) => item.isMerge === 0)) { const baseSpecimenTypeCode = this.selectList[0].specimenTypeCode; // 检查 specimenTypeCode 是否一致 const canMergeBySpecimenTypeCode = this.selectList.every( (row) => row.specimenTypeCode === baseSpecimenTypeCode ); // 根据 canMergeBySpecimenTypeCode 判断是否合并 if (canMergeBySpecimenTypeCode) { let data = this.ids; mergeCaiYang(data).then((response) => { this.$message.success("合并成功。"); console.log("合并的行:", this.selectedRows); // this.getList(); this.fetchData(this.selectedRows[0].cusId); }); } else { this.$message.error("标本类型不一致,无法合并!"); } } else { this.$message.error("该项目已合并"); } }, /** 点击撤销按钮 **/ Cancellation() { let data = this.ids; console.log("撤销"); if (data.length === 0) { // 如果没有已合并的项目,给出提示信息 this.$message.error("没有已合并的项目可以撤销!"); return; } console.log("撤销的已合并项目ID:", data); // 调用撤销采样的接口 chexiaoCaiYang(data) .then((res) => { if (res && res.code === 200) { this.$message.success("撤销成功!"); // 刷新数据列表或进行其他操作 // this.getList(); this.fetchData(this.selectedRows[0].cusId); } else { this.$message.error(res.msg || "撤销失败,请重试!"); } }) .catch((error) => { this.$message.error("请求失败,请重试!"); }); // chexiaoCaiYang(data).then((res) => {}); }, /** 点击补打条码按钮 **/ Collection() { const jyxh = this.selectList.map((item) => item.jyxh); // const selectedData = this.selectList.map((item) => ({ // jyxh: item.jyxh, // })); console.log(this.selectList, 999); // console.log(selectedData, 888); this.$nextTick(() => { jyxh.forEach((number, index) => { const barcodeContent = number; // 确保 jyxh 是有效的 if (barcodeContent && barcodeContent !== "未提供体检号") { JsBarcode(`#barcode${index}`, barcodeContent, { format: "CODE128", width: 2, height: 50, displayValue: false, }); } else { console.log(`条形码内容无效: ${barcodeContent}`); // 调试输出 } }); }); this.$nextTick(() => { const barcodeElement = document.querySelector("#barcode"); // const barcodeElements = selectedData.map((_, index) => // document.querySelector(`#barcode${index}`) // ); if (barcodeElement) { barcodeElement.forEach((element) => { if (element) { console.log(element.innerHTML); // 打印条形码的内容,看看是否生成成功 } }); } else { console.log("条形码元素未找到"); } const newWindow = window.open("", "_blank", "width=800,height=600"); const printContents = document.getElementById("printSection").innerHTML; console.log(printContents); newWindow.document.write(` <html> <head> <title>Print Barcode</title> <style> @media print { * { margin: 0; padding: 0; /* 重置所有元素的 margin 和 padding */ box-sizing: border-box; /* 使内边距和边框包含在元素的总宽度和高度内 */ } body { margin: 0; padding: 0; } .barcode-container { width: 100%; /* 根据需要调整 */ text-align: center; /* 确保条形码居中 */ } .name { padding: 0; margin: -5px auto 0; padding-left: 20px; font-size: 18px; width: 90%; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; white-space: normal; } p { margin: 0; padding: 0; } svg { display: block; width: 70%; margin: 0 auto; height: auto; margin-bottom: 0; } .last { width: 66%; display: flex; font-size: 19px; margin-left: 20px; justify-content: space-between; } .last div span{ margin-left: 10px } .tj{ width: 70%; display: flex; font-size: 19px; margin-left: 10px; justify-content: space-between; } .tj span{ margin-left:10px; } } </style> </head> <body>${printContents}</body> </html> `); newWindow.document.close(); newWindow.focus(); newWindow.print(); newWindow.close(); }); }, tableRowClassName({ row, rowIndex }) { for (let i = 0; i < this.selectList.length; i++) { if (row === this.selectList[i]) { @@ -540,7 +916,16 @@ }, handleChange(selection) { console.log(selection); selection.forEach((item, index) => { if (item.cusSex == 0) { item.cusSex = "男"; } else if (item.cusSex == 1) { item.cusSex = "女"; } }); this.selectList = selection; this.ids = selection.map((item) => item.id); }, @@ -559,6 +944,11 @@ // 确认采样 Confirmreceipt() { let data = this.ids; if (data.length === 0) { // 如果没有已合并的项目,给出提示信息 this.$message.error("没有已合并的项目可以撤销!"); return; } confirmSampling(data).then((res) => { this.$modal.msgSuccess("采样成功"); this.getList(); @@ -629,6 +1019,16 @@ } .el-table .warning-row { background: #e5f3ff !important; background-color: #e5f3ff !important; } /* .last { display: flex; justify-content: space-around; justify-content: space-evenly; background-color:aqua } */ /* .last p:nth-child(2) { margin: 20px; font-size: 16px; } */ </style> src/views/system/bill/index.vue
@@ -18,7 +18,7 @@ </el-form-item> <el-form-item label="体检号" prop="tjNum"> <el-input ref="inputName" ref="inputName" style="width: 170px" v-model="queryParams.tjNum" placeholder="请输入体检号" @@ -73,7 +73,8 @@ <el-button type="primary" icon="el-icon-search" size="mini" style="margin-right:15px;" size="mini" style="margin-right: 15px" @click="handleQuery" >搜索</el-button > @@ -84,27 +85,35 @@ </el-form-item> </el-form> <el-row :gutter="10" class="mb8" style="margin-left:10px"> <el-row :gutter="10" class="mb8" style="margin-left: 10px"> <el-col :span="1.5"> <el-button type="primary" @click="handleReport" :disabled="single" size="mini" v-hasPermi="['hosp:order:export']" >补打导检单</el-button > type="primary" @click="handleReport" :disabled="single" size="mini" v-hasPermi="['hosp:order:export']" >补打导检单</el-button > </el-col> <el-col :span="1.5"> <!-- <el-col :span="1.5"> <el-button type="primary" size="mini" @click="Collection" :disabled="single" >条码生成</el-button > </el-col> type="primary" size="mini" @click="Collection" :disabled="single" >条码生成</el-button > </el-col> --> <div id="printSection" style="display: none"> <svg id="barcode"></svg> </div> <!-- <img id="base64Image" alt="Base64 Image" /> --> <!-- 用于显示条形码的容器 --> <!-- <div id="printArea"> <svg id="barcode" v-if="barcodeVisible"></svg> </div> --> <!-- <el-button type="primary" size="mini" :disabled="multiple" @click="viewReport">体检报告</el-button> <el-button type="primary" size="mini" :disabled="multiple" @click="printHandle">打印小票</el-button> --> <!-- <el-col :span="1.5"> @@ -126,145 +135,144 @@ 测试 </div> --> <el-table border style="margin: 14px; width: 99%" v-loading="loading" :default-sort="{ prop: 'createTime', order: 'descending' }" :data="orderList" @selection-change="handleSelectionChange" ref="multipleTable" <el-table border style="margin: 14px; width: 99%" v-loading="loading" :default-sort="{ prop: 'createTime', order: 'descending' }" :data="orderList" @selection-change="handleSelectionChange" ref="multipleTable" > <el-table-column type="selection" width="40px" align="center" height="10px" fixed="left" /> <el-table-column label="序号" align="center" prop="newID" width="50px" fixed="left" height="10px" /> <el-table-column label="姓名" align="center" prop="tjCustomerName" height="10px" width="90px" :show-overflow-tooltip="true" /> <el-table-column label="性别" align="center" prop="tjCustomerSex" width="55px" height="10px" :show-overflow-tooltip="true" > <el-table-column type="selection" width="40px" align="center" height="10px" fixed="left" /> <el-table-column label="序号" align="center" prop="newID" width="50px" fixed="left" height="10px" /> <el-table-column label="姓名" align="center" prop="tjCustomerName" height="10px" width="90px" :show-overflow-tooltip="true" /> <el-table-column label="性别" align="center" prop="tjCustomerSex" width="55px" height="10px" :show-overflow-tooltip="true" > <template slot-scope="scope"> <span v-if="scope.row.tjCustomerSex == '0'">男</span> <span v-if="scope.row.tjCustomerSex == '1'">女</span> <span v-if="scope.row.tjCustomerSex == '2'">未知</span> </template> </el-table-column> <el-table-column label="年龄" align="center" prop="tjCustomerAge" height="10px" width="60px" :show-overflow-tooltip="true" /> <el-table-column label="电话" align="center" prop="tjCustomerPhone" :show-overflow-tooltip="true" height="10px" width="110px" /> <el-table-column label="体检类型" align="center" prop="tjType" height="10px" width="80px" :show-overflow-tooltip="true" > <template slot-scope="scope"> <span v-if="scope.row.tjType == '2'">个人</span> <span v-if="scope.row.tjType == '1'">团队</span> </template> </el-table-column> <el-table-column label="体检号" align="center" prop="tjNumber" :show-overflow-tooltip="true" width="160px" /> <el-table-column label="所选套餐" align="center" prop="pacName" height="10px" :show-overflow-tooltip="true" width="140px" /> <el-table-column label="登记人" align="center" prop="createBy" height="10px" :show-overflow-tooltip="true" width="100px" /> <el-table-column label="登记时间" align="center" prop="createTime" width="155px" height="10px" sortable :show-overflow-tooltip="true" > <template slot-scope="scope"> <span>{{ parseTime(scope.row.createTime) }}</span> </template> </el-table-column> <!-- <el-table-column label="完成时间" align="center" prop="finishTime" width="155px" height="10px" <template slot-scope="scope"> <span v-if="scope.row.tjCustomerSex == '0'">男</span> <span v-if="scope.row.tjCustomerSex == '1'">女</span> <span v-if="scope.row.tjCustomerSex == '2'">未知</span> </template> </el-table-column> <el-table-column label="年龄" align="center" prop="tjCustomerAge" height="10px" width="60px" :show-overflow-tooltip="true" /> <el-table-column label="电话" align="center" prop="tjCustomerPhone" :show-overflow-tooltip="true" height="10px" width="110px" /> <el-table-column label="体检类型" align="center" prop="tjType" height="10px" width="80px" :show-overflow-tooltip="true" > <template slot-scope="scope"> <span v-if="scope.row.tjType == '2'">个人</span> <span v-if="scope.row.tjType == '1'">团队</span> </template> </el-table-column> <el-table-column label="体检号" align="center" prop="tjNumber" :show-overflow-tooltip="true" width="160px" /> <el-table-column label="所选套餐" align="center" prop="pacName" height="10px" :show-overflow-tooltip="true" width="140px" /> <el-table-column label="登记人" align="center" prop="createBy" height="10px" :show-overflow-tooltip="true" width="100px" /> <el-table-column label="登记时间" align="center" prop="createTime" width="155px" height="10px" sortable :show-overflow-tooltip="true" > <template slot-scope="scope"> <span>{{ parseTime(scope.row.createTime) }}</span> </template> </el-table-column> <!-- <el-table-column label="完成时间" align="center" prop="finishTime" width="155px" height="10px" :show-overflow-tooltip="true"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.finishTime) }}</span> </template> </el-table-column> --> <!-- <el-table-column label="报告时间" align="center" prop="reportTime" width="155px" height="10px" <!-- <el-table-column label="报告时间" align="center" prop="reportTime" width="155px" height="10px" :show-overflow-tooltip="true"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.reportTime) }}</span> </template> </el-table-column> --> <el-table-column label="备注" align="center" prop="remark" height="10px" :show-overflow-tooltip="true" /> <!-- <el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width" height="10px" <el-table-column label="备注" align="center" prop="remark" height="10px" :show-overflow-tooltip="true" /> <!-- <el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width" height="10px" width="60px"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-document" @click="investigation(scope.row)" v-hasPermi="['hosp:order:edit']" title="详情" style="margin-right: 15px"></el-button> </template> </el-table-column> --> </el-table> </el-table> <div class="pag"> <div class="pag1"> @@ -459,7 +467,7 @@ </template> <script> import print from "print-js"; import { listOrder, getNumber, @@ -468,12 +476,13 @@ hasReport, hasPrintCode, getOrderList, getNewDateList getNewDateList, } from "@/api/hosp/order"; import moment from "moment"; import ViewPdf from "@/components/ViewPdf"; import { projectGetList, getOrder } from "@/api/system/tijian"; import { SubmitCompany, getCompany, queryCompany } from "@/api/team/tuanti"; import JsBarcode from "jsbarcode"; export default { components: { ViewPdf, @@ -631,19 +640,32 @@ }, ], }, barcode: "", // 存储条码值 barcodeVisible: false, // 控制条形码是否可见 single: false, // 控制按钮是否禁用的条件 }; }, created() { // this.getNowTime(); this.Company(); this.getdate(); }, mounted() { this.$nextTick(() => { this.$refs.inputName.focus(); }); }, // mounted() { // // const base64String = // // "data:image/jpeg;base64,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"; // // const binaryString = atob(base64String.split(",")[1]); // // // 将二进制数据转换为 Blob 对象 // // const blob = new Blob([binaryString], { type: "image/png" }); // // // 创建 URL 对象并将其分配给图像的 src 属性 // // const image = document.getElementById("base64Image"); // // console.log(image, 1111); // // // image.src = URL.createObjectURL(blob); // // image.src = base64String; // // this.$nextTick(() => { // // this.$refs.inputName.focus(); // // }); // }, methods: { getdate() { getNewDateList().then((res) => { @@ -803,37 +825,88 @@ }); }, // 采血单 Collection() { let tjNumber = this.barcode; hasPrintCode(tjNumber).then((response) => { this.$message({ showClose: true, message: "条码已生成!", type: "success", }); }); }, // onSubmit() { // console.log("submit!"); // Collection() { // let tjNumber = this.barcode; // hasPrintCode(tjNumber).then((response) => { // this.$message({ // showClose: true, // message: "条码已生成!", // type: "success", // }); // }); // }, // Collection() { // let tjNumber = this.barcode; // JsBarcode("#barcode", tjNumber, { // format: "CODE128", // width: 2, // height: 100, // displayValue: true, // }); // this.$nextTick(() => { // const barcodeElement = document.querySelector("#barcode"); // if (barcodeElement) { // console.log(barcodeElement.innerHTML); // 打印条形码的内容,看看是否生成成功 // } else { // console.log("条形码元素未找到"); // } // const printContents = document.getElementById("printSection").innerHTML; // const newWindow = window.open("", "_blank", "width=800,height=600"); // console.log(printContents); // newWindow.document.write(` // <html> // <head> // <title>Print Barcode</title> // <style> // @media print { // body { // width: 80mm; // margin: 0; // padding: 0; // height: 25mm; // } // /* 将条形码居中 */ // #barcode { // display: block; // // margin-left: 50%; // text-align: center; // width: 100%; // height: auto; // } // /* 让条形码在打印时显示 */ // svg { // display: block; // } // </style> // </head> // <body>${printContents}</body> // </html> // `); // newWindow.document.close(); // newWindow.focus(); // newWindow.print(); // newWindow.close(); // }); // }, dateChangebirthday1(val) { this.startTime = val; }, /** 查询体检记录列表 */ getList() { if(this.createTimeList){ if (this.createTimeList) { this.queryParams.djbeginTime = this.createTimeList[0]; this.queryParams.djendTime = this.createTimeList[1]; }else if(this.createTimeList == null){ this.queryParams.djendTime = this.createTimeList[1]; } else if (this.createTimeList == null) { this.queryParams.djbeginTime = null; this.queryParams.djendTime = null; }else{ this.queryParams.djendTime = null; } else { this.queryParams.djbeginTime = this.startTime[0]; this.queryParams.djendTime = this.startTime[1]; this.queryParams.djendTime = this.startTime[1]; } this.loading = true; getOrderList(this.queryParams).then((response) => { this.orderList = response.data.list; @@ -900,9 +973,9 @@ }; this.resetForm("form"); }, hb(){ hb() { // console.log(this.queryParams.tjNum); if (this.queryParams.tjNum != undefined) { if (this.queryParams.tjNum != undefined) { this.handleQuery(); } }, @@ -913,7 +986,7 @@ }, /** 重置按钮操作 */ resetQuery() { this.createTimeList=[] this.createTimeList = []; this.resetForm("queryForm"); this.handleQuery(); }, @@ -1075,7 +1148,7 @@ }, }; </script> <style lang="scss"> <style lang="scss" scoped> .pag { width: 100%; display: flex; @@ -1173,4 +1246,49 @@ display: flex; justify-content: center; } .print-container { width: 300px; /* 设定宽度以确保打印时布局合适 */ padding: 10px; border: 1px solid #000; /* 可选:给打印区域加一个边框 */ font-family: Arial, sans-serif; } .barcode-section { text-align: center; margin-bottom: 10px; } .info-section { font-size: 14px; line-height: 1.5; } .info-section p { margin: 2px 0; /* 控制信息间的间距 */ } #barcode { display: block; margin: 0 auto; } .info-section p { margin: 2px 0; font-size: 14px; } /* 打印时隐藏所有其他内容 */ // @media print { // #barcode { // width: 58mm; // height: auto; // } // #printSection { // display: flex; // justify-content: center; // align-items: center; // height: 100vh; /* 父容器高度为全页高度 */ // } // } </style> src/views/system/biol/index.vue
@@ -27,7 +27,7 @@ @blur="hb" /> </el-form-item> <el-form-item label="报告时间" prop="createTimeList"> <el-form-item label="登记时间" prop="createTimeList"> <el-date-picker clearable v-model="createTimeList" src/views/system/tijian/index.vue
@@ -2192,7 +2192,8 @@ this.discount = this.form.discount; } if (this.form.tjType === null) { this.form.tjType = "2"; // this.form.tjType = "2"; this.form.tjType = "3"; } if (this.form.reservationId != null) { if (this.form.groupingId) { src/views/system/user/index.vue
@@ -642,7 +642,7 @@ </div> <!-- 用户导入对话框 --> <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> <!-- <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" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag> @@ -662,7 +662,7 @@ <el-button type="primary" @click="submitFileForm">确 定</el-button> <el-button @click="upload.open = false">取 消</el-button> </div> </el-dialog> </el-dialog> --> <!-- 重置密码对话框 --> <el-dialog title="提示" :visible.sync="dialogVisible1" width="30%" :before-close="handleClose"> vue.config.js
@@ -53,7 +53,8 @@ // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { // target: `https://ltpeis.xaltjdkj.cn:5801/`, target: `http://192.168.1.113:5011`, target: `http://192.168.1.3:5011`, // target: `http://192.168.1.113:5011`, // // target: `http://192.168.0.99:8080/ltkj-admin`, // target: `https://ltpeis.xaltjdkj.cn:5011/ltkj-admin`, // target: `http://10.168.0.9:5011`,