pengjun 1 month ago
parent
commit
699a050a07
  1. 2
      public/sysConfig.json
  2. 8
      src/components/doctorCheck/ButtonList.vue
  3. 166
      src/components/doctorCheck/CheckPicture.vue
  4. 12
      src/components/doctorCheck/PatientRegisterBase.vue
  5. 2
      src/components/doctorCheck/PatientRegisterList.vue
  6. 21
      src/components/patientRegister/customerOrgTreeAll.vue
  7. 2
      src/components/queue/Queue.vue
  8. 2
      src/router/index.js
  9. 154
      src/views/charge/charge.vue
  10. 9
      src/views/customerOrg/patientRegister.vue
  11. 467
      src/views/fee-settings/cardRegister.vue

2
public/sysConfig.json

@ -1,5 +1,5 @@
{
"apiurl": "http://140.143.162.39:9529",
"apiurl": "http://192.168.0.188:9530",
"softName": "神豚体检管理系统",
"pacsApi": "http://192.168.0.188:9530",
"dcmViewers": "https://app.mzaktj.com:4436",

8
src/components/doctorCheck/ButtonList.vue

@ -72,7 +72,9 @@
<el-button type="primary" class="commonbutton" @click="btnOcc"
:disabled="doctorBtnDisabled('btnOcc')">职业病</el-button>
</div>
<div class="divBtnClass">
<el-button type="primary" class="commonbutton" @click="btnReset">重置</el-button>
</div>
<!--
<div>
<el-button type="primary" class="btnClass" @click="btnMakeDiagnosis">生成小结</el-button>
@ -670,6 +672,10 @@ export default {
this.dialogWin.OccDisease = true
},
btnReset(){
location.reload()
},
// AI AI
btnAIdiagnosis(again) {
if (!again) {

166
src/components/doctorCheck/CheckPicture.vue

@ -277,9 +277,31 @@ export default {
mounted() {
// Electron
if (this.$peisAPI) {
//
this.$peisAPI.onEventFromPictureHotKeyMain((data) => {
this.acceptHotKeyData(data)
this.acceptHotKeyData('add', data)
});
//
this.$peisAPI.onEventFromPictureAndPrintHotKeyMain((data) => {
this.acceptHotKeyData('addPrint', data)
});
//
this.$peisAPI.onEventFromPicturePrintHotKeyMain(() => {
this.acceptHotKeyData('print')
});
//
this.$peisAPI.onEventFromPictureCancelPrintHotKeyMain(() => {
this.acceptHotKeyData('unPrint')
});
//
this.$peisAPI.onEventFromPictureDeleteHotKeyMain(() => {
this.acceptHotKeyData('delete')
});
}
if (this.dataTransOpts.tableS.register_check.id) {
@ -321,7 +343,7 @@ export default {
// "creationTime": "2023-12-15T15:24:06",
// "creatorId": "3a0c4180-107c-0c89-b25b-0bd34666dcec",
// "id": "3a0f6a3c-88a5-d5f7-d59b-ef3b38074901"
// }
// }
hadoopGet('pacsApi', `/api/app/registercheckpicture/getregistercheckpictureinregistercheckid?RegisterCheckId=${registerCheckId}`)
// getapi(`/api/app/registercheckpicture/getregistercheckpictureinregistercheckid?RegisterCheckId=${registerCheckId}`)
.then((res) => {
@ -467,45 +489,121 @@ export default {
// windows.peisAPI.receive("acceptHotKeyData",() => {
// this.$message.success({showClose:true,message:''})
// }),
acceptHotKeyData(data) {
console.log('acceptHotKeyData', data)
acceptHotKeyData(oprType, data) {
//
console.log('接收壳端热键采图参数 acceptHotKeyData', oprType, data)
//this.$message.success({ showClose: true, message: '' })
if (!this.dataTransOpts.tableS.register_check.id) {
console.log("没有选中检查项目")
if (!this.dataTransOpts.tableS.register_check.id) {
console.log("没有选中检查项目")
return
}
let baseHead = 'data:image/jpeg;base64,'
switch (item.ImageFormat) {
case 'png':
case 'bmp':
baseHead = `data:image/${item.ImageFormat};base64,`
break;
default:
break;
}
// item.isPrintTrans
this.checkPictures.push({ pictureFilename: baseHead + item.Image })
let body = {
registerCheckId: this.dataTransOpts.tableS.register_check.id,
pictureBaseStrs: [{
fileName,
localPathName: item.FilePath,
pictureBaseStr: baseHead + item.Image
}],
pictureFileType: '0' //01 this.pictureFileType
}
//
if (oprType == 'print' || oprType == 'unPrint') {
let count = this.checkPictures.length
if (count == 0) return
//
let picRd = this.checkPictures[count - 1]
if (!picRd.id) return
if (oprType == 'print') {
picRd.isPrintTrans = true
picRd.isPrint = 'Y'
} else {
picRd.isPrintTrans = false
picRd.isPrint = 'N'
}
let body = [{
registerCheckId: picRd.registerCheckId,
pictureFilename: picRd.pictureFilename,
pictureFileType: picRd.pictureFileType,
registerCheckPictureId: picRd.id,
isPrintTrans: picRd.isPrintTrans,
isPrint: picRd.isPrint
}]
postapi("/api/app/registercheckpicture/UpdateRegisterCheckPictureStatusMany", body)
.then((res) => {
if (res.code < 0) {
console.log('热键更新图片打印标识失败:', res.message)
}else{
this.getCheckPictures(this.dataTransOpts.tableS.register_check.id)
}
})
.catch(err => {
console.log('热键更新图片打印标识失败:', err)
});
} else if (oprType == 'delete') {
let count = this.checkPictures.length
if (count == 0) return
//
let picRd = this.checkPictures[count - 1]
if (!picRd.id) return
postapi(`/api/app/registercheckpicture/deleteregistercheckpicturemany`, [picRd.id])
.then(res => {
if (res.code > -1) {
this.checkPictures.splice(count - 1, 1)
this.getCheckPictures(this.dataTransOpts.tableS.register_check.id)
} else {
console.log("热键删除图片打印标识失败:", res.message)
}
})
.catch(err => {
console.log("热键删除图片打印标识失败:", err)
})
hadoopPost('pacsApi', '/api/app/RegisterCheckPicture/InstrumentMapping', body)
.then(() => {
} else {
try {
let item = data.data[0]
let baseHead = 'data:image/jpeg;base64,'
switch (item.ImageFormat) {
case 'png':
case 'bmp':
baseHead = `data:image/${item.ImageFormat};base64,`
break;
default:
break;
}
let isPrintTrans = false
if(oprType == 'addPrint'){
item.isPrint = 'Y'
isPrintTrans = true
}else{
item.isPrint = 'N'
}
// item.isPrintTrans
this.checkPictures.push({ pictureFilename: baseHead + item.Image ,isPrintTrans})
let fileName = item.FilePath
let dotIndex = fileName.lastIndexOf('\\');
if (dotIndex > -1) fileName = fileName.substring(dotIndex, fileName.length);
let body = {
registerCheckId: this.dataTransOpts.tableS.register_check.id,
pictureBaseStrs: [{
fileName,
localPathName: item.FilePath,
pictureBaseStr: baseHead + item.Image,
isPrint:item.isPrint
}],
pictureFileType: '0' //01 this.pictureFileType
}
})
.catch(err => {
console.log('err', err)
this.$message.error({ showClose: true, message: '热键采图失败' + err.message })
})
hadoopPost('pacsApi', '/api/app/RegisterCheckPicture/InstrumentMapping', body)
.then(() => {
this.getCheckPictures(this.dataTransOpts.tableS.register_check.id)
})
.catch(err => {
console.log('热键采图失败', err)
})
} catch (error) {
console.log('热键采图失败', error)
}
}
},

12
src/components/doctorCheck/PatientRegisterBase.vue

@ -3,7 +3,7 @@
<div style="display: flex; flex-wrap: wrap;height:70px; width: 100%;overflow-y: auto;">
<div>
<span class="query">条码号</span>
<el-input placeholder="条码号" v-model="prBase.patientRegisterNo" size="small" style="width: 120px;" clearable />
<el-input ref="tmh" placeholder="条码号" v-model="prBase.patientRegisterNo" size="small" style="width: 120px;" clearable />
</div>
<div>
<span class="query">档案号</span>
@ -128,7 +128,7 @@ export default {
patientName: '', //
sexId: '', //
sexName: '', //
idNo:'', //
idNo: '', //
age: '', //
medicalTimes: '', //
maritalStatusId: '', //
@ -163,6 +163,10 @@ export default {
//
this.getPatientRegister(this.dataTransOpts.tableS.patient_register.patientRegisterNo)
this.$nextTick(() => {
this.$refs['tmh'].focus(); //
});
},
computed: {
@ -181,7 +185,7 @@ export default {
//
this.dataTransOpts.refresh.register_check.M++
//
// console.log('afterFind',rd)
@ -316,7 +320,7 @@ export default {
if (res.code > -1) {
this.dataTransOpts.tableS.patient_register = res.data
if (this.dataTransOpts.tableS.patient_register.completeFlag != '3') this.dataTransOpts.tableS.patient_register.summaryDoctorId = this.userId
if(this.dataTransOpts.tableS.patient_register.completeFlag == '3' && this.dataTransOpts.tableS.patient_register.isAudit == 'N'){
if (this.dataTransOpts.tableS.patient_register.completeFlag == '3' && this.dataTransOpts.tableS.patient_register.isAudit == 'N') {
this.dataTransOpts.tableS.patient_register.auditDoctorId = this.userId
}
}

2
src/components/doctorCheck/PatientRegisterList.vue

@ -81,7 +81,7 @@
style="width:50px;height:26px;margin: 2px 0 2px -3px;">查询</el-button>
</div>
</div>
<!-- 人员列表 -->
<el-table :data="dataList" border width="100%" :height="tableHeight" row-key="id" size="small" highlight-current-row
@row-click="rowClick" @row-dblclick="rowDblclick" ref="info" id="info" style="border-radius:10px;">

21
src/components/patientRegister/customerOrgTreeAll.vue

@ -12,8 +12,8 @@
<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"
:filter-node-method="filterNode"
@node-click="treeclick" highlight-current ref="customerOrgTree" :load="loadNode" lazy>
:filter-node-method="filterNode" @node-click="treeclick" highlight-current ref="customerOrgTree"
:load="loadNode" lazy>
<span class="custom-tree-node" slot-scope="{ node, data }">
<div>
<span class="treeicons">
@ -37,6 +37,7 @@ import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { tcdate, deepCopy, reMadeOrgTree, arrayExistObj } from "../../utlis/proFunc";
import { madeTree, getTreeAllChildIdsById, getTreeNode } from "@/utlis/tree";
import { now } from "moment";
export default {
components: {},
data() {
@ -86,7 +87,9 @@ export default {
//
mounted() {
// (Y:N)
//
//
if (this.cusQuery.haveSunCus == 'Y') {
this.getCustomerOrgAll()
.then(res => {
@ -95,11 +98,13 @@ export default {
// console.log('this.customerOrgTreeAll', this.customerOrgTreeAll)
})
} else {
console.log('new Date()1', now())
this.getCustomerOrgChild(null)
.then(res => {
this.customerOrgTreeAll = res
this.customerOrgTreeAll = res //.slice(0,3)
this.patientRegister.customerOrgTreeAll = res
// console.log('this.customerOrgTreeAll', this.customerOrgTreeAll)
console.log('new Date()2', now())
})
}
@ -128,14 +133,15 @@ export default {
})
},
//
getCustomerOrgChild(parentId) {
return new Promise((resolve, reject) => {
console.log('new Date()3', now())
postapi('/api/app/CustomerOrg/GetCustomerOrgByParentId', { parentId })
.then(res => {
if (res.code > -1) {
console.log('new Date()4', now())
res.data.forEach(e => {
e.isLeaf = e.isChild == 'Y' ? false : true
});
@ -155,7 +161,6 @@ export default {
reject(err)
})
})
},
//
@ -279,7 +284,7 @@ export default {
if (newVal != oldVal) {
if (this.cusQuery.haveSunCus == 'Y') {
//this.customerOrgTreeAll = deepCopy(this.cusQuery.treeDataAll)
this.$refs['customerOrgTree'].filter(newVal);
this.$refs['customerOrgTree'].filter(newVal);
} else {
this.filterParentNode(newVal)
}

2
src/components/queue/Queue.vue

@ -261,7 +261,7 @@ export default {
"dataTransOpts.plus.queue": {
// immediate:true,
handler(newVal, oldVal) {
console.log(`watch 职业病 newVal: ${newVal}, oldVal: ${oldVal} `);
console.log(`watch 分诊排队 newVal: ${newVal}, oldVal: ${oldVal} `);
if (newVal != oldVal) this.funMounted()
}
},

2
src/router/index.js

@ -287,7 +287,7 @@ const routes = [{
},
{
path: "/cardRegister",
name: "会员卡登记",
name: "会员卡管理",
component: () =>
import ("../views/fee-settings/cardRegister.vue"),
},

154
src/views/charge/charge.vue

@ -15,10 +15,10 @@
<div>
<span>登记日期</span>
<el-date-picker v-model="query.startDate" type="date" placeholder="起始日期" size="small"
style="width:90px;" :picker-options="pickerOptions"/>
style="width:90px;" :picker-options="pickerOptions" />
<span style="margin: 0 3px;"></span>
<el-date-picker v-model="query.endDate" type="date" placeholder="截止日期" size="small"
style="width:90px;" :picker-options="pickerOptions"/>
style="width:90px;" :picker-options="pickerOptions" />
</div>
<div style="margin-left:10px;">
<el-button type="primary" class="commonbutton" @click="Query" size="small"
@ -151,17 +151,18 @@
<el-table :data="chargePays" border highlight-current-row size="small"
:height="Math.floor((tableListHeight - 155) / 2)">
<el-table-column prop="payModeId" :label="(query.chargeFlag == 'B' ? '退' : '收') + '费方式'"
width="180">
min-width="100">
<template slot-scope="scope">
<div>{{ dddw(dict.payMode, "id", scope.row.payModeId, "displayName") }}</div>
</template>
</el-table-column>
<el-table-column prop="chargeMoney" label="金额">
<el-table-column prop="chargeMoney" label="金额" min-width="80">
<template slot-scope="scope">
<el-input type="number" v-model="scope.row.chargeMoney" size="small" @input="inputMoney"
:disabled="query.chargeFlag == 'B'" />
</template>
</el-table-column>
<!-- 旧的选卡方式
<el-table-column prop="cardRegisterId" label="会员卡">
<template slot-scope="scope">
<el-select v-model="scope.row.cardRegisterId" placeholder="请选择" size="small" filterable
@ -171,6 +172,19 @@
</el-select>
</template>
</el-table-column>
-->
<el-table-column prop="cardRegisterId" label="会员卡" min-width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.cardNo" size="small" disabled />
</template>
</el-table-column>
<el-table-column v-if="query.chargeFlag == 'N'" width="30" align="center">
<template slot-scope="scope">
<i class="el-icon-search" @click="getCardId(scope.$index)"
v-if="scope.row.payModeId == '05'"
style="font-size: 24px;color: blue;cursor:pointer;"></i>
</template>
</el-table-column>
</el-table>
</div>
<!-- asbitem -->
@ -248,6 +262,70 @@
</el-tab-pane>
</el-tabs>
</div>
<!--弹窗-->
<!--选卡号-->
<el-dialog title="选卡" :visible.sync="winDialog.queryCard" width="800px" height="500" :show-close="false"
:close-on-click-modal="false" :append-to-body="true">
<!--查询条件-->
<div style="display: flex;justify-content: space-between;">
<div>
<el-select v-model="queryCard.queryCol" placeholder="请选择" clearable size="small">
<el-option label="卡号" value="cardNo" />
<el-option label="姓名" value="customerName" />
<el-option label="身份证号" value="idNo" />
<el-option label="手机号" value="phone" />
</el-select>
<el-input placeholder="卡号" v-model="queryCard.value" size="small" clearable style="width: 190px" />
</div>
<div class="query">
<el-button class="commonbutton" @click="btnQueryCard">查询</el-button>
</div>
</div>
<el-table :data="cardDatas" border height="400" row-key="id" size="small" highlight-current-row
@row-click="cardRowClick" @row-dblclick="rowDblclick" ref="patientList">
<el-table-column prop="cardTypeName" label="卡类别" min-width="70" />
<el-table-column prop="cardNo" label="会员卡号" min-width="150" />
<el-table-column prop="discount" label="折扣率" min-width="80" />
<el-table-column prop="cardBalance" label="卡余额" min-width="80" />
<el-table-column prop="expiryDate" label="有效期限" min-width="120">
<template slot-scope="scope">
<div v-if="scope.row.expiryDate">
{{ moment(scope.row.expiryDate).format("yyyy-MM-DD") }}
</div>
</template>
</el-table-column>
<el-table-column prop="customerName" label="卡主姓名" min-width="80" />
<el-table-column prop="idNo" label="卡主身份证号" min-width="200" />
<el-table-column prop="telephone" label="卡主电话" min-width="150" />
<el-table-column prop="mobileTelephone" label="卡主手机号" min-width="150" />
<el-table-column prop="remark" label="备注" min-width="200" />
<!--
<el-table-column prop="creatorName" label="创建人员" min-width="100" />
<el-table-column prop="creationTime" label="创建日期" min-width="150">
<template slot-scope="scope">
<div v-if="scope.row.creationTime">
{{ moment(scope.row.creationTime).format("yyyy-MM-DD") }}
</div>
</template>
</el-table-column>
<el-table-column prop="lastModifierName" label="修改人员" width="100" />
<el-table-column prop="lastModificationTime" label="修改日期" width="150">
<template slot-scope="scope">
<div v-if="scope.row.lastModificationTime">
{{
moment(scope.row.lastModificationTime).format("yyyy-MM-DD")
}}
</div>
</template>
</el-table-column>
-->
</el-table>
<span slot="footer" class="dialog-footer">
<el-button class="commonbutton" type="primary" @click="btnOkCard" style="width:90px;">确定</el-button>
<el-button class="commonbutton" @click="winDialog.queryCard = false" style="width:90px;">取消</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
@ -269,7 +347,7 @@ export default {
props: ["patientRegisterNo"],
data() {
return {
activeName:"peis",
activeName: "peis",
query: {
chargeFlag: 'N', // N:YB退
dateRange: null,
@ -339,6 +417,21 @@ export default {
selectedData: [], //
cardRegister: [{ id: '00000000-0000-0000-0000-000000000000', cardNo: '0001' }], //
cardRegisterAll: [], //
queryCard: {
// <el-option label="" value="cardNo" />
// <el-option label="" value="customerName" />
// <el-option label="" value="idNo" />
// <el-option label="" value="mobileTelephone" />
queryCol: "cardNo",
value: "",
},
cardDatas: [], //
cardSeq: 0, //
cardChoosed: {}, //
winDialog: {
queryCard: false,
}
};
},
@ -476,7 +569,7 @@ export default {
this.query.patientNo = row.patientNo;
this.chargePays = deepCopy(this.chargePaysInit);
console.log(this.chargePays, this.chargePaysInit);
//console.log(this.chargePays, this.chargePaysInit);
if (this.query.chargeFlag == 'B') {
this.form.chargeFlag = '1';
@ -571,6 +664,52 @@ export default {
});
},
//
getCardId(index) {
console.log('index', index)
this.cardSeq = index
this.cardDatas = [] //
this.winDialog.queryCard = true //
},
//
btnQueryCard() {
let body = {}
body[this.queryCard.queryCol] = this.queryCard.value
// body = {
// "cardModeId": "string",
// "cardNo": "string",
// "customerName": "string",
// "idNo": "string",
// "phone": "string"
// }
postapi('/api/app/CardRegister/GetCardRegisterCharge', body)
.then(res => {
if (res.code > -1) {
this.cardDatas = res.data
}
})
},
//
cardRowClick(row) {
this.cardChoosed = Object.assign({}, row)
},
//
btnOkCard() {
this.chargePays[this.cardSeq].cardNo = this.cardChoosed.cardNo
this.chargePays[this.cardSeq].cardRegisterId = this.cardChoosed.id
this.winDialog.queryCard = false
},
//
rowDblclick(row) {
this.cardRowClick(row)
this.btnOkCard()
},
//
getChargeAsbByChargeid(ChargeId) {
@ -606,6 +745,7 @@ export default {
if (lfind > - 1) {
this.chargePays[lfind].chargeMoney = e.chargeMoney;
this.chargePays[lfind].cardRegisterId = e.cardRegisterId;
this.chargePays[lfind].cardNo = e.cardNo;
}
});
}
@ -1208,7 +1348,7 @@ export default {
//
this.chargePaysInit = [];
this.dict.payMode.forEach(e => {
this.chargePaysInit.push({ chargeId: null, payModeId: e.id, chargeMoney: 0, cardBillId: null })
this.chargePaysInit.push({ chargeId: null, payModeId: e.id, chargeMoney: 0, cardBillId: null, cardRegisterId: '', cardNo: '' })
});
this.chargePays = deepCopy(this.chargePaysInit);
}

9
src/views/customerOrg/patientRegister.vue

@ -9,8 +9,10 @@
<div :style="'margin-right:5px;background-color: #fff;border-radius: 8px;width:208px; height:' +
(window.pageHeight < 600 ? 450 : window.pageHeight - 100) +
'px;'
">
<CustomerOrgTreeAll />
">
<!-- -->
<CustomerOrgTreeAll />
</div>
<div :style="'display:block;width:' +
(window.pageWidth - 200 - 35) +
@ -148,8 +150,7 @@ export default {
}
});
//
// getapi("/api/app/customerorggroup/getlistinfilter")
//
postapi("/api/app/CustomerOrgGroup/GetBasicList").then((res) => {
if (res.code > -1) {
this.dict.customerOrgGroupAll = res.data;

467
src/views/fee-settings/cardRegister.vue

@ -8,8 +8,7 @@
<span class="contenttitleBold">会员卡管理</span>
</div>
</div>
<div
style="
<div style="
background-color: #fff;
padding: 15px;
border-radius: 8px;
@ -18,47 +17,20 @@
margin-bottom: 10px;
height: 80px;
margin-top: 7px;
"
>
">
<div class="query">
<el-select
v-model="query.dateType"
placeholder="请选择"
filterable
size="small"
style="width: 90px"
>
<el-select v-model="query.dateType" placeholder="请选择" filterable size="small" style="width: 90px">
<el-option label="登记日期" value="createDate" />
<el-option label="有效日期" value="expiryDate" />
</el-select>
<el-date-picker
v-model="query.startDate"
type="date"
placeholder="起始日期"
size="small"
/>
<el-date-picker v-model="query.startDate" type="date" placeholder="起始日期" size="small" />
<span>--</span>
<el-date-picker
v-model="query.endDate"
type="date"
placeholder="截止日期"
size="small"
/>
<el-date-picker v-model="query.endDate" type="date" placeholder="截止日期" size="small" />
</div>
<div class="query">
<span>卡类别</span>
<el-select
v-model="query.cardTypeId"
placeholder="请选择"
clearable
size="small"
>
<el-option
v-for="item in dict.cardType"
:key="item.id"
:label="item.displayName"
:value="item.id"
/>
<el-select v-model="query.cardTypeId" placeholder="请选择" clearable size="small">
<el-option v-for="item in dict.cardType" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</div>
<div class="query">
@ -69,82 +41,43 @@
<el-radio :label="0">停用</el-radio>
</el-radio-group>
-->
<el-select
v-model="query.isActive"
placeholder="请选择"
clearable
size="small"
>
<el-select v-model="query.isActive" placeholder="请选择" clearable size="small">
<el-option label="启用" value="Y" />
<el-option label="停用" value="N" />
</el-select>
</div>
<div class="query">
<span>卡号</span>
<el-input
placeholder="卡号"
v-model="query.cardNo"
size="small"
clearable
style="width: 190px"
/>
<el-input placeholder="卡号" v-model="query.cardNo" size="small" clearable style="width: 190px" />
</div>
<div class="query">
<span>卡主姓名</span>
<el-input
placeholder="卡主姓名"
v-model="query.customerName"
size="small"
clearable
style="width: 190px"
/>
<el-input placeholder="卡主姓名" v-model="query.customerName" size="small" clearable style="width: 190px" />
</div>
<div class="query">
<span>身份证号</span>
<el-input
placeholder="身份证号"
v-model="query.idNo"
size="small"
clearable
style="width: 190px"
/>
<el-input placeholder="身份证号" v-model="query.idNo" size="small" clearable style="width: 190px" />
</div>
<div class="query">
<span>电话</span>
<el-input
placeholder="手机号/电话"
v-model="query.mobileTelephone"
size="small"
clearable
style="width: 190px"
/>
<el-input placeholder="手机号/电话" v-model="query.mobileTelephone" size="small" clearable
style="width: 190px" />
</div>
<div class="query">
<el-button class="commonbutton" @click="btnQuery">查询</el-button>
</div>
</div>
<div
style="
<div style="
background-color: #fff;
padding: 15px;
border-radius: 8px;
margin-bottom: 10px;
"
>
<el-table
:data="dataList"
width="100%"
:height="
window.pageHeight < 600
? 210
: Math.floor((window.pageHeight - 280) / 2)
"
row-key="id"
highlight-current-row
ref="dataList"
@selection-change="handleSelectionChange"
@row-click="rowClick"
>
">
<el-table :data="dataList" ref="info" id="info" width="100%" :height="window.pageHeight < 600
? 210
: Math.floor((window.pageHeight - 340) / 2)
" row-key="id" highlight-current-row @selection-change="handleSelectionChange"
@row-click="rowClick">
<el-table-column prop="cardTypeId" label="卡类别" width="70">
<template slot-scope="scope">
<div>
@ -172,11 +105,7 @@
<el-table-column prop="customerName" label="卡主姓名" width="80" />
<el-table-column prop="idNo" label="卡主身份证号" width="200" />
<el-table-column prop="telephone" label="卡主电话" width="150" />
<el-table-column
prop="mobileTelephone"
label="卡主手机号"
width="150"
/>
<el-table-column prop="mobileTelephone" label="卡主手机号" width="150" />
<el-table-column prop="isActive" label="启用" width="80">
<template slot-scope="scope">
<div>{{ scope.row.isActive == "N" ? "否" : "是" }}</div>
@ -191,16 +120,8 @@
</div>
</template>
</el-table-column>
<el-table-column
prop="lastModifierName"
label="修改人员"
width="100"
/>
<el-table-column
prop="lastModificationTime"
label="修改日期"
width="150"
>
<el-table-column prop="lastModifierName" label="修改人员" width="100" />
<el-table-column prop="lastModificationTime" label="修改日期" width="150">
<template slot-scope="scope">
<div v-if="scope.row.lastModificationTime">
{{
@ -210,21 +131,21 @@
</template>
</el-table-column>
</el-table>
<div style="display: flex; justify-content: space-between">
<div></div>
<div>
<span style="font-size: 12px">{{ loadOpts.totalCount }} 条记录当前显示{{
dataList.length
}}
</span>
</div>
</div>
</div>
<div style="background-color: #fff; padding: 15px; border-radius: 8px">
<el-table
:data="cardBillList"
width="100%"
:height="
window.pageHeight < 600
? 210
: Math.floor((window.pageHeight - 300) / 2)
"
row-key="id"
highlight-current-row
ref="dataList"
@selection-change="handleSelectionChange"
>
<el-table :data="cardBillList" width="100%" :height="window.pageHeight < 600
? 210
: Math.floor((window.pageHeight - 300) / 2)
" row-key="id" highlight-current-row ref="dataList" @selection-change="handleSelectionChange">
<el-table-column prop="payModeId" label="支付方式">
<template slot-scope="scope">
<div>
@ -253,11 +174,7 @@
</template>
</el-table-column>
<el-table-column prop="lastModifierName" label="修改人员" />
<el-table-column
prop="lastModificationTime"
label="修改日期"
width="150"
>
<el-table-column prop="lastModificationTime" label="修改日期" width="150">
<template slot-scope="scope">
<div v-if="scope.row.lastModificationTime">
{{
@ -269,15 +186,13 @@
</el-table>
</div>
</div>
<div
style="
<div style="
margin-left: 10px;
margin-top: 3%;
position: absolute;
top: 0;
right: 0;
"
>
">
<div>
<el-button class="commonbutton" @click="add">新增</el-button>
</div>
@ -301,34 +216,13 @@
</div>
</div>
</div>
<el-dialog
:title="form.id ? '编辑' : '新增'"
:visible.sync="dialogVisible"
width="820px"
:close-on-click-modal="false"
>
<el-form
ref="form"
:model="form"
label-width="100px"
:rules="rules"
size="small"
>
<el-dialog :title="form.id ? '编辑' : '新增'" :visible.sync="dialogVisible" width="820px" :close-on-click-modal="false">
<el-form ref="form" :model="form" label-width="100px" :rules="rules" size="small">
<el-row>
<el-col :span="8">
<el-form-item label="卡类别" prop="cardTypeId">
<el-select
v-model="form.cardTypeId"
placeholder="请选择"
filterable
@change="category"
>
<el-option
v-for="item in dict.cardType"
:key="item.id"
:label="item.displayName"
:value="item.id"
/>
<el-select v-model="form.cardTypeId" placeholder="请选择" filterable @change="category" :disabled="form.id ? true:false">
<el-option v-for="item in dict.cardType" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
@ -346,13 +240,8 @@
<el-row>
<el-col :span="8">
<el-form-item label="有效期限" prop="expiryDate">
<el-date-picker
v-model="form.expiryDate"
type="date"
placeholder="有效期限"
size="small"
:style="'width: ' + Math.floor((820 - 340) / 3) + 'px'"
/>
<el-date-picker v-model="form.expiryDate" type="date" placeholder="有效期限" size="small"
:style="'width: ' + Math.floor((820 - 340) / 3) + 'px'" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -387,18 +276,8 @@
<el-row>
<el-col :span="8">
<el-form-item label="体检中心" prop="medicalCenterId">
<el-select
v-model="form.medicalCenterId"
placeholder="请选择"
filterable
:disabled="peisid ? true : false"
>
<el-option
v-for="item in dict.organization"
:key="item.id"
:label="item.displayName"
:value="item.id"
>
<el-select v-model="form.medicalCenterId" placeholder="请选择" filterable :disabled="peisid ? true : false">
<el-option v-for="item in dict.organization" :key="item.id" :label="item.displayName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
@ -418,14 +297,10 @@
</el-col>
<el-col :span="6">
<el-form-item label="创建时间" label-width="80px">
<el-input
:value="
form.creationTime
? moment(form.creationTime).format('yyyy-MM-DD')
: ''
"
disabled
></el-input>
<el-input :value="form.creationTime
? moment(form.creationTime).format('yyyy-MM-DD')
: ''
" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
@ -435,40 +310,21 @@
</el-col>
<el-col :span="6">
<el-form-item label="修改时间" label-width="80px">
<el-input
:value="
form.lastModificationTime
? moment(form.lastModificationTime).format('yyyy-MM-DD')
: ''
"
disabled
></el-input>
<el-input :value="form.lastModificationTime
? moment(form.lastModificationTime).format('yyyy-MM-DD')
: ''
" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false" class="difference"
>取消</el-button
>
<el-button type="primary" @click="onSubmit('form')" class="commonbutton"
>确定</el-button
>
<el-button @click="dialogVisible = false" class="difference">取消</el-button>
<el-button type="primary" @click="onSubmit('form')" class="commonbutton">确定</el-button>
</div>
</el-dialog>
<el-dialog
title="会员卡充值"
:visible.sync="dialogOrder"
width="400px"
:close-on-click-modal="false"
>
<el-form
ref="order"
:model="order"
label-width="100px"
:rules="orderRules"
size="small"
>
<el-dialog title="会员卡充值" :visible.sync="dialogOrder" width="400px" :close-on-click-modal="false">
<el-form ref="order" :model="order" label-width="100px" :rules="orderRules" size="small">
<el-col :span="24">
<el-form-item label="会员卡号" prop="cardRegisterId">
<el-input v-model="order.cardNo" disabled style="width: 200px" />
@ -476,106 +332,49 @@
</el-col>
<el-col :span="24">
<el-form-item label="充值方式" prop="payModeId">
<el-select
v-model="order.payModeId"
placeholder="请选择"
filterable
:disabled="order.id ? true : false"
style="width: 200px"
>
<el-option
v-for="item in dict.payMode"
:key="item.id"
:label="item.displayName"
:value="item.id"
/>
<el-select v-model="order.payModeId" placeholder="请选择" filterable :disabled="order.id ? true : false"
style="width: 200px">
<el-option v-for="item in dict.payMode" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="充值金额" prop="billMoney">
<el-input
type="number"
v-model="order.billMoney"
:disabled="order.id ? true : false"
style="width: 200px"
/>
<el-input type="number" v-model="order.billMoney" :disabled="order.id ? true : false"
style="width: 200px" />
</el-form-item>
</el-col>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogOrder = false" class="difference"
>取消</el-button
>
<el-button
type="primary"
@click="orderSubmit('order')"
class="commonbutton"
>确定</el-button
>
<el-button @click="dialogOrder = false" class="difference">取消</el-button>
<el-button type="primary" @click="orderSubmit('order')" class="commonbutton">确定</el-button>
</div>
</el-dialog>
<el-dialog
title="会员卡退费"
:visible.sync="refundOrder"
width="400px"
:close-on-click-modal="false"
>
<el-form
ref="refundorder"
:model="refundorder"
label-width="100px"
:rules="refundRules"
size="small"
>
<el-dialog title="会员卡退费" :visible.sync="refundOrder" width="400px" :close-on-click-modal="false">
<el-form ref="refundorder" :model="refundorder" label-width="100px" :rules="refundRules" size="small">
<el-col :span="24">
<el-form-item label="会员卡号" prop="cardRegisterId">
<el-input
v-model="refundorder.cardNo"
disabled
style="width: 200px"
/>
<el-input v-model="refundorder.cardNo" disabled style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="退费方式" prop="payModeId">
<el-select
v-model="refundorder.payModeId"
placeholder="请选择"
filterable
:disabled="refundorder.id ? true : false"
style="width: 200px"
>
<el-option
v-for="item in dict.payMode"
:key="item.id"
:label="item.displayName"
:value="item.id"
/>
<el-select v-model="refundorder.payModeId" placeholder="请选择" filterable
:disabled="refundorder.id ? true : false" style="width: 200px">
<el-option v-for="item in dict.payMode" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="退费金额" prop="billMoney">
<el-input
type="number"
v-model="refundorder.billMoney"
:disabled="refundorder.id ? true : false"
style="width: 200px"
/>
<el-input type="number" v-model="refundorder.billMoney" :disabled="refundorder.id ? true : false"
style="width: 200px" />
</el-form-item>
</el-col>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="refundOrder = false" class="difference"
>取消</el-button
>
<el-button
type="primary"
@click="orderSubmit('refundorder')"
class="commonbutton"
>确定</el-button
>
<el-button @click="refundOrder = false" class="difference">取消</el-button>
<el-button type="primary" @click="orderSubmit('refundorder')" class="commonbutton">确定</el-button>
</div>
</el-dialog>
</div>
@ -609,6 +408,14 @@ export default {
mobileTelephone: "",
}, //
loadOpts: {
totalCount: 0,
skipCount: 0,
maxResultCount: 1000,
},
loadOptsInit: {},
lazyLoading: false, //
dataList: [], //
cardBillList: [], //
multipleSelection: [], //
@ -623,7 +430,7 @@ export default {
idNo: "",
telephone: "",
mobileTelephone: "",
isActive: "N",
isActive: "Y",
remark: "",
medicalCenterId: null,
},
@ -711,12 +518,17 @@ export default {
this.query.startDate = new Date();
this.query.endDate = this.query.startDate;
this.formInit = deepCopy(this.form);
this.loadOptsInit = Object.assign({}, this.loadOpts);
},
//
mounted() {
this.dictInit();
this.btnQuery();
// this.btnQuery();
this.$nextTick(() => {
this.scrollFull()
})
},
computed: {
...mapState(["window", "dict"]),
@ -795,10 +607,19 @@ export default {
this.$message.warning("请先选择要操作的数据!");
return;
}
this.form={...this.curChoosedRow}
// objCopy(this.curChoosedRow, this.form);
this.dialogVisible = true;
getapi(`/api/app/cardregister/get?id=${this.curChoosedRow.id}`)
.then(res => {
if (res.code > -1) {
this.form = res.data
this.dialogVisible = true;
}
})
// this.form = { ...this.curChoosedRow }
// this.dialogVisible = true;
},
enable() {
if (!this.curChoosedId) {
this.$message.warning("请先选择要操作的数据!");
@ -990,8 +811,7 @@ export default {
});
},
//
btnQuery(queryType) {
getQueryBody(queryType) {
let body = {};
switch (queryType) {
@ -1015,6 +835,7 @@ export default {
this.$message.error("数据不合法,起始日期不能大于截止日期!");
return;
}
body.dateType = this.query.dateType == 'expiryDate' ? '2' : '1'
body.startDate = moment(this.query.startDate).format("yyyy-MM-DD");
body.endDate = moment(this.query.endDate).format("yyyy-MM-DD");
@ -1028,23 +849,67 @@ export default {
}
break;
}
// {
// "cardModeId": "string",
// "cardTypeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
// "cardNo": "string",
// "customerName": "string",
// "idNo": "string",
// "isActive": "string",
// "startDate": "string",
// "endDate": "string"
// }
return body
},
//
btnQuery() {
let body = this.getQueryBody()
body.maxResultCount = this.loadOptsInit?.maxResultCount || 0
body.skipCount = this.loadOptsInit?.skipCount || 0
this.loadOptsInit = Object.assign({}, this.loadOpts);
postapi("/api/app/cardregister/getcardregisterlist", body).then((res) => {
if (res.code != -1) {
this.dataList = res.data;
this.dataList = res.data.items;
this.loadOpts.totalCount = res.data.totalCount
this.loadOpts.skipCount = 1
}
});
},
//
//
scrollFull() {
this.dom = this.$refs['info'].bodyWrapper
console.log('this.dom', this.dom)
this.dom.addEventListener('scroll', async () => {
// console.log('scrollTop',this.dom.scrollTop,'clientHeight',this.dom.clientHeight,'scrollHeight',this.dom.scrollHeight);
if (this.dom.scrollTop + this.dom.clientHeight + 20 > this.dom.scrollHeight && !this.lazyLoading) {
//
console.log('scrollTop', this.dom.scrollTop, 'clientHeight', this.dom.clientHeight, 'scrollHeight', this.dom.scrollHeight);
if (Number(this.loadOpts.skipCount) * Number(this.loadOpts.maxResultCount) >= Number(this.loadOpts.totalCount)) {
this.lazyLoading = false
} else {
this.lazyLoading = true
this.loadQuery()
// this.dom.scrollTop = this.dom.scrollTop - 100
}
}
})
},
loadQuery() {
let body = this.getQueryBody()
if (Number(this.loadOpts.skipCount) * Number(this.loadOpts.maxResultCount||100) >= Number(this.loadOpts.totalCount)) {
this.$message.warning({ showClose: true, message: '没有更多的数据可拉取' })
return
}
body.maxResultCount = this.loadOpts?.maxResultCount || 1000
body.skipCount = this.loadOpts.skipCount
postapi("/api/app/cardregister/getcardregisterlist", body).then((res) => {
if (res.code != -1) {
this.dataList = this.dataList.concat(res.data.items);
this.loadOpts.totalCount = res.data.totalCount
this.loadOpts.skipCount++
this.lazyLoading = false
}
});
},
},
//
@ -1066,14 +931,17 @@ export default {
@import "../../assets/css/global_form.css";
@import "../../assets/css/global_input.css";
@import "../../assets/css/global.css";
::v-deep .el-input__inner {
/*text-align: center;*/
padding-left: 5px;
padding-right: 25px;
}
::v-deep .el-icon-date:before {
content: "";
}
.query {
margin-right: 15px;
display: flex;
@ -1084,30 +952,37 @@ export default {
font-weight: 400;
font-family: "NotoSansSC-Regular";
}
.box {
display: flex;
flex-direction: column;
}
:deep .el-form-item {
margin-bottom: 14px;
}
/* el-dialog的头部样式 */
:deep .el-dialog__header {
padding: 11px 20px 11px;
}
/* el-dialog的主体样式 */
:deep .el-dialog__body {
padding: 0px 20px 0px;
}
/* el-divider样式 */
:deep .el-divider--horizontal {
margin: 0px 0 12px;
}
/* el-dialog的底部样式 */
:deep .el-dialog__footer {
padding: 0px 20px 14px;
}
.query:last-child{
.query:last-child {
margin-right: 0;
}
</style>
Loading…
Cancel
Save