pengjun 4 weeks ago
parent
commit
dca7b7748a
  1. 47
      package-lock.json
  2. 1
      package.json
  3. 8
      src/components/doctorCheck/PatientRegisterBase2.vue
  4. 3
      src/views/customerReport/unitSettlement.vue
  5. 16
      src/views/doctorCheck/sumDoctorCheck.vue
  6. 133
      src/views/report/report.vue

47
package-lock.json

@ -18,6 +18,7 @@
"markdown-it": "^14.1.0", "markdown-it": "^14.1.0",
"moment": "^2.29.4", "moment": "^2.29.4",
"node-polyfill-webpack-plugin": "^2.0.1", "node-polyfill-webpack-plugin": "^2.0.1",
"pinyin": "^4.0.0",
"print-js": "^1.6.0", "print-js": "^1.6.0",
"qrcode": "^1.5.4", "qrcode": "^1.5.4",
"sortablejs": "^1.15.0", "sortablejs": "^1.15.0",
@ -7824,6 +7825,11 @@
"safe-buffer": "~5.1.0" "safe-buffer": "~5.1.0"
} }
}, },
"node_modules/keypress": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/keypress/-/keypress-0.1.0.tgz",
"integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA=="
},
"node_modules/kind-of": { "node_modules/kind-of": {
"version": "6.0.3", "version": "6.0.3",
"resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
@ -9374,6 +9380,47 @@
"node": ">=8.6" "node": ">=8.6"
} }
}, },
"node_modules/pinyin": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/pinyin/-/pinyin-4.0.0.tgz",
"integrity": "sha512-vHpV5K+vpp6XUUpZNGRDuHoN+1xcmieM3EWlH4QjSX2kkpG/gVOwpqwV9EOJ9x9c9UERFKeLml5XVSukE/PLgQ==",
"dependencies": {
"commander": "~1.1.1"
},
"bin": {
"pinyin": "bin/pinyin"
},
"engines": {
"install-node": "^18.0.0"
},
"peerDependencies": {
"@node-rs/jieba": "^1.6.0",
"nodejieba": "^3.4.4",
"segmentit": "^2.0.3"
},
"peerDependenciesMeta": {
"@node-rs/jieba": {
"optional": true
},
"nodejieba": {
"optional": true
},
"segmentit": {
"optional": true
}
}
},
"node_modules/pinyin/node_modules/commander": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/commander/-/commander-1.1.1.tgz",
"integrity": "sha512-71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA==",
"dependencies": {
"keypress": "0.1.x"
},
"engines": {
"node": ">= 0.6.x"
}
},
"node_modules/pkg-dir": { "node_modules/pkg-dir": {
"version": "4.2.0", "version": "4.2.0",
"resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",

1
package.json

@ -22,6 +22,7 @@
"markdown-it": "^14.1.0", "markdown-it": "^14.1.0",
"moment": "^2.29.4", "moment": "^2.29.4",
"node-polyfill-webpack-plugin": "^2.0.1", "node-polyfill-webpack-plugin": "^2.0.1",
"pinyin": "^4.0.0",
"print-js": "^1.6.0", "print-js": "^1.6.0",
"qrcode": "^1.5.4", "qrcode": "^1.5.4",
"sortablejs": "^1.15.0", "sortablejs": "^1.15.0",

8
src/components/doctorCheck/PatientRegisterBase2.vue

@ -289,10 +289,10 @@ export default {
this.prBase = res.data this.prBase = res.data
// ---------- // ----------
// if (this.prBase.completeFlag != '3') this.prBase.summaryDoctorId = this.userId
// if (this.prBase.completeFlag == '3' && this.prBase.isAudit == 'N') {
// this.prBase.auditDoctorId = this.userId
// }
if (this.prBase.completeFlag != '3') this.prBase.summaryDoctorId = this.prBase.summaryDoctorId || this.userId
if (this.prBase.completeFlag == '3' && this.prBase.isAudit == 'N') {
this.prBase.auditDoctorId = this.prBase.auditDoctorId || this.userId
}
// ---------- // ----------
// console.log('res.data',res.data) // console.log('res.data',res.data)
// console.log('this.prBase',this.prBase) // console.log('this.prBase',this.prBase)

3
src/views/customerReport/unitSettlement.vue

@ -365,7 +365,8 @@ page-break-before: avoid;}}`, // 去除页眉页脚
// //
forceStringFormatter(row, column, cellValue) { forceStringFormatter(row, column, cellValue) {
// cellValue
console.log('row, column, cellValue',row, column.property, cellValue)
// cellValue
return cellValue ? "\u200C" + String(cellValue) : cellValue return cellValue ? "\u200C" + String(cellValue) : cellValue
}, },

16
src/views/doctorCheck/sumDoctorCheck.vue

@ -619,6 +619,7 @@ export default {
historySummary: '', // historySummary: '', //
}, },
patient_registerInit: {}, // patient_registerInit: {}, //
userId:'', // ID
// //
summaryList: [], summaryList: [],
@ -754,7 +755,7 @@ export default {
// //
mounted() { mounted() {
this.userId = window.sessionStorage.getItem("userId")
this.dictInit(); this.dictInit();
// Electron // Electron
@ -1216,7 +1217,7 @@ export default {
let body = { let body = {
patientRegisterId: this.patient_register.id, patientRegisterId: this.patient_register.id,
summaryDoctorId: this.patient_register.summaryDoctorId || null,
summaryDoctorId: this.patient_register.summaryDoctorId ||this.userId || null,
summaryDate: this.patient_register.summaryDate || moment(new Date()).format("yyyy-MM-DD HH:mm:ss"), summaryDate: this.patient_register.summaryDate || moment(new Date()).format("yyyy-MM-DD HH:mm:ss"),
medicalConclusionId: this.patient_register.medicalConclusionId || null, medicalConclusionId: this.patient_register.medicalConclusionId || null,
summaryHistoricalReview: this.patient_register.historySummary, summaryHistoricalReview: this.patient_register.historySummary,
@ -1288,8 +1289,11 @@ export default {
.then((res) => { .then((res) => {
if (res.code > -1) { if (res.code > -1) {
//this.patient_register.completeFlag = '3'; //this.patient_register.completeFlag = '3';
this.patient_register.completeFlag = '3'
this.patient_register.summaryDoctorId = body.summaryDoctorId
this.patient_register.summaryDate = moment(new Date()).format("yyyy-MM-DD HH:mm:ss")
this.getInfoByPatientRegisterNo(this.patient_register.patientRegisterNo) this.getInfoByPatientRegisterNo(this.patient_register.patientRegisterNo)
.then(() => {
.then(() => {
this.refParamsQuery.brushSummary++ this.refParamsQuery.brushSummary++
}) })
} }
@ -1400,7 +1404,7 @@ export default {
// patient_register.summaryDoctorId // patient_register.summaryDoctorId
// patient_register.auditDoctorId // patient_register.auditDoctorId
let auditDoctorId = this.patient_register.auditDoctorId let auditDoctorId = this.patient_register.auditDoctorId
if (!auditDoctorId) auditDoctorId = window.sessionStorage.getItem("userId")
if (!auditDoctorId) auditDoctorId = this.userId||null
let body = { let body = {
patientRegisterId: this.patient_register.id, patientRegisterId: this.patient_register.id,
auditDoctorId, // auditDoctorId, //
@ -1438,8 +1442,10 @@ export default {
postapi(`/api/app/patientregister/updatepatientregisterauditordoctor`, body) postapi(`/api/app/patientregister/updatepatientregisterauditordoctor`, body)
.then((res) => { .then((res) => {
console.log("unAudit", res.data); console.log("unAudit", res.data);
if (res.code != -1) {
if (res.code > -1) {
this.patient_register.isAudit = body.isAudit; this.patient_register.isAudit = body.isAudit;
this.patient_register.auditDoctorId = body.auditDoctorId
this.patient_register.auditDate = moment(new Date()).format("yyyy-MM-DD HH:mm:ss")
} }
}) })
.catch((err) => { .catch((err) => {

133
src/views/report/report.vue

@ -20,10 +20,10 @@
Math.floor(((window.pageWidth - 110 - 60) * 3) / 4) + Math.floor(((window.pageWidth - 110 - 60) * 3) / 4) +
'px;' 'px;'
"> ">
<div @contextmenu.prevent="onContextmenu">
<div @contextmenu.prevent="onContextmenu" id="report_tjbg">
<u-table :data="tableDatas" border ref="info" id="info" <u-table :data="tableDatas" border ref="info" id="info"
:height="(window.pageHeight < 600) ? 230 : (window.pageHeight - 370)" highlight-current-row :height="(window.pageHeight < 600) ? 230 : (window.pageHeight - 370)" highlight-current-row
@row-click="rowClick" size="small" row-key="patientRegisterId"
@row-click="rowClick" size="small" row-key="patientRegisterId"
@selection-change="handleSelectionChange" @row-contextmenu="rowContextmenu" @selection-change="handleSelectionChange" @row-contextmenu="rowContextmenu"
@table-body-scroll="scrollFull" use-virtual :row-height="35" big-data-checkbox @table-body-scroll="scrollFull" use-virtual :row-height="35" big-data-checkbox
:data-changes-scroll-top="false"> :data-changes-scroll-top="false">
@ -33,8 +33,8 @@
:type="dragCol[index].type" :min-width="dragCol[index].minWidth" :align="dragCol[index].align" :type="dragCol[index].type" :min-width="dragCol[index].minWidth" :align="dragCol[index].align"
:label="dragCol[index].type ? '' : item.label" :prop="dragCol[index].prop" :label="dragCol[index].type ? '' : item.label" :prop="dragCol[index].prop"
:sortable="dragCol[index].type || dragCol[index].prop == 'sn' ? false : true" :sortable="dragCol[index].type || dragCol[index].prop == 'sn' ? false : true"
:sort-method="(a, b) => chineseSort(a, b, dragCol[index].prop)"
:show-overflow-tooltip="dragCol[index].showTooltip"> :show-overflow-tooltip="dragCol[index].showTooltip">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="dragCol[index].prop == 'sn'"> <div v-if="dragCol[index].prop == 'sn'">
{{ scope.$index + 1 }} {{ scope.$index + 1 }}
@ -53,16 +53,13 @@
<div v-else-if="dragCol[index].prop == 'isLock'"> <div v-else-if="dragCol[index].prop == 'isLock'">
<i class="el-icon-lock" v-if="scope.row.isLock == 'Y'" style="font-size: 20px; color: red" /> <i class="el-icon-lock" v-if="scope.row.isLock == 'Y'" style="font-size: 20px; color: red" />
</div> </div>
<div v-else-if="
dragCol[index].prop == 'isVip' ||
dragCol[index].prop == 'isUpload' ||
dragCol[index].prop == 'isUploadAppoint' ||
dragCol[index].prop == 'isReceiveReport'
">
<div
v-else-if="['isVip', 'isUpload', 'isUploadAppoint', 'isReceiveReport', 'isPushThirdResult'].includes(dragCol[index].prop)">
<el-checkbox :value="scope.row[dragCol[index].prop] == 'Y'" true-label="Y" false-label="N" /> <el-checkbox :value="scope.row[dragCol[index].prop] == 'Y'" true-label="Y" false-label="N" />
</div> </div>
<!-- String(scope.row[dragCol[index]?.prop]||'') 屏蔽没有字段-->
<div v-else> <div v-else>
{{ scope.row[dragCol[index].prop] }}
{{ '\u200C' + String(scope.row[dragCol[index]?.prop]||'') }}
</div> </div>
</template> </template>
@ -128,7 +125,7 @@
导出/推送<i class="el-icon-arrow-down el-icon--right"></i> 导出/推送<i class="el-icon-arrow-down el-icon--right"></i>
</el-button> </el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="exp" @click="btnExport">人员信息导出</el-dropdown-item>
<el-dropdown-item command="exp" @click="btnExport('report_tjbg')">人员信息导出</el-dropdown-item>
<el-dropdown-item command="zip" @click="exportZip">导出Zip</el-dropdown-item> <el-dropdown-item command="zip" @click="exportZip">导出Zip</el-dropdown-item>
<el-dropdown-item command="jpg" @click="exportJpg">导出Jpg</el-dropdown-item> <el-dropdown-item command="jpg" @click="exportJpg">导出Jpg</el-dropdown-item>
<el-dropdown-item command="pdf" @click="btnReportExport(false)">导出 pdf 报告</el-dropdown-item> <el-dropdown-item command="pdf" @click="btnReportExport(false)">导出 pdf 报告</el-dropdown-item>
@ -136,6 +133,9 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
<div class="listBtn" v-if="false">
<el-button type="primary" class="commonbutton" @click="btnTest">test</el-button>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -199,6 +199,8 @@
import moment from "moment"; import moment from "moment";
import { mapState, mapActions } from "vuex"; import { mapState, mapActions } from "vuex";
import Sortable from "sortablejs"; import Sortable from "sortablejs";
import FileSaver from 'file-saver';
import pinyin from 'pinyin';
import { getapi, postapi, putapi, deletapi } from "@/api/api"; import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { import {
tcdate, tcdate,
@ -304,6 +306,7 @@ export default {
{ label: "序号", prop: "sn", minWidth: 40, align: "center" }, { label: "序号", prop: "sn", minWidth: 40, align: "center" },
{ label: "打印", prop: "isReportPrint", minWidth: 60, align: "center" }, { label: "打印", prop: "isReportPrint", minWidth: 60, align: "center" },
{ label: "领取", prop: "isReceiveReport", minWidth: 60, align: "center" }, { label: "领取", prop: "isReceiveReport", minWidth: 60, align: "center" },
{ label: "上传", prop: "isUpload", minWidth: 60, align: "center" },
{ label: "体检进度", prop: "completeFlag", minWidth: 90, align: "center" }, { label: "体检进度", prop: "completeFlag", minWidth: 90, align: "center" },
{ label: "体检日期", prop: "medicalStartDate", minWidth: 100, align: "center" }, { label: "体检日期", prop: "medicalStartDate", minWidth: 100, align: "center" },
{ label: "单位名称", prop: "org", minWidth: 180, align: "left", showTooltip: true }, { label: "单位名称", prop: "org", minWidth: 180, align: "left", showTooltip: true },
@ -342,9 +345,8 @@ export default {
{ label: "领取时间", prop: "reportReceiveDate", minWidth: 140, align: "center" }, { label: "领取时间", prop: "reportReceiveDate", minWidth: 140, align: "center" },
{ label: "锁住", prop: "isLock", minWidth: 60, align: "center" }, { label: "锁住", prop: "isLock", minWidth: 60, align: "center" },
{ label: "预约备单", prop: "isUploadAppoint", minWidth: 90, align: "center" }, { label: "预约备单", prop: "isUploadAppoint", minWidth: 90, align: "center" },
{ label: "上传", prop: "isUpload", minWidth: 60, align: "center" },
{ label: "检后推送", prop: "isPushThirdResult", minWidth: 90, align: "center" }, { label: "检后推送", prop: "isPushThirdResult", minWidth: 90, align: "center" },
// { label: "", prop: "standardAmount", minWidth: 80, align: "center" }, // { label: "", prop: "standardAmount", minWidth: 80, align: "center" },
// { label: "", prop: "receivableAmount", minWidth: 80, align: "center" }, // { label: "", prop: "receivableAmount", minWidth: 80, align: "center" },
// { label: "", prop: "chargeAmount", minWidth: 80, align: "center" }, // { label: "", prop: "chargeAmount", minWidth: 80, align: "center" },
@ -408,6 +410,42 @@ export default {
}, },
methods: { methods: {
dddw, setPrStatusColor, dddw, setPrStatusColor,
//
// forceStringFormatter(row, column, cellValue) {
// //console.log('row, column, cellValue',row, column.property, cellValue)
// // cellValue
// if(['idNo','patientRegisterNo','patientNo','mobileTelephone','telephone'].includes(column.property)){
// return cellValue ? "\u200C" + String(cellValue) : cellValue
// }else{
// return cellValue
// }
// },
//
chineseSort(a, b, colName) {
// console.log('a, b', a, b)
// const pinyinA = pinyin(a[colName], { style: pinyin.STYLE_NORMAL }).join('');
// const pinyinB = pinyin(b[colName], { style: pinyin.STYLE_NORMAL }).join('');
let valA = a[colName],valB = b[colName]
if (typeof valA == 'string'){
//
if(['patientName','org','dept','address','remark'].includes(colName)){
return valA.localeCompare(valB,'zh');
}else{
return valA.localeCompare(valB);
}
}else{
return valA - valB
}
},
btnTest() {
console.log('this.tableDatas3', this.tableDatas)
},
// //
dictInit() { dictInit() {
// //
@ -1086,7 +1124,7 @@ export default {
this.upTsjh() this.upTsjh()
break; break;
default: //lis default: //lis
this.btnExport()
this.btnExport('report_tjbg')
break; break;
} }
}, },
@ -1271,14 +1309,14 @@ export default {
//-- //--
async upTsjh() { async upTsjh() {
if ( if (
this.checkedRows && this.checkedRows &&
this.checkedRows.length > 0 this.checkedRows.length > 0
) { ) {
this.elProgress.display = true; this.elProgress.display = true;
this.elProgress.percentage = 0; this.elProgress.percentage = 0;
for ( for (
let i = 0; let i = 0;
i < this.checkedRows.length; i < this.checkedRows.length;
@ -1291,11 +1329,11 @@ export default {
// //
try { try {
let res = await postapi('/api/app/ThirdResultPush/PushHtyResultByPatientRegisterId',{patientRegisterId:e.patientRegisterId})
if(res.code > -1){
let res = await postapi('/api/app/ThirdResultPush/PushHtyResultByPatientRegisterId', { patientRegisterId: e.patientRegisterId })
if (res.code > -1) {
// //
e.isPushThirdResult = "Y"; e.isPushThirdResult = "Y";
}
}
} catch (error) { } catch (error) {
console.log("error", error); console.log("error", error);
this.$message.warning({ showClose: true, message: error }); this.$message.warning({ showClose: true, message: error });
@ -1608,58 +1646,15 @@ export default {
return rd; return rd;
}, },
//
//
btnExport(elId) { btnExport(elId) {
require.ensure([], () => {
const tHeader = [];
const filterVal = [];
this.dragCol.forEach((e) => {
tHeader.push(e.label);
filterVal.push(e.prop);
});
const list = this.tableDatas.map((row, index) => {
const newRow = { ...row }; //
// 使
newRow.sn = index + 1;
if (newRow.completeFlag)
newRow.completeFlag =
newRow.isAudit == "Y"
? "已审核"
: dddw(
this.dict.completeFlag,
"id",
newRow.completeFlag,
"displayName"
);
newRow.isReportPrint = newRow.isReportPrint == "Y" ? "√" : "";
if (newRow.idNo) newRow.idNo = "\u200C" + newRow.idNo;
if (newRow.patientRegisterNo)
newRow.patientRegisterNo = "\u200C" + newRow.patientRegisterNo;
if (newRow.patientNo) newRow.patientNo = "\u200C" + newRow.patientNo;
if (newRow.isLock) newRow.isLock = newRow.isLock == "Y" ? "√" : "";
if (newRow.isVip) newRow.isVip = newRow.isVip == "Y" ? "√" : "";
if (newRow.isUpload)
newRow.isUpload = newRow.isUpload == "Y" ? "√" : "";
if (newRow.isUploadAppoint)
newRow.isUploadAppoint = newRow.isUploadAppoint == "Y" ? "√" : "";
if (newRow.isReceiveReport)
newRow.isReceiveReport = newRow.isReceiveReport == "Y" ? "√" : "";
if (newRow.birthDate)
newRow.birthDate = moment(newRow.birthDate).format("yyyy-MM-DD");
return newRow;
});
const data = list.map((v) => filterVal.map((j) => v[j]));
exportJsonToExcel(
tHeader,
data,
"人员列表" + moment(new Date()).format("yyyyMMDDHHmmss")
); //"excel"
});
let table = document.getElementById(elId);
let tableData = table.innerHTML
let fileName = moment(new Date()).format('yyyyMMDDHHmmss') + '.xls'
let blob = new Blob([tableData], { type: "text/plain;charset=utf-8" });
FileSaver.saveAs(blob, fileName);
}, },
}, },
// //

Loading…
Cancel
Save