pengjun 2 weeks ago
parent
commit
bd6c500f67
  1. 99
      src/components/patientRegister/PatientRegisterEdit.vue
  2. 125
      src/components/patientRegister/customerOrgTreeAll.vue
  3. 79
      src/utlis/indexedDB.js
  4. 50
      src/utlis/proFunc.js
  5. 13
      src/views/Home.vue

99
src/components/patientRegister/PatientRegisterEdit.vue

@ -608,13 +608,14 @@
<WebBookingMzak />
</el-dialog>
<!-- checkStrictly: true, expandTrigger: 'hover', -->
<!-- checkStrictly: true, expandTrigger: 'hover', lazyLoad: lazyLoad, lazy: true, @change="changeChooseOrgId" -->
<!-- checkStrictly: true, expandTrigger: 'click', :show-all-levels="false" -->
<el-dialog title="选择单位" :visible.sync="dialogOrg" width="800px" :close-on-click-modal="false"
:append-to-body="true">
<div style="height: 320px;">
<el-cascader v-model="form.customerOrgId" :options="patientRegister.customerOrgTreeAll" style="width:400px;"
filterable popper-class="example" :show-all-levels="false" @change="changeChooseOrgId"
:props="{ checkStrictly: true, expandTrigger: 'click', ...customerOrg.treeprops, lazyLoad: lazyLoad, lazy: true, leaf: 'isLeaf' }"
filterable popper-class="example"
:props="{ ...customerOrg.treeprops, leaf: 'isLeaf' }"
size="small">
</el-cascader>
</div>
@ -749,8 +750,8 @@
<span>单位体检次数</span>
<el-select v-model="customerOrgRegister" placeholder="次数" style="width: 60px; margin-left: 10px"
size="small" @change="changeTimes" value-key="id">
<el-option v-for="item in customerOrgRegisterList" :key="item.id" :label="item.medicalTimes"
:value="item" />
<el-option v-for="item in customerOrgRegisterListCopy" :key="item.id" :label="item.medicalTimes"
:value="item" :disabled="item.isComplete == 'Y'" />
</el-select>
</div>
</div>
@ -1028,7 +1029,7 @@ export default {
customerOrgId: '',
customerOrgDisp: [],
customerOrgAll: [],
customerOrgRegisterList: [], //
customerOrgRegisterListCopy: [], //
customerOrgRegister: {}, //
hc_warn_mode: '1', //0-1-2-
@ -1359,21 +1360,29 @@ export default {
}
},
//
btnOkOrg() {
let customerOrgId = ''
this.changeCustomerOrgId(this.form.customerOrgId)
.then(res => {
this.form.customerOrgParentId = res
})
if (Array.isArray(this.form.customerOrgId)) {
this.form.customerOrgParentId = this.form.customerOrgId[0]
customerOrgId = this.form.customerOrgId[this.form.customerOrgId.length - 1]
} else {
this.form.customerOrgParentId = this.form.customerOrgId
customerOrgId = this.form.customerOrgId
}
//
let node = getTreeNode(this.patientRegister.customerOrgTreeAll, "treeChildren", "id", customerOrgId)
if (node) this.form.customerOrgName = node.displayName
this.dialogOrg = false
},
// form
@ -1429,7 +1438,7 @@ export default {
return new Promise((resolve, reject) => {
postapi('/api/app/Customerorg/GetMedicalTypeIdByCustomerOrgId', { customerOrgId })
.then(res => {
if (res.code > -1) {
if (res.code > -1) {
this.form.medicalTypeId = res.data.medicalTypeId
this.form.personnelTypeId = res.data.personnelTypeId
}
@ -1489,7 +1498,7 @@ export default {
changeCustomerOrgId(v) {
// reslove
return new Promise((resolve, reject) => {
console.log('changeCustomerOrgId', v, this.form.customerOrgParentId)
console.log('选择单位 changeCustomerOrgId', v, this.form.customerOrgParentId)
let customerOrgId = "", customerOrgParentId = ""
if (Array.isArray(v) && v.length > 0) {
customerOrgId = v[v.length - 1]
@ -1501,6 +1510,7 @@ export default {
this.getParentCustomerOrgId(v)
.then(res => {
console.log('获得顶级单位 getParentCustomerOrgId', res, this.form.customerOrgParentId)
if (res) {
customerOrgParentId = res
// "00000000-0000-0000-0000-000000000001"
@ -1526,7 +1536,7 @@ export default {
this.changeCustomerOrgGroupId()
}
}
return resolve(customerOrgParentId)
resolve(customerOrgParentId)
})
} else {
resolve(customerOrgParentId)
@ -1544,20 +1554,20 @@ export default {
let customerOrgParentId = null
if (Array.isArray(v) && v.length > 0) {
customerOrgParentId = v[0]
return resolve(customerOrgParentId)
resolve(customerOrgParentId)
} else {
if (!v) {
return resolve(customerOrgParentId)
resolve(customerOrgParentId)
} else {
if (v == this.dict.personOrgId) {
return resolve(v) //
resolve(v) //
} else {
getapi(`/api/app/customer-org/parent/${v}`)
.then(res => {
if (res.code > -1) customerOrgParentId = res.data
})
.finally(() => {
return resolve(customerOrgParentId)
resolve(customerOrgParentId)
})
}
@ -1574,6 +1584,9 @@ export default {
this.form.customerOrgRegisterId = "00000000-0000-0000-0000-000000000001"
return resolve()
} else {
console.log('更换单位前顶级单位', this.form.customerOrgParentId)
console.log('更换单位后顶级单位', customerOrgParentId)
//
getapi(`/api/app/customerorgregister/getlistincustomerorgid?CustomerOrgId=${customerOrgParentId}`)
.then(res => {
@ -1581,26 +1594,50 @@ export default {
// console.log('', this.form.customerOrgRegisterId, res.data)
this.customerOrgRegisterList = res.data
if (!this.form.customerOrgRegisterId || this.form.customerOrgRegisterId == "00000000-0000-0000-0000-000000000001") {
let customerOrgRegisterList = arrayFilter(res.data, 'isComplete', 'N') //
let customerOrgRegisterList = arrayFilter(res.data, 'isComplete', 'N') //
let oldCustomerOrgRegisterId = this.form.customerOrgRegisterId
//
if (!oldCustomerOrgRegisterId || oldCustomerOrgRegisterId == "00000000-0000-0000-0000-000000000001") {
if (customerOrgRegisterList.length > 0) {
this.form.customerOrgRegisterId = customerOrgRegisterList[customerOrgRegisterList.length - 1].id
}
} else {
//
if (customerOrgParentId != this.form.customerOrgParentId) {
this.form.customerOrgRegisterId = ''
if (customerOrgRegisterList.length > 0) {
this.form.customerOrgRegisterId = customerOrgRegisterList[customerOrgRegisterList.length - 1].id
}
}
}
// /api/app/customerorggroup/getlistinfilter?CustomerOrgRegisterId=${this.form.customerOrgRegisterId}
//
this.patientRegister.customerOrgGroup = []
if (this.form.customerOrgRegisterId && this.form.customerOrgRegisterId != '00000000-0000-0000-0000-000000000001') {
//
postapi('/api/app/CustomerOrgGroup/GetListForPatentRegisterByFilter', { customerOrgRegisterId: this.form.customerOrgRegisterId })
.then(res2 => {
if (res2 && res2.code != -1) {
this.patientRegister.customerOrgGroup = res2.data;
}
})
} return
if (!this.form.customerOrgRegisterId) {
console.log('当前所选单位无可用的体检次数')
resolve()
} else {
// /api/app/customerorggroup/getlistinfilter?CustomerOrgRegisterId=${this.form.customerOrgRegisterId}
console.log('更换体检次数', this.form.customerOrgRegisterId)
if (this.form.customerOrgRegisterId && this.form.customerOrgRegisterId != '00000000-0000-0000-0000-000000000001') {
//
postapi('/api/app/CustomerOrgGroup/GetListForPatentRegisterByFilter', { customerOrgRegisterId: this.form.customerOrgRegisterId })
.then(res2 => {
if (res2.code > -1) {
this.patientRegister.customerOrgGroup = res2.data;
}
})
.finally(() => {
resolve()
})
}
}
}
})
.finally(() => {
.catch(err => {
console.error('获取单位体检次数信息失败', err)
resolve()
})
}
@ -2103,7 +2140,7 @@ export default {
.finally(() => {
if (message) {
switch (this.hc_warn_mode) {
case '1':''
case '1': ''
this.$confirm(`${message} 是否继续?`, "提示", {
confirmButtonText: "是",
cancelButtonText: " 否 ",
@ -3448,7 +3485,7 @@ export default {
//
changeCustomerOrg(v) {
if (!v) {
this.customerOrgRegisterList = [];
this.customerOrgRegisterListCopy = [];
this.customerOrgRegister = {};
this.customerOrgGroups = [];
} else {
@ -3456,7 +3493,7 @@ export default {
`/api/app/customerorgregister/getlistincustomerorgid?CustomerOrgId=${v}`
).then((res) => {
if (res.code != -1) {
this.customerOrgRegisterList = res.data;
this.customerOrgRegisterListCopy = res.data;
if (res.data.length > 0) {
this.customerOrgRegister = res.data[res.data.length - 1];
this.getCustomerOrgGroupCopy(this.customerOrgRegister.id);

125
src/components/patientRegister/customerOrgTreeAll.vue

@ -1,17 +1,38 @@
<template>
<div style="width:208px">
<div style="margin:2px 2px 2px 2px;display: flex;">
<!--
<el-tooltip content="勾选时,可对子单位进行查询" placement="top">
<el-checkbox style="margin-top: 6px;" v-model="cusQuery.haveSunCus" true-label="Y" false-label="N" size="small">
含子单位
</el-checkbox>
</el-tooltip>
-->
<el-input placeholder="输入关键字进行过滤" v-model="filterText" size="small" />
</div>
<div>
<el-tree
:style="'overflow: scroll;height:' + (window.pageHeight < 600 ? 465 : window.pageHeight - 135) + 'px;width:200px;'"
:data="customerOrgTreeAll" :props="treeprops" node-key="id" @node-contextmenu="nodeContextmenu"
:data="customerOrgTreeSeo" :props="treeprops" node-key="id" @node-contextmenu="nodeContextmenu"
@node-click="treeclick" highlight-current ref="customerOrgTree">
<span class="custom-tree-node" slot-scope="{ node, data }">
<div>
<span class="treeicons">
<!-- <i
class="el-icon-document-remove"
v-if="data.parentId == null"
></i> -->
<img style="width:20px;height:20px;vertical-align: sub;" src="@/assets/images/order.png"
v-if="!data.parentId" />
</span>
<span :class="!data.parentId ? 'maxtitle' : 'mintitle'">{{ node.label }}
</span>
</div>
</span>
</el-tree>
<el-tree v-if="false"
:style="'overflow: scroll;height:' + (window.pageHeight < 600 ? 465 : window.pageHeight - 135) + 'px;width:200px;'"
:data="customerOrgTreeSeo" :props="treeprops" node-key="id" @node-contextmenu="nodeContextmenu"
:filter-node-method="filterNode" @node-click="treeclick" highlight-current ref="customerOrgTree"
:load="loadNode" lazy>
<span class="custom-tree-node" slot-scope="{ node, data }">
@ -35,7 +56,8 @@
<script>
import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { tcdate, deepCopy, reMadeOrgTree, arrayExistObj, updateDBCom, getDBCom } from "../../utlis/proFunc";
import { tcdate, deepCopy, reMadeOrgTree, arrayExistObj } from "../../utlis/proFunc";
import { setDBCom, getDBCom } from "../../utlis/indexedDB";
import { madeTree, getTreeAllChildIdsById, getTreeNode } from "@/utlis/tree";
@ -57,14 +79,15 @@ export default {
dispCustomerOrgCode: 'N', // -- customerOrgCode
}
},
customerOrgTreeAll: [], //
customerOrgTreeSeo: [], //
customerOrgTreeAll: [], //
orgDatas: [], //
//
cusQuery: {
treeDataAll: [], //
treeDataTop1: [], //
haveSunCus: 'Y', //
haveSunCus: 'N', //
times: 0, // times > 0
}
@ -89,11 +112,20 @@ export default {
//
mounted() {
this.getCustomerOrgAll()
.then(res => {
this.customerOrgTreeSeo = res.slice(0, 100)
this.customerOrgTreeAll = deepCopy(res)
this.patientRegister.customerOrgTreeAll = deepCopy(res)
// console.log('this.customerOrgTreeAll', this.customerOrgTreeAll)
})
/*
// (Y:N)
//
if (this.cusQuery.haveSunCus == 'Y') {
this.getCustomerOrgAll()
.then(res => {
this.customerOrgTreeSeo = res.slice(0, 20)
this.customerOrgTreeAll = res
this.patientRegister.customerOrgTreeAll = res
// console.log('this.customerOrgTreeAll', this.customerOrgTreeAll)
@ -108,14 +140,15 @@ export default {
//console.log('new Date()2', now())
})
}
*/
},
methods: {
//
//
getOrgDatas() {
return new Promise((resolve, reject) => {
console.log('getOrgDatas', this.orgDatas.length)
let url = '/api/app/CustomerOrg/GetSimpleByCodeAll'
if (this.LocalConfig.patientRegister.dispCustomerOrgCode == 'Y') {
url = "/api/app/customerorg/getbycodeall"
@ -123,7 +156,7 @@ export default {
.then((res) => {
if (res.code > -1) {
this.orgDatas = res.data
updateDBCom('orgDatas',res.data) //
setDBCom('orgDatas', res.data) //
resolve()
} else {
reject(res.message)
@ -137,7 +170,7 @@ export default {
.then((res) => {
if (res.code > -1) {
this.orgDatas = res.data
updateDBCom('orgDatas',res.data)
setDBCom('orgDatas', res.data)
resolve()
} else {
reject(res.message)
@ -154,27 +187,36 @@ export default {
//
getCustomerOrgAll() {
return new Promise((resolve, reject) => {
if (this.dataTransOpts.orgDatas.length > 0) {
let treeData = reMadeOrgTree(deepCopy(this.dataTransOpts.orgDatas), this.LocalConfig.patientRegister.dispCustomerOrgCode);
this.cusQuery.times += 1
//console.log('getCustomerOrgAll.treeData', treeData)
//console.log('getTreeNode', getTreeNode(treeData, "treeChildren", 'id', '3a1d3736-d7c6-a9fb-c165-675335dc0e9b').treeChildren)
this.cusQuery.treeDataAll = treeData
resolve(treeData)
} else {
this.getOrgDatas()
.then(() => {
let treeData = reMadeOrgTree(deepCopy(this.dataTransOpts.orgDatas), this.LocalConfig.patientRegister.dispCustomerOrgCode);
getDBCom('orgDatas')
.then(localData => {
let now = Date.now()
// 24 = 86400000
if (localData?.createdat && now - 43200000 < localData.createdat) {
this.orgDatas = localData.data
}
// console.log('this.orgDatas.length',this.orgDatas.length)
if (this.orgDatas.length > 0) {
let treeData = reMadeOrgTree(deepCopy(this.orgDatas), this.LocalConfig.patientRegister.dispCustomerOrgCode);
this.cusQuery.times += 1
//console.log('getCustomerOrgAll.treeData', treeData)
//console.log('getTreeNode', getTreeNode(treeData, "treeChildren", 'id', '3a1d3736-d7c6-a9fb-c165-675335dc0e9b').treeChildren)
this.cusQuery.treeDataAll = treeData
resolve(treeData)
})
.catch(err => {
reject(err)
})
}
} else {
this.getOrgDatas()
.then(() => {
let treeData = reMadeOrgTree(deepCopy(this.orgDatas), this.LocalConfig.patientRegister.dispCustomerOrgCode);
this.cusQuery.times += 1
//console.log('getCustomerOrgAll.treeData', treeData)
//console.log('getTreeNode', getTreeNode(treeData, "treeChildren", 'id', '3a1d3736-d7c6-a9fb-c165-675335dc0e9b').treeChildren)
this.cusQuery.treeDataAll = treeData
resolve(treeData)
})
.catch(err => {
reject(err)
})
}
})
})
},
@ -294,21 +336,32 @@ export default {
//
filterParentNode(value) {
console.log('filterParentNode', value)
// console.log('filterParentNode', value)
// if (!value) return true;
// return data['displayName'].indexOf(value) > -1 || data['simpleCode'].indexOf(value.toUpperCase()) > -1 || data['shortName'].indexOf(value) > -1 || data['customerOrgCode'].indexOf(value) > -1;
this.customerOrgTreeAll = this.cusQuery.treeDataTop1.filter(e => {
return e.label.indexOf(value) > -1 || e.simpleCode.indexOf(value.toUpperCase()) > -1
})
let org = []
if (value) {
org = this.customerOrgTreeAll.filter(e => {
return e.label.indexOf(value) > -1 || e.simpleCode.indexOf(value.toUpperCase()) > -1
})
this.customerOrgTreeSeo = org.slice(0, 100)
} else {
this.customerOrgTreeSeo = this.customerOrgTreeAll.slice(0, 100)
}
},
//
/*
filterNode(value, data) {
console.log('filterNode', value, data)
if (!value) return true;
//return data['displayName'].indexOf(value) !== -1 || data['simpleCode'].indexOf(value.toUpperCase()) !== -1;
return data['displayName'].indexOf(value) !== -1 || data['simpleCode'].indexOf(value.toUpperCase()) !== -1;
},
*/
//
treeclick(data) {
@ -330,24 +383,10 @@ export default {
handler(newVal, oldVal) {
// console.log(`watch newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.dataTransOpts.tableS.patient_register.id}`);
if (newVal != oldVal) {
if (this.cusQuery.haveSunCus == 'Y') {
//this.customerOrgTreeAll = deepCopy(this.cusQuery.treeDataAll)
this.$refs['customerOrgTree'].filter(newVal);
} else {
this.filterParentNode(newVal)
}
this.filterParentNode(newVal)
}
}
},
//
"cusQuery.haveSunCus": {
// immediate: true,
handler(newVal, oldVal) {
// console.log(`watch newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.dataTransOpts.tableS.patient_register.id}`);
if (newVal != oldVal && newVal == 'Y' && this.cusQuery.times == 0) this.getCustomerOrgAll()
}
},
},
};
</script>

79
src/utlis/indexedDB.js

@ -210,10 +210,81 @@ const clearStore = (db, storeName) => {
});
}
// 本地储存
const setDBCom = (pkey, data) => {
return new Promise((resolve, reject) => {
let db
openDB('peis', 1)
.then(res => {
db = res
return updateDBCom(db, 'dict', pkey, data, 'Y')
})
.then(() => {
resolve()
})
.catch(err => {
console.error(err)
reject(err)
})
.finally(() => {
if (db) closeDB(db) // 关闭indexedDB
})
})
}
const getDBCom = (pkey) => {
return new Promise((resolve, reject) => {
let db
openDB('peis', 1)
.then(res => {
db = res
return getDataByKeyCom(db, 'dict', pkey, 'Y')
})
.then((res) => {
resolve(res)
})
.catch(err => {
console.error(err)
reject(err)
})
.finally(() => {
if (db) closeDB(db) // 关闭indexedDB
})
})
}
export default {
openDB, updateDBCom, getDataByKeyCom, deleteDB, dropDB, clearStore, closeDB,
updateDB, getDataByKey
const clearDBCom = () => {
return new Promise((resolve, reject) => {
let db
openDB('peis', 1)
.then(res => {
db = res
return clearStore(db,'dict')
})
.then((res) => {
resolve(res)
})
.catch(err => {
console.error(err)
reject(err)
})
.finally(() => {
if (db) closeDB(db) // 关闭indexedDB
})
})
}
}
// vue3 写法
// export default {
// openDB, updateDBCom, getDataByKeyCom, deleteDB, dropDB, clearStore, closeDB,
// updateDB, getDataByKey,
// setDBCom, getDBCom
// }
// vue2 写法
module.exports = {
openDB, updateDBCom, getDataByKeyCom, deleteDB, dropDB, clearStore, closeDB,
updateDB, getDataByKey,
setDBCom, getDBCom,clearDBCom
}

50
src/utlis/proFunc.js

@ -1,4 +1,3 @@
const indexedDB = require('./indexedDB');
//多级联动选择数据处理 add by pengjun
function tcdate(date) {
@ -22,10 +21,10 @@ function reMadeOrgTree(treeData, dispCustomerOrgCode) {
}
if (e.treeChildren && Array.isArray(e.treeChildren) && e.treeChildren.length > 0) {
e.treeChildren = reMadeOrgTree(e.treeChildren, dispCustomerOrgCode)
//e.isLeaf = false
e.isLeaf = false
} else {
delete e.treeChildren
//e.isLeaf = true
e.isLeaf = true
}
})
return treeData
@ -483,50 +482,7 @@ function isValidMobileNumber(tel) {
}
exports.isValidMobileNumber = isValidMobileNumber;
// 本地储存
function updateDBCom(pkey,data){
return new Promise((resolve, reject) => {
let db
indexedDB.openDB('peis','1')
.then(res => {
db = res
return indexedDB.updateDBCom(db, 'dict', pkey, data, 'Y')
})
.then(() => {
resolve()
})
.catch(err => {
console.error(err)
reject(err)
})
.finally(() => {
if (db) indexedDB.closeDB(db) // 关闭indexedDB
})
})
}
exports.updateDBCom = updateDBCom;
function getDBCom(pkey){
return new Promise((resolve, reject) => {
let db
indexedDB.openDB('peis','1')
.then(res => {
db = res
return indexedDB.getDataByKeyCom(db,'dict',pkey,'Y')
})
.then((res) => {
resolve(res)
})
.catch(err => {
console.error(err)
reject(err)
})
.finally(() => {
if (db) indexedDB.closeDB(db) // 关闭indexedDB
})
})
}
exports.getDBCom = getDBCom;

13
src/views/Home.vue

@ -111,6 +111,7 @@
<el-dropdown-item v-if="LocalConfig.normal.isDevTool"
@click.native="toggleDevTools">调试工具</el-dropdown-item>
<el-dropdown-item @click.native="clientConfigShow">客户端参数</el-dropdown-item>
<el-dropdown-item @click.native="localDBclear">清除本地缓存</el-dropdown-item>
<!--
<el-dropdown-item @click.native="windowMax"
>最大化</el-dropdown-item
@ -167,6 +168,7 @@ import { mapState } from "vuex";
import { getTreeNode, madeTree } from "../utlis/tree";
import { deepCopy } from "@/utlis/proFunc";
import LocalConfig from "../components/common/LocalConfig.vue";;
import { setDBCom, getDBCom, clearDBCom } from "../utlis/indexedDB";
export default {
components: {
@ -373,6 +375,17 @@ export default {
this.$router.push({ path: "/LocalConfig" });
},
localDBclear(){
clearDBCom()
.then(() => {
this.$message.success({showClose:true,message:'操作成功!'})
})
.catch(err => {
console.error(err)
this.$message.error({showClose:true,message:err.message})
})
},
//
toggleDevTools() {
if (!this.$peisAPI) {

Loading…
Cancel
Save