You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
283 lines
10 KiB
283 lines
10 KiB
<template>
|
|
<div style="display: flex;">
|
|
<div :style="`width:${isDialog ? 660:(window.pageWidth - 200 - 145)}px;`">
|
|
<el-table :data="dataTransOpts.tableM.lis_request" border @row-click="rowClick"
|
|
:height="window.pageHeight < 600 ? 140 : Math.floor((window.pageHeight - 250) * 2 / 5)" size="small"
|
|
highlight-current-row ref="lis_request" :row-class-name="handleRowClassName">
|
|
<el-table-column type="index" label="序号" width="50" align="center" />
|
|
<el-table-column prop="isPrint" label="打印" min-width="50" align="center" >
|
|
<template slot-scope="scope">
|
|
<i class="el-icon-printer" v-if="scope.row.isPrint == 'Y'" style="font-size: 20px; color: green" />
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="patientName" label="姓名" min-width="70" align="center" />
|
|
<el-table-column prop="lisRequestNo" label="条码号" min-width="120" align="center" />
|
|
<el-table-column prop="sampleTypeName" label="标本" min-width="50" align="center" />
|
|
<el-table-column prop="sampleContainerName" label="标本容器" min-width="100" />
|
|
<el-table-column prop="containerColor" label="颜色" width="50" align="center">
|
|
<template slot-scope="scope">
|
|
<div
|
|
:style="`width: 45px;height: 25px;border-radius: 3px;background-color: ${colorTrans(scope.row.containerColor)};`">
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="sampleContainerRemark" label="容器说明" min-width="100" />
|
|
<el-table-column prop="asbitemNames" label="检验项目" min-width="120" />
|
|
<el-table-column prop="samplerName" label="采样人" min-width="70" align="center" />
|
|
<el-table-column prop="samplingTime" label="采样时间" min-width="120" align="center" />
|
|
<el-table-column prop="isSignIn" label="是否签收" width="70" align="center">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.isSignIn == 'Y' ? '√' : '' }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="signInOrder" label="签收顺序" width="70" align="center" />
|
|
<el-table-column prop="signInPerson" label="签收人" min-width="70" align="center" />
|
|
<el-table-column prop="signInTime" label="签收时间" min-width="120" align="center" />
|
|
</el-table>
|
|
</div>
|
|
<div style="margin-left: 10px;width: 110px;">
|
|
<div v-show="checkPagePriv(pagePriv.privs, '全选')" class="listBtn">
|
|
<el-button type="success" class="commonbutton" @click="btnChoose(true)">全选</el-button>
|
|
</div>
|
|
<div v-show="checkPagePriv(pagePriv.privs, '取消全选')" class="listBtn">
|
|
<el-button type="success" class="deleteButton" @click="btnChoose(false)">取消全选</el-button>
|
|
</div>
|
|
<div v-show="checkPagePriv(pagePriv.privs, '打印')" class="listBtn">
|
|
<el-button type="primary" class="commonbutton" @click="btnLisPrint(false)">打印条码</el-button>
|
|
</div>
|
|
<div v-show="checkPagePriv(pagePriv.privs, '预览条码')" class="listBtn">
|
|
<el-button type="danger" class="commonbutton" @click="btnLisPrint(true)">预览条码</el-button>
|
|
</div>
|
|
<!-- 预留
|
|
<div v-show="checkPagePriv(pagePriv.privs, '发送申请')" class="listBtn">
|
|
<el-button type="danger" class="commonbutton" @click="LisRequest(true)">发送申请</el-button>
|
|
</div>
|
|
<div v-show="checkPagePriv(pagePriv.privs, '撤消申请')" class="listBtn">
|
|
<el-button type="danger" class="deleteButton" @click="LisRequest(false)">撤消申请</el-button>
|
|
</div>
|
|
-->
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import moment from "moment";
|
|
import { mapState } from "vuex";
|
|
import { arrayExistObj, dddw, getPagePriv, checkPagePriv, deepCopy, } from "../../utlis/proFunc";
|
|
import { getapi, postapi, putapi, deletapi } from "../../api/api";
|
|
|
|
|
|
export default {
|
|
components: {},
|
|
props:["isDialog"],
|
|
data() {
|
|
return {
|
|
pagePriv: {
|
|
routeUrlorPageName: 'patientLis', //当前页面归属路由或归属页面权限名称
|
|
privs: [] // 页面权限
|
|
},
|
|
chooseRows: [], // 选中的行
|
|
};
|
|
},
|
|
|
|
created() {
|
|
//获取用户当前页面的权限
|
|
let userPriv = window.sessionStorage.getItem('userPriv')
|
|
if (userPriv) this.pagePriv.privs = deepCopy(getPagePriv(this.pagePriv.routeUrlorPageName))
|
|
|
|
},
|
|
|
|
updated() {
|
|
|
|
},
|
|
|
|
//挂载完成
|
|
mounted() {
|
|
this.retrieve_lis_request(this.dataTransOpts.tableS.patient_register.id)
|
|
},
|
|
|
|
computed: {
|
|
...mapState(["window", "dataTransOpts", "dict", "patientRegister"]),
|
|
},
|
|
methods: {
|
|
dddw, moment, checkPagePriv,
|
|
|
|
// 扩展定义表格行样式
|
|
handleRowClassName({ row, rowIndex }) {
|
|
// highLightBg 为 'selected'的高亮
|
|
//console.log(rowIndex, row)
|
|
//return row.highLightBg == 'selected' ? 'high-light-bg' : '';
|
|
if (row.choosed) {
|
|
return "current-row";
|
|
} else {
|
|
return "";
|
|
}
|
|
},
|
|
|
|
//颜色转换
|
|
colorTrans(intDataColor) {
|
|
let tempColor = '000000' + Number(intDataColor).toString(16)
|
|
let backgroundColor = '#' + tempColor.substring(tempColor.length - 6)
|
|
return backgroundColor
|
|
},
|
|
|
|
// 选中行
|
|
rowClick(row) {
|
|
this.btnChoose(false)
|
|
this.chooseRows = [row]
|
|
this.$refs['lis_request'].setCurrentRow(row);
|
|
},
|
|
|
|
// 全选 / 取消全选
|
|
btnChoose(isChooseAll) {
|
|
if (isChooseAll) {
|
|
this.chooseRows = deepCopy(this.dataTransOpts.tableM.lis_request)
|
|
this.dataTransOpts.tableM.lis_request.forEach(e => {
|
|
e.choosed = true;
|
|
this.$refs['lis_request'].setCurrentRow(e);
|
|
});
|
|
} else {
|
|
this.chooseRows = []
|
|
this.dataTransOpts.tableM.lis_request.forEach(e => {
|
|
e.choosed = false;
|
|
});
|
|
this.$refs['lis_request'].setCurrentRow();
|
|
}
|
|
this.$nextTick(() => {
|
|
this.$refs['lis_request'].doLayout()
|
|
})
|
|
|
|
},
|
|
|
|
//检验申请
|
|
async btnLisRequest(isRequest) {
|
|
if (this.chooseRows.length == 0) {
|
|
this.$message.warning({ showClose: true, message: "请先选择要操作的条码记录!" })
|
|
return
|
|
}
|
|
console.log('btnLisRequest',isRequest)
|
|
},
|
|
|
|
// 打印或预览
|
|
async btnLisPrint(isPreview) {
|
|
if (this.chooseRows.length == 0) {
|
|
this.$message.warning({ showClose: true, message: "请先选择要操作的条码记录!" })
|
|
return
|
|
}
|
|
if (!this.$peisAPI) {
|
|
this.$message.warning({ showClose: true, message: "此功能需要在壳客户端中方可运行!" })
|
|
return
|
|
}
|
|
|
|
if (isPreview) {
|
|
this.lisPrint(this.chooseRows[0].lisRequestId,"0002",isPreview)
|
|
return
|
|
}
|
|
|
|
// 打印
|
|
for (let i = 0; i < this.chooseRows.length; i++) {
|
|
let e = this.chooseRows[i];
|
|
try {
|
|
let err = await this.lisPrint(e.lisRequestId,"0002",isPreview)
|
|
if(!err){
|
|
let lfind = arrayExistObj(this.dataTransOpts.tableM.lis_request,"lisRequestId",e.lisRequestId)
|
|
if(lfind > -1) this.dataTransOpts.tableM.lis_request[lfind].isPrint = "Y"
|
|
}
|
|
} catch (error) {
|
|
console.log(`打印条码或更新条码打印状态失败,原因:${error}`)
|
|
this.$message.warning({ showClose: true, message: `打印条码或更新条码打印状态失败,原因:${error}`})
|
|
}
|
|
}
|
|
},
|
|
|
|
//单个检验条码打印
|
|
async lisPrint(lisRequestId, ReportCode, isPreview) {
|
|
let err = ""
|
|
let token = window.sessionStorage.getItem("token");
|
|
let user = window.sessionStorage.getItem("user");
|
|
let toOutShell = {
|
|
ReportCode,
|
|
token,
|
|
IsMoreLabel: 'N',
|
|
isBuildImage: 'N',
|
|
IsUploadPdf: 'N',
|
|
preViewCanPrint: "N",
|
|
Parameters: [
|
|
{ Name: "printer", Value: user },
|
|
{ Name: "hisLog", Value: "pic/hisLog.jpg" },
|
|
],
|
|
BusinessCode: lisRequestId
|
|
};
|
|
console.log('this.$peisAPI.print', toOutShell)
|
|
if (isPreview) {
|
|
this.$peisAPI.printPre(JSON.stringify(toOutShell))
|
|
.then(res => {
|
|
console.log('this.$peisAPI.printPre', res)
|
|
if (JSON.parse(res).code < 0) {
|
|
this.$message.warning({ showClose: true, message: JSON.parse(res).message });
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
console.log('打印检验条码错误', err)
|
|
this.$message.warning({ showClose: true, message: `${err}` });
|
|
});
|
|
|
|
} else {
|
|
try {
|
|
let lres = await this.$peisAPI.print(JSON.stringify(toOutShell))
|
|
let Jres = JSON.parse(lres)
|
|
if(Jres.code < 0){
|
|
err = Jres.message
|
|
console.log('打印检验条码错误', err)
|
|
this.$message.error({ showClose: true, message: `打印检验条码错误 ${err}` });
|
|
}else{
|
|
// 更新条码打印状态
|
|
// let res = await postapi('/api/app/lisrequest/updatelisrequestisprint',{});
|
|
// if(res.code < 0){
|
|
// err = res.message
|
|
// this.$message.error({ showClose: true, message: `更新条码打印状态失败,原因 ${err}` });
|
|
// }
|
|
}
|
|
} catch (error) {
|
|
err = `${error}`
|
|
}
|
|
}
|
|
return err
|
|
},
|
|
|
|
// 刷新条码项目
|
|
retrieve_lis_request(patientRegisterId) {
|
|
this.chooseRows = []
|
|
this.dataTransOpts.tableM.lis_request = []
|
|
if (!patientRegisterId) return
|
|
// console.log(`/api/app/registerasbitem/getlistinpatientregisterid?PatientRegisterId=${id}`, res)
|
|
postapi('/api/app/printreport/GetLisRequestReportByPatientRegisterId', { patientRegisterId })
|
|
.then(res => {
|
|
if (res.code > -1) {
|
|
this.dataTransOpts.tableM.lis_request = res.data
|
|
this.btnChoose(true)
|
|
}
|
|
})
|
|
},
|
|
},
|
|
|
|
//监听事件
|
|
watch: {
|
|
//人员ID未切换换时 也可以强制刷新数据
|
|
"dataTransOpts.refresh.lis_request.M": {
|
|
// immediate:true,
|
|
handler(newVal, oldVal) {
|
|
console.log(`watch 人员登记 newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.dataTransOpts.tableS.patient_register.id}`);
|
|
if(newVal != oldVal) this.retrieve_lis_request(this.dataTransOpts.tableS.patient_register.id)
|
|
}
|
|
},
|
|
}
|
|
};
|
|
</script>
|
|
<style scoped>
|
|
@import "../../assets/css/global.css";
|
|
@import "../../assets/css/global_table.css";
|
|
|
|
.listBtn {
|
|
padding: 2px 0;
|
|
}
|
|
</style>
|