Commit f379a845 by lihu541

新加页面文件

parent 47355758
<template>
<div class="outer" style="position: relative;">
<section class="container">
<section class="header">
<div class="nav" @click="goExit">
<img src="../assets/images/iconmainnav.png" />
</div>
<div class="headeright2">
<div class="fytitle">费用缺陷管理</div>
<div class="fynav">
<el-badge :value="0" class="item">全部</el-badge>
<el-badge :value="0" class="item">提醒</el-badge>
<el-badge :value="0" class="item">公告</el-badge>
<el-badge :value="0" class="item">复诊</el-badge>
</div>
<div class="fybutton">
<el-button size="small" @click="goback" class="class-btn01" type="default">返回</el-button>
<el-button size="small" class="class-btn02" type="default">筛选</el-button>
<div class="el-date-editor">
<el-date-picker v-model="selectTime" @change="dataSearch" type="month" placeholder></el-date-picker>
</div>
</div>
<div class="fyrighter">{{yname}},截止于{{cxsj}}</div>
</div>
</section>
<section class="con-main">
<div class="lefter">
<div class="lftitle">管理矩阵</div>
<div @click="goOther(1)" class="lfline">
<i class="el-icon-document-copy"></i> 门·费用
</div>
<div @click="goOther(2)" class="lfline">
<i class="el-icon-tickets"></i> 门·次数
</div>
<div @click="goOther(3)" class="lfline">
<i class="el-icon-document-copy"></i> 住·费用
</div>
<div @click="goOther(4)" class="lfline" v-show="roleCode=='hcms.APP_JTYS'">
<i class="el-icon-tickets"></i> 未签约
</div>
<div @click="goOther(4)" class="yz_lfline" v-show="roleCode=='hcms.APP_SQYZ'">
<i class="el-icon-tickets"></i> 未签约
</div>
<div @click="goOther(5)" class="lfline lflineclk">
<i class="el-icon-document-add"></i> 诊断
</div>
</div>
<div class="righter">
<div class="div-model fl06">
<div class="title">诊断缺陷</div>
<div class="content">
<div class="zdtitle">
<span>{{base.ZLS}}</span>
</div>
<!-- <div id="echats8"></div>
<div class="pieline pieline2">
<span class="span01"></span>
<span class="span02"></span>
<span class="span03"></span>
<span class="span04"></span>
<span class="span05"></span>
</div>-->
</div>
</div>
<div class="div-model fl10">
<div class="title">诊断与性别不符人群</div>
<div class="content">
<div id="echats1"></div>
<div class="second">
<div>
<span class="second_g"></span>
<p>三级占比:</p>
<span class="zb">{{getActiveNum(base.ZDLS_ZB_SJ)+'%'}}</span>
</div>
<div>
<span class="second_t"></span>
<p>二级占比:</p>
<span class="zb">{{getActiveNum(base.ZDLS_ZB_EJ)+'%'}}</span>
</div>
<div>
<span class="second_q"></span>
<p>社区占比:</p>
<span class="zb">{{getActiveNum(base.ZDLS_ZB_YJ)+'%'}}</span>
</div>
</div>
<div id="echats3">
<div class="echats_next">
<span></span>
<span>就诊例数</span>
<span style="margin:0px 20px">费用</span>
<span>药费</span>
</div>
<div class="echats_next">
<span>三级</span>
<span class="first">{{getActiveNum(base.ZDLS_SJ)+'例'}}</span>
<span class="secnd">{{getActiveNum(base.ZDFY_SJ)+'元'}}</span>
<span class="three">{{getActiveNum(base.ZDYF_SJ)+'元'}}</span>
</div>
<div class="echats_next">
<span>二级</span>
<span class="first">{{getActiveNum(base.ZDLS_EJ)+'例'}}</span>
<span class="secnd">{{getActiveNum(base.ZDFY_EJ)+'元'}}</span>
<span class="three">{{getActiveNum(base.ZDYF_EJ)+'元'}}</span>
</div>
<div class="echats_next">
<span>社区</span>
<span class="first">{{getActiveNum(base.ZDLS_YJ)+'例'}}</span>
<span class="secnd">{{getActiveNum(base.ZDFY_YJ)+'元'}}</span>
<span class="three">{{getActiveNum(base.ZDYF_YJ)+'元'}}</span>
</div>
</div>
</div>
</div>
<div class="div-model-b">
<div class="div-model-table div-model-table4">
<div class="tabletitle4">
<span>异常清单</span>
<!-- @click="tabChange(1)" :class="istable==1?'clk':''" -->
<!-- <span @click="tabChange(2)" :class="istable==2?'clk':''">管理明细</span> -->
<!-- <div class="sxdiv2" @click="searchFn" v-show="istable==1">
筛选条件
<i class="el-icon-arrow-down"></i>
<font>{{sxname}}</font>
</div>-->
<div @click="download" class="doexport">
导出
<i class="el-icon-download"></i>
</div>
<div class="docode">
清单
<i class="el-icon-tickets"></i>
</div>
</div>
<el-table
v-show="istable==1"
:header-cell-style="headerStyle"
:fit="true"
:cell-style="cellStyle"
height="254"
id="rebateSetTable"
:row-class-name="tableRowClassName"
:data="tableData"
>
<el-table-column fixed label="序" type="index" width="60"></el-table-column>
<el-table-column fixed prop="XM" width="150" label="姓名">
<template slot-scope="scope">
<p @click="toMember(scope.row.SFZH)" class="jntemname">{{scope.row.XM}}</p>
<div v-html="iconshow(scope.row.ZDRQ)"></div>
</template>
</el-table-column>
<el-table-column label="性别" type="index" width="40">
<template slot-scope="scope">
<p class="cell">{{scope.row.XB}}</p>
</template>
</el-table-column>
<el-table-column label="年龄" type="index" width="40">
<template slot-scope="scope">
<p class="cell">{{scope.row.NL}}</p>
</template>
</el-table-column>
<el-table-column label="就诊日期" sortable prop="JZKSRQ" width="100">
<template slot-scope="scope">
<p class="cell">{{getActiveDataAll(scope.row.JZKSRQ)}}</p>
</template>
</el-table-column>
<el-table-column sortable width="100">
<template slot="header" slot-scope="scope">
<div class="spanleft">医疗机构</div>
</template>
<template slot-scope="scope">
<p class="cell spanleft">{{scope.row.JZJGMC}}</p>
</template>
</el-table-column>
<el-table-column width="100" :show-overflow-tooltip="true" prop="JZKSMC">
<template slot="header" slot-scope="scope">
<div class="spanleft">就诊科室</div>
</template>
<template slot-scope="scope">
<p class="cell spanleft">{{scope.row.JZKSMC}}</p>
</template>
</el-table-column>
<el-table-column width="100">
<template slot="header" slot-scope="scope">
<div class="spanleft">疾病诊断</div>
</template>
<template slot-scope="scope">
<p class="cell spanleft">{{(scope.row.JZZDSM)}}</p>
</template>
</el-table-column>
<el-table-column label="费用.元" sortable width="100">
<template slot-scope="scope">
<p class="cell spanright">{{(scope.row.JZFY)}}</p>
</template>
</el-table-column>
<el-table-column label="药费.元" sortable width="100">
<template slot-scope="scope">
<p class="cell spanright">{{(scope.row.JZYF)}}</p>
</template>
</el-table-column>
<el-table-column label="其他费.元" sortable width="100">
<template slot-scope="scope">
<p class="cell spanright">{{(scope.row.QTFY)}}</p>
</template>
</el-table-column>
</el-table>
<el-table
v-show="(istable==2&&gysbclk==1)"
:header-cell-style="headerStyle"
:fit="true"
:cell-style="cellStyle"
height="254"
:row-class-name="tableRowClassName"
:data="tableData2"
>
<el-table-column fixed label="序号" type="index" width="40"></el-table-column>
<el-table-column fixed prop="SERIAL_NUMBER" width="135" label="流水号">
<template slot-scope="scope">
<p @click="opensb(scope.row)" class="plsh">{{scope.row.SERIAL_NUMBER}}</p>
</template>
</el-table-column>
<el-table-column prop="SBSJ" width="90" label="上报时间"></el-table-column>
<el-table-column prop="QYRS_NAME" width="55" label="姓名"></el-table-column>
<el-table-column prop="QYRS_TBL" width="45" label="年龄"></el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计次数(本次)·次"></el-table-column>
<el-table-column prop="QYRS_TBZ" width="125" label="累计费用(本次)·千元"></el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计药费(本次)·千元"></el-table-column>
<el-table-column prop="QYRS_TBL" label="反馈意见"></el-table-column>
<el-table-column prop="QYRS_TBL" label="市级审核意见"></el-table-column>
</el-table>
<el-table
v-show="(istable==2&&gysbclk==2)"
:header-cell-style="headerStyle"
:fit="true"
:cell-style="cellStyle"
height="254"
:row-class-name="tableRowClassName"
:data="tableData2"
>
<el-table-column fixed label="序号" type="index" width="40"></el-table-column>
<el-table-column fixed prop="SERIAL_NUMBER" width="135" label="流水号">
<template slot-scope="scope">
<p class="plsh">{{scope.row.SERIAL_NUMBER}}</p>
</template>
</el-table-column>
<el-table-column prop="SBSJ" width="90" label="干预时间"></el-table-column>
<el-table-column prop="QYRS_NAME" width="55" label="姓名"></el-table-column>
<el-table-column prop="QYRS_TBL" width="45" label="年龄"></el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计次数·次"></el-table-column>
<el-table-column prop="QYRS_TBZ" width="125" label="累计费用·千元"></el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计药费·千元"></el-table-column>
<el-table-column prop="QYRS_TBL" label="干预措施"></el-table-column>
<el-table-column prop="QYRS_TBL" label="干预结果"></el-table-column>
</el-table>
</div>
<div v-show="issx" class="yctcdiv">
<h3>筛选条件</h3>
<div class="tccline">
<div class="tccleft">人群类型</div>
<div class="tccright">
<span @click="changeAll(0)" :class="para01===0?'clk':''">全部</span>
<span @click="changeAll(1)" :class="para01===1?'clk':''">上报</span>
<span @click="changeAll(2)" :class="para01===2?'clk':''">干预</span>
<span @click="changeAll(3)" :class="para01===3?'clk':''">无需处理</span>
<span @click="changeAll(4)" :class="para01===4?'clk':''">未处理</span>
</div>
</div>
<div class="tccline3">
<el-button class="ebtn" @click="okSub" size="mini" type="primary">确定</el-button>
</div>
</div>
</div>
</div>
</section>
<section v-show="gysb==2" class="tccyy">
<div class="tcymain tcymain2">
<h5>
<span @click="gysbFun(3)">×</span>上报明细
</h5>
<div class="tcycont">
<table class="tctable">
<tr>
<td>上报单位:古美社区卫生服务中心</td>
<td>上报时间:2019-05-12</td>
</tr>
<tr>
<td>上报人:金鸣</td>
<td>上报流水号:MZ20190505341678</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>郝莺</td>
<td>F02313341</td>
<td>310106196803302023</td>
<td>金鸣</td>
<td>大华医院/曙光医院</td>
</tr>
</table>
<h1>干预情况</h1>
<div class="gymsg"></div>
<h1>诊疗明细</h1>
<table class="tctable">
<tr>
<th></th>
<th>就诊时间</th>
<th>就诊机构</th>
<th>诊断</th>
<th>就诊号</th>
<th>费用明细</th>
</tr>
<tr>
<td>1</td>
<td>2019-02-22</td>
<td>六院</td>
<td>肺结节待查</td>
<td>20190924592693300</td>
<td>25元; 药费-25元,其他</td>
</tr>
<tr>
<td>1</td>
<td>2019-02-22</td>
<td>六院</td>
<td>肺结节待查</td>
<td>20190924592693300</td>
<td>25元; 药费-25元,其他</td>
</tr>
</table>
<div class="gymsg gymsg2">
<span class="ggspan">
合计门诊就诊次数:
<font>3</font>
<code></code>7.32%
</span>
<span class="ggspan">
合计门诊费用:
<font>334</font>
<code></code> 7.41%
</span>
<span class="ggspan">
合计门诊药费:
<font>233</font>
<code></code>
</span>
</div>
<div class="elbtndiv">
<el-button class="sbbtn" type="primary">确定</el-button>
</div>
</div>
</div>
</section>
<section v-show="gysb==1" class="tccyy">
<div class="tcymain">
<h5>
<span @click="gysbFun(3)">×</span>干预
</h5>
<div class="tcycont">
<h6>流水号:MZ20190505341678 干预时间:2019-01-12</h6>
<h1>居民信息</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>郝莺</td>
<td>F02313341</td>
<td>310106196803302023</td>
<td>金鸣</td>
<td>大华医院/曙光医院</td>
</tr>
</table>
<table class="tctable">
<tr>
<th>异常项目</th>
<th>标准值/实值</th>
<th>说明</th>
</tr>
<tr>
<td>未签约</td>
<td>-</td>
<td>辖区内居民未签约</td>
</tr>
<tr>
<td>就诊次数</td>
<td>4次 / 20次</td>
<td>就诊次数超过时标</td>
</tr>
<tr>
<td>累计费用</td>
<td>5011元 / 8928.5元</td>
<td>累计费用超过标准值 5011 元,偏离度为 78.2%</td>
</tr>
<tr>
<td>指单·偏</td>
<td>< 100% / 121%</td>
<td>2019/01/04日从中山医院出院,住院12天,总费用18672.17 元</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable">
<tr>
<td>干预措施:</td>
<td>
<label>
<input name="gycs" type="radio" />电话随访
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />社区随访
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />上门随访
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />康复指导
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />转诊
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />其他
</label>
</td>
<td>
<input class="input01" />
</td>
</tr>
</table>
<div class="elbtndiv">
<el-button class="sbbtn" type="primary">确定</el-button>
</div>
</div>
</div>
</section>
</section>
</div>
</template>
<script>
import { home, contract } from "@/api/home";
import {
famartTime,
returnIco2,
famartTime2,
getActiveNumer,
getActiveData
} from "@/utils/validate.js";
import FileSaver from "file-saver";
import XLSX from "xlsx";
export default {
components: {},
name: "count",
data() {
return {
token: "",
loginMsg: {},
gysbclk: 1,
roleCode: "",
gysb: 0,
para01: "",
param02: "",
param03: "",
param04: "",
param05: "",
yname: "",
istable: 1,
isxx: 1,
isdm: false,
fyqx: 2,
jctxt: "150",
selectTime: "2020-05",
issx: false,
loading: false,
cxsj: "201907",
sxname: "全部",
sxarr: ["全部", "上报", "干预", "无需处理", "未处理"],
detelist: {},
option: {
color: ["#158EC4", "#0465B0", "#125589"],
tooltip: {
trigger: "item",
formatter: "{a}{b} : ({d}%)"
},
series: [
{
name: "",
type: "pie",
radius: "59%",
center: ["50%", "50%"],
label: {
show: false,
position: "center"
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [
{ value: 11, name: "三级占比" },
{ value: 11, name: "二级占比" },
{ value: 22, name: "社区占比" }
]
}
]
},
pieoption1: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
position: [0, 0],
formatter: "{c} 例"
},
series: [
{
name: "",
type: "pie",
radius: [0, 38],
x: "34%",
width: "34%",
funnelAlign: "right",
label: {
normal: { show: false }
},
labelLine: {
normal: { show: false }
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [111, 222]
}
]
},
tableData: [],
tableData2: [],
base: [],
piedata01: [],
piedata02: [],
piedata03: [],
gysbkey: "qygl-zmjzfx-zlmx-sb-list"
};
},
mounted: function() {
this.token = sessionStorage.getItem("token");
this.loginMsg = JSON.parse(sessionStorage.getItem("userinfo"));
this.yname = this.loginMsg.userName;
if (this.loginMsg.roleCode == "hcms.APP_SQYZ") {
console.log("家医数据信息:");
console.log(this.loginMsg);
this.loginMsg.gpNumber = sessionStorage.getItem("ygh");
this.yname = sessionStorage.getItem("yname");
}
this.cxsj = sessionStorage.getItem("cxsj");
this.homeinti();
this.baseInfo();
this.gysbInit();
this.roleCode = this.loginMsg.roleCode;
const obj = setInterval(() => {
if (document.getElementById("echats1")) {
const dom = document.getElementById("echats1");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option, true);
}
clearInterval(obj);
}
}, 200);
const obj2 = setInterval(() => {
if (document.getElementById("echats8")) {
const dom = document.getElementById("echats8");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.pieoption1, true);
}
clearInterval(obj2);
}
}, 200);
},
methods: {
homeinti() {
let that = this;
//列表
that.token = sessionStorage.getItem("token");
let param = {
key: "qxgl-zd-ycqd",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "XM", //--排序字段
orderType: "desc", //--排序类型 desc=倒序/asc=正序
pageSize: 10,
pageIndex: 1,
glfs: this.para01
}
};
contract(that.token, param)
.then(res => {
that.tableData = [];
if (res.data.listData.length > 0) {
this.isdm = true;
for (let item of res.data.listData) {
if (item.GLFS == this.para01) {
that.tableData = res.data.listData;
} else if (this.para01 == "") {
that.tableData = res.data.listData;
}
}
}
})
.catch(err => {
console.log(err);
});
},
baseInfo() {
let that = this;
that.token = sessionStorage.getItem("token");
let param2 = {
key: "qxgl-jbxx",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode
};
contract(that.token, param2)
.then(res => {
console.log(res);
that.base = [];
that.piedata01 = [];
that.piedata02 = [];
that.piedata03 = [];
if (res.data.length > 0) {
that.base = res.data[0];
}
var pieone = new Object();
var pieone1 = new Object();
var pieone2 = new Object();
//第二个图
pieone.value = res.data[0].ZDLS_ZB_SJ ? res.data[0].ZDLS_ZB_SJ : 0;
pieone.name = "三级占比";
pieone1.value = res.data[0].ZDLS_ZB_EJ ? res.data[0].ZDLS_ZB_EJ : 0;
pieone1.name = "二级占比";
pieone2.value = res.data[0].ZDLS_ZB_YJ ? res.data[0].ZDLS_ZB_YJ : 0;
pieone2.name = "社区占比";
that.piedata02.push(pieone);
that.piedata02.push(pieone1);
that.piedata02.push(pieone2);
that.option.series[0].data = that.piedata02;
console.log(that.option.series[0].data);
console.log(that.option.tooltip.formatter);
that.$echarts
.init(document.getElementById("echats1"))
.setOption(that.option, true);
})
.catch(err => {
console.log(err);
});
},
gysbInit() {
let that = this;
that.tableData2 = [];
let param2 = {
key: this.gysbkey,
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "GYSJ",
orderType: "desc",
sfzh: "",
pageSize: 10,
pageIndex: 1,
gy_type: 0
}
};
contract(that.token, param2).then(res => {
// console.log("干预上报接口");
// console.log(res);
});
},
download() {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
"诊断异常清单.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
},
// tabChange(i) {
// this.istable = i;
// },
fyqxChange(i) {
let that = this;
this.fyqx = i;
if (i == 1) {
this.param02 = that.base.FYLS;
this.param03 = getActiveNumer(that.base.FYYC_GLL);
this.param04 = that.base.FYYC_CSYC;
this.param05 = getActiveNumer(that.base.FYYC_CSZB);
this.$router.push({
name: "Defect",
query: {
name: this.name
}
});
} else if (i == 2) {
this.param02 = that.base.CSLS;
this.param03 = getActiveNumer(that.base.CSYC_GLL);
this.param04 = that.base.CSYC_FYYC;
this.param05 = getActiveNumer(that.base.CSYC_FYZB);
this.$router.push({
name: "count",
query: {
name: this.name
}
});
} else if (i == 3) {
this.$router.push({
name: "zDefect",
query: {
name: this.name
}
});
}
},
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
} else {
return "success-row";
}
},
toMember(param) {
sessionStorage.setItem("backUrl", "Defect");
this.$router.push("/Member?sfz=" + param);
},
headerStyle() {
return "background:rgba(54,67,111,1); border:0; margin:0; padding:0; line-height:35px; color:#fff; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle() {
return "background:none;color:#fff;border:0; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
headerStyle2() {
return "background:rgba(10,10,10,0.9); border:0; margin:0; padding:0; line-height:35px; color:#8b8c91; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle2() {
return "background:rgba(10,10,10,0.9);color:#585f6c;border:0; border-bottom:1px dotted #262b36; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
gysbChange(param) {
if (param == 1) {
this.gysbkey = "qygl-zmjzfx-zlmx-sb-list";
} else {
this.gysbkey = "qygl-zmjzfx-zlmx-gy-list";
}
this.gysbclk = param;
this.gysbInit();
},
dataSearch(value) {
console.log(famartTime2(value));
let val = famartTime2(value);
this.cxsj = val;
this.homeinti();
this.baseInfo();
},
okSub() {
this.issx = false;
this.homeinti();
},
searchFn() {
this.issx = !this.issx;
},
gysbFun(param) {
this.gysb = param;
},
changeAll(num) {
this.para01 = num;
this.sxname = this.sxarr[num];
},
getActiveNum(param) {
return getActiveNumer(param);
},
goback() {
if (this.loginMsg.roleCode == "hcms.APP_SQYZ") {
this.$router.push("/" + sessionStorage.getItem("ybackUrl"));
} else {
this.$router.push("/Signing");
}
},
hideLoading() {
this.loading = false;
},
iconshow(param) {
return returnIco2(param);
},
goExit() {
this.$router.push("/Home");
},
showLoading() {
this.loading = true;
},
goOther(i) {
if (i == 1) {
this.$router.push({
name: "Defect"
// query: {
// name: this.name
// }
});
} else if (i == 2) {
this.$router.push({
name: "count"
// query: {
// name: this.name
// }
});
} else if (i == 3) {
this.$router.push({
name: "zDefect",
query: {
name: this.name
}
});
} else if (i == 4 && this.roleCode != "hcms.APP_SQYZ") {
this.$router.push({
name: "Nosign"
});
}
// else if (i == 5) {
// this.$router.push({
// name: "Diagnose"
// });
// }
},
getActiveDataAll(data) {
return getActiveData(data);
}
}
};
</script>
<style scoped>
.second {
position: absolute;
width: 150px;
height: 70px;
color: #aab1d2;
left: 160px;
top: 50px;
}
.second div {
font-size: 10px;
text-align: left !important;
/* height: 25px; */
line-height: 20px !important;
}
.second div p {
margin-left: 5px;
display: inline-block;
width: 60px;
}
.second span {
display: inline-block;
width: 8px;
height: 8px;
}
.second_g {
background-color: #1089e7;
}
.second_t {
background-color: #69a8ff;
}
.second_q {
background-color: #56d0e3;
}
.second .zb {
display: inline-block;
width: 50px;
height: 17px;
line-height: 22px !important;
color: #fff;
font-size: 17px;
}
.ecleft {
float: left;
}
#echats1 {
width: 150px;
height: 150px;
position: absolute;
left: 25.5px;
top: 10px;
}
#echats2 {
width: 150px;
height: 150px;
position: absolute;
right: 0;
top: 10px;
}
#echats3 {
width: 300px;
height: 100px;
position: absolute;
right: 80px;
top: 25px;
}
.echats_next {
color: #aab1d2;
width: 100%;
height: 20%;
}
.echats_next span {
display: inline-block;
text-align: center;
width: 60px;
height: 100%;
border-radius: 8px;
box-sizing: border-box;
}
.echats_next .first {
background-color: #0465b0;
width: 70px;
height: 80%;
margin: 10px 5px 0 5px;
color: #fff;
}
.echats_next .secnd {
background-color: #158ec4;
color: #fff;
height: 80%;
width: 70px;
margin: 10px 5px 0 5px;
}
.echats_next .three {
background-color: #75a705;
color: #fff;
height: 80%;
width: 70px;
margin: 10px 5px 0 5px;
}
.zdtitle {
width: 100px;
height: 100px;
font-size: 24px;
margin: 50px auto;
line-height: 30px;
color: #fff;
}
#echats8 {
width: 100%;
height: 110px;
}
/deep/ el-table {
background: none;
}
/deep/ .el-table__expanded-cell {
background: none;
}
/deep/ .el-table th,
.el-table tr {
background: none;
}
/deep/ .el-table .warning-row {
background: rgba(48, 56, 90, 1);
}
/deep/ .el-table .success-row {
background: #2a3557;
}
/deep/ .el-table th > .cell {
padding: 0;
}
/deep/ .el-table .cell {
padding: 0;
line-height: 29px;
color: #aab1d2;
}
.el-table::before {
background: none;
}
/deep/ .el-table,
.el-table__expanded-cell {
background: none;
}
/deep/ .el-table__fixed::before {
background-color: #293054;
}
.input01 {
width: 80px;
border: 0;
border-bottom: 1px solid #979797;
background: none;
}
.elbtndiv {
height: 50px;
clear: both;
text-align: right;
}
.sbbtn {
background: rgba(0, 151, 254, 1);
width: 65px;
height: 32px;
border: 0;
border-radius: 4px;
}
.tccline {
clear: both;
overflow: hidden;
}
.tccleft {
float: left;
line-height: 35px;
padding-top: 1px;
width: 55px;
color: rgba(166, 174, 214, 1);
font-size: 12px;
text-align: left;
}
.tccright {
float: left;
line-height: 35px;
width: 340px;
padding-top: 6px;
}
.tccright span {
display: inline-block;
margin-left: 10px;
margin-bottom: 10px;
float: left;
width: 55px;
height: 24px;
line-height: 24px;
background: rgba(51, 62, 95, 1);
color: #ffffff;
border-radius: 4px;
border: 1px solid rgba(84, 97, 139, 1);
}
.tccright span.clk {
background: rgba(33, 76, 126, 1);
color: #42ccff;
}
.tccline3 {
text-align: right;
}
.tccline3 /deep/ .ebtn {
width: 80px;
height: 30px;
}
.plsh {
color: #2680ff;
text-decoration: underline;
}
.spanleft{
float: left;
}
.spanright{
float: right;
}
.el-date-editor {
width: 61px;
position: absolute;
right: 5px;
top: 3px;
}
/deep/ .el-date-editor .el-date-editor--month input {
width: 0px;
border: 0;
padding-right: 61px;
padding-left: 0px;
}
/deep/ .el-date-editor .el-input__inner {
background: none !important;
}
/deep/ .el-date-editor .el-input__prefix {
display: none;
}
/deep/ .el-date-editor .el-input__suffix {
display: none;
}
/deep/ .el-table__row {
height: 31px;
}
.el-tag {
background: none;
border: 0;
}
/deep/ .el-badge__content {
border: 0;
font-size: 12px;
}
.yctcdiv {
height: 135px;
z-index: 20;
}
.defectM {
position: absolute;
bottom: 10px;
right: 10px;
width: 390px;
height: 142px;
background: rgba(10, 10, 10, 0.9);
}
</style>
<template>
<div class="outer" style="position: relative;">
<section class="container">
<section class="header">
<div class="nav" @click="goExit">
<img src="../assets/images/iconmainnav.png" />
</div>
<div class="headeright2">
<div class="fytitle">费用缺陷管理</div>
<div class="fynav">
<el-badge :value="0" class="item">全部</el-badge>
<el-badge :value="0" class="item">提醒</el-badge>
<el-badge :value="0" class="item">公告</el-badge>
<el-badge :value="0" class="item">复诊</el-badge>
</div>
<div class="fybutton">
<el-button size="small" @click="goback" class="class-btn01" type="default">返回</el-button>
<el-button size="small" class="class-btn02" type="default">筛选</el-button>
<div class="el-date-editor">
<el-date-picker v-model="selectTime" @change="dataSearch" type="month" placeholder></el-date-picker>
</div>
</div>
<div class="fyrighter">{{yname}},截止于{{cxsj}}</div>
</div>
</section>
<section class="con-main">
<div class="lefter">
<div class="lftitle">管理矩阵</div>
<div @click="goOther(1)" class="lfline lflineclk">
<i class="el-icon-document-copy"></i> 门·费用
</div>
<div @click="goOther(2)" class="lfline">
<i class="el-icon-tickets"></i> 门·次数
</div>
<div @click="goOther(3)" class="lfline">
<i class="el-icon-document-copy"></i> 住·费用
</div>
<div @click="goOther(4)" class="lfline">
<i class="el-icon-tickets"></i> 未签约
</div>
<div @click="goOther(5)" class="lfline">
<i class="el-icon-document-add"></i> 诊断
</div>
</div>
<div class="righter">
<div class="div-model fl06">
<div class="title">费用缺陷</div>
<div class="content">
<div class="detitle">
<span>{{base.ZLS}}</span>
</div>
<div id="echats8"></div>
<div class="pieline pieline2">
<span class="span01"></span>
<span class="span02"></span>
<span class="span03"></span>
<span class="span04"></span>
<span class="span05"></span>
</div>
</div>
</div>
<div class="div-model fl07">
<div class="title5">
<span @click="fyqxChange(1)" :class="fyqx==1?'clk':''">门诊费用缺陷</span>
<span @click="fyqxChange(2)" :class="fyqx==2?'clk':''">门诊次数缺陷</span>
</div>
<div class="content">
<div class="ecleft">
<div class="ctlinep1">
{{param02}}
<span></span>
</div>
<div class="ctlinep2">{{param03}} %</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i01"></i>
<span>异常管理率</span>
</div>
</div>
<div class="ctlinep">
{{param04}}
<span></span>
</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i02"></i>
<span>疑似次数异常例数</span>
<span class="zanbi"></span>
<span class="zbbfb">{{param05=='-'?"-":Math.abs(getActiveNum(param05))}}</span>
<span class="zbbfbh">%</span>
<i :class="param05<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
</div>
<div id="echats1"></div>
</div>
</div>
<div class="div-model fr02">
<div class="title5">
<span @click="fyqxChange(3)" :class="fyqx==3?'clk':''">住院缺陷</span>
</div>
<div class="content">
<div class="ecleft">
<div class="ctlinep1">
{{base.ZYLS}}
<span></span>
</div>
<div class="ctlinep2">{{getActiveNum(base.ZYYC_GLL)}} %</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i01"></i>
<span>异常管理率</span>
</div>
</div>
<div class="ctlinep">&nbsp;</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i02"></i>
<span>指单·偏≥{{base.ZDDJ_PL40}}%</span>
<i class="i02"></i>
<span>{{base.ZDDJ_PL100}}%≤指单·偏<100%</span>
</div>
</div>
</div>
<div id="echats2"></div>
</div>
</div>
<div class="div-model-b">
<div class="div-model-table div-model-table4">
<div class="tabletitle4">
<span @click="tabChange(1)" :class="istable==1?'clk':''">异常清单</span>
<span @click="tabChange(2)" :class="istable==2?'clk':''">管理明细</span>
<div class="sxdiv2" @click="searchFn" v-show="istable==1">
筛选条件
<i class="el-icon-arrow-down"></i>
<font>{{sxname}}</font>
</div>
<div @click="download" class="doexport">
导出
<i class="el-icon-download"></i>
</div>
<div class="docode">
清单
<i class="el-icon-tickets"></i>
</div>
<div class="sbtitle" v-show="istable==2">
<code @click="gysbChange(1)" :class="gysbclk==1?'clk':''">上报统计</code> |
<code @click="gysbChange(2)" :class="gysbclk==2?'clk':''">干预统计</code>
</div>
</div>
<el-table
v-show="istable==1"
:header-cell-style="headerStyle"
:fit="true"
id="rebateSetTable"
:cell-style="cellStyle"
height="254"
:row-class-name="tableRowClassName"
:data="tableData"
>
<el-table-column fixed label="序号" type="index" width="65"></el-table-column>
<el-table-column fixed prop="XM" width="110" label="姓名">
<template slot-scope="scope">
<p @click="toMember(scope.row.SFZH)" class="jntemname">{{scope.row.XM}}</p>
<div v-html="iconshow(scope.row.ZDRQ)"></div>
</template>
</el-table-column>
<el-table-column prop="MZFY" width="145" label="累计就诊费用·千/偏·%" sortable>
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.MZFY/1000)}}/{{getActiveNum(scope.row.MZFY_TBZ)}}</span>
<span class="sp13">
<i :class="scope.row.MZFY_TBZ<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="MZFY_TBL" width="60" sortable label="同·%">
<template slot-scope="scope">
<span class="ycqd_t">{{getActiveNum(scope.row.MZFY_TBL)}}</span>
<span class="sp13">
<i :class="scope.row.MZFY_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="MZYF" width="145" sortable label="累计就诊药费·千/同·%">
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.MZYF/1000)}}/{{getActiveNum(scope.row.MZYF_TBL)}}</span>
<span class="sp13">
<i :class="scope.row.MZYF_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="JZCS" width="120" sortable label="累计就诊·次/偏·%">
<template slot-scope="scope">
<span class="ycqd_lf">{{scope.row.JZCS}} / {{getActiveNum(scope.row.JZCS_TBZ)}}</span>
<span class="sp13">
<i :class="scope.row.JZCS_TBZ<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="60" sortable label="同·%">
<template slot-scope="scope">
<span class="ycqd_t">{{getActiveNum(scope.row.JZCS_TBL)}}</span>
<span class="sp13">
<i :class="scope.row.JZCS_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="ZHNJZL" width="135" sortable label="组合就诊率·%/偏·%">
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.ZHNJZL)}}/{{getActiveNum(scope.row.ZHNJZL_PLD)}}</span>
<span class="sp13">
<i :class="scope.row.ZHNJZL_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="QYSQJZL" width="155" sortable label="签约社区就诊率·%/偏·%">
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.QYSQJZL)}}/{{getActiveNum(scope.row.QYSQJZL_PLD)}}</span>
<span class="sp13">
<i :class="scope.row.QYSQJZL_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBZ" width="105" label="社区就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_YJ)}} ({{getActiveNum(scope.row.ZHNJZCS_YJ)}})</template>
</el-table-column>
<el-table-column prop="QYRS_TBZ" width="105" label="二级就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_EJ)}} ({{getActiveNum(scope.row.ZHNJZCS_EJ)}})</template>
</el-table-column>
<el-table-column prop="QYRS_NAME" width="105" label="二级就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_SJ)}} ({{getActiveNum(scope.row.ZHNJZCS_SJ)}})</template>
</el-table-column>
<el-table-column prop="GLFS" width="60" label="管理方式">
<template slot-scope="scope">
<font v-if="scope.row.GLFS==1">上报</font>
<font v-else-if="scope.row.GLFS==2">干预</font>
<font v-else-if="scope.row.GLFS==3">无需处理</font>
<font v-else-if="scope.row.GLFS==4">未处理</font>
</template>
</el-table-column>
</el-table>
<el-table
v-show="(istable==2 && gysbclk==1)"
:header-cell-style="headerStyle"
id="rebateSetTable1"
:fit="true"
:cell-style="cellStyle"
height="254"
:row-class-name="tableRowClassName"
:data="Reportdetaildatalist"
>
<el-table-column fixed label="序号" type="index" width="65"></el-table-column>
<el-table-column fixed prop="SERIAL_NUMBER" width="135" label="流水号">
<template slot-scope="scope">
<p @click="opensb(scope.row)" class="plsh">{{scope.row.SERIAL_NUMBER}}</p>
</template>
</el-table-column>
<el-table-column prop="SBSJ" width="120" label="上报时间">
<template slot-scope="scope">
<p class="cell">{{getActiveDataAll1(scope.row.SBSJ)}}</p>
</template>
</el-table-column>
<el-table-column prop="XM" width="55" label="姓名">
<template slot-scope="scope">
<p class="cell">{{scope.row.XM}}</p>
</template>
</el-table-column>
<el-table-column prop="NL" width="45" label="年龄">
<template slot-scope="scope">
<p class="cell">{{scope.row.NL}}</p>
</template>
</el-table-column>
<el-table-column prop="JZCS" width="125" label="累计次数(本次)·次">
<template slot-scope="scope">
<p class="cell">{{scope.row.JZCS}}</p>
</template>
</el-table-column>
<el-table-column prop="MZFY" width="125" label="累计费用(本次)·千元">
<template slot-scope="scope">
<p class="cell">{{TwoCount(scope.row.MZFY/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="MZYF" width="125" label="累计药费(本次)·千元">
<template slot-scope="scope">
<p class="cell">{{TwoCount(scope.row.MZYF/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="SJSHYS" label="反馈意见">
<template slot-scope="scope">
<p class="cell">{{getActiveFkyj1(scope.row.SJSHYS)}}</p>
</template>
</el-table-column>
<el-table-column prop="SBZT" label="市级审核意见">
<template slot-scope="scope">
<font v-if="scope.row.SBZT==1">上报</font>
<font v-else-if="scope.row.SBZT==2">干预</font>
<font v-else-if="scope.row.SBZT==3">无需处理</font>
<font v-else-if="scope.row.SBZT==4">未处理</font>
</template>
</el-table-column>
</el-table>
<el-table
v-show="(istable==2&&gysbclk==2)"
:header-cell-style="headerStyle"
id="rebateSetTable2"
:fit="true"
:cell-style="cellStyle"
height="254"
:row-class-name="tableRowClassName"
:data="Meddledetaildatalist"
>
<el-table-column fixed label="序号" type="index" width="65"></el-table-column>
<el-table-column fixed prop="SERIAL_NUMBER" width="135" label="流水号">
<template slot-scope="scope">
<p @click="opengy(scope.row)" class="plsh">{{scope.row.SERIAL_NUMBER}}</p>
</template>
</el-table-column>
<el-table-column prop="GYSJ" width="120" label="干预时间">
<template slot-scope="scope">
<p class="cell">{{getActiveDataAll1(scope.row.GYSJ)}}</p>
</template>
</el-table-column>
<el-table-column prop="XM" width="55" label="姓名"></el-table-column>
<el-table-column prop="NL" width="45" label="年龄"></el-table-column>
<el-table-column prop="GYCS" width="110" label="累计次数·次"></el-table-column>
<el-table-column prop="LJFY_BZZ" width="110" label="累计费用·千元">
<template slot-scope="scope">
<p class="cell">{{getActiveNum(scope.row.LJFY_BZZ/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="LJYF_BZZ" width="110" label="累计药费·千元">
<template slot-scope="scope">
<p class="cell">{{getActiveNum(scope.row.LJYF_BZZ/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="GYCS" label="干预措施">
<template slot-scope="scope">{{returnGy(scope.row.GYCS,scope.row.GYCS_QT)}}</template>
</el-table-column>
<el-table-column prop="GYZT" label="干预结果">
<template slot-scope="scope">{{returnSt(scope.row.GYZT)}}</template>
</el-table-column>
</el-table>
</div>
<div v-show="issx" class="yctcdiv">
<h3>筛选条件</h3>
<div class="tccline">
<div class="tccleft">人群类型</div>
<div class="tccright">
<span @click="changeAll(0)" :class="para01===0?'clk':''">全部</span>
<span @click="changeAll(1)" :class="para01===1?'clk':''">上报</span>
<span @click="changeAll(2)" :class="para01===2?'clk':''">干预</span>
<span @click="changeAll(3)" :class="para01===3?'clk':''">无需处理</span>
<span @click="changeAll(4)" :class="para01===4?'clk':''">未处理</span>
</div>
</div>
<div class="tccline3">
<el-button class="ebtn" @click="okSub" size="mini" type="primary">确定</el-button>
</div>
</div>
</div>
</div>
</section>
<section v-show="gysb==2" class="tccyy">
<div class="tcymain tcymain2">
<h5>
<span @click="gysbFun(3)">×</span>上报明细
</h5>
<div class="tcycont tcycont2">
<table class="tctable">
<tr>
<td>上报单位:{{sblist.SBYY}}</td>
<td>上报时间:{{sblist.SBSJ}}</td>
</tr>
<tr>
<td>上报人:{{sblist.YSXM}}</td>
<td>上报流水号:{{sblist.SERIAL_NUMBER}}</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>{{sblist.XM}}</td>
<td>{{userdesc.YBKH}}</td>
<td>{{sblist.SFZH}}</td>
<td>{{userdesc.YSXM}}</td>
<td>{{userdesc.SJJGMC}}</td>
</tr>
</table>
<h1>干预情况</h1>
<div class="gymsg">{{sblist.SJSHYS}}</div>
<h1>诊疗明细</h1>
<table class="tctable">
<tr>
<th></th>
<th>就诊时间</th>
<th>就诊机构</th>
<th>诊断</th>
<th>就诊号</th>
<th>费用明细</th>
</tr>
<tr v-for="(item,index) in sbdatalist" :key="index">
<td>{{index+1}}</td>
<td>{{timeChange(item.QYSJ)}}</td>
<td>{{item.JZJGMC}}</td>
<td></td>
<td>{{item.JZLSH}}</td>
<td>{{item.JZFY?item.JZFY:0}}元; 药费{{item.MZYF?item.MZYF:0}}元</td>
</tr>
</table>
<div class="gymsg gymsg2">
<span class="ggspan">
合计门诊就诊次数:
<font>{{nowsbnum}}</font>
<code></code>
{{sbzb01}}%
</span>
<span class="ggspan">
合计门诊费用:
<font>{{nowsbfee}}</font>
<code></code>
{{sbzb02}}%
</span>
<span class="ggspan">
合计门诊药费:
<font>{{sbtotal}}</font>
<code></code>
{{sbzb03}}%
</span>
</div>
</div>
</div>
</section>
<section v-show="gysb==1" class="tccyy">
<div class="tcymain">
<h5>
<span @click="gysbFun(3)">×</span>干预
</h5>
<div class="tcycont">
<h6>流水号:{{gylist.SERIAL_NUMBER}} 干预时间:{{gylist.GYSJ}}</h6>
<h1>居民信息</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>{{gylist.XM}}</td>
<td>{{userdesc.YBKH}}</td>
<td>{{gylist.SFZH}}</td>
<td>{{userdesc.YSXM}}</td>
<td>{{userdesc.SJJGMC}}</td>
</tr>
</table>
<table class="tctable">
<tr>
<th>异常项目</th>
<th>标准值/实值</th>
<th>说明</th>
</tr>
<tr>
<td>未签约</td>
<td>-</td>
<td>辖区内居民未签约</td>
</tr>
<tr>
<td>就诊次数</td>
<td>4次 / {{tcgycs}}次</td>
<td>
就诊次数超过时标
<font color="#ff2200">{{tcgybs}}</font>
</td>
</tr>
<tr>
<td>累计费用</td>
<td>5011元 / 8928.5元</td>
<td>
累计费用超过标准值 {{tcgyfy}} 元,偏离度为
<font color="#ff2200">{{tcgypld}}%</font>
</td>
</tr>
<tr>
<td>指单·偏</td>
<td>< 100% / {{tcgybl}}%</td>
<td>
总费用
<font color="#ff2200">18672.17</font>
</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable tctable2">
<tr>
<td>干预措施:</td>
<td>
<el-radio disabled v-model="gycs" :label="0">电话随访</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="1">社区随访</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="2">上门随访</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="3">康复指导</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="4">转诊</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="5">其他</el-radio>
</td>
<td>
<input disabled :value="gylist.GYCS_QT=='null'?'':gylist.GYCS_QT" class="input01" />
</td>
</tr>
</table>
</div>
</div>
</section>
</section>
</div>
</template>
<script>
import { home, contract } from "@/api/home";
import {
famartTime,
returnIco2,
famartTime2,
getActiveNumer,
getActiveNum,
getActiveData1,
getActiveFkyj,
TwoCount
} from "@/utils/validate.js";
import FileSaver from "file-saver";
import XLSX from "xlsx";
export default {
components: {},
name: "Defect",
data() {
return {
gycs: 0,
token: "",
loginMsg: {},
gysbclk: 1,
tcgycs: 0,
yname: "",
tcgybs: 0,
tcgyfy: 0,
tcgypld: 0,
sbdatalist: [],
tcgybl: 0,
gysb: 0,
para01: "",
param02: "",
param03: "",
param04: "",
param05: "",
istable: 1,
isxx: 1,
isdm: false,
fyqx: 1,
nowsbnum: 0,
sbzb01: 0,
sbzb02: 0,
sbzb03: 0,
jctxt: "150",
selectTime: "2020-05",
issx: false,
loading: false,
cxsj: "",
sxname: "全部",
sxarr: ["全部", "上报", "干预", "无需处理", "未处理"],
detelist: {},
option: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
// formatter: "费用次数缺陷:{b} 例,占比:{c}",
formatter: function(params) {
var res =
"<div class='ectabletitle'>疑似异常次数人数:" +
params.data.val1 +
"人,占比:" +
params.data.val2 +
"%";
res += "</div>";
return res;
}
},
series: [
{
name: "门诊费用缺陷",
type: "pie",
radius: "59%",
center: ["50%", "50%"],
label: {
show: false,
position: "center"
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [11, 22]
}
]
},
option1: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
formatter: function(params) {
var res =
"<div class='ectabletitle'>异常管理率:" + params.data + "%";
res += "</div>";
return res;
}
},
series: [
{
name: "门诊费用缺陷",
type: "pie",
radius: "59%",
center: ["50%", "50%"],
label: {
show: false,
position: "center"
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [
{
value: 24,
name: "直接访问",
itemStyle: {
normal: {
color: "#84B3FF"
}
}
},
{
value: 310,
name: "邮件营销",
itemStyle: {
normal: {
color: "#2A71F2"
}
}
}
]
}
]
},
pieoption1: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
position: [0, 0],
formatter: "{a}{b}:{c} 例"
},
series: [
{
name: "门诊",
type: "pie",
radius: [0, 38],
x: "34%",
width: "34%",
funnelAlign: "right",
label: {
normal: { show: false }
},
labelLine: {
normal: { show: false }
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [
{ value: 11, name: "费用缺陷" },
{ value: 22, name: "次数缺陷" }
]
}
]
},
tableData: [],
tableData2: [],
base: [],
piedata01: [],
piedata02: [],
piedata03: [],
Reportdetaildatalist: [],
Meddledetaildatalist: [],
gysbkey: "qygl-zmjzfx-zlmx-sb-list",
sblist: [],
gylist: [],
nowsbfee: 0,
sbtotal: 0,
userdesc: []
};
},
mounted: function() {
this.token = sessionStorage.getItem("token");
this.loginMsg = JSON.parse(sessionStorage.getItem("userinfo"));
this.yname = this.loginMsg.userName;
if (this.loginMsg.roleCode == "hcms.APP_SQYZ") {
console.log("家医数据信息:");
console.log(this.loginMsg);
this.loginMsg.gpNumber = sessionStorage.getItem("ygh");
this.yname = sessionStorage.getItem("yname");
}
this.cxsj = sessionStorage.getItem("cxsj");
this.homeinti();
this.baseInfo();
this.sbInit();
this.gyInit();
const obj = setInterval(() => {
if (document.getElementById("echats1")) {
const dom = document.getElementById("echats1");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option, true);
}
clearInterval(obj);
}
}, 200);
const obj1 = setInterval(() => {
if (document.getElementById("echats2")) {
const dom = document.getElementById("echats2");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option1, true);
}
clearInterval(obj1);
}
}, 200);
const obj2 = setInterval(() => {
if (document.getElementById("echats8")) {
const dom = document.getElementById("echats8");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.pieoption1, true);
}
clearInterval(obj2);
}
}, 200);
},
methods: {
homeinti() {
let that = this;
//列表
that.token = sessionStorage.getItem("token");
let param = {
key: "qxgl-fy-ycqd",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "XM", //--排序字段
orderType: "desc", //--排序类型 desc=倒序/asc=正序
pageSize: 10,
pageIndex: 1,
glfs: this.para01
}
};
contract(that.token, param).then(res => {
console.log("测试接口数据")
console.log(res)
that.tableData = [];
if (res.data.listData.length > 0) {
this.isdm = true;
for (let item of res.data.listData) {
if (item.GLFS == this.para01) {
that.tableData = res.data.listData;
} else if (this.para01 == "") {
that.tableData = res.data.listData;
}
}
}
})
.catch(err => {
console.log(err);
});
},
userinfo(sfz) {
let that = this;
// 居民就诊分析-居民基本信息
let param = {
key: "qygl-zmjzfx-jmjbxx",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
sfzh: sfz
}
};
contract(that.token, param).then(res => {
// console.log("居民基本信息:");
// console.log(res);
this.userdesc = res.data[0];
});
},
baseInfo() {
let that = this;
//列表
that.token = sessionStorage.getItem("token");
let param2 = {
key: "qxgl-jbxx",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode
};
contract(that.token, param2)
.then(res => {
// console.log("bbbbbb");
// console.log(res);
that.base = [];
that.piedata01 = [];
that.piedata02 = [];
that.piedata03 = [];
var pieone = new Object();
var pieone1 = new Object();
if (res.data.length > 0) {
that.base = res.data[0];
}
this.param02 = that.base.FYLS;
this.param03 = getActiveNumer(that.base.FYYC_GLL);
this.param04 = that.base.FYYC_CSYC;
this.param05 = getActiveNumer(that.base.FYYC_CSZB);
//第一个图
pieone.value = res.data[0].FYLS;
pieone.name = "费用缺陷";
pieone1.value = res.data[0].ZYLS;
pieone1.name = "次数缺陷";
that.piedata01.push(pieone);
that.piedata01.push(pieone1);
that.pieoption1.series[0].data = this.piedata01;
that.$echarts
.init(document.getElementById("echats8"))
.setOption(that.pieoption1, true);
//第er个图
let obj = { value: 0, val1: 0, val2: 0 };
obj.value = res.data[0].FYYC_CSYC
? getActiveNumer(res.data[0].FYYC_CSYC)
: 0;
obj.val1 = res.data[0].FYYC_CSYC
? getActiveNumer(res.data[0].FYYC_CSYC)
: 0;
obj.val2 = res.data[0].FYYC_CSZB
? getActiveNumer(res.data[0].FYYC_CSZB * 100)
: 0;
that.piedata02.push(obj);
obj = { value: 0, val1: 0, val2: 0 };
obj.value = res.data[0].FYYC_CSZB
? getActiveNumer(res.data[0].FYYC_CSZB * 100)
: 0;
obj.val1 = res.data[0].FYYC_CSYC
? getActiveNumer(res.data[0].FYYC_CSYC)
: 0;
obj.val2 = res.data[0].FYYC_CSZB
? getActiveNumer(res.data[0].FYYC_CSZB * 100)
: 0;
that.piedata02.push(obj);
that.option.series[0].data = that.piedata02;
console.log("that.piedata02that.piedata02");
console.log(that.piedata02);
that.$echarts
.init(document.getElementById("echats1"))
.setOption(that.option, true);
//第3个图
that.piedata03.push(
res.data[0].ZDDJ_PL40 ? res.data[0].ZDDJ_PL40 : 0
);
that.piedata03.push(
res.data[0].ZDDJ_PL100 ? res.data[0].ZDDJ_PL100 : 0
);
that.option1.series[0].data = that.piedata03;
that.$echarts
.init(document.getElementById("echats2"))
.setOption(that.option1, true);
})
.catch(err => {
console.log(err);
});
},
sbInit() {
//上报列表
let that = this;
let param = {
key: "qygl-zmjzfx-zlmx-sb-list",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "SBSJ", //--排序字段
orderType: "desc", //--排序类型 desc=倒序/asc=正序
sfzh: "",
pageSize: 10,
pageIndex: 1,
sb_type: 0 //0=门诊/1=住院
}
};
contract(that.token, param).then(res => {
// console.log("打印上报明细列表:");
// console.log(res);
if (res.code == 1 && res.data.listData.length > 0) {
res.data.listData.forEach((item, index) => {
res.data.listData[index].MZFY = getActiveNum(item.MZFY / 1000);
this.Reportdetaildatalist = res.data.listData;
});
}
});
},
gyInit() {
//干预列表
let that = this;
let param = {
key: "qygl-zmjzfx-zlmx-gy-list",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "GYSJ", //--排序字段
orderType: "desc", //--排序类型 desc=倒序/asc=正序
sfzh: "", //--身份证号码
pageSize: 10,
pageIndex: 1,
gy_type: 0 //--明细类型,0=门诊费用/1=门诊次数/2=住院费用
}
};
contract(that.token, param).then(res => {
// console.log("打印干预明细列表:");
// console.log(res);
if (res.code == 1 && res.data.listData.length > 0) {
res.data.listData.forEach((item, index) => {
res.data.listData[index].MZFY = getActiveNum(item.MZFY / 1000);
this.Meddledetaildatalist = res.data.listData;
});
}
});
},
tabChange(i) {
this.istable = i;
},
timeChange(param) {
return famartTime(param);
},
fyqxChange(i) {
let that = this;
this.fyqx = i;
if (i == 1) {
this.param02 = that.base.FYLS;
this.param03 = getActiveNumer(that.base.FYYC_GLL);
this.param04 = that.base.FYYC_CSYC;
this.param05 = getActiveNumer(that.base.FYYC_CSZB);
this.$router.push({
name: "Defect",
query: {
name: this.name
}
});
} else if (i == 2) {
this.param02 = that.base.CSLS;
this.param03 = getActiveNumer(that.base.CSYC_GLL);
this.param04 = that.base.CSYC_FYYC;
this.param05 = getActiveNumer(that.base.CSYC_FYZB);
this.$router.push({
name: "count",
query: {
name: this.name
}
});
} else if (i == 3) {
this.$router.push({
name: "zDefect",
query: {
name: this.name
}
});
}
},
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
} else {
return "success-row";
}
},
toMember(param) {
sessionStorage.setItem("backUrl", "Defect");
this.$router.push("/Member?sfz=" + param);
},
headerStyle() {
return "background:rgba(54,67,111,1); border:0; margin:0; padding:0; line-height:35px; color:#fff; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle() {
return "background:none;color:#fff;border:0; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
headerStyle2() {
return "background:rgba(10,10,10,0.9); border:0; margin:0; padding:0; line-height:35px; color:#8b8c91; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle2() {
return "background:rgba(10,10,10,0.9);color:#585f6c;border:0; border-bottom:1px dotted #262b36; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
gysbChange(param) {
this.gysbclk = param;
},
dataSearch(value) {
console.log(famartTime2(value));
let val = famartTime2(value);
this.cxsj = val;
this.homeinti();
this.baseInfo();
},
okSub() {
this.issx = false;
this.homeinti();
},
searchFn() {
this.issx = !this.issx;
},
gysbFun(param) {
this.gysb = param;
},
opensb(param) {
//打开上报
let that = this;
this.sblist = param;
this.gysb = 2;
this.userinfo(param.SFZH);
// console.log("打开上报:");
// console.log(param);
let param5 = {
key: "zd-mx",
tjsj: this.cxsj,
parameter: {
mxType: "1",
lsh: param.SERIAL_NUMBER
}
};
that.sbdatalist = [];
this.nowsbnum = 0;
contract(that.token, param5).then(res => {
// console.log("返回上报列表:");
// console.log(res);
res.data.forEach((item, index) => {
item.JZFY = item.JZFY ? item.JZFY : 0;
item.JZYF = item.JZYF ? item.JZYF : 0;
this.nowsbfee += parseInt(item.JZFY);
this.sbtotal += parseInt(item.JZYF);
that.sbdatalist.push(item);
this.nowsbnum++;
});
this.sbzb01 = ((this.nowsbnum / 24) * 100).toFixed(2);
this.sbzb02 = ((this.nowsbfee / 4564) * 100).toFixed(2);
this.sbzb03 = ((this.sbtotal / 4553) * 100).toFixed(2);
});
},
opengy(param) {
//打开干预
this.gysb = 1;
this.gylist = param;
this.userinfo(param.SFZH);
// console.log("打开干预:");
// console.log(param);
this.gycs = param.GYCS;
this.tcgybl = param.GYCS;
this.tcgybs = param.GYCS;
this.tcgycs = param.JZCS_SZ;
this.tcgyfy = param.LJFY_SZ;
this.tcgypld = param.GYCS;
},
changeAll(num) {
this.para01 = num;
this.sxname = this.sxarr[num];
},
getActiveNum(param) {
return getActiveNumer(param);
},
goback() {
//this.$router.go(-1);
if (this.loginMsg.roleCode == "hcms.APP_SQYZ") {
this.$router.push("/" + sessionStorage.getItem("ybackUrl"));
} else {
this.$router.push("/Signing");
}
},
hideLoading() {
this.loading = false;
},
iconshow(param) {
return returnIco2(param);
},
download() {
if (this.istable == 1) {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
"费用缺陷异常清单.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
} else {
if (this.gysbclk == 1) {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable1")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
"费用上报统计.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
} else {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable2")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
"费用干预统计.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
}
}
},
goExit() {
this.$router.push("/Home");
},
showLoading() {
this.loading = true;
},
returnSt(idx) {
// 0=未干预/1=已干预/2=审核通过/3=未通过审核/4=无需处理
let sta = ["未干预", "已干预", "审核通过", "未通过审核", "无需处理"];
return sta[idx];
},
returnGy(idx, other) {
let sta = ["电话随访", "社区随访", "上门随访", "康复指导", "转诊"];
if (idx < 5) {
return sta[idx];
} else {
return other;
}
},
//缺陷下门费用、门次数、住费用、未签约、诊断
goOther(i) {
// if (i == 1) {
// this.$router.push({
// name: "count",
// query: {
// name: this.name
// }
// });
// } else
if (i == 2) {
this.$router.push({
name: "count"
});
} else if (i == 3) {
this.$router.push({
name: "zDefect"
});
} else if (i == 4) {
this.$router.push({
name: "Nosign"
});
} else if (i == 5) {
this.$router.push({
name: "Diagnose"
});
}
},
getActiveDataAll1(data) {
return getActiveData1(data);
},
getActiveFkyj1(data) {
return getActiveFkyj(data);
},
TwoCount(num) {
return TwoCount(num);
}
}
};
</script>
<style scoped>
.ecleft {
float: left;
}
#echats1 {
width: 150px;
height: 150px;
position: absolute;
right: 0;
top: 10px;
}
#echats2 {
width: 150px;
height: 150px;
position: absolute;
right: 0;
top: 10px;
}
#echats8 {
width: 100%;
height: 110px;
}
/deep/ el-table {
background: none;
}
/deep/ .el-table__expanded-cell {
background: none;
}
/deep/ .el-table th,
.el-table tr {
background: none;
}
/deep/ .el-table .warning-row {
background: rgba(48, 56, 90, 1);
}
/deep/ .el-table .success-row {
background: #2a3557;
}
/deep/ .el-table th > .cell {
padding: 0;
}
/deep/ .el-table .cell {
padding: 0;
line-height: 12px;
}
.el-table::before {
background: none;
}
/deep/ .el-table,
.el-table__expanded-cell {
background: none;
}
/deep/ .el-table__fixed::before {
background-color: #293054;
}
.input01 {
width: 80px;
border: 0;
color: #f1f1f1;
border-bottom: 1px solid #979797;
background: none;
}
.elbtndiv {
height: 50px;
clear: both;
text-align: right;
}
.sbbtn {
background: rgba(0, 151, 254, 1);
width: 65px;
height: 32px;
border: 0;
border-radius: 4px;
}
.tccline {
clear: both;
overflow: hidden;
}
.tccleft {
float: left;
line-height: 35px;
padding-top: 1px;
width: 55px;
color: rgba(166, 174, 214, 1);
font-size: 12px;
text-align: left;
}
.tccright {
float: left;
line-height: 35px;
width: 340px;
padding-top: 6px;
}
.tccright span {
display: inline-block;
margin-left: 10px;
margin-bottom: 10px;
float: left;
width: 55px;
height: 24px;
line-height: 24px;
background: rgba(51, 62, 95, 1);
color: #ffffff;
border-radius: 4px;
border: 1px solid rgba(84, 97, 139, 1);
}
.tccright span.clk {
background: rgba(33, 76, 126, 1);
color: #42ccff;
}
.tccline3 {
text-align: right;
}
.tccline3 /deep/ .ebtn {
width: 80px;
height: 30px;
}
.plsh {
color: #2680ff;
text-decoration: underline;
}
.el-date-editor {
width: 61px;
position: absolute;
right: 5px;
top: 3px;
}
/deep/ .el-date-editor .el-date-editor--month input {
width: 0px;
border: 0;
padding-right: 61px;
padding-left: 0px;
}
/deep/ .el-date-editor .el-input__inner {
background: none !important;
}
/deep/ .el-date-editor .el-input__prefix {
display: none;
}
/deep/ .el-date-editor .el-input__suffix {
display: none;
}
/deep/ .el-table__row {
height: 31px;
}
.el-tag {
background: none;
border: 0;
}
/deep/ .el-badge__content {
border: 0;
font-size: 12px;
}
.yctcdiv {
height: 135px;
z-index: 20;
}
.defectM {
position: absolute;
bottom: 10px;
right: 10px;
width: 390px;
height: 142px;
background: rgba(10, 10, 10, 0.9);
}
.tctable2 {
}
.tctable2 td {
padding: 0 6px;
color: #d6daec;
}
/deep/ .el-radio__label {
color: #d6daec;
font-size: 12px;
padding-left: 5px;
}
/deep/
.tctable2
.el-radio__input.is-disabled.is-checked
.el-radio__inner::after {
background-color: #606266;
width: 8px;
height: 8px;
}
.tcymain2 {
height: 500px;
}
.tcycont2 {
height: 455px;
}
</style>
<template>
<div class="outer" style="position: relative;">
<section class="container">
<section class="header">
<div class="nav" @click="goExit">
<img src="../assets/images/iconmainnav.png" />
</div>
<div class="headeright2">
<div class="fytitle">就诊缺陷管理</div>
<div class="fynav">
<el-badge :value="0" class="item">全部</el-badge>
<el-badge :value="0" class="item">提醒</el-badge>
<el-badge :value="0" class="item">公告</el-badge>
<el-badge :value="0" class="item">复诊</el-badge>
</div>
<div class="fybutton">
<el-button size="small" @click="goback" class="class-btn01" type="default">返回</el-button>
<el-button size="small" class="class-btn02" type="default">筛选</el-button>
<div class="el-date-editor">
<el-date-picker v-model="selectTime" @change="dataSearch" type="month" placeholder></el-date-picker>
</div>
</div>
<div class="fyrighter">{{yname}},截止于{{cxsj}}</div>
</div>
</section>
<section class="con-main">
<div class="lefter">
<div class="lftitle">管理矩阵</div>
<div @click="goOther(1)" class="lfline">
<i class="el-icon-document-copy"></i> 门·费用
</div>
<div @click="goOther(2)" class="lfline lflineclk">
<i class="el-icon-tickets"></i> 门·次数
</div>
<div @click="goOther(3)" class="lfline">
<i class="el-icon-document-copy"></i> 住·费用
</div>
<div @click="goOther(4)" class="lfline">
<i class="el-icon-tickets"></i> 未签约
</div>
<div @click="goOther(5)" class="lfline">
<i class="el-icon-document-add"></i> 诊断
</div>
</div>
<div class="righter">
<div class="div-model fl06">
<div class="title">费用缺陷</div>
<div class="content">
<div class="detitle">
<span>{{base.ZLS}}</span>
</div>
<div id="echats8"></div>
<div class="pieline pieline2">
<span class="span01"></span>
<span class="span02"></span>
<span class="span03"></span>
<span class="span04"></span>
<span class="span05"></span>
</div>
</div>
</div>
<div class="div-model fl07">
<div class="title5">
<span @click="fyqxChange(1)" :class="fyqx==1?'clk':''">门诊费用缺陷</span>
<span @click="fyqxChange(2)" :class="fyqx==2?'clk':''">门诊次数缺陷</span>
</div>
<div class="content">
<div class="ecleft">
<div class="ctlinep1">
{{param02}}
<span></span>
</div>
<div class="ctlinep2">{{param03}} %</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i01"></i>
<span>异常管理率</span>
</div>
</div>
<div class="ctlinep">
{{param04}}
<span></span>
</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i02"></i>
<span>疑似费用异常例数</span>
<span class="zanbi"></span>
<span class="zbbfb">{{param05}}</span>
<span class="zbbfbh">%</span>
<i :class="param05<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
</div>
<div id="echats1"></div>
</div>
</div>
<div class="div-model fr02">
<div class="title5">
<span @click="fyqxChange(3)" :class="fyqx==3?'clk':''">住院缺陷</span>
</div>
<div class="content">
<div class="ecleft">
<div class="ctlinep1">
{{base.ZYLS}}
<span></span>
</div>
<div class="ctlinep2">{{getActiveNum(base.ZYYC_GLL)}} %</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i01"></i>
<span>异常管理率</span>
</div>
</div>
<div class="ctlinep">&nbsp;</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i02"></i>
<span>指单·偏≥{{base.ZDDJ_PL40}}%</span>
<i class="i02"></i>
<span>{{base.ZDDJ_PL100}}%≤指单·偏<100%</span>
</div>
</div>
</div>
<div id="echats2"></div>
</div>
</div>
<div class="div-model-b">
<div class="div-model-table div-model-table4">
<div class="tabletitle4">
<span @click="tabChange(1)" :class="istable==1?'clk':''">异常清单</span>
<span @click="tabChange(2)" :class="istable==2?'clk':''">管理明细</span>
<div class="sxdiv2" @click="searchFn" v-show="istable==1">
筛选条件
<i class="el-icon-arrow-down"></i>
<font>{{sxname}}</font>
</div>
<div @click="download" class="doexport">
导出
<i class="el-icon-download"></i>
</div>
<div class="docode">
清单
<i class="el-icon-tickets"></i>
</div>
<div class="sbtitle" v-show="istable==2">
<code @click="gysbChange(1)" :class="gysbclk==1?'clk':''">上报统计</code> |
<code @click="gysbChange(2)" :class="gysbclk==2?'clk':''">干预统计</code>
</div>
</div>
<el-table
v-show="istable==1"
:header-cell-style="headerStyle"
:fit="true"
:cell-style="cellStyle"
height="254"
id="rebateSetTable"
:row-class-name="tableRowClassName"
:data="tableData"
>
<el-table-column fixed label="序" type="index" width="60"></el-table-column>
<el-table-column fixed prop="XM" width="100" label="姓名">
<template slot-scope="scope">
<p @click="toMember(scope.row.SFZH)" class="jntemname">{{scope.row.XM}}</p>
<div v-html="iconshow(scope.row.ZDRQ)"></div>
</template>
</el-table-column>
<el-table-column prop="JZCS" width="120" sortable label="累计就诊·次/偏·%">
<template slot-scope="scope">
<span class="ycqd_lf">{{scope.row.JZCS}} / {{scope.row.JZCS_TBZ}}</span>
<i class="el-icon-my-up"></i>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="70" sortable label="同·%">
<template slot-scope="scope">
<span class="ycqd_t">{{getActiveNum(scope.row.JZCS_TBL)}}</span>
<i class="el-icon-my-up"></i>
</template>
</el-table-column>
<el-table-column prop="MZFY" width="150" sortable label="累计就诊费用·千/偏·%">
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.MZFY)}} / {{getActiveNum(scope.row.MZFY_TBZ)}}</span>
<i :class="scope.row.MZFY_TBZ<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
<el-table-column prop="MZFY_TBL" width="70" sortable label="同·%">
<template slot-scope="scope">
<span class="ycqd_t">{{getActiveNum(scope.row.MZFY_TBL)}}</span>
<i class="el-icon-my-up"></i>
</template>
</el-table-column>
<el-table-column prop="MZYF" width="150" sortable label="累计就诊药费·千/同·%">
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.MZYF)}} / {{getActiveNum(scope.row.MZYF_TBL)}}</span>
<i :class="scope.row.MZYF_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
<el-table-column prop="ZHNJZL" width="150" sortable label="组合就诊率·%/偏·%">
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.ZHNJZL)}} / {{getActiveNum(scope.row.ZHNJZL_PLD)}}</span>
<i :class="scope.row.ZHNJZL_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
<el-table-column prop="QYSQJZL" width="160" sortable label="签约社区就诊率·%/偏·%">
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.QYSQJZL)}} / {{getActiveNum(scope.row.QYSQJZL_PLD)}}</span>
<i :class="scope.row.QYSQJZL_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBZ" width="110" label="社区就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_YJ)}} ({{getActiveNum(scope.row.ZHNJZCS_YJ)}})</template>
</el-table-column>
<el-table-column prop="QYRS_TBZ" width="110" label="二级就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_EJ)}} ({{getActiveNum(scope.row.ZHNJZCS_EJ)}})</template>
</el-table-column>
<el-table-column prop="QYRS_NAME" width="110" label="二级就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_SJ)}} ({{getActiveNum(scope.row.ZHNJZCS_SJ)}})</template>
</el-table-column>
<el-table-column prop="GLFS" width="60" label="管理方式">
<template slot-scope="scope">
<font v-if="scope.row.GLFS==1">上报</font>
<font v-else-if="scope.row.GLFS==2">干预</font>
<font v-else-if="scope.row.GLFS==3">无需处理</font>
<font v-else-if="scope.row.GLFS==4">未处理</font>
</template>
</el-table-column>
</el-table>
<el-table
v-show="(istable==2&&gysbclk==1)"
:header-cell-style="headerStyle"
:fit="true"
id="rebateSetTable1"
:cell-style="cellStyle"
height="254"
:row-class-name="tableRowClassName"
:data="tableData2"
>
<el-table-column fixed label="序号" type="index" width="65"></el-table-column>
<el-table-column fixed prop="SERIAL_NUMBER" width="135" label="流水号">
<template slot-scope="scope">
<p @click="opensb(scope.row)" class="plsh">{{scope.row.SERIAL_NUMBER}}</p>
</template>
</el-table-column>
<el-table-column prop="SBSJ" width="90" label="上报时间">
<template slot-scope="scope">
<p class="cell">{{getActiveDataAll1(scope.row.SBSJ)}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_NAME" width="55" label="姓名">
<template slot-scope="scope">
<p class="cell">{{scope.row.XM}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="45" label="年龄">
<template slot-scope="scope">
<p class="cell">{{scope.row.NL}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计次数(本次)·次">
<template slot-scope="scope">
<p class="cell">{{scope.row.JZCS}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBZ" width="125" label="累计费用(本次)·千元">
<template slot-scope="scope">
<p class="cell">{{TwoCount(scope.row.MZFY/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计药费(本次)·千元">
<template slot-scope="scope">
<p class="cell">{{TwoCount(scope.row.MZYF/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" label="反馈意见">
<template slot-scope="scope">
<p class="cell">{{getActiveFkyj1(scope.row.SJSHYS)}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" label="市级审核意见">
<template slot-scope="scope">
<font v-if="scope.row.SBZT==1">上报</font>
<font v-else-if="scope.row.SBZT==2">干预</font>
<font v-else-if="scope.row.SBZT==3">无需处理</font>
<font v-else-if="scope.row.SBZT==4">未处理</font>
</template>
</el-table-column>
</el-table>
<el-table
v-show="(istable==2&&gysbclk==2)"
:header-cell-style="headerStyle"
:fit="true"
:cell-style="cellStyle"
height="254"
id="rebateSetTable2"
:row-class-name="tableRowClassName"
:data="tableData2"
>
<el-table-column fixed label="序号" type="index" width="65"></el-table-column>
<el-table-column fixed prop="SERIAL_NUMBER" width="135" label="流水号">
<template slot-scope="scope">
<p class="plsh">{{scope.row.SERIAL_NUMBER}}</p>
</template>
</el-table-column>
<el-table-column prop="SBSJ" width="90" label="干预时间">
<template slot-scope="scope">
<p class="cell">{{getActiveDataAll1(scope.row.GYSJ)}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_NAME" width="55" label="姓名">
<template slot-scope="scope">
<p class="cell">{{scope.row.XM}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="45" label="年龄">
<template slot-scope="scope">
<p class="cell">{{scope.row.NL}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计次数·次">
<template slot-scope="scope">
<p class="cell">{{scope.row.JZCS_SZ}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBZ" width="125" label="累计费用·千元">
<template slot-scope="scope">
<p class="cell">{{TwoCount(scope.row.LJFY_SZ/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计药费·千元">
<template slot-scope="scope">
<p class="cell">{{TwoCount(scope.row.LJYF_SZ/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" label="干预措施">
<template slot-scope="scope">
<font v-if="scope.row.GYCS==1">电话随访</font>
<font v-else-if="scope.row.GYCS==2">社区随访</font>
<font v-else-if="scope.row.GYCS==3">上门随访</font>
<font v-else-if="scope.row.GYCS==4">转诊</font>
<font v-else-if="scope.row.GYCS==5">其他</font>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" label="干预结果">
<template slot-scope="scope">
<font v-if="scope.row.GYZT==0">未干预</font>
<font v-else-if="scope.row.GYZT==1">已干预</font>
<font v-else-if="scope.row.GYZT==2">审核通过</font>
<font v-else-if="scope.row.GYZT==3">未通过审核</font>
<font v-else-if="scope.row.GYZT==4">无需处理</font>
</template>
</el-table-column>
</el-table>
</div>
<div v-show="issx" class="yctcdiv">
<h3>筛选条件</h3>
<div class="tccline">
<div class="tccleft">人群类型</div>
<div class="tccright">
<span @click="changeAll(0)" :class="para01===0?'clk':''">全部</span>
<span @click="changeAll(1)" :class="para01===1?'clk':''">上报</span>
<span @click="changeAll(2)" :class="para01===2?'clk':''">干预</span>
<span @click="changeAll(3)" :class="para01===3?'clk':''">无需处理</span>
<span @click="changeAll(4)" :class="para01===4?'clk':''">未处理</span>
</div>
</div>
<div class="tccline3">
<el-button class="ebtn" @click="okSub" size="mini" type="primary">确定</el-button>
</div>
</div>
</div>
</div>
</section>
<section v-show="gysb==2" class="tccyy">
<div class="tcymain tcymain2">
<h5>
<span @click="gysbFun(3)">×</span>上报明细
</h5>
<div class="tcycont tcycont2">
<table class="tctable">
<tr>
<td>上报单位:{{sblist.SBYY}}</td>
<td>上报时间:{{sblist.SBSJ}}</td>
</tr>
<tr>
<td>上报人:{{sblist.YSXM}}</td>
<td>上报流水号:{{sblist.SERIAL_NUMBER}}</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>{{sblist.XM}}</td>
<td>{{userdesc.YBKH}}</td>
<td>{{sblist.SFZH}}</td>
<td>{{userdesc.YSXM}}</td>
<td>{{userdesc.SJJGMC}}</td>
</tr>
</table>
<h1>干预情况</h1>
<div class="gymsg">{{sblist.SJSHYS}}</div>
<h1>诊疗明细</h1>
<table class="tctable">
<tr>
<th></th>
<th>就诊时间</th>
<th>就诊机构</th>
<th>诊断</th>
<th>就诊号</th>
<th>费用明细</th>
</tr>
<tr v-for="(item,index) in sbdatalist" :key="index">
<td>{{index+1}}</td>
<td>{{timeChange(item.QYSJ)}}</td>
<td>{{item.JZJGMC}}</td>
<td></td>
<td>{{item.JZLSH}}</td>
<td>{{item.JZFY?item.JZFY:0}}元; 药费{{item.MZYF?item.MZYF:0}}元</td>
</tr>
</table>
<div class="gymsg gymsg2">
<span class="ggspan">
合计门诊就诊次数:
<font>{{nowsbnum}}</font>
<code></code>
{{sbzb01}}%
</span>
<span class="ggspan">
合计门诊费用:
<font>{{nowsbfee}}</font>
<code></code>
{{sbzb02}}%
</span>
<span class="ggspan">
合计门诊药费:
<font>{{sbtotal}}</font>
<code></code>
{{sbzb03}}%
</span>
</div>
</div>
</div>
</section>
<section v-show="gysb==1" class="tccyy">
<div class="tcymain">
<h5>
<span @click="gysbFun(3)">×</span>干预
</h5>
<div class="tcycont">
<h6>流水号:{{gylist.SERIAL_NUMBER}} 干预时间:{{gylist.GYSJ}}</h6>
<h1>居民信息</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>{{gylist.XM}}</td>
<td>{{userdesc.YBKH}}</td>
<td>{{gylist.SFZH}}</td>
<td>{{userdesc.YSXM}}</td>
<td>{{userdesc.SJJGMC}}</td>
</tr>
</table>
<table class="tctable">
<tr>
<th>异常项目</th>
<th>标准值/实值</th>
<th>说明</th>
</tr>
<tr>
<td>未签约</td>
<td>-</td>
<td>辖区内居民未签约</td>
</tr>
<tr>
<td>就诊次数</td>
<td>4次 / {{tcgycs}}次</td>
<td>
就诊次数超过时标
<font color="#ff2200">{{tcgybs}}</font>
</td>
</tr>
<tr>
<td>累计费用</td>
<td>5011元 / 8928.5元</td>
<td>
累计费用超过标准值 {{tcgyfy}} 元,偏离度为
<font color="#ff2200">{{tcgypld}}%</font>
</td>
</tr>
<tr>
<td>指单·偏</td>
<td>< 100% / {{tcgybl}}%</td>
<td>
总费用
<font color="#ff2200">18672.17</font>
</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable tctable2">
<tr>
<td>干预措施:</td>
<td>
<el-radio disabled v-model="gycs" :label="0">电话随访</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="1">社区随访</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="2">上门随访</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="3">康复指导</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="4">转诊</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="5">其他</el-radio>
</td>
<td>
<input disabled :value="gylist.GYCS_QT=='null'?'':gylist.GYCS_QT" class="input01" />
</td>
</tr>
</table>
<!--div class="elbtndiv">
<el-button class="sbbtn" type="primary">确定</el-button>
</div-->
</div>
</div>
</section>
</section>
</div>
</template>
<script>
import { home, contract } from "@/api/home";
import {
famartTime,
returnIco2,
famartTime2,
getActiveNumer,
getActiveData1,
getActiveFkyj,
TwoCount
} from "@/utils/validate.js";
import FileSaver from "file-saver";
import XLSX from "xlsx";
export default {
components: {},
name: "count",
data() {
return {
gycs: 0,
token: "",
loginMsg: {},
gysbclk: 1,
gysb: 0,
tcgycs: 0,
tcgybs: 0,
tcgyfy: 0,
tcgypld: 0,
sbdatalist: [],
tcgybl: 0,
yname: "",
para01: "",
param02: "",
param03: "",
param04: "",
param05: "",
istable: 1,
isxx: 1,
isdm: false,
fyqx: 2,
nowsbnum: 0,
sbzb01: 0,
sbzb02: 0,
sbzb03: 0,
jctxt: "150",
selectTime: "2020-05",
issx: false,
loading: false,
cxsj: "201907",
sxname: "全部",
sxarr: ["全部", "上报", "干预", "无需处理", "未处理"],
detelist: {},
option: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
formatter: "{a}{b} : {c} ({d}%)"
},
series: [
{
name: "门诊次数缺陷",
type: "pie",
radius: "59%",
center: ["50%", "50%"],
label: {
show: false,
position: "center"
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [11, 22]
}
]
},
option1: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
formatter: "{a}{b} : {c} ({d}%)"
},
series: [
{
name: "门诊次数缺陷",
type: "pie",
radius: "59%",
center: ["50%", "50%"],
label: {
show: false,
position: "center"
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [
{
value: 24,
name: "直接访问",
itemStyle: {
normal: {
color: "#84B3FF"
}
}
},
{
value: 310,
name: "邮件营销",
itemStyle: {
normal: {
color: "#2A71F2"
}
}
}
]
}
]
},
pieoption1: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
position: [0, 0],
formatter: "{a}{b}:{c} 例"
},
series: [
{
name: "门诊",
type: "pie",
radius: [0, 38],
x: "34%",
width: "34%",
funnelAlign: "right",
label: {
normal: { show: false }
},
labelLine: {
normal: { show: false }
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [
{ value: 11, name: "费用缺陷" },
{ value: 22, name: "次数缺陷" }
]
}
]
},
tableData: [],
tableData2: [],
base: [],
piedata01: [],
piedata02: [],
piedata03: [],
Reportdetaildatalist: [],
Meddledetaildatalist: [],
sblist: [],
gylist: [],
nowsbfee: 0,
sbtotal: 0,
userdesc: [],
gysbkey: "qygl-zmjzfx-zlmx-sb-list",
orderField: "SBSJ"
};
},
mounted: function() {
this.token = sessionStorage.getItem("token");
this.loginMsg = JSON.parse(sessionStorage.getItem("userinfo"));
this.cxsj = sessionStorage.getItem("cxsj");
this.yname = this.loginMsg.userName;
if (this.loginMsg.roleCode == "hcms.APP_SQYZ") {
console.log("家医数据信息:");
console.log(this.loginMsg);
this.loginMsg.gpNumber = sessionStorage.getItem("ygh");
this.yname = sessionStorage.getItem("yname");
}
this.homeinti();
this.baseInfo();
this.gysbInit();
// this.yzFoots();
// this.roleCode = this.loginMsg.roleCode;
const obj = setInterval(() => {
if (document.getElementById("echats1")) {
const dom = document.getElementById("echats1");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option, true);
}
clearInterval(obj);
}
}, 200);
const obj1 = setInterval(() => {
if (document.getElementById("echats2")) {
const dom = document.getElementById("echats2");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option1, true);
}
clearInterval(obj1);
}
}, 200);
const obj2 = setInterval(() => {
if (document.getElementById("echats8")) {
const dom = document.getElementById("echats8");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.pieoption1, true);
}
clearInterval(obj2);
}
}, 200);
},
methods: {
homeinti() {
let that = this;
//列表
that.token = sessionStorage.getItem("token");
let param = {
key: "qxgl-cs-ycqd",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "XM", //--排序字段
orderType: "desc", //--排序类型 desc=倒序/asc=正序
pageSize: 10,
pageIndex: 1,
glfs: this.para01
}
};
contract(that.token, param)
.then(res => {
that.tableData = [];
if (res.data.listData.length > 0) {
this.isdm = true;
for (let item of res.data.listData) {
if (item.GLFS == this.para01) {
that.tableData = res.data.listData;
} else if (this.para01 == "") {
that.tableData = res.data.listData;
}
}
}
})
.catch(err => {
console.log(err);
});
},
baseInfo() {
let that = this;
//列表
that.token = sessionStorage.getItem("token");
let param2 = {
key: "qxgl-jbxx",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode
};
contract(that.token, param2)
.then(res => {
// console.log("bbbbbb");
// console.log(res);
that.base = [];
that.piedata01 = [];
that.piedata02 = [];
that.piedata03 = [];
var pieone = new Object();
var pieone1 = new Object();
if (res.data.length > 0) {
that.base = res.data[0];
}
this.param02 = that.base.CSLS;
this.param03 = getActiveNumer(that.base.CSYC_GLL);
this.param04 = that.base.CSYC_FYYC;
this.param05 = getActiveNumer(that.base.CSYC_FYZB);
//第一个图
pieone.value = res.data[0].FYLS;
pieone.name = "费用缺陷";
pieone1.value = res.data[0].ZYLS;
pieone1.name = "次数缺陷";
that.piedata01.push(pieone);
that.piedata01.push(pieone1);
that.pieoption1.series[0].data = this.piedata01;
that.$echarts
.init(document.getElementById("echats8"))
.setOption(that.pieoption1, true);
//第er个图
//第er个图
let obj = { value: 0, val1: 0, val2: 0 };
obj.value = res.data[0].FYYC_CSYC
? getActiveNumer(res.data[0].FYYC_CSYC)
: 0;
obj.val1 = res.data[0].FYYC_CSYC
? getActiveNumer(res.data[0].FYYC_CSYC)
: 0;
obj.val2 = res.data[0].FYYC_CSZB
? getActiveNumer(res.data[0].FYYC_CSZB * 100)
: 0;
that.piedata02.push(obj);
obj = { value: 0, val1: 0, val2: 0 };
obj.value = res.data[0].FYYC_CSZB
? getActiveNumer(res.data[0].FYYC_CSZB * 100)
: 0;
obj.val1 = res.data[0].FYYC_CSYC
? getActiveNumer(res.data[0].FYYC_CSYC)
: 0;
obj.val2 = res.data[0].FYYC_CSZB
? getActiveNumer(res.data[0].FYYC_CSZB * 100)
: 0;
that.piedata02.push(obj);
that.option.series[0].data = that.piedata02;
console.log("that.piedata02that.piedata02");
console.log(that.piedata02);
that.$echarts
.init(document.getElementById("echats1"))
.setOption(that.option, true);
//第3个图
that.piedata03.push(
res.data[0].ZDDJ_PL40 ? res.data[0].ZDDJ_PL40 : 0
);
that.piedata03.push(
res.data[0].ZDDJ_PL100 ? res.data[0].ZDDJ_PL100 : 0
);
that.option1.series[0].data = that.piedata03;
that.$echarts
.init(document.getElementById("echats2"))
.setOption(that.option1, true);
})
.catch(err => {
console.log(err);
});
},
gysbInit() {
let that = this;
if (this.orderField == "SBSJ") {
var param2 = {
key: this.gysbkey,
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: this.orderField,
orderType: "desc",
sfzh: "",
pageSize: 10,
pageIndex: 1,
sb_type: 1
}
};
} else if (this.orderField == "GYSJ") {
var param2 = {
key: this.gysbkey,
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: this.orderField,
orderType: "desc",
sfzh: "",
pageSize: 10,
pageIndex: 1,
gy_type: 1
}
};
}
contract(that.token, param2).then(res => {
that.tableData2 = [];
that.tableData2 = res.data.listData;
// console.log("干预上报接口");
console.log(res);
});
},
tabChange(i) {
this.istable = i;
},
fyqxChange(i) {
let that = this;
this.fyqx = i;
if (i == 1) {
this.param02 = that.base.FYLS;
this.param03 = getActiveNumer(that.base.FYYC_GLL);
this.param04 = that.base.FYYC_CSYC;
this.param05 = getActiveNumer(that.base.FYYC_CSZB);
this.$router.push({
name: "Defect",
query: {
name: this.name
}
});
} else if (i == 2) {
this.param02 = that.base.CSLS;
this.param03 = getActiveNumer(that.base.CSYC_GLL);
this.param04 = that.base.CSYC_FYYC;
this.param05 = getActiveNumer(that.base.CSYC_FYZB);
this.$router.push({
name: "count",
query: {
name: this.name
}
});
} else if (i == 3) {
this.$router.push({
name: "zDefect",
query: {
name: this.name
}
});
}
},
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
} else {
return "success-row";
}
},
timeChange(param) {
return famartTime(param);
},
download() {
if (this.istable == 1) {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
"次数异常清单.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
} else if (this.gysbclk == 1) {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable1")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
"上报统计次数清单.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
} else {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable2")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
"干预统计次数.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
}
},
userinfo(sfz) {
let that = this;
// 居民就诊分析-居民基本信息
let param = {
key: "qygl-zmjzfx-jmjbxx",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
sfzh: sfz
}
};
contract(that.token, param).then(res => {
console.log("居民基本信息:");
console.log(res);
this.userdesc = res.data[0];
});
},
toMember(param) {
sessionStorage.setItem("backUrl", "Defect");
this.$router.push("/Member?sfz=" + param);
},
headerStyle() {
return "background:rgba(54,67,111,1); border:0; margin:0; padding.ycqd_lf:0; line-height:35px; color:#fff; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle() {
return "background:none;color:#fff;border:0; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
headerStyle2() {
return "background:rgba(10,10,10,0.9); border:0; margin:0; padding:0; line-height:35px; color:#8b8c91; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle2() {
return "background:rgba(10,10,10,0.9);color:#585f6c;border:0; border-bottom:1px dotted #262b36; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
gysbChange(param) {
if (param == 1) {
this.gysbkey = "qygl-zmjzfx-zlmx-sb-list";
this.orderField = "SBSJ";
} else {
this.gysbkey = "qygl-zmjzfx-zlmx-gy-list";
this.orderField = "GYSJ";
}
this.gysbclk = param;
this.gysbInit();
},
opensb(param) {
//打开上报
let that = this;
this.sblist = param;
this.gysb = 2;
this.userinfo(param.SFZH);
console.log("打开上报:");
console.log(param);
let param5 = {
key: "zd-mx",
tjsj: this.cxsj,
parameter: {
mxType: "1",
lsh: param.SERIAL_NUMBER
}
};
that.sbdatalist = [];
this.nowsbnum = 0;
contract(that.token, param5).then(res => {
console.log("返回上报列表:");
console.log(res);
res.data.forEach((item, index) => {
item.JZFY = item.JZFY ? item.JZFY : 0;
item.JZYF = item.JZYF ? item.JZYF : 0;
this.nowsbfee += parseInt(item.JZFY);
this.sbtotal += parseInt(item.JZYF);
that.sbdatalist.push(item);
this.nowsbnum++;
});
this.sbzb01 = ((this.nowsbnum / 24) * 100).toFixed(2);
this.sbzb02 = ((this.nowsbfee / 4564) * 100).toFixed(2);
this.sbzb03 = ((this.sbtotal / 4553) * 100).toFixed(2);
});
},
opengy(param) {
//打开干预
this.gysb = 1;
this.gylist = param;
this.userinfo(param.SFZH);
console.log("打开干预:");
console.log(param);
this.gycs = param.GYCS;
this.tcgybl = param.GYCS;
this.tcgybs = param.GYCS;
this.tcgycs = param.JZCS_SZ;
this.tcgyfy = param.LJFY_SZ;
this.tcgypld = param.GYCS;
},
dataSearch(value) {
console.log(famartTime2(value));
let val = famartTime2(value);
this.cxsj = val;
this.homeinti();
this.baseInfo();
},
okSub() {
this.issx = false;
this.homeinti();
},
searchFn() {
this.issx = !this.issx;
},
gysbFun(param) {
this.gysb = param;
},
changeAll(num) {
this.para01 = num;
this.sxname = this.sxarr[num];
},
getActiveNum(param) {
return getActiveNumer(param);
},
goback() {
if (this.loginMsg.roleCode == "hcms.APP_SQYZ") {
this.$router.push("/" + sessionStorage.getItem("ybackUrl"));
} else {
this.$router.push("/Signing");
}
},
hideLoading() {
this.loading = false;
},
iconshow(param) {
return returnIco2(param);
},
goExit() {
this.$router.push("/Home");
},
showLoading() {
this.loading = true;
},
goOther(i) {
if (i == 1) {
this.$router.push({
name: "Defect"
});
} else if (i == 3) {
this.$router.push({
name: "zDefect",
query: {
name: this.name
}
});
} else if (i == 4) {
this.$router.push({
name: "Nosign"
});
} else if (i == 5) {
this.$router.push({
name: "Diagnose"
});
}
},
getActiveDataAll1(data) {
return getActiveData1(data);
},
getActiveFkyj1(data) {
return getActiveFkyj(data);
},
TwoCount(num) {
return TwoCount(num);
}
}
};
</script>
<style scoped>
.ecleft {
float: left;
}
#echats1 {
width: 150px;
height: 150px;
position: absolute;
right: 0;
top: 10px;
}
#echats2 {
width: 150px;
height: 150px;
position: absolute;
right: 0;
top: 10px;
}
#echats8 {
width: 100%;
height: 110px;
}
/deep/ el-table {
background: none;
}
/deep/ .el-table__expanded-cell {
background: none;
}
/deep/ .el-table th,
.el-table tr {
background: none;
}
/deep/ .el-table .warning-row {
background: rgba(48, 56, 90, 1);
}
/deep/ .el-table .success-row {
background: #2a3557;
}
/deep/ .el-table th > .cell {
padding: 0;
}
/deep/ .el-table .cell {
padding: 0;
line-height: 12px;
}
.el-table::before {
background: none;
}
/deep/ .el-table,
.el-table__expanded-cell {
background: none;
}
/deep/ .el-table__fixed::before {
background-color: #293054;
}
.input01 {
width: 80px;
border: 0;
border-bottom: 1px solid #979797;
background: none;
}
.elbtndiv {
height: 50px;
clear: both;
text-align: right;
}
.sbbtn {
background: rgba(0, 151, 254, 1);
width: 65px;
height: 32px;
border: 0;
border-radius: 4px;
}
.tccline {
clear: both;
overflow: hidden;
}
.tccleft {
float: left;
line-height: 35px;
padding-top: 1px;
width: 55px;
color: rgba(166, 174, 214, 1);
font-size: 12px;
text-align: left;
}
.tccright {
float: left;
line-height: 35px;
width: 340px;
padding-top: 6px;
}
.tccright span {
display: inline-block;
margin-left: 10px;
margin-bottom: 10px;
float: left;
width: 55px;
height: 24px;
line-height: 24px;
background: rgba(51, 62, 95, 1);
color: #ffffff;
border-radius: 4px;
border: 1px solid rgba(84, 97, 139, 1);
}
.tccright span.clk {
background: rgba(33, 76, 126, 1);
color: #42ccff;
}
.tccline3 {
text-align: right;
}
.tccline3 /deep/ .ebtn {
width: 80px;
height: 30px;
}
.plsh {
color: #2680ff;
text-decoration: underline;
}
.el-date-editor {
width: 61px;
position: absolute;
right: 5px;
top: 3px;
}
/deep/ .el-date-editor .el-date-editor--month input {
width: 0px;
border: 0;
padding-right: 61px;
padding-left: 0px;
}
/deep/ .el-date-editor .el-input__inner {
background: none !important;
}
/deep/ .el-date-editor .el-input__prefix {
display: none;
}
/deep/ .el-date-editor .el-input__suffix {
display: none;
}
/deep/ .el-table__row {
height: 31px;
}
.el-tag {
background: none;
border: 0;
}
/deep/ .el-badge__content {
border: 0;
font-size: 12px;
}
.yctcdiv {
height: 135px;
z-index: 20;
}
.defectM {
position: absolute;
bottom: 10px;
right: 10px;
width: 390px;
height: 142px;
background: rgba(10, 10, 10, 0.9);
}
</style>
<template>
<div class="outer" style="position: relative;">
<section class="container">
<section class="header">
<div class="nav" @click="goExit">
<img src="../assets/images/iconmainnav.png" />
</div>
<div class="headeright2">
<div class="fytitle">签约缺陷管理</div>
<div class="fynav">
<el-badge :value="0" class="item">全部</el-badge>
<el-badge :value="0" class="item">提醒</el-badge>
<el-badge :value="0" class="item">公告</el-badge>
<el-badge :value="0" class="item">复诊</el-badge>
</div>
<div class="fybutton">
<el-button size="small" @click="goback" class="class-btn01" type="default">返回</el-button>
<el-button size="small" class="class-btn02" type="default">筛选</el-button>
<div class="el-date-editor">
<el-date-picker v-model="selectTime" @change="dataSearch" type="month" placeholder></el-date-picker>
</div>
</div>
<div class="fyrighter">{{yname}},截止于{{cxsj}}</div>
</div>
</section>
<section class="con-main">
<div class="lefter">
<div class="lftitle">管理矩阵</div>
<div @click="goOther(1)" class="lfline">
<i class="el-icon-document-copy"></i> 门·费用
</div>
<div @click="goOther(2)" class="lfline">
<i class="el-icon-tickets"></i> 门·次数
</div>
<div @click="goOther(3)" class="lfline">
<i class="el-icon-document-copy"></i> 住·费用
</div>
<div @click="goOther(4)" class="lfline lflineclk">
<i class="el-icon-tickets"></i> 未签约
</div>
<div @click="goOther(5)" class="lfline">
<i class="el-icon-document-add"></i> 诊断
</div>
</div>
<div class="righter">
<div class="div-model fl06">
<div class="title">签约缺陷</div>
<div class="content">
<div class="detitle">
<span>{{base.ZLS}}</span>
</div>
<div id="echats8"></div>
<div class="pieline pieline2">
<span class="span01"></span>
<span class="span02"></span>
<span class="span03"></span>
<span class="span04"></span>
<span class="span05"></span>
</div>
</div>
</div>
<div class="div-model fl10">
<div class="title">未签约人群</div>
<div class="content">
<div id="echats1"></div>
<div class="second">
<div>
<span class="second_g"></span>
<p>高血压占比:</p>
<span class="zb">{{getActiveNum(base.GXY_ZB)+'%'}}</span>
</div>
<div>
<span class="second_t"></span>
<p>糖尿病占比:</p>
<span class="zb">{{getActiveNum(base.TNB_ZB)+'%'}}</span>
</div>
<div>
<span class="second_q"></span>
<p>其他占比:</p>
<span class="zb">{{getActiveNum(base.QT_ZB)+'%'}}</span>
</div>
</div>
<div id="echats3"></div>
</div>
</div>
<div class="div-model-b">
<div class="div-model-table div-model-table4">
<div class="tabletitle4">
<span>异常清单</span>
<!-- @click="tabChange(1)" :class="istable==1?'clk':''" -->
<!-- <span @click="tabChange(2)" :class="istable==2?'clk':''">管理明细</span> -->
<div class="sxdiv2" @click="searchFn" v-show="istable==1">
筛选条件
<i class="el-icon-arrow-down"></i>
<font>{{sxname}}</font>
</div>
<div @click="download" class="doexport">
导出
<i class="el-icon-download"></i>
</div>
<div class="docode">
清单
<i class="el-icon-tickets"></i>
</div>
<!-- <div class="sbtitle" v-show="istable==2">
<code @click="gysbChange(1)" :class="gysbclk==1?'clk':''">上报统计</code> |
<code @click="gysbChange(2)" :class="gysbclk==2?'clk':''">干预统计</code>
</div>-->
</div>
<el-table
v-show="istable==1"
:header-cell-style="headerStyle"
:fit="true"
:cell-style="cellStyle"
height="254"
id="rebateSetTable"
:row-class-name="tableRowClassName"
:data="tableData"
>
<el-table-column fixed label="序" type="index" width="60"></el-table-column>
<el-table-column fixed prop="XM" width="150" label="姓名">
<template slot-scope="scope">
<p @click="toMember(scope.row.SFZH)" class="jntemname">{{scope.row.XM}}</p>
<div v-html="iconshow(scope.row.ZDRQ2)"></div>
</template>
</el-table-column>
<el-table-column label="性别" type="index" width="80">
<template slot-scope="scope">
<p class="cell">{{scope.row.XB}}</p>
</template>
</el-table-column>
<el-table-column label="年龄" type="index" width="80">
<template slot-scope="scope">
<p class="cell">{{scope.row.NL}}</p>
</template>
</el-table-column>
<el-table-column label="身份证号" type="index" width="140">
<template slot-scope="scope">
<p class="cell">{{scope.row.SFZH.substring(0,6)+'************'}}</p>
</template>
</el-table-column>
<el-table-column label="电话" type="index" width="140">
<template slot-scope="scope">
<p class="cell">{{scope.row.LXDH.substring(0,7)+'****'}}</p>
</template>
</el-table-column>
<el-table-column label="住址" type="index" width="300">
<template slot-scope="scope">
<p class="cell">{{scope.row.JZDZ.substring(0,9)+'****'}}</p>
</template>
</el-table-column>
</el-table>
<el-table
v-show="(istable==2&&gysbclk==1)"
:header-cell-style="headerStyle"
:fit="true"
:cell-style="cellStyle"
height="254"
:row-class-name="tableRowClassName"
:data="tableData2"
>
<el-table-column fixed label="序号" type="index" width="40"></el-table-column>
<el-table-column fixed prop="SERIAL_NUMBER" width="135" label="流水号">
<template slot-scope="scope">
<p @click="opensb(scope.row)" class="plsh">{{scope.row.SERIAL_NUMBER}}</p>
</template>
</el-table-column>
<el-table-column prop="SBSJ" width="90" label="上报时间"></el-table-column>
<el-table-column prop="QYRS_NAME" width="55" label="姓名"></el-table-column>
<el-table-column prop="QYRS_TBL" width="45" label="年龄"></el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计次数(本次)·次"></el-table-column>
<el-table-column prop="QYRS_TBZ" width="125" label="累计费用(本次)·千元"></el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计药费(本次)·千元"></el-table-column>
<el-table-column prop="QYRS_TBL" label="反馈意见"></el-table-column>
<el-table-column prop="QYRS_TBL" label="市级审核意见"></el-table-column>
</el-table>
<el-table
v-show="(istable==2&&gysbclk==2)"
:header-cell-style="headerStyle"
:fit="true"
:cell-style="cellStyle"
height="254"
:row-class-name="tableRowClassName"
:data="tableData2"
>
<el-table-column fixed label="序号" type="index" width="40"></el-table-column>
<el-table-column fixed prop="SERIAL_NUMBER" width="135" label="流水号">
<template slot-scope="scope">
<p @click="opengy(scope.row)" class="plsh">{{scope.row.SERIAL_NUMBER}}</p>
</template>
</el-table-column>
<el-table-column prop="SBSJ" width="90" label="干预时间"></el-table-column>
<el-table-column prop="QYRS_NAME" width="55" label="姓名"></el-table-column>
<el-table-column prop="QYRS_TBL" width="45" label="年龄"></el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计次数·次"></el-table-column>
<el-table-column prop="QYRS_TBZ" width="125" label="累计费用·千元"></el-table-column>
<el-table-column prop="QYRS_TBL" width="125" label="累计药费·千元"></el-table-column>
<el-table-column prop="QYRS_TBL" label="干预措施"></el-table-column>
<el-table-column prop="QYRS_TBL" label="干预结果"></el-table-column>
</el-table>
</div>
<div v-show="issx" class="yctcdiv">
<h3>筛选条件</h3>
<div class="tccline">
<div class="tccleft">人群类型</div>
<div class="tccright">
<span @click="changeAll(0)" :class="para01===0?'clk':''">全部</span>
<span @click="changeAll(1)" :class="para01===1?'clk':''">上报</span>
<span @click="changeAll(2)" :class="para01===2?'clk':''">干预</span>
<span @click="changeAll(3)" :class="para01===3?'clk':''">无需处理</span>
<span @click="changeAll(4)" :class="para01===4?'clk':''">未处理</span>
</div>
</div>
<div class="tccline3">
<el-button class="ebtn" @click="okSub" size="mini" type="primary">确定</el-button>
</div>
</div>
</div>
</div>
</section>
<section v-show="gysb==2" class="tccyy">
<div class="tcymain tcymain2">
<h5>
<span @click="gysbFun(3)">×</span>上报明细
</h5>
<div class="tcycont">
<table class="tctable">
<tr>
<td>上报单位:古美社区卫生服务中心</td>
<td>上报时间:2019-05-12</td>
</tr>
<tr>
<td>上报人:金鸣</td>
<td>上报流水号:MZ20190505341678</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>郝莺</td>
<td>F02313341</td>
<td>310106196803302023</td>
<td>金鸣</td>
<td>大华医院/曙光医院</td>
</tr>
</table>
<h1>干预情况</h1>
<div class="gymsg"></div>
<h1>诊疗明细</h1>
<table class="tctable">
<tr>
<th></th>
<th>就诊时间</th>
<th>就诊机构</th>
<th>诊断</th>
<th>就诊号</th>
<th>费用明细</th>
</tr>
<tr>
<td>1</td>
<td>2019-02-22</td>
<td>六院</td>
<td>肺结节待查</td>
<td>20190924592693300</td>
<td>25元; 药费-25元,其他</td>
</tr>
<tr>
<td>1</td>
<td>2019-02-22</td>
<td>六院</td>
<td>肺结节待查</td>
<td>20190924592693300</td>
<td>25元; 药费-25元,其他</td>
</tr>
</table>
<div class="gymsg gymsg2">
<span class="ggspan">
合计门诊就诊次数:
<font>3</font>
<code></code>7.32%
</span>
<span class="ggspan">
合计门诊费用:
<font>334</font>
<code></code> 7.41%
</span>
<span class="ggspan">
合计门诊药费:
<font>233</font>
<code></code>
</span>
</div>
<div class="elbtndiv">
<el-button class="sbbtn" type="primary">确定</el-button>
</div>
</div>
</div>
</section>
<section v-show="gysb==1" class="tccyy">
<div class="tcymain">
<h5>
<span @click="gysbFun(3)">×</span>干预
</h5>
<div class="tcycont">
<h6>流水号:MZ20190505341678 干预时间:2019-01-12</h6>
<h1>居民信息</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>郝莺</td>
<td>F02313341</td>
<td>310106196803302023</td>
<td>金鸣</td>
<td>大华医院/曙光医院</td>
</tr>
</table>
<table class="tctable">
<tr>
<th>异常项目</th>
<th>标准值/实值</th>
<th>说明</th>
</tr>
<tr>
<td>未签约</td>
<td>-</td>
<td>辖区内居民未签约</td>
</tr>
<tr>
<td>就诊次数</td>
<td>4次 / 20次</td>
<td>就诊次数超过时标</td>
</tr>
<tr>
<td>累计费用</td>
<td>5011元 / 8928.5元</td>
<td>累计费用超过标准值 5011 元,偏离度为 78.2%</td>
</tr>
<tr>
<td>指单·偏</td>
<td>< 100% / 121%</td>
<td>2019/01/04日从中山医院出院,住院12天,总费用18672.17 元</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable">
<tr>
<td>干预措施:</td>
<td>
<label>
<input name="gycs" type="radio" />电话随访
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />社区随访
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />上门随访
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />康复指导
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />转诊
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />其他
</label>
</td>
<td>
<input class="input01" />
</td>
</tr>
</table>
<div class="elbtndiv">
<el-button class="sbbtn" type="primary">确定</el-button>
</div>
</div>
</div>
</section>
<!-- <section @click="isdm=false" v-show="isdm" class="defectM">
<el-table
:header-cell-style="headerStyle2"
height="142"
:fit="true"
:cell-style="cellStyle2"
:data="tableData"
>
<el-table-column prop="QYRS_TBZ" width="110" label="社区就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_YJ)}} ({{getActiveNum(scope.row.ZHNJZCS_YJ)}})</template>
</el-table-column>
<el-table-column prop="QYRS_TBZ" width="110" label="二级就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_EJ)}} ({{getActiveNum(scope.row.ZHNJZCS_EJ)}})</template>
</el-table-column>
<el-table-column prop="QYRS_NAME" width="110" label="二级就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_SJ)}} ({{getActiveNum(scope.row.ZHNJZCS_SJ)}})</template>
</el-table-column>
<el-table-column prop="GLFS" width="60" label="管理方式">
<template slot-scope="scope">
<font v-if="scope.row.GLFS==0">未处理</font>
<font v-else-if="scope.row.GLFS==1">上报</font>
<font v-else>干预</font>
</template>
</el-table-column>
</el-table>
</section>-->
</section>
</div>
</template>
<script>
import { home, contract } from "@/api/home";
import {
famartTime,
returnIco2,
famartTime2,
getActiveNumer
} from "@/utils/validate.js";
import FileSaver from "file-saver";
import XLSX from "xlsx";
export default {
components: {},
name: "count",
data() {
return {
token: "",
loginMsg: {},
roleCode: "",
gysbclk: 1,
gysb: 0,
yname: "",
para01: "",
param02: "",
param03: "",
param04: "",
param05: "",
istable: 1,
isxx: 1,
isdm: false,
fyqx: 2,
jctxt: "150",
selectTime: "2020-05",
issx: false,
loading: false,
cxsj: "201907",
sxname: "全部",
sxarr: ["全部", "上报", "干预", "无需处理", "未处理"],
detelist: {},
option: {
color: ["#158EC4", "#0465B0", "#125589"],
tooltip: {
trigger: "item",
formatter: "{a}{b} : ({d}%)"
},
series: [
{
name: "",
type: "pie",
radius: "59%",
center: ["50%", "50%"],
label: {
show: false,
position: "center"
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [
{ value: 11, name: "高血压占比" },
{ value: 11, name: "糖尿病占比" },
{ value: 22, name: "其他占比" }
]
}
]
},
option3: {
grid: {
left: "5%",
right: "5%",
bottom: "5%",
top: "10%",
containLabel: true
},
color: ["#158EC4", "#0465B0", "#125589"],
xAxis: {
show: false,
type: "value"
},
yAxis: [
{
type: "category",
inverse: true,
axisLabel: {
show: true,
textStyle: {
color: "#AAB1D2"
}
},
splitLine: {
show: false
},
axisTick: {
show: false
},
axisLine: {
show: false
},
data: ["高血压", "糖尿病", "其他"]
}
],
series: [
{
type: "bar",
itemStyle: {
normal: {
barBorderRadius: 5,
color: function(params) {
var mycolor = ["#158EC4", "#0465B0", "#125589"];
var num = mycolor.length;
return mycolor[params.dataIndex % num];
}
}
},
barWidth: 10,
data: [50, 50, 50]
}
]
},
pieoption1: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
position: [0, 0],
formatter: "{a}{b}:{c} 例"
},
series: [
{
name: "",
type: "pie",
radius: [0, 38],
x: "34%",
width: "34%",
funnelAlign: "right",
label: {
normal: { show: false }
},
labelLine: {
normal: { show: false }
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [ { value: 11, name: "未签约" },
{ value: 22, name: '签约' }]
}
]
},
tableData: [],
tableData2: [],
base: [],
piedata01: [],
piedata02: [],
piedata03: [],
gysbkey: "qygl-zmjzfx-zlmx-sb-list"
};
},
mounted: function() {
this.token = sessionStorage.getItem("token");
this.loginMsg = JSON.parse(sessionStorage.getItem("userinfo"));
this.yname = this.loginMsg.userName;
if (this.loginMsg.roleCode == "hcms.APP_SQYZ") {
console.log("家医数据信息:");
console.log(this.loginMsg);
this.loginMsg.gpNumber = sessionStorage.getItem("ygh");
this.yname = sessionStorage.getItem("yname");
}
this.cxsj = sessionStorage.getItem("cxsj");
this.roleCode = this.loginMsg.roleCode;
this.homeinti();
this.baseInfo();
this.gysbInit();
const obj = setInterval(() => {
if (document.getElementById("echats1")) {
const dom = document.getElementById("echats1");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option, true);
}
clearInterval(obj);
}
}, 200);
const obj2 = setInterval(() => {
if (document.getElementById("echats8")) {
const dom = document.getElementById("echats8");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.pieoption1, true);
}
clearInterval(obj2);
}
}, 200);
const obj3 = setInterval(() => {
if (document.getElementById("echats3")) {
const dom = document.getElementById("echats3");
const myChart = this.$echarts.init(dom);
console.log(this.option3);
if (this.option3 && typeof this.option3 === "object") {
myChart.setOption(this.option3, true);
}
clearInterval(obj3);
}
}, 200);
},
methods: {
homeinti() {
let that = this;
//列表
that.token = sessionStorage.getItem("token");
let param = {
key: "qxgl-wqy-ycqd",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "XM", //--排序字段
orderType: "desc", //--排序类型 desc=倒序/asc=正序
pageSize: 10,
pageIndex: 1,
glfs: this.para01
}
};
contract(that.token, param)
.then(res => {
that.tableData = [];
if (res.data.listData.length > 0) {
this.isdm = true;
for (let item of res.data.listData) {
if (item.GLFS == this.para01) {
that.tableData = res.data.listData;
} else if (this.para01 == "") {
that.tableData = res.data.listData;
}
}
}
})
.catch(err => {
console.log(err);
});
},
baseInfo() {
let that = this;
that.token = sessionStorage.getItem("token");
let param2 = {
key: "qxgl-wqy-jbxx",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode
};
let param1 = {
key: "qxgl-jbxx",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode
};
contract(that.token, param1)
.then(res => {
console.log(res);
that.base = [];
that.piedata01 = [];
if (res.data.length > 0) {
that.base = res.data[0];
}
var pieone = new Object();
var pieone1 = new Object();
//第一个图
pieone.value=res.data[0].FYLS;
pieone.name='未签约'
pieone1.value=res.data[0].ZYLS;
pieone1.name='签约'
that.piedata01.push(pieone);
that.piedata01.push(pieone1);
that.pieoption1.series[0].data = this.piedata01;
that.$echarts
.init(document.getElementById("echats8"))
.setOption(that.pieoption1, true);
})
.catch(err => {
console.log(err);
});
contract(that.token, param2)
.then(res => {
console.log(res);
// that.base = [];
// that.piedata01 = [];
that.piedata02 = [];
that.piedata03 = [];
if (res.data.length > 0) {
that.base = res.data[0];
}
console.log(that.base);
var pieone = new Object();
var pieone1 = new Object();
var pieone2 = new Object();
//第er个图
pieone.value = res.data[0].GXY_ZB ? res.data[0].GXY_ZB : 0;
pieone.name = "高血压占比";
pieone1.value = res.data[0].TNB_ZB ? res.data[0].TNB_ZB : 0;
pieone1.name = "糖尿病占比";
pieone2.value = res.data[0].QT_ZB ? res.data[0].QT_ZB : 0;
pieone2.name = "其他占比";
that.piedata02.push(pieone);
that.piedata02.push(pieone1);
that.piedata02.push(pieone2);
that.option.series[0].data = that.piedata02;
that.$echarts
.init(document.getElementById("echats1"))
.setOption(that.option, true);
})
.catch(err => {
console.log(err);
});
},
gysbInit() {
let that = this;
that.tableData2 = [];
let param2 = {
key: this.gysbkey,
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "GYSJ",
orderType: "desc",
sfzh: "",
pageSize: 10,
pageIndex: 1,
gy_type: 0
}
};
contract(that.token, param2).then(res => {
// console.log("干预上报接口");
// console.log(res);
});
},
tabChange(i) {
this.istable = i;
},
fyqxChange(i) {
let that = this;
this.fyqx = i;
if (i == 1) {
this.param02 = that.base.FYLS;
this.param03 = getActiveNumer(that.base.FYYC_GLL);
this.param04 = that.base.FYYC_CSYC;
this.param05 = getActiveNumer(that.base.FYYC_CSZB);
this.$router.push({
name: "Defect",
query: {
name: this.name
}
});
} else if (i == 2) {
this.param02 = that.base.CSLS;
this.param03 = getActiveNumer(that.base.CSYC_GLL);
this.param04 = that.base.CSYC_FYYC;
this.param05 = getActiveNumer(that.base.CSYC_FYZB);
this.$router.push({
name: "count",
query: {
name: this.name
}
});
} else if (i == 3) {
this.$router.push({
name: "zDefect",
query: {
name: this.name
}
});
}
},
download() {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
"未签约异常清单.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
},
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
} else {
return "success-row";
}
},
toMember(param) {
sessionStorage.setItem("backUrl", "Defect");
this.$router.push("/Member?sfz=" + param);
},
headerStyle() {
return "background:rgba(54,67,111,1); border:0; margin:0; padding:0; line-height:35px; color:#fff; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle() {
return "background:none;color:#fff;border:0; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
headerStyle2() {
return "background:rgba(10,10,10,0.9); border:0; margin:0; padding:0; line-height:35px; color:#8b8c91; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle2() {
return "background:rgba(10,10,10,0.9);color:#585f6c;border:0; border-bottom:1px dotted #262b36; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
gysbChange(param) {
if (param == 1) {
this.gysbkey = "qygl-zmjzfx-zlmx-sb-list";
} else {
this.gysbkey = "qygl-zmjzfx-zlmx-gy-list";
}
this.gysbclk = param;
this.gysbInit();
},
dataSearch(value) {
console.log(famartTime2(value));
let val = famartTime2(value);
this.cxsj = val;
this.homeinti();
this.baseInfo();
},
okSub() {
this.issx = false;
this.homeinti();
},
searchFn() {
this.issx = !this.issx;
},
gysbFun(param) {
this.gysb = param;
},
changeAll(num) {
this.para01 = num;
this.sxname = this.sxarr[num];
},
getActiveNum(param) {
return getActiveNumer(param);
},
goback() {
this.$router.push("/Signing");
},
hideLoading() {
this.loading = false;
},
iconshow(param) {
return returnIco2(param);
},
goExit() {
this.$router.push("/Home");
},
showLoading() {
this.loading = true;
},
goOther(i) {
if (i == 1) {
this.$router.push({
name: "Defect"
// query: {
// name: this.name
// }
});
} else if (i == 2) {
this.$router.push({
name: "count"
// query: {
// name: this.name
// }
});
} else if (i == 3) {
this.$router.push({
name: "zDefect",
query: {
name: this.name
}
});
} else if (i == 5) {
this.$router.push({
name: "Diagnose"
});
}
}
}
};
</script>
<style scoped>
.second {
position: absolute;
width: 150px;
height: 70px;
color: #aab1d2;
left: 210px;
top: 50px;
}
.second div {
font-size: 10px;
text-align: left !important;
/* height: 25px; */
line-height: 20px !important;
}
.second div p {
margin-left: 5px;
display: inline-block;
width: 60px;
}
.second span {
display: inline-block;
width: 8px;
height: 8px;
}
.second_g {
background-color: #1089e7;
}
.second_t {
background-color: #69a8ff;
}
.second_q {
background-color: #56d0e3;
}
.second .zb {
display: inline-block;
width: 50px;
height: 17px;
line-height: 22px !important;
color: #fff;
font-size: 17px;
}
.ecleft {
float: left;
}
#echats1 {
width: 150px;
height: 150px;
position: absolute;
left: 62.5px;
top: 10px;
}
#echats2 {
width: 150px;
height: 150px;
position: absolute;
right: 0;
top: 10px;
}
#echats3 {
width: 250px;
height: 100px;
position: absolute;
right: 80px;
top: 45px;
}
#echats8 {
width: 100%;
height: 110px;
}
/deep/ el-table {
background: none;
}
/deep/ .el-table__expanded-cell {
background: none;
}
/deep/ .el-table th,
.el-table tr {
background: none;
}
/deep/ .el-table .warning-row {
background: rgba(48, 56, 90, 1);
}
/deep/ .el-table .success-row {
background: #2a3557;
}
/deep/ .el-table th > .cell {
padding: 0;
}
/deep/ .el-table .cell {
padding: 0;
line-height: 12px;
}
.el-table::before {
background: none;
}
/deep/ .el-table,
.el-table__expanded-cell {
background: none;
}
/deep/ .el-table__fixed::before {
background-color: #293054;
}
.input01 {
width: 80px;
border: 0;
border-bottom: 1px solid #979797;
background: none;
}
.elbtndiv {
height: 50px;
clear: both;
text-align: right;
}
.sbbtn {
background: rgba(0, 151, 254, 1);
width: 65px;
height: 32px;
border: 0;
border-radius: 4px;
}
.tccline {
clear: both;
overflow: hidden;
}
.tccleft {
float: left;
line-height: 35px;
padding-top: 1px;
width: 55px;
color: rgba(166, 174, 214, 1);
font-size: 12px;
text-align: left;
}
.tccright {
float: left;
line-height: 35px;
width: 340px;
padding-top: 6px;
}
.tccright span {
display: inline-block;
margin-left: 10px;
margin-bottom: 10px;
float: left;
width: 55px;
height: 24px;
line-height: 24px;
background: rgba(51, 62, 95, 1);
color: #ffffff;
border-radius: 4px;
border: 1px solid rgba(84, 97, 139, 1);
}
.tccright span.clk {
background: rgba(33, 76, 126, 1);
color: #42ccff;
}
.tccline3 {
text-align: right;
}
.tccline3 /deep/ .ebtn {
width: 80px;
height: 30px;
}
.plsh {
color: #2680ff;
text-decoration: underline;
}
.el-date-editor {
width: 61px;
position: absolute;
right: 5px;
top: 3px;
}
/deep/ .el-date-editor .el-date-editor--month input {
width: 0px;
border: 0;
padding-right: 61px;
padding-left: 0px;
}
/deep/ .el-date-editor .el-input__inner {
background: none !important;
}
/deep/ .el-date-editor .el-input__prefix {
display: none;
}
/deep/ .el-date-editor .el-input__suffix {
display: none;
}
/deep/ .el-table__row {
height: 31px;
}
.el-tag {
background: none;
border: 0;
}
/deep/ .el-badge__content {
border: 0;
font-size: 12px;
}
.yctcdiv {
height: 135px;
z-index: 20;
}
.defectM {
position: absolute;
bottom: 10px;
right: 10px;
width: 390px;
height: 142px;
background: rgba(10, 10, 10, 0.9);
}
</style>
<template>
<div class="outer" style="position: relative;">
<section class="container">
<section class="header">
<div class="nav" @click="goExit">
<img src="../assets/images/iconmainnav.png" />
</div>
<div class="headeright2">
<div class="fytitle">住院缺陷管理</div>
<div class="fynav">
<el-badge :value="0" class="item">全部</el-badge>
<el-badge :value="0" class="item">提醒</el-badge>
<el-badge :value="0" class="item">公告</el-badge>
<el-badge :value="0" class="item">复诊</el-badge>
</div>
<div class="fybutton">
<el-button size="small" @click="goback" class="class-btn01" type="default">返回</el-button>
<el-button size="small" class="class-btn02" type="default">筛选</el-button>
<div class="el-date-editor">
<el-date-picker v-model="selectTime" @change="dataSearch" type="month" placeholder></el-date-picker>
</div>
</div>
<div class="fyrighter">{{yname}},截止于{{cxsj}}</div>
</div>
</section>
<section class="con-main">
<div class="lefter">
<div class="lftitle">管理矩阵</div>
<div @click="goOther(1)" class="lfline">
<i class="el-icon-document-copy"></i> 门·费用
</div>
<div @click="goOther(2)" class="lfline">
<i class="el-icon-tickets"></i> 门·次数
</div>
<div @click="goOther(3)" class="lfline lflineclk">
<i class="el-icon-document-copy"></i> 住·费用
</div>
<div @click="goOther(4)" class="lfline">
<i class="el-icon-tickets"></i> 未签约
</div>
<div @click="goOther(5)" class="lfline">
<i class="el-icon-document-add"></i> 诊断
</div>
</div>
<div class="righter">
<div class="div-model fl06">
<div class="title">费用缺陷</div>
<div class="content">
<div class="detitle">
<span>{{base.ZLS}}</span>
</div>
<div id="echats8"></div>
<div class="pieline pieline2">
<span class="span01"></span>
<span class="span02"></span>
<span class="span03"></span>
<span class="span04"></span>
<span class="span05"></span>
</div>
</div>
</div>
<div class="div-model fl07">
<div class="title5">
<span @click="fyqxChange(1)" :class="fyqx==1?'clk':''">门诊费用缺陷</span>
<span @click="fyqxChange(2)" :class="fyqx==2?'clk':''">门诊次数缺陷</span>
</div>
<div class="content">
<div class="ecleft">
<div class="ctlinep1">
{{param02}}
<span></span>
</div>
<div class="ctlinep2">{{param03}} %</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i01"></i>
<span>异常管理率</span>
</div>
</div>
<div class="ctlinep">
{{param04}}
<span></span>
</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i02"></i>
<span>疑似费用异常例数</span>
<span class="zanbi"></span>
<span class="zbbfb">{{param05}}</span>
<span class="zbbfbh">%</span>
<i :class="param05<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
</div>
<div id="echats1"></div>
</div>
</div>
<div class="div-model fr02">
<div class="title5">
<span @click="fyqxChange(3)" :class="fyqx==3?'clk':''">住院缺陷</span>
</div>
<div class="content">
<div class="ecleft">
<div class="ctlinep1">
{{base.ZYLS}}
<span></span>
</div>
<div class="ctlinep2">{{getActiveNum(base.ZYYC_GLL)}} %</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i01"></i>
<span>异常管理率</span>
</div>
</div>
<div class="ctlinep">&nbsp;</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i02"></i>
<span>指单·偏≥{{base.ZDDJ_PL40}}%</span>
<i class="i02"></i>
<span>{{base.ZDDJ_PL100}}%≤指单·偏<100%</span>
</div>
</div>
</div>
<div id="echats2"></div>
</div>
</div>
<div class="div-model-b">
<div class="div-model-table div-model-table4">
<div class="tabletitle4">
<span @click="tabChange(1)" :class="istable==1?'clk':''">异常清单</span>
<span @click="tabChange(2)" :class="istable==2?'clk':''">管理明细</span>
<div class="sxdiv2" @click="searchFn" v-show="istable==1">
筛选条件
<i class="el-icon-arrow-down"></i>
<font>{{sxname}}</font>
</div>
<div @click="download" class="doexport">
导出
<i class="el-icon-download"></i>
</div>
<div class="docode">
清单
<i class="el-icon-tickets"></i>
</div>
<div class="sbtitle" v-show="istable==2">
<!-- <code @click="gysbChange(1)" :class="gysbclk==1?'clk':''">上报统计</code> |
<code @click="gysbChange(2)" :class="gysbclk==2?'clk':''">干预统计</code>-->
</div>
</div>
<el-table
v-show="istable==1"
:header-cell-style="headerStyle"
:fit="true"
:cell-style="cellStyle"
height="254"
id="rebateSetTable"
:row-class-name="tableRowClassName"
:data="tableData"
>
<el-table-column fixed label="序号" type="index" width="65"></el-table-column>
<el-table-column fixed prop="XM" width="125" label="姓名">
<template slot-scope="scope">
<p @click="toMember(scope.row.SFZH)" class="jntemname">{{scope.row.XM}}</p>
<div class="top5px" v-html="iconshow(scope.row.ZDRQ)"></div>
</template>
</el-table-column>
<el-table-column label="病种名称" width="150">
<template slot-scope="scope" class="bzmc">{{scope.row.BZMC}}</template>
</el-table-column>
<el-table-column label="医院名称" width="115">
<template slot-scope="scope">{{scope.row.JZJGMC}}</template>
</el-table-column>
<el-table-column prop="ZSDJ_PLD" width="100" sortable label="指单·偏·%">
<template slot-scope="scope">
<span class="ycqd_lf">{{getActiveNum(scope.row.ZSDJ_PLD)}}</span>
<i class="el-icon-my-up"></i>
</template>
</el-table-column>
<el-table-column prop="YPZSDJ_PLD" width="100" sortable label="药单·偏·%">
<template slot-scope="scope">
<span class="ycqd_lf">{{getActiveNum(scope.row.YPZSDJ_PLD)}}</span>
<i class="el-icon-my-up"></i>
</template>
</el-table-column>
<el-table-column prop="HCZSDJ_PLD" width="100" sortable label="耗单·偏·%">
<template slot-scope="scope">
<span class="ycqd_lf">{{getActiveNum(scope.row.HCZSDJ_PLD)}}</span>
<i class="el-icon-my-up"></i>
</template>
</el-table-column>
<el-table-column prop="CYSJ" width="80" label="出院日期">
<template slot-scope="scope">{{getActiveDataAll(scope.row.CYSJ)}}</template>
</el-table-column>
<el-table-column prop="ZYTS" width="100" sortable label="住院天数">
<template slot-scope="scope">{{scope.row.ZYTS}}</template>
</el-table-column>
<el-table-column prop="ZFY" width="100" sortable label="总费用">
<template slot-scope="scope">{{scope.row.ZFY}}</template>
</el-table-column>
<el-table-column prop="JLFS" width="75" label="管理方式">
<template slot-scope="scope">
<font v-if="scope.row.GLFS==1">上报</font>
<font v-else-if="scope.row.GLFS==2">干预</font>
<font v-else-if="scope.row.GLFS==3">无需处理</font>
<font v-else-if="scope.row.GLFS==4">未处理</font>
</template>
</el-table-column>
</el-table>
<el-table
v-show="istable==2"
:header-cell-style="headerStyle"
:fit="true"
:cell-style="cellStyle"
height="254"
id="rebateSetTable1"
:row-class-name="tableRowClassName"
:data="tableData2"
>
<el-table-column fixed label="序号" type="index" width="65"></el-table-column>
<el-table-column fixed prop="SERIAL_NUMBER" width="135" label="流水号">
<template slot-scope="scope">
<p @click="opensb(scope.row)" class="plsh">{{scope.row.SERIAL_NUMBER}}</p>
</template>
</el-table-column>
<el-table-column prop="SBSJ" width="90" label="上报时间">
<template slot-scope="scope">
<p class="cell">{{getActiveDataAll1(scope.row.SBSJ)}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_NAME" width="55" label="姓名">
<template slot-scope="scope">
<p class="cell">{{scope.row.XM}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="45" label="年龄">
<template slot-scope="scope">
<p class="cell">{{scope.row.NL}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="80" label="指单·偏·%"></el-table-column>
<el-table-column prop="QYRS_TBZ" width="80" label="住院天数">
<template slot-scope="scope">
<p class="cell">{{scope.row.ZYTS}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="100" label="总费用·千元">
<template slot-scope="scope">
<p class="cell">{{TwoCount(scope.row.ZYFY/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" label="反馈意见">
<template slot-scope="scope">
<p class="cell">{{getActiveFkyj1(scope.row.SJSHYS)}}</p>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" label="市级审核意见">
<template slot-scope="scope">
<font v-if="scope.row.SBZT==1">上报</font>
<font v-else-if="scope.row.SBZT==2">干预</font>
<font v-else-if="scope.row.SBZT==3">无需处理</font>
<font v-else-if="scope.row.SBZT==4">未处理</font>
</template>
</el-table-column>
</el-table>
</div>
<div v-show="issx" class="yctcdiv">
<h3>筛选条件</h3>
<div class="tccline">
<div class="tccleft">人群类型</div>
<div class="tccright">
<span @click="changeAll(0)" :class="para01===0?'clk':''">全部</span>
<span @click="changeAll(1)" :class="para01===1?'clk':''">上报</span>
<!-- <span @click="changeAll(2)" :class="para01===2?'clk':''">干预</span> -->
<span @click="changeAll(3)" :class="para01===3?'clk':''">无需处理</span>
<span @click="changeAll(4)" :class="para01===4?'clk':''">未处理</span>
</div>
</div>
<div class="tccline3">
<el-button class="ebtn" @click="okSub" size="mini" type="primary">确定</el-button>
</div>
</div>
</div>
</div>
</section>
<section v-show="gysb==2" class="tccyy">
<div class="tcymain tcymain2">
<h5>
<span @click="gysbFun(3)">×</span>上报明细
</h5>
<div class="tcycont tcycont2">
<table class="tctable">
<tr>
<td>上报单位:{{sblist.SBYY}}</td>
<td>上报时间:{{sblist.SBSJ}}</td>
</tr>
<tr>
<td>上报人:{{sblist.YSXM}}</td>
<td>上报流水号:{{sblist.SERIAL_NUMBER}}</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>{{sblist.XM}}</td>
<td>{{userdesc.YBKH}}</td>
<td>{{sblist.SFZH}}</td>
<td>{{userdesc.YSXM}}</td>
<td>{{userdesc.SJJGMC}}</td>
</tr>
</table>
<h1>干预情况</h1>
<div class="gymsg">{{sblist.SJSHYS}}</div>
<h1>诊疗明细</h1>
<table class="tctable">
<tr>
<th></th>
<th>就诊时间</th>
<th>就诊机构</th>
<th>诊断</th>
<th>就诊号</th>
<th>费用明细</th>
</tr>
<tr v-for="(item,index) in sbdatalist" :key="index">
<td>{{index+1}}</td>
<td>{{timeChange(item.QYSJ)}}</td>
<td>{{item.JZJGMC}}</td>
<td></td>
<td>{{item.JZLSH}}</td>
<td>{{item.JZFY?item.JZFY:0}}元; 药费{{item.MZYF?item.MZYF:0}}元</td>
</tr>
</table>
<div class="gymsg gymsg2">
<span class="ggspan">
合计门诊就诊次数:
<font>{{nowsbnum}}</font>
<code></code>
{{sbzb01}}%
</span>
<span class="ggspan">
合计门诊费用:
<font>{{nowsbfee}}</font>
<code></code>
{{sbzb02}}%
</span>
<span class="ggspan">
合计门诊药费:
<font>{{sbtotal}}</font>
<code></code>
{{sbzb03}}%
</span>
</div>
</div>
</div>
</section>
<!-- <section v-show="gysb==1" class="tccyy">
<div class="tcymain">
<h5>
<span @click="gysbFun(3)">×</span>干预
</h5>
<div class="tcycont">
<h6>流水号:MZ20190505341678 干预时间:2019-01-12</h6>
<h1>居民信息</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>郝莺</td>
<td>F02313341</td>
<td>310106196803302023</td>
<td>金鸣</td>
<td>大华医院/曙光医院</td>
</tr>
</table>
<table class="tctable">
<tr>
<th>异常项目</th>
<th>标准值/实值</th>
<th>说明</th>
</tr>
<tr>
<td>未签约</td>
<td>-</td>
<td>辖区内居民未签约</td>
</tr>
<tr>
<td>就诊次数</td>
<td>4次 / 20次</td>
<td>就诊次数超过时标</td>
</tr>
<tr>
<td>累计费用</td>
<td>5011元 / 8928.5元</td>
<td>累计费用超过标准值 5011 元,偏离度为 78.2%</td>
</tr>
<tr>
<td>指单·偏</td>
<td>< 100% / 121%</td>
<td>2019/01/04日从中山医院出院,住院12天,总费用18672.17 元</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable">
<tr>
<td>干预措施:</td>
<td>
<label>
<input name="gycs" type="radio" />电话随访
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />社区随访
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />上门随访
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />康复指导
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />转诊
</label>
</td>
<td>
<label>
<input name="gycs" type="radio" />其他
</label>
</td>
<td>
<input class="input01" />
</td>
</tr>
</table>
<div class="elbtndiv">
<el-button class="sbbtn" type="primary">确定</el-button>
</div>
</div>
</div>
</section>-->
</section>
</div>
</template>
<script>
import { home, contract } from "@/api/home";
import {
famartTime,
returnIco2,
famartTime2,
getActiveNumer,
getActiveData,
getActiveData1,
getActiveFkyj,
TwoCount
} from "@/utils/validate.js";
import FileSaver from "file-saver";
import XLSX from "xlsx";
export default {
components: {},
name: "count",
data() {
return {
gycs: 0,
token: "",
loginMsg: {},
gysbclk: 1,
gysb: 0,
tcgycs: 0,
tcgybs: 0,
tcgyfy: 0,
tcgypld: 0,
sbdatalist: [],
tcgybl: 0,
yname:'',
para01: "",
param02: "",
param03: "",
param04: "",
param05: "",
istable: 1,
isxx: 1,
isdm: false,
fyqx: 3,
nowsbnum: 0,
sbzb01: 0,
sbzb02: 0,
sbzb03: 0,
jctxt: "150",
selectTime: "2020-05",
issx: false,
loading: false,
cxsj: "201907",
sxname: "全部",
sxarr: ["全部", "上报", "干预", "无需处理", "未处理"],
detelist: {},
option: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
formatter: "{a}{b} : {c} ({d}%)"
},
series: [
{
name: "门诊次数缺陷",
type: "pie",
radius: "59%",
center: ["50%", "50%"],
label: {
show: false,
position: "center"
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [11, 22]
}
]
},
option1: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
formatter: "{a}{b} : {c} ({d}%)"
},
series: [
{
name: "门诊次数缺陷",
type: "pie",
radius: "59%",
center: ["50%", "50%"],
label: {
show: false,
position: "center"
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [
{
value: 24,
name: "直接访问",
itemStyle: {
normal: {
color: "#84B3FF"
}
}
},
{
value: 310,
name: "邮件营销",
itemStyle: {
normal: {
color: "#2A71F2"
}
}
}
]
}
]
},
pieoption1: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
position: [0, 0],
formatter: "{a}{b}:{c} 例"
},
series: [
{
name: "门诊",
type: "pie",
radius: [0, 38],
x: "34%",
width: "34%",
funnelAlign: "right",
label: {
normal: { show: false }
},
labelLine: {
normal: { show: false }
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [
{ value: 11, name: "费用缺陷" },
{ value: 22, name: "次数缺陷" }
]
}
]
},
option3: {
color: ["#2680FF", "#36F2D8", "#2D5C70"],
legend: [
{
top: "1%",
left: "12%",
textStyle: {
color: "#AAB1D2",
fontSize: 10
},
itemWidth: 15,
itemHeight: 10,
inactiveColor: "#AAB1D2",
selected: {
总例数: true
},
data: [
{
name: "总例数"
}
]
},
{
top: "1%",
left: "24%",
textStyle: {
color: "#AAB1D2",
fontSize: 10
},
itemWidth: 15,
itemHeight: 10,
inactiveColor: "#AAB1D2",
selected: {
已干预: true
},
data: [
{
name: "已干预"
}
]
},
{
top: "1%",
left: "36%",
textStyle: {
color: "#AAB1D2",
fontSize: 10
},
itemWidth: 15,
itemHeight: 10,
inactiveColor: "#AAB1D2",
selected: {
已上报: true
},
data: [
{
name: "已上报"
}
]
}
],
dataZoom: [
{
type: "inside",
startValue: 0,
filterMode: "empty",
endValue: 9
}
],
grid: {
left: "15%",
right: "8%",
bottom: "14%",
top: "24%"
//containLabel: true
},
xAxis: {
type: "category",
data: [1, 2, 3, 4, 5, 6, 7],
triggerEvent: true,
axisLine: {
lineStyle: {
color: "#6D769A",
type: "solid"
}
},
axisLabel: {
interval: 0,
rotate: 0,
textStyle: {
color: function(value, index) {
return "#6D769A";
}
}
},
splitLine: {
show: false,
onZero: false
},
axisTick: {
show: false
}
},
yAxis: [
{
name: "例数",
type: "value",
show: true,
position: "left",
axisLabel: {
textStyle: {
color: "#6D769A",
type: "solid"
}
},
axisLine: {
show: true,
lineStyle: {
color: "#6D769A",
type: "solid"
}
},
splitLine: {
show: false
},
axisTick: {
show: true
}
}
],
series: [
{
name: "总例数",
type: "bar",
barWidth: 10,
itemStyle: {
color: "#2680FF"
},
data: [21, 23, 34, 54, 56, 67, 78]
},
{
name: "已干预",
type: "bar",
barWidth: 6,
stack: "堆叠",
itemStyle: {
color: "#36F2D8"
},
data: [21, 34, 54, 56, 67, 23, 78]
},
{
name: "已上报",
type: "bar",
barWidth: 10,
stack: "堆叠",
itemStyle: {
color: "#2D5C70"
},
data: [54, 56, 67, 21, 23, 34, 78]
}
]
},
tableData: [],
tableData2: [],
base: [],
piedata01: [],
piedata02: [],
piedata03: [],
Reportdetaildatalist: [],
Meddledetaildatalist: [],
sblist: [],
gylist: [],
nowsbfee: 0,
sbtotal: 0,
userdesc: [],
gysbkey: "qygl-zmjzfx-zlmx-sb-list"
};
},
mounted: function() {
this.token = sessionStorage.getItem("token");
this.loginMsg = JSON.parse(sessionStorage.getItem("userinfo"));
this.yname = this.loginMsg.userName
if(this.loginMsg.roleCode=='hcms.APP_SQYZ'){
console.log('家医数据信息:')
console.log(this.loginMsg)
this.loginMsg.gpNumber = sessionStorage.getItem('ygh')
this.yname = sessionStorage.getItem('yname')
}
this.cxsj = sessionStorage.getItem("cxsj");
this.homeinti();
this.baseInfo();
this.gysbInit();
const obj = setInterval(() => {
if (document.getElementById("echats1")) {
const dom = document.getElementById("echats1");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option, true);
}
clearInterval(obj);
}
}, 200);
const obj1 = setInterval(() => {
if (document.getElementById("echats2")) {
const dom = document.getElementById("echats2");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option1, true);
}
clearInterval(obj1);
}
}, 200);
const obj2 = setInterval(() => {
if (document.getElementById("echats8")) {
const dom = document.getElementById("echats8");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.pieoption1, true);
}
clearInterval(obj2);
}
}, 200);
},
methods: {
homeinti() {
let that = this;
//列表
that.token = sessionStorage.getItem("token");
let param = {
key: "qxgl-zy-ycqd",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "XM", //--排序字段
orderType: "desc", //--排序类型 desc=倒序/asc=正序
pageSize: 10,
pageIndex: 1,
glfs: this.para01
}
};
contract(that.token, param)
.then(res => {
that.tableData = [];
if (res.data.listData.length > 0) {
this.isdm = true;
for (let item of res.data.listData) {
if (item.GLFS == this.para01) {
that.tableData = res.data.listData;
} else if (this.para01 == "") {
that.tableData = res.data.listData;
}
}
}
})
.catch(err => {
console.log(err);
});
},
baseInfo() {
let that = this;
//列表
that.token = sessionStorage.getItem("token");
let param2 = {
key: "qxgl-jbxx",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode
};
contract(that.token, param2)
.then(res => {
// console.log("bbbbbb");
// console.log(res);
that.base = [];
that.piedata01 = [];
that.piedata02 = [];
that.piedata03 = [];
var pieone = new Object();
var pieone1 = new Object();
if (res.data.length > 0) {
that.base = res.data[0];
}
this.param02 = that.base.CSLS;
this.param03 = getActiveNumer(that.base.CSYC_GLL);
this.param04 = that.base.CSYC_FYYC;
this.param05 = getActiveNumer(that.base.CSYC_FYZB);
//第一个图
pieone.value = res.data[0].FYLS;
pieone.name = "费用缺陷";
pieone1.value = res.data[0].ZYLS;
pieone1.name = "次数缺陷";
that.piedata01.push(pieone);
that.piedata01.push(pieone1);
that.pieoption1.series[0].data = this.piedata01;
that.$echarts
.init(document.getElementById("echats8"))
.setOption(that.pieoption1, true);
//第er个图
let obj = {value:0,val1:0,val2:0}
obj.value = res.data[0].FYYC_CSYC ? getActiveNumer(res.data[0].FYYC_CSYC) : 0
obj.val1 = res.data[0].FYYC_CSYC ? getActiveNumer(res.data[0].FYYC_CSYC) : 0
obj.val2 = res.data[0].FYYC_CSZB ? getActiveNumer(res.data[0].FYYC_CSZB * 100) : 0
that.piedata02.push(obj)
obj = {value:0,val1:0,val2:0}
obj.value = res.data[0].FYYC_CSZB ? getActiveNumer(res.data[0].FYYC_CSZB * 100) : 0
obj.val1 = res.data[0].FYYC_CSYC ? getActiveNumer(res.data[0].FYYC_CSYC) : 0
obj.val2 = res.data[0].FYYC_CSZB ? getActiveNumer(res.data[0].FYYC_CSZB * 100) : 0
that.piedata02.push(obj);
that.option.series[0].data = that.piedata02
console.log('that.piedata02that.piedata02')
console.log(that.piedata02)
that.$echarts.init(document.getElementById("echats1")).setOption(that.option, true);
//第3个图
that.piedata03.push(
res.data[0].ZDDJ_PL40 ? res.data[0].ZDDJ_PL40 : 0
);
that.piedata03.push(
res.data[0].ZDDJ_PL100 ? res.data[0].ZDDJ_PL100 : 0
);
that.option1.series[0].data = that.piedata03;
that.$echarts
.init(document.getElementById("echats2"))
.setOption(that.option1, true);
})
.catch(err => {
console.log(err);
});
},
userinfo(sfz) {
let that = this;
// 居民就诊分析-居民基本信息
let param = {
key: "qygl-zmjzfx-jmjbxx",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
sfzh: sfz
}
};
contract(that.token, param).then(res => {
console.log("居民基本信息:");
console.log(res);
this.userdesc = res.data[0];
});
},
timeChange(param) {
return famartTime(param);
},
gysbInit() {
let that = this;
that.tableData2 = [];
let param2 = {
key: this.gysbkey,
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "SBSJ",
orderType: "desc",
sfzh: "",
pageSize: 10,
pageIndex: 1,
sb_type: 2
}
};
contract(that.token, param2).then(res => {
that.tableData2 = [];
console.log("干预上报接口");
console.log(res);
that.tableData2 = res.data.listData;
});
},
tabChange(i) {
this.istable = i;
},
fyqxChange(i) {
let that = this;
this.fyqx = i;
if (i == 1) {
this.param02 = that.base.FYLS;
this.param03 = getActiveNumer(that.base.FYYC_GLL);
this.param04 = that.base.FYYC_CSYC;
this.param05 = getActiveNumer(that.base.FYYC_CSZB);
this.$router.push({
name: "Defect",
query: {
name: this.name
}
});
} else if (i == 2) {
this.param02 = that.base.CSLS;
this.param03 = getActiveNumer(that.base.CSYC_GLL);
this.param04 = that.base.CSYC_FYYC;
this.param05 = getActiveNumer(that.base.CSYC_FYZB);
this.$router.push({
name: "count",
query: {
name: this.name
}
});
} else if (i == 3) {
this.$router.push({
name: "zDefect",
query: {
name: this.name
}
});
}
},
opensb(param) {
//打开上报
let that = this;
this.sblist = param;
this.gysb = 2;
this.userinfo(param.SFZH);
console.log("打开上报:");
console.log(param);
let param5 = {
key: "zd-mx",
tjsj: this.cxsj,
parameter: {
mxType: "1",
lsh: param.SERIAL_NUMBER
}
};
that.sbdatalist = [];
this.nowsbnum = 0;
contract(that.token, param5).then(res => {
console.log("返回上报列表:");
console.log(res);
res.data.forEach((item, index) => {
item.JZFY = item.JZFY ? item.JZFY : 0;
item.JZYF = item.JZYF ? item.JZYF : 0;
this.nowsbfee += parseInt(item.JZFY);
this.sbtotal += parseInt(item.JZYF);
that.sbdatalist.push(item);
this.nowsbnum++;
});
this.sbzb01 = ((this.nowsbnum / 24) * 100).toFixed(2);
this.sbzb02 = ((this.nowsbfee / 4564) * 100).toFixed(2);
this.sbzb03 = ((this.sbtotal / 4553) * 100).toFixed(2);
});
},
download() {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
"费用异常清单.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
},
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
} else {
return "success-row";
}
},
toMember(param) {
sessionStorage.setItem("backUrl", "Defect");
this.$router.push("/Member?sfz=" + param);
},
headerStyle() {
return "background:rgba(54,67,111,1); border:0; margin:0; padding:0; line-height:35px; color:#fff; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle() {
return "background:none;color:#fff;border:0; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
headerStyle2() {
return "background:rgba(10,10,10,0.9); border:0; margin:0; padding:0; line-height:35px; color:#8b8c91; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle2() {
return "background:rgba(10,10,10,0.9);color:#585f6c;border:0; border-bottom:1px dotted #262b36; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
gysbChange(param) {
if (param == 1) {
this.gysbkey = "qygl-zmjzfx-zlmx-sb-list";
} else {
this.gysbkey = "qygl-zmjzfx-zlmx-gy-list";
}
this.gysbclk = param;
this.gysbInit();
},
dataSearch(value) {
// console.log(famartTime2(value));
let val = famartTime2(value);
this.cxsj = val;
this.homeinti();
this.baseInfo();
},
okSub() {
this.issx = false;
this.homeinti();
},
searchFn() {
this.issx = !this.issx;
},
gysbFun(param) {
this.gysb = param;
},
changeAll(num) {
this.para01 = num;
this.sxname = this.sxarr[num];
},
getActiveNum(param) {
return getActiveNumer(param);
},
goback() {
if(this.loginMsg.roleCode=='hcms.APP_SQYZ'){
this.$router.push('/'+sessionStorage.getItem('ybackUrl'))
}else{
this.$router.push("/Signing");
}
},
hideLoading() {
this.loading = false;
},
iconshow(param) {
return returnIco2(param);
},
goExit() {
this.$router.push("/Home");
},
showLoading() {
this.loading = true;
},
goOther(i) {
if (i == 1) {
this.$router.push({
name: "Defect"
});
} else if (i == 2) {
this.$router.push({
name: "count"
});
} else if (i == 4) {
this.$router.push({
name: "Nosign"
});
} else if (i == 5) {
this.$router.push({
name: "Diagnose"
});
}
},
getActiveDataAll(data) {
return getActiveData(data);
},
getActiveFkyj1(data) {
return getActiveFkyj(data);
},
TwoCount(num) {
return TwoCount(num);
},
getActiveDataAll1(data) {
return getActiveData1(data);
}
}
};
</script>
<style scoped>
.ecleft {
float: left;
}
#echats1 {
width: 150px;
height: 150px;
position: absolute;
right: 0;
top: 10px;
}
#echats2 {
width: 150px;
height: 150px;
position: absolute;
right: 0;
top: 10px;
}
#echats8 {
width: 100%;
height: 110px;
}
/deep/ el-table {
background: none;
}
/deep/ .el-table__expanded-cell {
background: none;
}
/deep/ .el-table th,
.el-table tr {
background: none;
}
/deep/ .el-table .warning-row {
background: rgba(48, 56, 90, 1);
}
/deep/ .el-table .success-row {
background: #2a3557;
}
/deep/ .el-table th > .cell {
padding: 0;
}
/deep/ .el-table .cell {
padding: 0;
line-height: 29px;
white-space: nowrap !important;
}
.el-table::before {
background: none;
}
/deep/ .el-table,
.el-table__expanded-cell {
background: none;
}
/deep/ .el-table__fixed::before {
background-color: #293054;
}
.input01 {
width: 80px;
border: 0;
border-bottom: 1px solid #979797;
background: none;
}
.elbtndiv {
height: 50px;
clear: both;
text-align: right;
}
.sbbtn {
background: rgba(0, 151, 254, 1);
width: 65px;
height: 32px;
border: 0;
border-radius: 4px;
}
.top5px{ padding-top: 8px;}
.tccline {
clear: both;
overflow: hidden;
}
.tccleft {
float: left;
line-height: 35px;
padding-top: 1px;
width: 55px;
color: rgba(166, 174, 214, 1);
font-size: 12px;
text-align: left;
}
.tccright {
float: left;
line-height: 35px;
width: 340px;
padding-top: 6px;
}
.tccright span {
display: inline-block;
margin-left: 10px;
margin-bottom: 10px;
float: left;
width: 55px;
height: 24px;
line-height: 24px;
background: rgba(51, 62, 95, 1);
color: #ffffff;
border-radius: 4px;
border: 1px solid rgba(84, 97, 139, 1);
}
.tccright span.clk {
background: rgba(33, 76, 126, 1);
color: #42ccff;
}
.tccline3 {
text-align: right;
}
.tccline3 /deep/ .ebtn {
width: 80px;
height: 30px;
}
.plsh {
color: #2680ff;
text-decoration: underline;
}
.el-date-editor {
width: 61px;
position: absolute;
right: 5px;
top: 3px;
}
/deep/ .el-date-editor .el-date-editor--month input {
width: 0px;
border: 0;
padding-right: 61px;
padding-left: 0px;
}
/deep/ .el-date-editor .el-input__inner {
background: none !important;
}
/deep/ .el-date-editor .el-input__prefix {
display: none;
}
/deep/ .el-date-editor .el-input__suffix {
display: none;
}
/deep/ .el-table__row {
height: 31px;
}
.el-tag {
background: none;
border: 0;
}
/deep/ .el-badge__content {
border: 0;
font-size: 12px;
}
.yctcdiv {
height: 135px;
z-index: 20;
}
.defectM {
position: absolute;
bottom: 10px;
right: 10px;
width: 390px;
height: 142px;
background: rgba(10, 10, 10, 0.9);
}
</style>
<template>
</template>
<script>
export default {
name: "ContractAnalysis"
}
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
</template>
<script>
export default {
name: "VisitAnalysis"
}
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="outer">
<!-- 签约人群分析页面 -->
<div class="logincontainer">
<el-row>
<el-col :span="24">
<el-row>
<el-col :span="12">
<div style="width:100%;height:55px;background:rgba(46,55,92,1);vertical-align: center;padding: 0 20px;">
<div
style="font-size:17px;font-weight:500;color:rgba(255,255,255,1);text-align: left;line-height: 55px;">
<span style="font-size:17px;color:rgba(255,255,255,1);">签约人群分析</span>
<span class=""></span>
<span style="margin-left: 10px;color: #8891BE;font-size: 11px;"><span>(标准次数>={{number}}& {{cateFn(para01)}})</span></span>
<div style="position: absolute;left: 285px;top: 18px;width: 150px;">
<el-autocomplete class="inline-input" v-model="state2" :fetch-suggestions="querySearch"
placeholder="请输入患者姓名" :trigger-on-focus="true" @select="handleSelect">
<i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-autocomplete>
</div>
</div>
</div>
</el-col>
<el-col :span="12">
<div style="width:100%;height:55px;background:rgba(46,55,92,1);vertical-align: center;padding: 0 20px;">
<div
style="position: absolute !important;right: 0;top: 0;font-size: 11px;height: 55px;line-height: 55px;margin-right: 20px;">
<span class=""><img src="../assets/images/icon-main-user.png" width="11" height="11" alt="">
<span style="color: #8891BE;font-size: 11px;">{{yname}}, 截止于{{cxsj}}</span>
</span>
<button class="head_but" @click="goback" style="background: #44517d">
<img src="../assets/images/icon/main/back.png" width="12" height="10" alt=""> 返回
</button>
<button @click="downloadList" class="head_but">
<img src="@/assets/images/export.png" alt=""> 导出
</button>
<button @click="xsfun" class="head_but">
<img src="../assets/images/icon/main/筛选.png" alt=""> 筛选
</button>
</div>
<div class="tccmain" v-show="istc">
<h4>筛选条件</h4>
<div class="tccline">
<div class="tccleft">人群类型</div>
<div class="tccright">
<span @click="changeAll('')" :class="para01==''?'clk':''">全部</span>
<span @click="changeAll('E')" :class="para01=='E'?'clk':''">0-6</span>
<span @click="changeAll('A')" :class="para01=='A'?'clk':''">60以上</span>
<span @click="changeAll('D')" :class="para01=='D'?'clk':''">孕产妇</span>
<span @click="changeAll('G')" :class="para01=='G'?'clk':''">结核病</span>
<span @click="changeAll('F')" :class="para01=='F'?'clk':''">残疾人</span>
<span @click="changeAll('K')" :class="para01=='K'?'clk':''">特殊家庭</span>
<span @click="changeAll('I')" :class="para01=='I'?'clk':''">精神障碍</span>
<span @click="changeAll('J')" :class="para01=='J'?'clk':''">贫困人群</span>
<span @click="changeAll('B')" :class="para01=='B'?'clk':''">高血压</span>
<span @click="changeAll('C')" :class="para01=='C'?'clk':''">糖尿病</span>
</div>
</div>
<div class="tccline">
<div class="tccleft">是否就诊</div>
<div class="tccright">
<span @click="changeAll2('')" :class="para02===''?'clk':''">全部</span>
<span @click="changeAll2(1)" :class="para02===1?'clk':''">就诊</span>
<span @click="changeAll2(0)" :class="para02===0?'clk':''">未就诊</span>
<span @click="changeAll2(2)" :class="para02===2?'clk':''" style="width: 85px;">60以上未就诊</span>
</div>
</div>
<div class="tccline">
<div class="tccleft">累计次数</div>
<div class="tccright">
<el-input v-model="number" size="small"></el-input>
</div>
</div>
<div class="tccline">
<div class="tccleft">查询日期</div>
<div class="tccright3">
<el-date-picker @change="changeTime" value-format="yyyyMM" v-model="cxsj" type="month"
placeholder="选择月"></el-date-picker>
</div>
</div>
<div class="tccline3">
<el-button class="ebtn" @click="okSub" size="mini" type="primary">确定</el-button>
</div>
</div>
</div>
</el-col>
</el-row>
</el-col>
</el-row>
<div v-show="jzzt" style="padding: 0 20px;">
<el-row>
<el-col :span="24">
<div style="background:linear-gradient(180deg,rgba(61,75,119,1) 0%,rgba(56,66,105,1) 100%);
margin: 20px 0;height: 50px;line-height: 50px;text-align: left;padding: 0px 24px;color: #A6AED6;font-size: 13px;">
<span style="">就诊次数分析</span><span style="margin-left: 80px;">{{number}}</span>
<span style="color: #55FFE8;font-size: 24px;margin-left: 10px;">{{dataCount}}</span><span
style="color: #F0F8FF;"></span>
<span class="progressBar1" style="display: inline-block;width: 86px;margin-left: 5px;"><el-progress
:show-text="false"
:stroke-width="8"
:percentage="percentage1"
color="#36F2D8"></el-progress></span>
<span style="margin-left: 80px;">≥100-200</span>
<span style="color: #FFC965;font-size: 24px;margin-left: 10px;">{{dataCount1}}</span><span
style="color: #F0F8FF;"></span>
<span class="progressBar2" style="display: inline-block;width: 86px;margin-left: 5px;"><el-progress
:show-text="false"
:stroke-width="8"
:percentage="percentage2"
color="#FFC965"></el-progress></span>
<span style="margin-left: 80px;">≥200</span>
<span style="color: #FF9D3D;font-size: 24px;margin-left: 10px;">{{dataCount2}}</span><span
style="color: #F0F8FF;"></span>
<span class="progressBar3" style="display: inline-block;width: 86px;margin-left: 5px;"><el-progress
:show-text="false"
:stroke-width="8"
:percentage="percentage3"
color="#FF9D3D"></el-progress></span>
</div>
</el-col>
</el-row>
<!-- background:'#2c3659', -->
<el-table id="rebateSetTable" :header-cell-style="headerStyle" :fit="true" :cell-style="cellStyle"
:data="listData" :row-class-name="tabRowClassName"
style="width: 100%;margin:0;overflow-y: scroll;background: #272E52;font-size: 10px;"
height="450" disabled="disabled" ref="eltab"
:default-sort="{prop:'JZCS_PLD',order:'descending'}"
v-el-table-infinite-scroll="loadMore"
@sort-change='sortChange'>
<el-table-column fixed label="序号" align="center" width="46">
<template slot-scope="scope"><span>{{scope.$index + 1}} </span></template>
</el-table-column>
<el-table-column fixed prop="XM" align="left" label="患者姓名" width="95">
<template slot-scope="scope">
<p @click="toMember(scope.row.SFZH)" style="color:#0985de;text-decoration: underline;float: left;">
{{scope.row.XM}}</p>
<div v-html="iconshow(scope.row.ZDRQ2)"></div>
</template>
</el-table-column>
<el-table-column prop="NL" label="年龄" align="center" width="42" sortable='custom'
:sort-orders="['descending','ascending']"></el-table-column>
<el-table-column width="155" align="center" prop="JZCS_PLD" sortable='custom'
:sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="tablename4">累计(次)<br/>(1/2/3级)</div>
<div class="tablename5">同(%)<span style="margin-left: 10px;">偏(%)</span></div>
</template>
<template slot-scope="scope">
<p class="cashcost">({{scope.row.JZCS_YJ}}/{{scope.row.JZCS_EJ}}/{{scope.row.JZCS_SJ}})</p>
<p class="tper" v-html="scope.row.JZCS_TBL"></p>
<p class="pper" v-html="scope.row.JZCS_PLD"></p>
</template>
</el-table-column>
<el-table-column width="150" align="center" prop="ZHNJZL_PLD" sortable='custom'
:sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="tablename4">组合内<br/>就诊率(%)</div>
<div class="tablename5">同(%)<span style="margin-left: 10px;">偏(%)</span></div>
</template>
<template slot-scope="scope">
<p class="cashcost1">{{scope.row.ZHNJZL}}</p>
<p class="tper" v-html="scope.row.JZCS_TBL"></p>
<p class="pper" v-html="scope.row.ZHNJZL_PLD"></p>
</template>
</el-table-column>
<el-table-column width="150" align="center" prop="QYSQJZL_PLD" sortable='custom'
:sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="tablename4">签约社区<br/>就诊率(%)</div>
<div class="tablename5">同(%)<span style="margin-left: 10px;">偏(%)</span></div>
</template>
<template slot-scope="scope">
<p class="cashcost1">{{scope.row.QYSQJZL}}</p>
<p class="tper" v-html="scope.row.QYSQJZ_TBL"></p>
<p class="pper" v-html="scope.row.QYSQJZL_PLD"></p>
</template>
</el-table-column>
<el-table-column width="145" align="center" prop="ZFY_TBL" sortable='custom'
:sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="tablename1">总费用(千)<br/>(1/2/3级)</div>
<div class="tablename2">同(%)</div>
</template>
<template slot-scope="scope">
<p class="cashcost2">
({{scope.row.ZFY_YJ}} / {{scope.row.ZFY_EJ}} / {{scope.row.ZFY_SJ}})
</p>
<p class="tper1" v-html="scope.row.ZFY_TBL"></p>
</template>
</el-table-column>
<el-table-column width="148" align="center" prop="MZFY_TBL" sortable='custom'
:sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="tablename4">门诊费用<br/>(千)</div>
<div class="tablename5">偏(%)<span style="margin-left: 10px;">同(%)</span></div>
</template>
<template slot-scope="scope">
<p class="cashcost">{{scope.row.MZFY}}</p>
<p class="tper" v-html="scope.row.MZFY_PLD"></p>
<p class="pper" v-html="scope.row.MZFY_TBL"></p>
</template>
</el-table-column>
<el-table-column width="148" align="center" prop="MZYF_TBL" sortable='custom'
:sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="tablename4">门诊药费<br/>(千)</div>
<div class="tablename5">偏(%)<span style="margin-left: 10px;">同(%)</span></div>
</template>
<template slot-scope="scope">
<p class="cashcost">{{scope.row.MZYF}}</p>
<p class="tper" v-html="scope.row.MZYF_PLD"></p>
<p class="pper" v-html="scope.row.MZYF_TBL"></p>
</template>
</el-table-column>
<el-table-column width="125" align="center" prop="ZYFY_TBL" sortable='custom'
:sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="tablename4">住院费用<br/>(千)</div>
<div class="tablename5" style="width: 40px;">同(%)</div>
</template>
<template slot-scope="scope">
<p class="cashcost">{{scope.row.ZYFY}}</p>
<p class="tper" v-html="scope.row.ZYFY_TBL"></p>
</template>
</el-table-column>
<el-table-column prop="ZYCS" align="center" label="住院次数" width="80" sortable='custom'
:sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="GYZT" align="center" label="干预 " width="70"></el-table-column>
<el-table-column prop="SBZT" align="center" label="上报 " width="70"></el-table-column>
<el-table-column prop="LXDH" align="center" label="联系电话 " width="100"></el-table-column>
<el-table-column prop="SFZH" align="center" label="身份证号" width="120">
<template slot-scope="scope">
<span>{{scope.row.SFZH?scope.row.SFZH.replace(/^(.{4})(?:\w+)(.{2})$/, "\$1************\$2"):""}}</span>
</template>
</el-table-column>
<el-table-column prop="QYSJ" align="center" label="签约时间" width="95" sortable='custom'
:sort-orders="['descending','ascending']"></el-table-column>
</el-table>
 
</div>
<div v-show="!jzzt" style="padding: 20px;">
<el-table id="wjzTable" :header-cell-style="headerStyle" :fit="true" :cell-style="cellStyle" :data="wjzListData"
:row-class-name="tabRowClassName"
style="width: 100%;margin:0;overflow-y: scroll;background: #272E52;font-size: 10px;" height="515"
disabled="disabled" ref="eltab" :default-sort="{prop:'LJSC',order:'descending'}"
v-el-table-infinite-scroll="loadMore"
@sort-change='sortChange'>
<el-table-column fixed label="序列" width="45">
<template slot-scope="scope"><span>{{scope.$index + 1}} </span></template>
</el-table-column>
<el-table-column fixed prop="XM" label="患者姓名" width="95">
<template slot-scope="scope">
<p style="float: left;">
{{scope.row.XM}}</p>
<div v-html="iconshow(scope.row.ZDRQ2)"></div>
</template>
</el-table-column>
<el-table-column prop="NL" label="年龄" width="42" sortable='custom'
:sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="XB" label="性别" width="42" ></el-table-column>
<el-table-column prop="SCJZSJ" label="最后就诊日期" width="100" sortable='custom'
:sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="LJSC" label="累计时长(月)" width="90" sortable='custom'
:sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="JZCS_TQ" label="同期就诊次数" width="95" sortable='custom'
:sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="MZFY_TQ" label="同期就诊费用" width="95" sortable='custom'
:sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="GYZT" label="干预 " width="70"></el-table-column>
<el-table-column prop="SBZT" label="上报 " width="70"></el-table-column>
<el-table-column prop="LXDH" label="联系电话 " width="100"></el-table-column>
<el-table-column prop="SFZH" label="身份证号" width="120">
<template slot-scope="scope">
<span>{{scope.row.SFZH?scope.row.SFZH.replace(/^(.{4})(?:\w+)(.{2})$/, "\$1************\$2"):""}}</span>
</template>
</el-table-column>
<el-table-column label="地址" width="160" :show-overflow-tooltip="true">
<template slot-scope="scope">
<div class="jzdz-width">{{scope.row.JZDZ}}</div>
</template>
</el-table-column>
<el-table-column prop="QYSJ" label="签约时间" width="90" sortable='custom'
:sort-orders="['descending','ascending']"></el-table-column>
</el-table>
</div>
</div>
</div>
</template>
<script>
import {contract} from '@/api/home.js';
import {
getActiveNum,
changeUpOrDown,
checkNumber,
checkIsNull,
famartTime,
famartTime2,
returnIco2
} from '@/utils/validate.js';
import FileSaver from 'file-saver';
import XLSX from 'xlsx';
export default {
data() {
return {
jzzt: true,
wjz60: false,
perall: 100,
peraone: 0,
peratwo: 0,
para01: '',
para02: '',
token: '',
loginMsg: {},
istc: false,
state1: '',
category: '全部',
pageIndex: 1,
uname: '',
yname:'',
state2: '',
number: 0,
cxsj: "",
orderField: 'JZCS_PLD',
orderType: 'desc',
orderField1: 'LJSC',
orderType1: 'desc',
listData: [],
wjzListData: [],
restaurants: [],
countData: [],
dataCount1: 0,
dataCount2: 0,
dataCount: 0,
percentage1: 0,
percentage2: 0,
percentage3: 0,
total: 0
}
},
methods: {
loadMore() {
console.log(this.pageIndex);
if (this.countData.totalPageCount > this.pageIndex) {
this.pageIndex++;
this.dataInit();
}
},
dataInit() {
let token = sessionStorage.getItem('token');
let menuslist = {
"key": "qygl-zdrqfx",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"orderField": this.orderField,
"orderType": this.orderType,
"pageSize": 15,
"pageIndex": this.pageIndex,
"zdrqfldm": this.para01,//重点人群分类代码(非必填,默认查询所有)
"hzxm": this.uname,//患者姓名(非必填,默认查询所有)
"jzzt": this.para02,//就诊状态(0=未就诊/1=已就诊,非必填,默认查询所有)
"jzcs": this.number//就诊次数(非必填,默认查询所有)
}
};
if (this.para02 === 2) {
this.jzzt = false;
menuslist = {
"key": "qygl-zdrqfx",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"orderField": this.orderField1,
"orderType": this.orderType1,
"pageSize": 15,
"pageIndex": this.pageIndex,
"jzzt": 2,
"hzxm": this.uname
}
};
} else {
this.jzzt = true;
}
this.restaurants = [];
contract(token, menuslist).then(res => {
this.countData = res.data;
if (!checkIsNull(this.countData)) {
this.dataCount = this.countData.totalCount;
this.dataCount1 = this.countData.dataCount1;
this.dataCount2 = this.countData.dataCount2;
this.percentage1 = this.countData.totalCount / this.countData.totalCount * 100;
this.percentage2 = this.countData.dataCount1 / this.countData.totalCount * 100;
this.percentage3 = this.countData.dataCount2 / this.countData.totalCount * 100;
res.data.listData.forEach((item, index) => {
let ulist = {"value": "", "usex": ""};
res.data.listData[index].LJSC = getActiveNum(item.LJSC);
res.data.listData[index].JZCS_TBL = changeUpOrDown(item.JZCS_TBL);
res.data.listData[index].JZCS_PLD = changeUpOrDown(item.JZCS_PLD);
res.data.listData[index].ZHNJZL = getActiveNum(item.ZHNJZL);
res.data.listData[index].ZHNJZ_TBL = changeUpOrDown(item.ZHNJZ_TBL);
res.data.listData[index].ZHNJZL_PLD = changeUpOrDown(item.ZHNJZL_PLD);
res.data.listData[index].QYSQJZL = getActiveNum(item.QYSQJZL);
res.data.listData[index].QYSQJZ_TBL = changeUpOrDown(item.QYSQJZ_TBL);
res.data.listData[index].QYSQJZL_PLD = changeUpOrDown(item.QYSQJZL_PLD);
res.data.listData[index].ZFY_YJ = getActiveNum(item.ZFY_YJ / 1000);
res.data.listData[index].ZFY_EJ = getActiveNum(item.ZFY_EJ / 1000);
res.data.listData[index].ZFY_SJ = getActiveNum(item.ZFY_SJ / 1000);
res.data.listData[index].ZFY_TBL = changeUpOrDown(item.ZFY_TBL);
res.data.listData[index].MZFY = getActiveNum(item.MZFY / 1000);
res.data.listData[index].MZFY_PLD = changeUpOrDown(item.MZFY_PLD);
res.data.listData[index].MZFY_TBL = changeUpOrDown(item.MZFY_TBL);
res.data.listData[index].MZYF = getActiveNum(item.MZYF / 1000);
res.data.listData[index].MZYF_PLD = changeUpOrDown(item.MZYF_PLD);
res.data.listData[index].MZYF_TBL = changeUpOrDown(item.MZYF_TBL);
res.data.listData[index].ZYFY = getActiveNum(item.ZYFY / 1000);
res.data.listData[index].ZYFY_TBL = changeUpOrDown(item.ZYFY_TBL);
res.data.listData[index].ZYCS = checkNumber(item.ZYCS);
res.data.listData[index].QYSJ = famartTime(item.QYSJ);
res.data.listData[index].SCJZSJ = famartTime(item.SCJZSJ);
ulist.value = item.XM;
ulist.usex = item.XB;
this.restaurants.push(ulist);
});
if (this.para02 === 2) {
res.data.listData.forEach((item, index) => {
this.wjzListData.push(item);
});
} else {
res.data.listData.forEach((item, index) => {
this.listData.push(item);
});
}
// this.listData = this.listData.concat(res.data.listData);
console.log(this.listData);
} else {
this.listData = [];
}
});
this.loadingData = false;
},
downloadList() {
var fix = document.querySelector('.el-table__fixed');
var wb;
var xlsxParam = { raw: true };//转换成excel时,使用原始的格式
if (this.para02 === 2) {
wb = XLSX.utils.table_to_book(document.querySelector('#wjzTable').removeChild(fix),xlsxParam);
document.querySelector('#wjzTable').appendChild(fix);
}else{
wb = XLSX.utils.table_to_book(document.querySelector('#rebateSetTable').removeChild(fix),xlsxParam);
document.querySelector('#rebateSetTable').appendChild(fix);
}
let wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: true, type: 'array'});
try {
FileSaver.saveAs(new Blob([wbout], {type: 'application/octet-stream'}), '签约人群分析清单.xlsx');
} catch (e) {
if (typeof console !== 'undefined')
console.log(e, wbout)
}
return wbout
},
iconshow(param) {
return returnIco2(param);
},
changeAll(num) {
this.para01 = num;
},
changeAll2(num) {
this.para02 = num;
},
handleSelect(item) {
this.uname = item.value;
this.pageIndex = 1;
this.listData = [];
this.dataInit();
},
changeTime(mydata) {
console.log(mydata);
this.cxsj = mydata;
},
sortChange(column) {
console.log(column + '---' + column.prop + '---' + column.order);
//输出的结果 [object Object]---name---ascending
if (this.para02 === 2) {
this.orderField1 = column.prop;
if (column.order === 'descending') {
this.orderType1 = 'desc'
} else {
this.orderType1 = 'asc'
}
}else{
this.orderField = column.prop;
if (column.order === 'descending') {
this.orderType = 'desc'
} else {
this.orderType = 'asc'
}
}
this.pageIndex = 1;
this.listData = [];
this.dataInit();
},
querySearch(queryString, cb) {
console.log(queryString);
this.uname = queryString;
let token = sessionStorage.getItem('token');
let menuslist = {
"key": "qygl-zdrqfx",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"orderField": this.orderField,
"orderType": this.orderType,
"pageSize": 100,
"pageIndex": this.pageIndex,
"zdrqfldm": this.para01,//重点人群分类代码(非必填,默认查询所有)
"hzxm": this.uname,//患者姓名(非必填,默认查询所有)
"jzzt": this.para02,//就诊状态(0=未就诊/1=已就诊,非必填,默认查询所有)
"jzcs": this.number//就诊次数(非必填,默认查询所有)
}
};
this.restaurants = [];
contract(token, menuslist).then(res => {
res.data.listData.forEach((item, index) => {
let ulist = {"value": "", "usex": ""};
ulist.value = item.XM;
ulist.usex = item.XB;
this.restaurants.push(ulist)
});
var restaurants = this.restaurants;
var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
cb(results);
});
this.pageIndex = 1;
this.listData = [];
this.dataInit()
},
createFilter(queryString) {
return (restaurant) => {
return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
};
},
headerStyle() {
return 'background:#3F4D79; border:0;border-right: 0.5px solid #6072AC; margin:0; padding:0;height:46px; line-height:46px; color:#fff;text-align:center'
},
cellStyle() {
return 'background:none;color:#D6DAEC;border:0;border-right: 0.5px solid #6072AC; margin:0; padding:0; line-height:33px; text-align:center'
},
xsfun() {
this.istc = !this.istc
},
toMember(param) {
console.log('sss')
sessionStorage.setItem('backUrl', 'AnalySign');
this.$router.push('/Member?sfz=' + param);
//this.$router.push({Member: '/login?url=' + this.$route.path});
},
scrollEvent() {
let _this = this
let read = document.getElementById('eltab');
console.log('read' + read)
},
okSub() {
this.pageIndex = 1;
this.listData = [];
this.dataInit();
this.istc = !this.istc;
},
tabRowClassName({row, rowIndex}) {
let index = rowIndex + 1;
if (index % 2 === 0) {
return 'evenwarning-row';
} else {
return 'oddwarning-row';
}
},
cateFn(param) {
let str = '全部';
if (param == 'A') {
str = '60以上';
} else if (param == 'B') {
str = '高血压';
} else if (param == 'C') {
str = '糖尿病';
} else if (param == 'D') {
str = '孕产妇';
} else if (param == 'E') {
str = '0-6';
} else if (param == 'F') {
str = '残疾人';
} else if (param == 'G') {
str = '结核病';
} else if (param == 'I') {
str = '精神障碍';
} else if (param == 'J') {
str = '贫困人群';
}
return str;
},
goback() {
// this.$router.push('/Signing');
//this.$router.go(-1);
let backUrl = sessionStorage.getItem('backUrl');
if(backUrl=='AnalySign' ){
this.$router.push('/Signing');
}else{
this.$router.go(-1);
}
}
},
mounted() {
this.para02 = this.$route.query.type;
this.para01 = this.$route.query.param;
this.token = sessionStorage.getItem('token');
this.loginMsg = JSON.parse(sessionStorage.getItem('userinfo'));
this.cxsj = sessionStorage.getItem("cxsj");
this.yname = this.loginMsg.userName
if(this.loginMsg.roleCode=='hcms.APP_SQYZ'){
console.log('家医数据信息:')
console.log(this.loginMsg)
this.loginMsg.gpNumber = sessionStorage.getItem('ygh')
this.yname = sessionStorage.getItem('yname')
}
this.dataInit()
}
}
</script>
<style>
* {
font-weight: 500;
}
.tablename4 {
margin-top: 11px;
width: 55px;
height: 30px;
float: left;
}
.tablename5 {
width: 70px;
height: 40px;
float: left;
line-height: 40px;
}
.tablename1 {
margin-top: 11px;
width: 80px;
height: 30px;
float: left;
}
.tablename2 {
width: 35px;
height: 40px;
float: left;
line-height: 40px;
}
.cashcost {
width: 55px;
float: left;
}
.tper {
width: 40px;
float: left;
text-align: right;
}
.pper {
width: 45px;
float: left;
text-align: right;
}
.tper > img, .pper > img {
height: 8px;
width: 8px;
}
.cashcost1 {
width: 45px;
float: left;
}
.cashcost2 {
width: 90px;
float: left;
}
.tper1 {
width: 42px;
text-align: right;
float: left;
}
.tper2 {
width: 15px;
float: left;
}
.Movearrow .caret-wrapper {
position: relative;
top: 16px;
}
.el-table__row {
height: 33px;
}
.outer {
}
.outer >>> .el-table__row td {
border: 0;
}
.titlebg {
margin-bottom: 20px;
position: relative;
}
.tccmain {
position: absolute;
right: 10px;
top: 60px;
width: 480px;
height: 330px;
background: rgba(39, 48, 76, 1);
border-radius: 6px;
z-index: 999;
}
.tccmain h4 {
background: rgba(54, 67, 111, 1);
margin-bottom: 6px;
color: rgba(166, 174, 214, 1);
text-align: left;
line-height: 30px;
padding-left: 10px;
}
.tccline {
clear: both;
overflow: hidden;
}
.tccleft {
float: left;
line-height: 35px;
padding-top: 1px;
padding-left: 10px;
width: 60px;
color: rgba(166, 174, 214, 1);
text-align: left;
}
.tccright {
float: left;
line-height: 35px;
width: 410px;
padding-top: 6px;
}
.tccright span {
display: inline-block;
margin-right: 10px;
margin-bottom: 10px;
float: left;
width: 55px;
height: 24px;
line-height: 24px;
background: rgba(51, 62, 95, 1);
color: #FFFFFF;
border-radius: 4px;
border: 1px solid rgba(84, 97, 139, 1);
}
.tccright span.clk {
background: rgba(33, 76, 126, 1);
border-radius: 4px;
color: #42CCFF;
}
.tccright input {
border: 0;
width: 60px;
float: left;
height: 25px;
line-height: 25px;
}
.tccright2 {
width: 150px;
}
.tccright2 input {
width: 100px;
}
.tccright3 {
width: 140px;
float: left;
height: 40px;
line-height: 40px;
}
.tccright3 input {
width: 140px;
height: 30px;
border: 0;
}
.tccline3 {
clear: both;
overflow: hidden;
text-align: right;
}
.tccline3 /deep/ .ebtn {
width: 80px;
height: 30px;
}
.logincontainer {
max-width: 1280px;
margin: 0 auto;
}
.jnlogbtn2 {
background: #3FA5FF;
border-radius: 3px;
float: right;
margin: 8px 10px 0 0;
height: 32px;
width: 72px;
color: #fff;
line-height: 30px;
overflow: hidden;
}
.jnlogbtn2 img {
width: 14px;
height: 14px;
display: inline-block;
position: relative;
top: 3px;
}
.jnlogbtn2 {
float: left;
margin: 0 0 0 15px;
width: 70px;
height: 28px;
}
.titlebg2 {
width: 98%;
margin: 0 1%;
margin-bottom: 20px;
}
.jnascolorbar > div {
height: 40px;
display: flex;
justify-content: center;
align-items: center;
}
.el-table__fixed-right::before, .el-table__fixed::before {
background: none
}
.el-table::before {
background: none
}
.el-table .oddwarning-row {
background: #2d385c
}
.el-table .evenwarning-row {
background: #313e64
}
.el-table >>> .el-table th {
padding: 7px 0
}
/deep/ .el-table__body tr.hover-row > td {
background-color: #313e64;
}
.el-table >>> .el-table__body tr.hover-row > td {
background-color: #313e64;
}
/deep/ .el-table, .el-table__expanded-cell {
background: none;
}
.el-table .cell {
padding: 0 3px;
line-height: 12px;
}
.el-table th > .cell {
padding: 0 3px;
}
.jnastopinp /deep/ input {
border: 0;
margin: 0;
height: 30px;
}
.logincontainer /deep/ .el-table--scrollable-x .el-table__body-wrapper {
background: #272E52;
}
.logincontainer /deep/ .el-input {
height: 22px;
margin: 0;
}
.el-autocomplete {
line-height: 20px;
display: block;
}
.el-input__icon {
line-height: 22px;
}
.jzdz-width {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.el-input__inner {
border: none;
height: 22px;
line-height: 22px;
font-size: 10px;
color: #8891BE;
}
.el-input__prefix {
left: 1px;
}
.el-input {
font-size: 10px;
}
.head_but {
background: #3FA5FF;
border-radius: 3px;
margin: 8px 10px 0 0;
height: 32px;
width: 72px;
color: #fff;
line-height: 30px;
overflow: hidden;
font-size: 13px;
}
.head_but img {
width: 14px;
height: 14px;
display: inline-block;
position: relative;
top: 3px;
}
.head_but {
margin: 0 0 0 15px;
width: 70px;
height: 28px;
}
.progressBar1 .el-progress-bar__outer {
background-color: #1a796c;
border-radius: 0;
}
.el-progress-bar__inner {
height: 4px;
margin: 2px;
border-radius: 0;
}
.progressBar2 .el-progress-bar__outer {
background-color: #6b542a;
border-radius: 0;
}
.progressBar3 .el-progress-bar__outer {
background-color: #6b542a;
border-radius: 0;
}
.progressBar4 .el-progress-bar__outer {
background-color: #6b542a;
border-radius: 0;
}
.el-table .caret-wrapper {
width: 15px;
}
.el-table .sort-caret {
left: 1px;
}
</style>
<template>
<div class="outer">
<!-- 签约人群分析页面 -->
<div class="logincontainer">
<el-row>
<el-col :span="24">
<el-row>
<el-col :span="12">
<div style="width:100%;height:55px;background:rgba(46,55,92,1);vertical-align: center;padding: 0 20px;">
<div
style="font-size:17px;font-weight:500;color:rgba(255,255,255,1);text-align: left;line-height: 55px;">
<span style="font-size:17px;color:rgba(255,255,255,1);">机构门诊费用</span>
<span style="margin-left: 10px;color: #8891BE;font-size: 11px;">(<span>{{jgdjmc}}</span>)</span>
</div>
</div>
</el-col>
<el-col :span="12">
<div style="width:100%;height:55px;background:rgba(46,55,92,1);vertical-align: center;padding: 0 20px;">
<div
style="position: absolute !important;right: 0;top: 0;font-size: 11px;height: 55px;line-height: 55px;margin-right: 20px;">
<span class=""><img src="../assets/images/icon-main-user.png" width="11" height="11" alt="">
<span style="color: #8891BE;font-size: 11px;">{{yname}}, 截止于{{cxsj}}</span>
</span>
<button class="head_but" @click="goback" style="background: #44517d">
<img src="../assets/images/icon/main/back.png" width="12" height="10" alt=""> 返回
</button>
<button @click="downloadList" class="head_but">
<img src="@/assets/images/export.png" alt=""> 导出
</button>
<button @click="xsfun" class="head_but">
<img src="../assets/images/icon/main/筛选.png" alt=""> 筛选
</button>
</div>
<div class="tccmain" v-show="istc">
<h4>筛选条件</h4>
<div class="tccline">
<div class="tccleft">查询日期</div>
<div class="tccright3">
<el-date-picker @change="changeTime" value-format="yyyyMM" v-model="cxsj" type="month"
placeholder="选择月"></el-date-picker>
</div>
</div>
<div class="tccline3">
<el-button class="ebtn" @click="okSub" size="mini" type="primary">确定</el-button>
</div>
</div>
</div>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="djsx">
<label @click="changeJgdj('')" :class="jgdj===''?'selected':''">全部</label>
<label @click="changeJgdj('1')" :class="jgdj==='1'?'selected':''">社区</label>
<label @click="changeJgdj('2')" :class="jgdj==='2'?'selected':''">二级</label>
<label @click="changeJgdj('3')" :class="jgdj==='3'?'selected':''">三级</label>
</div>
</el-col>
</el-row>
<div style="padding: 0 20px;">
<el-table id="mzHospitalList" :header-cell-style="headerStyle" :fit="true" :cell-style="cellStyle"
:data="listData" :row-class-name="tabRowClassName"
style="width: 100%;margin:0;overflow-y: scroll;background: #272E52;font-size: 10px;"
height="495" disabled="disabled" ref="eltab"
:default-sort="{prop:'MZFY_TBL',order:'descending'}"
v-el-table-infinite-scroll="loadMore"
@sort-change='sortChange'>
<el-table-column fixed label="序列" width="50">
<template slot-scope="scope"><span>{{scope.$index + 1}} </span></template>
</el-table-column>
<el-table-column fixed prop="JZJGMC" label="医院" width="80">
<template slot-scope="scope">
<p @click="toPatientList(scope.row.JZJGDM,scope.row.JZJGJC)"
style="color:#0985de;text-decoration: underline;float: left;">{{scope.row.JZJGJC}}</p>
</template>
</el-table-column>
<el-table-column prop="MZFY_TBL" width="100" sortable='custom' :sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="table-th" style="width: 40px;">总费用<br>(万)</div>
<div class="table-th2" style="width: 35px;">同(%)</div>
</template>
<template slot-scope="scope">
<div class="table-td" style="width: 40px;"><span>{{scope.row.MZFY}}</span></div>
<div class="table-td" style="width: 45px;" v-html="scope.row.MZFY_TBL"></div>
</template>
</el-table-column>
<el-table-column prop="MZFY_ZB" width="65" sortable='custom' :sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="table-th" style="width: 40px;">费用占<br>比(%)</div>
</template>
<template slot-scope="scope">
<div class="table-td" style="width: 50px;">{{(scope.row.MZFY_ZB)}}</div>
</template>
</el-table-column>
<el-table-column prop="RJFY_TBL" width="105" sortable='custom' :sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="table-th" style="width: 50px;">累计人均<br>门费(千)</div>
<div class="table-th2" style="width: 30px;">同(%)</div>
</template>
<template slot-scope="scope">
<div class="table-td" style="width: 50px;"><span>{{scope.row.RJFY}}</span></div>
<div class="table-td" style="width: 40px;" v-html="scope.row.RJFY_TBL"></div>
</template>
</el-table-column>
<el-table-column prop="RJYF_TBL" width="105" sortable='custom' :sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="table-th" style="width: 50px;">累计人均<br>药费(千)</div>
<div class="table-th2" style="width: 30px;">同(%)</div>
</template>
<template slot-scope="scope">
<div class="table-td" style="width: 50px;"><span>{{scope.row.RJYF}}</span></div>
<div class="table-td" style="width: 40px;" v-html="scope.row.RJYF_TBL"></div>
</template>
</el-table-column>
<el-table-column prop="JZCS_TBL" width="102" sortable='custom' :sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="table-th2" style="width: 45px;">累计(次)</div>
<div class="table-th2" style="width: 35px;">同(%)</div>
</template>
<template slot-scope="scope">
<div class="table-td" style="width: 45px;"><span>{{scope.row.JZCS}}</span></div>
<div class="table-td" style="width: 45px;" v-html="scope.row.JZCS_TBL"></div>
</template>
</el-table-column>
<el-table-column prop="JZRS_TBL" width="102" sortable='custom' :sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="table-th2" style="width: 45px;">累计(人)</div>
<div class="table-th2" style="width: 35px;">同(%)</div>
</template>
<template slot-scope="scope">
<div class="table-td" style="width: 45px;"><span>{{scope.row.JZRS}}</span></div>
<div class="table-td" style="width: 45px;" v-html="scope.row.JZRS_TBL"></div>
</template>
</el-table-column>
<el-table-column prop="JZCS_ZB" width="92" sortable='custom' :sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="table-th2" style="width: 35px;">同级</div>
<div class="table-th2" style="width: 35px;">占比(%)</div>
</template>
<template slot-scope="scope">
<div class="table-td" style="width: 40px;"><span>{{scope.row.JZCS_TJZB}}</span></div>
<div class="table-td" style="width: 40px;"><span>{{scope.row.JZCS_ZB}}</span></div>
</template>
</el-table-column>
<el-table-column prop="RJCS_TBL" width="105" sortable='custom' :sort-orders="['descending','ascending']">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="table-th" style="width: 50px;">累计人均<br>就诊(次)</div>
<div class="table-th2" style="width: 30px;">同(%)</div>
</template>
<template slot-scope="scope">
<div class="table-td" style="width: 50px;"><span>{{scope.row.RJCS}}</span></div>
<div class="table-td" style="width: 40px;" v-html="scope.row.RJCS_TBL"></div>
</template>
</el-table-column>
</el-table>
 
</div>
</div>
</div>
</template>
<script>
import {contract} from '@/api/home.js';
import {getActiveNum, changeUpOrDown, famartTime, famartTime2} from '@/utils/validate.js';
import elTableInfiniteScroll from 'el-table-infinite-scroll';
import FileSaver from 'file-saver';
import XLSX from 'xlsx';
export default {
directives: {
'el-table-infinite-scroll': elTableInfiniteScroll
},
data() {
return {
token: '',
istc: false,
loginMsg: {},
valuTime: '',
pageIndex: 1,
uname: '',
cxsj: "",
jgdj: '',
jgdjmc: '全部',
yname: '',
orderField: 'MZFY_TBL',
orderType: 'desc',
listData: [],
countData: [],
total: 0
}
},
methods: {
loadMore() {
console.log(this.pageIndex);
if (this.countData.totalPageCount > this.pageIndex) {
this.pageIndex++;
this.dataInit();
}
},
dataInit() {
let token = sessionStorage.getItem('token');
let menuslist = {
"key": "fygl-qy-ljfyfx-list",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"orderField": this.orderField,
"orderType": this.orderType,
"pageSize": 15,
"pageIndex": this.pageIndex,
"jglx": this.jgdj
}
};
contract(token, menuslist).then(res => {
this.countData = res.data;
res.data.listData.forEach((item, index) => {
res.data.listData[index].MZFY = getActiveNum(item.MZFY / 10000);
res.data.listData[index].MZFY_TBL = changeUpOrDown(item.MZFY_TBL);
res.data.listData[index].MZFY_ZB = getActiveNum(item.MZFY_ZB);
res.data.listData[index].RJFY = getActiveNum(item.RJFY / 1000);
res.data.listData[index].RJFY_TBL = changeUpOrDown(item.RJFY_TBL);
res.data.listData[index].RJYF = getActiveNum(item.RJYF / 1000);
res.data.listData[index].RJYF_TBL = changeUpOrDown(item.RJYF_TBL);
res.data.listData[index].JZCS_TBL = changeUpOrDown(item.JZCS_TBL);
res.data.listData[index].JZRS_TBL = changeUpOrDown(item.JZRS_TBL);
res.data.listData[index].JZCS_TJZB = getActiveNum(item.JZCS_TJZB);
res.data.listData[index].JZCS_ZB = getActiveNum(item.JZCS_ZB);
res.data.listData[index].RJCS = getActiveNum(item.RJCS);
res.data.listData[index].RJCS_TBL = changeUpOrDown(item.RJCS_TBL);
});
// this.tableData = this.tableData.concat(exampleData);
this.listData = this.listData.concat(res.data.listData);
console.log(this.listData);
});
},
changeTime(mydata) {
console.log(mydata);
this.cxsj = mydata;
},
changeJgdj(jgdj) {
this.jgdj = jgdj;
if ('1' === this.jgdj) {
this.jgdjmc = '社区';
} else if ('2' === this.jgdj) {
this.jgdjmc = '二级';
} else if ('3' === this.jgdj) {
this.jgdjmc = '三级';
} else {
this.jgdjmc = '全部';
}
this.pageIndex = 1;
this.listData = [];
this.dataInit();
},
sortChange(column) {
console.log(column + '---' + column.prop + '---' + column.order);
//输出的结果 [object Object]---name---ascending
this.orderField = column.prop;
if (column.order === 'descending') {
this.orderType = 'desc'
} else {
this.orderType = 'asc'
}
this.pageIndex = 1;
this.listData = [];
this.dataInit();
},
headerStyle() {
return 'background:#3F4D79; border:0;border-right: 0.5px solid #6072AC; margin:0; padding:0;height:46px; line-height:46px; color:#fff;text-align:center'
},
cellStyle() {
return 'background:none;color:#D6DAEC;border:0;border-right: 0.5px solid #6072AC; margin:0; padding:0; line-height:33px;text-align:center'
},
scrollEvent() {
let _this = this;
let read = document.getElementById('eltab');
console.log('read' + read);
},
xsfun() {
this.istc = !this.istc;
},
okSub() {
this.dataInit();
this.istc = !this.istc;
},
downloadList() {
var fix = document.querySelector('.el-table__fixed');
var xlsxParam = {raw: true};//转换成excel时,使用原始的格式
var wb = XLSX.utils.table_to_book(document.querySelector('#mzHospitalList').removeChild(fix), xlsxParam);
document.querySelector('#mzHospitalList').appendChild(fix);
let wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: true, type: 'array'});
try {
FileSaver.saveAs(new Blob([wbout], {type: 'application/octet-stream'}), '门诊机构分析清单.xlsx');
} catch (e) {
if (typeof console !== 'undefined')
console.log(e, wbout)
}
return wbout
},
tabRowClassName({row, rowIndex}) {
let index = rowIndex + 1;
if (index % 2 === 0) {
return 'evenwarning-row';
} else {
return 'oddwarning-row';
}
},
toPatientList(jgdm, jgjc) {
this.$router.push({
path: '/AnalySign',
query: {
jgdm: jgdm,
jgjc: jgjc
}
});
},
goback() {
this.$router.go(-1);
}
},
mounted() {
this.token = sessionStorage.getItem('token');
this.loginMsg = JSON.parse(sessionStorage.getItem('userinfo'));
this.yname = this.loginMsg.userName
if (this.loginMsg.roleCode == 'hcms.APP_SQYZ') {
console.log('家医数据信息:')
console.log(this.loginMsg)
this.loginMsg.gpNumber = sessionStorage.getItem('ygh')
this.yname = sessionStorage.getItem('yname')
}
this.cxsj = sessionStorage.getItem("cxsj");
this.dataInit();
}
}
</script>
<style>
* {
font-weight: 500;
}
.table-th {
margin-top: 5px;
height: 26px;
color: #fff;
line-height: 12px;
float: left;
}
.table-th2 {
height: 40px;
float: left;
line-height: 40px;
}
.table-td {
height: 20px;
color: rgb(170, 177, 210);
float: left;
line-height: 20px;
text-align: center;
}
.Movearrow .caret-wrapper {
position: relative;
top: 16px;
}
.el-table__row {
height: 33px;
}
.outer {
}
.outer >>> .el-table__row td {
border: 0;
}
.tccmain {
position: absolute;
right: 10px;
top: 60px;
width: 480px;
height: 330px;
background: rgba(39, 48, 76, 1);
border-radius: 6px;
z-index: 999;
}
.tccmain h4 {
background: rgba(54, 67, 111, 1);
margin-bottom: 6px;
color: rgba(166, 174, 214, 1);
text-align: left;
line-height: 30px;
padding-left: 10px;
}
.tccline {
clear: both;
overflow: hidden;
}
.tccleft {
float: left;
line-height: 35px;
padding-top: 1px;
padding-left: 10px;
width: 60px;
color: rgba(166, 174, 214, 1);
font-size: 12px;
text-align: left;
}
.tccright {
float: left;
line-height: 35px;
width: 410px;
padding-top: 6px;
}
.tccright span {
display: inline-block;
margin-right: 10px;
margin-bottom: 10px;
float: left;
width: 55px;
height: 24px;
line-height: 24px;
background: rgba(51, 62, 95, 1);
color: #FFFFFF;
border-radius: 4px;
border: 1px solid rgba(84, 97, 139, 1);
}
.tccright span.clk {
background: rgba(33, 76, 126, 1);
border-radius: 4px;
color: #42CCFF;
}
.tccright input {
border: 0;
width: 60px;
float: left;
height: 25px;
line-height: 25px;
}
.tccright2 {
width: 150px;
}
.tccright2 input {
width: 100px;
}
.tccright3 {
width: 140px;
float: left;
height: 40px;
line-height: 40px;
}
.tccright3 input {
width: 140px;
height: 30px;
border: 0;
}
.tccline3 {
clear: both;
overflow: hidden;
text-align: right;
}
.tccline3 /deep/ .ebtn {
width: 80px;
height: 30px;
}
.logincontainer {
max-width: 1280px;
margin: 0 auto;
}
.head_but {
background: #3FA5FF;
border-radius: 3px;
margin: 8px 10px 0 0;
height: 32px;
width: 72px;
color: #fff;
line-height: 30px;
overflow: hidden;
font-size: 13px;
}
.head_but img {
width: 14px;
height: 14px;
display: inline-block;
position: relative;
top: 3px;
}
.head_but {
margin: 0 0 0 15px;
width: 70px;
height: 28px;
}
.titlebg2 {
width: 98%;
margin: 0 1%;
margin-bottom: 20px;
}
.jnascolorbar > div {
height: 40px;
display: flex;
justify-content: center;
align-items: center;
}
.el-table__fixed-right::before, .el-table__fixed::before {
background: none
}
.el-table::before {
background: none
}
.el-table .oddwarning-row {
background: #2d385c
}
.el-table .evenwarning-row {
background: #313e64
}
.el-table >>> .el-table th {
padding: 7px 0
}
/deep/ .el-table__body tr.hover-row > td {
background-color: #313e64;
}
.el-table >>> .el-table__body tr.hover-row > td {
background-color: #313e64;
}
/deep/ .el-table, .el-table__expanded-cell {
background: none;
}
.el-table .cell {
padding: 0 5px;
}
/deep/ .el-table th > .cell {
padding: 0 3px;
}
.el-table th > .cell {
padding: 0 3px;
}
.jnastopinp /deep/ input {
border: 0;
margin: 0;
height: 30px;
}
.logincontainer /deep/ .el-table--scrollable-x .el-table__body-wrapper {
background: #272E52;
}
.logincontainer /deep/ .el-input {
height: 25px;
margin: 0;
}
.el-autocomplete {
line-height: 20px;
display: block;
}
.el-input__icon {
line-height: 30px;
}
.jzdz-width {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.djsx {
width: 100%;
height: 45px;
text-align: left;
padding: 0 20px;
line-height: 45px;
}
div.djsx label {
width: 60px;
height: 23px;
margin-right: 10px;
background: #272E52;
border-radius: 3px;
font-size: 12px;
color: #AAB1D2;
text-align: center;
font-weight: 600;
padding: 3px 18px;
line-height: 23px;
border: 1px solid rgba(98, 109, 146, 1);
}
div.djsx label.selected {
color: #FFFFFF;
border: 1px solid rgba(38, 128, 255, 1);
background: rgba(38, 128, 255, 1);
}
.el-table .caret-wrapper {
width: 15px;
}
.el-table .sort-caret {
left: 1px;
}
</style>
<template>
<div class="outer">
<!-- 签约人群分析页面 -->
<div class="logincontainer">
<el-row>
<el-col :span="24">
<el-row>
<el-col :span="12">
<div style="width:100%;height:55px;background:rgba(46,55,92,1);vertical-align: center;padding: 0 20px;">
<div
style="font-size:17px;font-weight:500;color:rgba(255,255,255,1);text-align: left;line-height: 55px;">
<span style="font-size:17px;color:rgba(255,255,255,1);">机构住院费用</span>
<span style="margin-left: 10px;color: #8891BE;font-size: 11px;">(<span>{{jgdjmc}}</span>)</span>
</div>
</div>
</el-col>
<el-col :span="12">
<div style="width:100%;height:55px;background:rgba(46,55,92,1);vertical-align: center;padding: 0 20px;">
<div
style="position: absolute !important;right: 0;top: 0;font-size: 11px;height: 55px;line-height: 55px;margin-right: 20px;">
<span class=""><img src="../assets/images/icon-main-user.png" width="11" height="11" alt="">
<span style="color: #8891BE;font-size: 11px;">{{yname}}, 截止于{{cxsj}}</span>
</span>
<button class="head_but" @click="goback" style="background: #44517d">
<img src="../assets/images/icon/main/back.png" width="12" height="10" alt=""> 返回
</button>
<button @click="downloadList" class="head_but">
<img src="@/assets/images/export.png" alt=""> 导出
</button>
<button @click="xsfun" class="head_but">
<img src="../assets/images/icon/main/筛选.png" alt=""> 筛选
</button>
</div>
<div class="tccmain" v-show="istc">
<h4>筛选条件</h4>
<div class="tccline">
<div class="tccleft">查询日期</div>
<div class="tccright3">
<el-date-picker @change="changeTime" value-format="yyyyMM" v-model="cxsj" type="month"
placeholder="选择月"></el-date-picker>
</div>
</div>
<div class="tccline3">
<el-button class="ebtn" @click="okSub" size="mini" type="primary">确定</el-button>
</div>
</div>
</div>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="djsx">
<label @click="changeJgdj('')" :class="jgdj===''?'selected':''">全部</label>
<label @click="changeJgdj('1')" :class="jgdj==='1'?'selected':''">社区</label>
<label @click="changeJgdj('2')" :class="jgdj==='2'?'selected':''">二级</label>
<label @click="changeJgdj('3')" :class="jgdj==='3'?'selected':''">三级</label>
</div>
</el-col>
</el-row>
<div style="padding: 0 20px;">
<el-table id="zyHospitalList" :header-cell-style="headerStyle" :fit="true" :cell-style="cellStyle"
:data="listData" :row-class-name="tabRowClassName"
style="width: 100%;margin:0;overflow-y: scroll;background: #272E52;font-size: 10px;"
height="495" disabled="disabled" ref="eltab"
:default-sort="{prop:'ZLS',order:'descending'}"
v-el-table-infinite-scroll="loadMore"
@sort-change='sortChange'>
<el-table-column fixed label="序列" width="50">
<template slot-scope="scope"><span>{{scope.$index + 1}} </span></template>
</el-table-column>
<el-table-column fixed prop="JZJGMC" label="医院" width="100">
<template slot-scope="scope">
<p @click="toZyPatientList(scope.row.JZJGDM,scope.row.JZJGJC)" style="color:#0985de;text-decoration: underline;float: left;">{{scope.row.JZJGJC}}</p>
</template>
</el-table-column>
<el-table-column prop="ZLS" label="例数" width="80" sortable='custom' :sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="ZRS" label="人数" width="80" sortable='custom' :sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="RJFY" label="人均费用(万元)" width="120" sortable='custom' :sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="RJFY_TBL" label="同(%)" width="80" sortable='custom' :sort-orders="['descending','ascending']">
<template slot-scope="scope">
<span v-html="scope.row.RJFY_TBL"></span>
</template>
</el-table-column>
<el-table-column prop="RJYF" label="人均药费(万元)" width="120" sortable='custom' :sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="RJYF_TBL" label="同(%)" width="80" sortable='custom' :sort-orders="['descending','ascending']">
<template slot-scope="scope">
<span v-html="scope.row.RJYF_TBL"></span>
</template>
</el-table-column>
<el-table-column prop="RJHF" label="人均耗费(万元)" width="120" sortable='custom' :sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="RJHF_TBL" label="同(%)" width="80" sortable='custom' :sort-orders="['descending','ascending']">
<template slot-scope="scope">
<span v-html="scope.row.RJHF_TBL"></span>
</template>
</el-table-column>
</el-table>
 
</div>
</div>
</div>
</template>
<script>
import {contract} from '@/api/home.js';
import {getActiveNum, changeUpOrDown, famartTime, famartTime2} from '@/utils/validate.js';
import elTableInfiniteScroll from 'el-table-infinite-scroll';
import FileSaver from 'file-saver';
import XLSX from 'xlsx';
export default {
directives: {
'el-table-infinite-scroll': elTableInfiniteScroll
},
data() {
return {
token: '',
istc: false,
loginMsg: {},
valuTime: '',
pageIndex: 1,
uname: '',
cxsj: "",
jgdj: '',
jgdjmc: '全部',
orderField: 'ZLS',
orderType: 'desc',
listData: [],
yname:'',
countData: [],
total: 0
}
},
methods: {
loadMore() {
console.log(this.pageIndex);
if (this.countData.totalPageCount > this.pageIndex) {
this.pageIndex++;
this.dataInit();
}
},
dataInit() {
let token = sessionStorage.getItem('token');
let menuslist = {
// "key": "fygl-qy-ljfyfx-list",
"key": "fygl-jz-zy-jgrj",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"orderField": this.orderField,
"orderType": this.orderType,
"pageSize": 15,
"pageIndex": this.pageIndex,
"jglx": this.jgdj
}
};
contract(token, menuslist).then(res => {
this.countData = res.data;
res.data.listData.forEach((item, index) => {
res.data.listData[index].RJFY = getActiveNum(item.RJFY / 10000);
res.data.listData[index].RJFY_TBL = changeUpOrDown(item.RJFY_TBL);
res.data.listData[index].RJYF = getActiveNum(item.RJYF / 1000);
res.data.listData[index].RJYF_TBL = changeUpOrDown(item.RJYF_TBL);
res.data.listData[index].RJHF = getActiveNum(item.RJHF / 1000);
res.data.listData[index].RJHF_TBL = changeUpOrDown(item.RJHF_TBL);
});
this.listData = this.listData.concat(res.data.listData);
console.log(this.listData);
});
},
changeTime(mydata) {
console.log(mydata);
this.cxsj = mydata;
},
changeJgdj(jgdj) {
this.jgdj = jgdj;
if ('1' === this.jgdj) {
this.jgdjmc = '社区';
} else if ('2' === this.jgdj) {
this.jgdjmc = '二级';
} else if ('3' === this.jgdj) {
this.jgdjmc = '三级';
} else {
this.jgdjmc = '全部';
}
this.pageIndex = 1;
this.listData = [];
this.dataInit();
},
sortChange(column) {
console.log(column + '---' + column.prop + '---' + column.order);
//输出的结果 [object Object]---name---ascending
this.orderField = column.prop;
if (column.order === 'descending') {
this.orderType = 'desc'
} else {
this.orderType = 'asc'
}
this.pageIndex = 1;
this.listData = [];
this.dataInit();
},
headerStyle() {
return 'background:#3F4D79; border:0;border-right: 0.5px solid #6072AC; margin:0; padding:0;height:46px; line-height:46px; color:#fff;text-align:center'
},
cellStyle() {
return 'background:none;color:#D6DAEC;border:0;border-right: 0.5px solid #6072AC; margin:0; padding:0; line-height:33px;text-align:center'
},
toZyPatientList(jgdm,jgjc) {
this.$router.push({
path: '/ZyPatientAnalysisList',
query: {
jgdm: jgdm,
jgjc: jgjc
}
});
},
downloadList() {
var fix = document.querySelector('.el-table__fixed');
var xlsxParam = { raw: true };//转换成excel时,使用原始的格式
var wb = XLSX.utils.table_to_book(document.querySelector('#zyHospitalList').removeChild(fix),xlsxParam);
document.querySelector('#zyHospitalList').appendChild(fix);
let wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: true, type: 'array'});
try {
FileSaver.saveAs(new Blob([wbout], {type: 'application/octet-stream'}), '住院机构分析清单.xlsx');
} catch (e) {
if (typeof console !== 'undefined')
console.log(e, wbout)
}
return wbout
},
xsfun() {
this.istc = !this.istc;
},
okSub() {
this.dataInit();
this.istc = !this.istc;
},
tabRowClassName({row, rowIndex}) {
let index = rowIndex + 1;
if (index % 2 === 0) {
return 'evenwarning-row';
} else {
return 'oddwarning-row';
}
},
goback() {
this.$router.go(-1);
}
},
mounted() {
this.token = sessionStorage.getItem('token');
this.loginMsg = JSON.parse(sessionStorage.getItem('userinfo'));
this.yname = this.loginMsg.userName
if(this.loginMsg.roleCode=='hcms.APP_SQYZ'){
console.log('家医数据信息:')
console.log(this.loginMsg)
this.loginMsg.gpNumber = sessionStorage.getItem('ygh')
this.yname = sessionStorage.getItem('yname')
}
this.cxsj = sessionStorage.getItem("cxsj");
this.dataInit();
}
}
</script>
<style>
* {
font-weight: 500;
}
.tper {
width: 50px;
height: 20px;
float: left;
font-size: 13px;
line-height: 20px;
text-align: center;
}
.pper {
width: 50px;
height: 20px;
float: left;
font-size: 13px;
line-height: 20px;
text-align: center;
}
.tper > img, .pper > img {
height: 8px;
width: 8px;
}
.cashcost1 {
width: 140px;
height: 20px;
color: rgb(170, 177, 210);
font-size: 13px;
float: left;
line-height: 20px;
text-align: center;
}
.tper1 {
width: 50px;
height: 20px;
float: left;
font-size: 13px;
line-height: 20px;
text-align: center;
}
.tper1 > img, .pper1 > img {
height: 8px;
width: 8px;
}
.el-table__row {
height: 33px;
}
.outer {
}
.outer >>> .el-table__row td {
border: 0;
}
.titlebg {
line-height: 50px;
height: 50px;
margin-bottom: 20px;
position: relative;
}
.tccmain {
position: absolute;
right: 10px;
top: 60px;
width: 480px;
height: 330px;
background: rgba(39, 48, 76, 1);
border-radius: 6px;
z-index: 999;
}
.tccmain h4 {
background: rgba(54, 67, 111, 1);
margin-bottom: 6px;
color: rgba(166, 174, 214, 1);
text-align: left;
line-height: 30px;
padding-left: 10px;
}
.tccline {
clear: both;
overflow: hidden;
}
.tccleft {
float: left;
line-height: 35px;
padding-top: 1px;
padding-left: 10px;
width: 60px;
color: rgba(166, 174, 214, 1);
font-size: 12px;
text-align: left;
}
.tccright {
float: left;
line-height: 35px;
width: 410px;
padding-top: 6px;
}
.tccright span {
display: inline-block;
margin-right: 10px;
margin-bottom: 10px;
float: left;
width: 55px;
height: 24px;
line-height: 24px;
background: rgba(51, 62, 95, 1);
color: #FFFFFF;
border-radius: 4px;
border: 1px solid rgba(84, 97, 139, 1);
}
.tccright span.clk {
background: rgba(33, 76, 126, 1);
border-radius: 4px;
color: #42CCFF;
}
.tccright input {
border: 0;
width: 60px;
float: left;
height: 25px;
line-height: 25px;
}
.tccright2 {
width: 150px;
}
.tccright2 input {
width: 100px;
}
.tccright3 {
width: 140px;
float: left;
height: 40px;
line-height: 40px;
}
.tccright3 input {
width: 140px;
height: 30px;
border: 0;
}
.tccline3 {
clear: both;
overflow: hidden;
text-align: right;
}
.tccline3 /deep/ .ebtn {
width: 80px;
height: 30px;
}
.logincontainer {
max-width: 1280px;
margin: 0 auto;
}
.head_but {
background: #3FA5FF;
border-radius: 3px;
margin: 8px 10px 0 0;
height: 32px;
width: 72px;
color: #fff;
line-height: 30px;
overflow: hidden;
font-size: 13px;
}
.head_but img {
width: 14px;
height: 14px;
display: inline-block;
position: relative;
top: 3px;
}
.head_but {
margin: 0 0 0 15px;
width: 70px;
height: 28px;
}
.titlebg2 {
width: 98%;
margin: 0 1%;
margin-bottom: 20px;
}
.jnascolorbar > div {
height: 40px;
display: flex;
justify-content: center;
align-items: center;
}
.el-table__fixed-right::before, .el-table__fixed::before {
background: none
}
.el-table::before {
background: none
}
.el-table .oddwarning-row {
background: #2d385c
}
.el-table .evenwarning-row {
background: #313e64
}
.el-table >>> .el-table th {
padding: 7px 0
}
/deep/ .el-table__body tr.hover-row > td {
background-color: #313e64;
}
.el-table >>> .el-table__body tr.hover-row > td {
background-color: #313e64;
}
/deep/ .el-table, .el-table__expanded-cell {
background: none;
}
.el-table .cell {
padding: 0 5px;
}
/deep/ .el-table th > .cell {
padding: 0 3px;
}
.el-table th > .cell {
padding: 0 3px;
}
.jnastopinp /deep/ input {
border: 0;
margin: 0;
height: 30px;
}
.logincontainer /deep/ .el-table--scrollable-x .el-table__body-wrapper {
background: #272E52;
}
.logincontainer /deep/ .el-input {
height: 25px;
margin: 0;
}
.el-autocomplete {
line-height: 20px;
display: block;
}
.el-input__icon {
line-height: 30px;
}
.jzdz-width {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.djsx {
width: 100%;
height: 45px;
text-align: left;
padding: 0 20px;
line-height: 45px;
}
div.djsx label {
width: 60px;
height: 23px;
margin-right: 10px;
background: #272E52;
border-radius: 3px;
font-size: 12px;
color: #AAB1D2;
text-align: center;
font-weight: 600;
padding: 3px 18px;
line-height: 23px;
border: 1px solid rgba(98, 109, 146, 1);
}
div.djsx label.selected {
color: #FFFFFF;
border: 1px solid rgba(38, 128, 255, 1);
background: rgba(38, 128, 255, 1);
}
/*.el-table .caret-wrapper {*/
/*width: 15px;*/
/*}*/
/*.el-table .sort-caret {*/
/*left: 1px;*/
/*}*/
</style>
<template>
<div class="outer">
<!-- 签约人群分析页面 -->
<div class="logincontainer">
<el-row>
<el-col :span="24">
<el-row>
<el-col :span="12">
<div style="width:100%;height:55px;background:rgba(46,55,92,1);vertical-align: center;padding: 0 20px;">
<div
style="font-size:17px;font-weight:500;color:rgba(255,255,255,1);text-align: left;line-height: 55px;">
<span style="font-size:17px;color:rgba(255,255,255,1);">住院患者分析</span>
<span style="margin-left: 10px;color: #8891BE;font-size: 11px;">(<span>{{jgjc}}</span>)</span>
</div>
</div>
</el-col>
<el-col :span="12">
<div style="width:100%;height:55px;background:rgba(46,55,92,1);vertical-align: center;padding: 0 20px;">
<div
style="position: absolute !important;right: 0;top: 0;font-size: 11px;height: 55px;line-height: 55px;margin-right: 20px;">
<span class=""><img src="../assets/images/icon-main-user.png" width="11" height="11" alt="">
<span style="color: #8891BE;font-size: 11px;">{{yname}}, 截止于{{cxsj}}</span>
</span>
<button class="head_but" @click="goback" style="background: #44517d">
<img src="../assets/images/icon/main/back.png" width="12" height="10" alt=""> 返回
</button>
<button @click="downloadList" class="head_but">
<img src="@/assets/images/export.png" alt=""> 导出
</button>
<button @click="xsfun" class="head_but">
<img src="../assets/images/icon/main/筛选.png" alt=""> 筛选
</button>
</div>
<div class="tccmain" v-show="istc">
<h4>筛选条件</h4>
<div class="tccline">
<div class="tccleft">查询日期</div>
<div class="tccright3">
<el-date-picker @change="changeTime" value-format="yyyyMM" v-model="cxsj" type="month"
placeholder="选择月"></el-date-picker>
</div>
</div>
<div class="tccline3">
<el-button class="ebtn" @click="okSub" size="mini" type="primary">确定</el-button>
</div>
</div>
</div>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div style="background:linear-gradient(180deg,rgba(61,75,119,1) 0%,rgba(56,66,105,1) 100%);
margin: 20px;height: 50px;line-height: 50px;text-align: left;padding: 0px 24px;color: #A6AED6;font-size: 13px;">
<span style="">指数单价偏离度分析</span><span style="margin-left: 20px;">≥40%</span>
<span style="color: #55FFE8;font-size: 24px">{{countData.dataCount1}}</span><span style="color: #F0F8FF;"></span>
<span class="progressBar1" style="display: inline-block;width: 86px;"><el-progress :show-text="false" :stroke-width="8" :percentage="percentage1" color="#36F2D8"></el-progress></span>
<span style="margin-left: 20px;">≥100%</span>
<span style="color: #FFC965;font-size: 24px">{{countData.dataCount2}}</span><span style="color: #F0F8FF;"></span>
<span class="progressBar2" style="display: inline-block;width: 86px;"><el-progress :show-text="false" :stroke-width="8" :percentage="percentage2" color="#FFC965"></el-progress></span>
<span style="margin-left: 20px;">≥200%</span>
<span style="color: #FF9D3D;font-size: 24px">{{countData.dataCount3}}</span><span style="color: #F0F8FF;"></span>
<span class="progressBar3" style="display: inline-block;width: 86px;"><el-progress :show-text="false" :stroke-width="8" :percentage="percentage3" color="#FF9D3D"></el-progress></span>
<span style="margin-left: 20px;">≥500%</span>
<span style="color: #d28232;font-size: 24px">{{countData.dataCount4}}</span><span style="color: #F0F8FF;"></span>
<span class="progressBar4" style="display: inline-block;width: 86px;"><el-progress :show-text="false" :stroke-width="8" :percentage="percentage4" color="#d28232"></el-progress></span>
</div>
</el-col>
</el-row>
<div style="padding: 0 20px;">
<el-table id="zyPatientList" :header-cell-style="headerStyle" :fit="true" :cell-style="cellStyle"
:data="listData" :row-class-name="tabRowClassName"
style="width: 100%;margin:0;overflow-y: scroll;background: #272E52;font-size: 10px;"
height="495" disabled="disabled" ref="eltab"
:default-sort="{prop:'ZSDJ_PLD',order:'descending'}"
v-el-table-infinite-scroll="loadMore"
@sort-change='sortChange'>
<el-table-column fixed label="序列" align="center" width="46">
<template slot-scope="scope"><span>{{scope.$index + 1}} </span></template>
</el-table-column>
<el-table-column fixed prop="XM" label="患者姓名" width="80">
<template slot-scope="scope">
<p @click="toPatient(scope.row.JZJGJC)" style="color:#0985de;text-decoration: underline;float: left;">{{scope.row.XM}}</p>
<div v-html="iconshow(scope.row.ZDRQ)"></div>
</template>
</el-table-column>
<el-table-column prop="NL" label="年龄" width="55" align="center" sortable='custom' :sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="XB" label="性别" width="50" align="center"></el-table-column>
<el-table-column prop="JZJGMC" label="机构" width="80"></el-table-column>
<el-table-column prop="BZMC" label="病种名称" width="120" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="BZBM" label="编码" width="130" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="ZSDJ_PLD" label="指单·偏(%)" width="80" align="center" sortable='custom' :sort-orders="['descending','ascending']">
<template slot-scope="scope">
<span v-html="scope.row.ZSDJ_PLD"></span>
</template>
</el-table-column>
<el-table-column prop="YPZSDJ_PLD" label="药单·偏(%)" width="80" align="center" sortable='custom' :sort-orders="['descending','ascending']">
<template slot-scope="scope">
<span v-html="scope.row.YPZSDJ_PLD"></span>
</template>
</el-table-column>
<el-table-column prop="HCZSDJ_PLD" label="耗单·偏(%)" width="80" align="center" sortable='custom' :sort-orders="['descending','ascending']">
<template slot-scope="scope">
<span v-html="scope.row.HCZSDJ_PLD"></span>
</template>
</el-table-column>
<el-table-column prop="BAH" label="病案号" width="80" sortable='custom' :sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="CYSJ" label="出院日期" align="center" width="90" sortable='custom' :sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="ZYTS" label="住院天数(天)" align="center" width="90" sortable='custom' :sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="ZFY" label="总费用(千元)" align="center" width="90" sortable='custom' :sort-orders="['descending','ascending']"></el-table-column>
<el-table-column prop="GYZT" label="是否干预" align="center" width="80"></el-table-column>
<el-table-column prop="SBZT" label="是否上报" align="center" width="80"></el-table-column>
<el-table-column prop="SBSJ" label="上报时间" align="center" width="90" sortable='custom' :sort-orders="['descending','ascending']"></el-table-column>
</el-table>
 
</div>
</div>
</div>
</template>
<script>
import {contract} from '@/api/home.js';
import {getActiveNum, changeUpOrDown, famartTime, famartTime2,returnIco2} from '@/utils/validate.js';
import elTableInfiniteScroll from 'el-table-infinite-scroll';
import FileSaver from 'file-saver';
import XLSX from 'xlsx';
export default {
directives: {
'el-table-infinite-scroll': elTableInfiniteScroll
},
data() {
return {
token: '',
istc: false,
loginMsg: {},
valuTime: '',
pageIndex: 1,
uname: '',
cxsj: "",
jgjc: this.$route.query.jgjc,
orderField: 'ZSDJ_PLD',
orderType: 'desc',
listData: [],
countData: [],
percentage1:0,
yname:'',
percentage2:0,
percentage3:0,
percentage4:0,
total: 0
}
},
methods: {
loadMore() {
console.log(this.pageIndex);
if (this.countData.totalPageCount > this.pageIndex) {
this.pageIndex++;
this.dataInit();
}
},
dataInit() {
let token = sessionStorage.getItem('token');
let menuslist = {
// "key": "fygl-qy-ljfyfx-list",
"key": "fygl-jz-zy-jghz",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"orderField": this.orderField,
"orderType": this.orderType,
"pageSize": 15,
"pageIndex": this.pageIndex,
"jzjgdm": this.$route.query.jgdm
}
};
contract(token, menuslist).then(res => {
this.countData = res.data;
this.percentage1 = this.countData.dataCount1 / this.countData.totalCount * 100;
this.percentage2 = this.countData.dataCount2 / this.countData.totalCount * 100;
this.percentage3 = this.countData.dataCount3 / this.countData.totalCount * 100;
this.percentage4 = this.countData.dataCount4 / this.countData.totalCount * 100;
res.data.listData.forEach((item, index) => {
res.data.listData[index].ZSDJ_PLD = changeUpOrDown(item.ZSDJ_PLD);
res.data.listData[index].YPZSDJ_PLD = changeUpOrDown(item.YPZSDJ_PLD);
res.data.listData[index].HCZSDJ_PLD = changeUpOrDown(item.HCZSDJ_PLD);
res.data.listData[index].ZFY = getActiveNum(item.ZFY / 1000);
res.data.listData[index].CYSJ = famartTime(item.CYSJ);
});
this.listData = this.listData.concat(res.data.listData);
console.log(this.listData);
});
},
changeTime(mydata) {
console.log(mydata);
this.cxsj = mydata;
},
sortChange(column) {
console.log(column + '---' + column.prop + '---' + column.order);
//输出的结果 [object Object]---name---ascending
this.orderField = column.prop;
if (column.order === 'descending') {
this.orderType = 'desc'
} else {
this.orderType = 'asc'
}
this.pageIndex = 1;
this.listData = [];
this.dataInit();
},
headerStyle() {
return 'background:#3F4D79; border:0;border-right: 0.5px solid #6072AC; margin:0; padding:0;height:46px; line-height:46px; color:#fff;text-align:center'
},
cellStyle() {
return 'background:none;color:#D6DAEC;border:0;border-right: 0.5px solid #6072AC; margin:0; padding:0; line-height:33px;text-align:center'
},
toPatient() {
this.$router.push({
path: '/ZyPatientAnalysisList',
query: {
name: 'admin'
}
});
},
downloadList() {
var fix = document.querySelector('.el-table__fixed');
var xlsxParam = { raw: true };//转换成excel时,使用原始的格式
var wb = XLSX.utils.table_to_book(document.querySelector('#zyPatientList').removeChild(fix),xlsxParam);
document.querySelector('#zyPatientList').appendChild(fix);
let wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: true, type: 'array'});
try {
FileSaver.saveAs(new Blob([wbout], {type: 'application/octet-stream'}), '住院患者分析清单.xlsx');
} catch (e) {
if (typeof console !== 'undefined')
console.log(e, wbout)
}
return wbout
},
xsfun() {
this.istc = !this.istc;
},
okSub() {
this.dataInit();
this.istc = !this.istc;
},
tabRowClassName({row, rowIndex}) {
let index = rowIndex + 1;
if (index % 2 === 0) {
return 'evenwarning-row';
} else {
return 'oddwarning-row';
}
},
iconshow(param){
return returnIco2(param)
},
goback() {
this.$router.go(-1);
}
},
mounted() {
this.token = sessionStorage.getItem('token');
this.loginMsg = JSON.parse(sessionStorage.getItem('userinfo'));
this.yname = this.loginMsg.userName
if(this.loginMsg.roleCode=='hcms.APP_SQYZ'){
console.log('家医数据信息:')
console.log(this.loginMsg)
this.loginMsg.gpNumber = sessionStorage.getItem('ygh')
this.yname = sessionStorage.getItem('yname')
}
this.cxsj = sessionStorage.getItem("cxsj");
this.dataInit();
}
}
</script>
<style>
* {
font-weight: 500;
}
.Movearrow .caret-wrapper {
position: relative;
top: 16px;
}
.el-table__row {
height: 33px;
}
.outer {
}
.outer >>> .el-table__row td {
border: 0;
}
.tccmain {
position: absolute;
right: 10px;
top: 60px;
width: 480px;
height: 330px;
background: rgba(39, 48, 76, 1);
border-radius: 6px;
z-index: 999;
}
.tccmain h4 {
background: rgba(54, 67, 111, 1);
margin-bottom: 6px;
color: rgba(166, 174, 214, 1);
text-align: left;
line-height: 30px;
padding-left: 10px;
}
.tccline {
clear: both;
overflow: hidden;
}
.tccleft {
float: left;
line-height: 35px;
padding-top: 1px;
padding-left: 10px;
width: 60px;
color: rgba(166, 174, 214, 1);
font-size: 12px;
text-align: left;
}
.tccright3 {
width: 140px;
float: left;
height: 40px;
line-height: 40px;
}
.tccright3 input {
width: 140px;
height: 30px;
border: 0;
}
.tccline3 {
clear: both;
overflow: hidden;
text-align: right;
}
.tccline3 /deep/ .ebtn {
width: 80px;
height: 30px;
}
.logincontainer {
max-width: 1280px;
margin: 0 auto;
}
.head_but {
background: #3FA5FF;
border-radius: 3px;
margin: 8px 10px 0 0;
height: 32px;
width: 72px;
color: #fff;
line-height: 30px;
overflow: hidden;
font-size: 13px;
}
.head_but img {
width: 14px;
height: 14px;
display: inline-block;
position: relative;
top: 3px;
}
.head_but {
margin: 0 0 0 15px;
width: 70px;
height: 28px;
}
.jnascolorbar > div {
height: 40px;
display: flex;
justify-content: center;
align-items: center;
}
.el-table__fixed-right::before, .el-table__fixed::before {
background: none
}
.el-table::before {
background: none
}
.el-table .oddwarning-row {
background: #2d385c
}
.el-table .evenwarning-row {
background: #313e64
}
.el-table >>> .el-table th {
padding: 7px 0
}
/deep/ .el-table__body tr.hover-row > td {
background-color: #313e64;
}
.el-table >>> .el-table__body tr.hover-row > td {
background-color: #313e64;
}
/deep/ .el-table, .el-table__expanded-cell {
background: none;
}
.el-table .cell {
line-height: 12px;
padding: 0 5px;
}
/deep/ .el-table th > .cell {
padding: 0 3px;
}
.el-table th > .cell {
padding: 0 3px;
}
.jnastopinp /deep/ input {
border: 0;
margin: 0;
height: 30px;
}
.logincontainer /deep/ .el-table--scrollable-x .el-table__body-wrapper {
background: #272E52;
}
.logincontainer /deep/ .el-input {
height: 25px;
margin: 0;
}
.el-autocomplete {
line-height: 20px;
display: block;
}
.el-input__icon {
line-height: 30px;
}
.jzdz-width {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.djsx {
width: 100%;
height: 45px;
text-align: left;
padding: 0 20px;
line-height: 45px;
}
div.djsx label {
width: 60px;
height: 23px;
margin-right: 10px;
background: #272E52;
border-radius: 3px;
font-size: 12px;
color: #AAB1D2;
text-align: center;
font-weight: 600;
padding: 3px 18px;
line-height: 23px;
border: 1px solid rgba(98, 109, 146, 1);
}
div.djsx label.selected {
color: #FFFFFF;
border: 1px solid rgba(38, 128, 255, 1);
background: rgba(38, 128, 255, 1);
}
.progressBar1 .el-progress-bar__outer {
background-color: #1a796c;
border-radius: 0;
}
.el-progress-bar__inner {
height: 4px;
margin: 2px;
border-radius: 0;
}
.progressBar2 .el-progress-bar__outer {
background-color: #6b542a;
border-radius: 0;
}
.progressBar3 .el-progress-bar__outer {
background-color: #6b542a;
border-radius: 0;
}
.progressBar4 .el-progress-bar__outer {
background-color: #6b542a;
border-radius: 0;
}
.el-table .caret-wrapper {
width: 15px;
}
.el-table .sort-caret {
left: 1px;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment