|
@@ -0,0 +1,567 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <crumbs title="调用记录" style="min-width: 1200px" class="knowledgeTitle">
|
|
|
+ <el-form :inline="true" :rules="rulesForm" class="demo-form-inline">
|
|
|
+ <el-form-item label="患者标识:" prop="patientId">
|
|
|
+ <el-input
|
|
|
+ size="mini"
|
|
|
+ v-model="filter.patientId"
|
|
|
+ placeholder="输入规则名称"
|
|
|
+ clearable
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="服务名称:" prop="sceneName">
|
|
|
+ <el-input
|
|
|
+ size="mini"
|
|
|
+ v-model="filter.sceneName"
|
|
|
+ placeholder="输入规则名称"
|
|
|
+ clearable
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="接收时间: ">
|
|
|
+
|
|
|
+ <el-date-picker
|
|
|
+ v-model="recepDate"
|
|
|
+ type="datetimerange"
|
|
|
+ align="right"
|
|
|
+ size="small"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ style="width: 240px"
|
|
|
+ :default-time="['12:00:00', '08:00:00']"
|
|
|
+ format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ >
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="响应时间: "
|
|
|
+ >
|
|
|
+ <el-date-picker
|
|
|
+ v-model="resDate"
|
|
|
+ type="datetimerange"
|
|
|
+ align="right"
|
|
|
+ size="small"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ style="width: 240px"
|
|
|
+ :default-time="['12:00:00', '08:00:00']"
|
|
|
+ format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ >
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item label="状态:">
|
|
|
+ <el-select
|
|
|
+ v-model="filter.successFlag"
|
|
|
+ clearable
|
|
|
+ placeholder="请选择"
|
|
|
+ size="mini"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in stateSelect"
|
|
|
+ :key="item.successFlag"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.successFlag"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item> -->
|
|
|
+ <!-- <el-form-item label="院区:" prop="subHospitalName">
|
|
|
+ <el-input
|
|
|
+ size="mini"
|
|
|
+ v-model="filter.subHospitalName"
|
|
|
+ placeholder="输入规则名称"
|
|
|
+ clearable
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item> -->
|
|
|
+ <!-- <el-form-item>
|
|
|
+ <el-button size="mini" @click="filterDatas">确认</el-button>
|
|
|
+ </el-form-item> -->
|
|
|
+ </el-form>
|
|
|
+ <el-form class="secLine" :rules="rulesForm" :inline="true">
|
|
|
+ <el-form-item label="状态:">
|
|
|
+ <el-select
|
|
|
+ v-model="filter.successFlag"
|
|
|
+ clearable
|
|
|
+ placeholder="请选择"
|
|
|
+ size="mini"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in stateSelect"
|
|
|
+ :key="item.successFlag"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.successFlag"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="院区:" prop="subHospitalName">
|
|
|
+ <el-input
|
|
|
+ size="mini"
|
|
|
+ v-model="filter.subHospitalName"
|
|
|
+ placeholder="输入规则名称"
|
|
|
+ clearable
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button size="mini" @click="filterDatas">检索</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </crumbs>
|
|
|
+ <div class="contents knowledgeContents">
|
|
|
+ <el-table :data="list" border style="width: 100%">
|
|
|
+ <!-- <el-table-column type="index" :index="indexMethod" label="编号" width="60"></el-table-column> -->
|
|
|
+ <el-table-column prop="patientId" label="患者标识" align="center" width="200">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <!--<el-tooltip
|
|
|
+ v-if="scope.row.parDescription.length>8"
|
|
|
+ class="item"
|
|
|
+ effect="dark"
|
|
|
+ :content="scope.row.parDescription"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <span>{{scope.row.parDescription.slice(0,8)+'...'}}</span>
|
|
|
+ </el-tooltip>-->
|
|
|
+ <span>{{ scope.row.patientId === null? '-' : scope.row.patientId }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="sceneName" label="服务名" align="center">
|
|
|
+ <template slot-scope="scope">{{ scope.row.sceneName }}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="parConceptName" label="请求内容" align="center" width="100">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ @click="reqData(scope.row)"
|
|
|
+ >详情</el-button
|
|
|
+ >
|
|
|
+ <!--<el-tooltip
|
|
|
+ v-if="scope.row.parConceptName.length>8"
|
|
|
+ class="item"
|
|
|
+ effect="dark"
|
|
|
+ :content="scope.row.parConceptName"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <span>{{scope.row.parConceptName.slice(0,8)+'...'}}</span>
|
|
|
+ </el-tooltip>-->
|
|
|
+ <!-- <span>{{scope.row.parConceptName}}</span> -->
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="parLibTypeName" label="响应内容" align="center" width="100">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ @click="respData(scope.row)"
|
|
|
+ >详情</el-button
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="gmtReq"
|
|
|
+ label="接收时间"
|
|
|
+ align="center"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="gmtResp"
|
|
|
+ label="响应时间"
|
|
|
+ align="center"
|
|
|
+ ></el-table-column>
|
|
|
+ <!-- <el-table-column prop="modifierName" label="操作人">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tooltip
|
|
|
+ v-if="scope.row.modifierName&&scope.row.modifierName.length>8"
|
|
|
+ class="item"
|
|
|
+ effect="dark"
|
|
|
+ :content="scope.row.modifierName"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <span>{{(scope.row.modifierName||'').slice(0,8)+'...'}}</span>
|
|
|
+ </el-tooltip>
|
|
|
+ <span
|
|
|
+ v-if="scope.row.modifierName&&scope.row.modifierName.length<9"
|
|
|
+ >{{scope.row.modifierName}}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column> -->
|
|
|
+ <el-table-column
|
|
|
+ prop="execTime"
|
|
|
+ label="耗时(ms)"
|
|
|
+ align="center"
|
|
|
+ width="100"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column label="状态" width="100" fixed="right" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ @click="editData(scope.row.parId)"
|
|
|
+ align="center"
|
|
|
+ :style="scope.row.successFlag === 1? 'color: #48c5d7;' : 'color:#ff0000'"
|
|
|
+ >
|
|
|
+ {{ scope.row.successFlag === 1 ? "成功" : "失败" }}
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-pagination
|
|
|
+ :current-page.sync="currentPage"
|
|
|
+ @current-change="currentChange"
|
|
|
+ background
|
|
|
+ :page-size="pageSize"
|
|
|
+ :page-sizes="pageSizeArr"
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ :layout="pageLayout"
|
|
|
+ :total="total"
|
|
|
+ ></el-pagination>
|
|
|
+ <!-- 请求弹出框 -->
|
|
|
+ <el-dialog
|
|
|
+ title="请求日志信息"
|
|
|
+ :visible.sync="reqVisible"
|
|
|
+ width="450px"
|
|
|
+ height="280px"
|
|
|
+ >
|
|
|
+ <div>{{params}}</div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <!-- 响应内容弹出框 -->
|
|
|
+ <el-dialog
|
|
|
+ title="响应日志信息"
|
|
|
+ :visible.sync="respVisible"
|
|
|
+ width="450px"
|
|
|
+ height="280px"
|
|
|
+ >
|
|
|
+ <div>{{result}}</div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import api from "@api/knowledgeLib.js";
|
|
|
+import config from "@api/config.js";
|
|
|
+import utils from "@api/utils.js";
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: "ZskRuleManager",
|
|
|
+ data: function () {
|
|
|
+ return {
|
|
|
+ list: [],
|
|
|
+ value2: "",
|
|
|
+ stateSelect: [
|
|
|
+ { successFlag: "", name: "全部" },
|
|
|
+ { successFlag: 1, name: "成功" },
|
|
|
+ { successFlag: 0, name: "失败" },
|
|
|
+ ],
|
|
|
+ ruleTypeList: [],
|
|
|
+ searched: false,
|
|
|
+ filter: {
|
|
|
+ successFlag: "",
|
|
|
+ patientId: "",
|
|
|
+ sceneName: "",
|
|
|
+ subHospitalName: '' // 院区
|
|
|
+ },
|
|
|
+ cacheData: {},
|
|
|
+ currentPage: 1,
|
|
|
+ pageSize: config.pageSize,
|
|
|
+ pageSizeArr: config.pageSizeArr,
|
|
|
+ pageLayout: config.pageLayout,
|
|
|
+ total: 0,
|
|
|
+ titleWidth: "970px", //头部最小宽度
|
|
|
+ recepDate: '', // 接收日期
|
|
|
+ resDate: '', // 响应日期
|
|
|
+ reqVisible: false,
|
|
|
+ respVisible: false,
|
|
|
+ params: '',
|
|
|
+ result: '',
|
|
|
+ rulesForm: {
|
|
|
+ patientId: [
|
|
|
+ { required: true, message: '请输入患者标识名称', trigger: 'blur' },
|
|
|
+ { min: 1, max: 50, message: '患者标识字符长度在 1~50 个字符', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ sceneName: [
|
|
|
+ { required: true, message: '请输入服务名称', trigger: 'blur' },
|
|
|
+ { min: 1, max: 50, message: '服务名称字符长度在 1~50 个字符', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ subHospitalName: [
|
|
|
+ { required: true, message: '请输入院区名称', trigger: 'blur' },
|
|
|
+ { min: 1, max: 50, message: '院区名称字符长度在 1~50 个字符', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ }
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ let that = this;
|
|
|
+ //返回时避免参数未赋值就获取列表
|
|
|
+ setTimeout(function () {
|
|
|
+ that.getDataList();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ filter: {
|
|
|
+ handler: function () {
|
|
|
+ this.searched = false;
|
|
|
+ },
|
|
|
+ deep: true,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ // beforeRouteEnter(to, from, next) {
|
|
|
+ // next(vm => {
|
|
|
+ // //const pm = to.param;
|
|
|
+ // Object.assign(vm, to.params);
|
|
|
+ // vm.inCurrentPage=to.params.currentPage;
|
|
|
+ // })
|
|
|
+ // },
|
|
|
+ methods: {
|
|
|
+ // 请求内容展示
|
|
|
+ reqData(row){
|
|
|
+ console.log('请求内容:', row);
|
|
|
+ this.reqVisible = true
|
|
|
+ this.params = row.params
|
|
|
+ console.log('请求内容:', this.params);
|
|
|
+ },
|
|
|
+
|
|
|
+ // 响应内容展示
|
|
|
+ respData(row){
|
|
|
+ console.log("响应内容:", row);
|
|
|
+ this.respVisible = true
|
|
|
+ this.result = row.result
|
|
|
+ },
|
|
|
+
|
|
|
+ statusTrans(type) {
|
|
|
+ const obj = this.ruleTypeList.find((it) => it.type === type);
|
|
|
+ return obj && obj.name;
|
|
|
+ },
|
|
|
+ handleSizeChange(val) {
|
|
|
+ this.pageSize = val;
|
|
|
+ this.currentPage = utils.getCurrentPage(
|
|
|
+ this.currentPage,
|
|
|
+ this.total,
|
|
|
+ this.pageSize
|
|
|
+ );
|
|
|
+ this.getDataList();
|
|
|
+ },
|
|
|
+ filterDatas() {
|
|
|
+ this.currentPage = 1;
|
|
|
+ this.getDataList(1);
|
|
|
+ },
|
|
|
+
|
|
|
+ getDataList(flag, isTurnPage) {
|
|
|
+ const params = this.getFilterItems(isTurnPage);
|
|
|
+ this.searched = true;
|
|
|
+ const loading = this.$loading({
|
|
|
+ lock: true,
|
|
|
+ text: "Loading",
|
|
|
+ spinner: "el-icon-loading",
|
|
|
+ background: "rgba(0, 0, 0, 0.7)",
|
|
|
+ });
|
|
|
+ api
|
|
|
+ .getCallRecord(params)
|
|
|
+ .then((res) => {
|
|
|
+ loading.close();
|
|
|
+ if (res.data.code == "0") {
|
|
|
+ const data = res.data.data;
|
|
|
+ for (let j = 0; j < data.records.length; j++) {
|
|
|
+ data.records[j].successFlag == "1" ? "成功" : "失败";
|
|
|
+ }
|
|
|
+ this.list = data.records;
|
|
|
+ console.log("调用接口数据:", this.list);
|
|
|
+ if (!flag) {
|
|
|
+ //搜索时不缓存
|
|
|
+ this.cacheData[params.current] = data.records;
|
|
|
+ } else {
|
|
|
+ this.cacheData = {};
|
|
|
+ }
|
|
|
+ this.total = data.total;
|
|
|
+ if (this.inCurrentPage !== undefined) {
|
|
|
+ this.currentPage = this.inCurrentPage;
|
|
|
+ this.inCurrentPage = undefined;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.warning(res.data.msg || "获取列表数据失败");
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ loading.close();
|
|
|
+ console.log(error);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getFilterItems(isTurnPage) {
|
|
|
+ //翻页时筛选条件没点确定则清空
|
|
|
+ if (isTurnPage && !this.searched) {
|
|
|
+ this.clearFilter();
|
|
|
+ }
|
|
|
+ const param = {
|
|
|
+ current: this.inCurrentPage || this.currentPage,
|
|
|
+ size: this.pageSize,
|
|
|
+ patientId: this.filter.patientId === null ? '-' : this.filter.patientId, // 患者标识
|
|
|
+ sceneName: this.filter.sceneName, // 服务名
|
|
|
+ successFlag: this.filter.successFlag,
|
|
|
+ startGmtReq: this.recepDate ? this.recepDate[0] : null,
|
|
|
+ endGmtReq: this.recepDate ? this.recepDate[1] : null,
|
|
|
+ startGmtResp: this.resDate ? this.resDate[0] : null,
|
|
|
+ endGmtResp: this.resDate ? this.resDate[1] : null,
|
|
|
+ subHospitalName: this.filter.subHospitalName.trim()
|
|
|
+ };
|
|
|
+ return param;
|
|
|
+ },
|
|
|
+ indexMethod(index) {
|
|
|
+ return (this.currentPage - 1) * this.pageSize + index + 1;
|
|
|
+ },
|
|
|
+ currentChange(next) {
|
|
|
+ this.currentPage = next;
|
|
|
+ /*if (this.cacheData[next]) { //如果已请求过该页数据,则使用缓存不重复请求
|
|
|
+ this.list = this.cacheData[next];
|
|
|
+ } else {*/
|
|
|
+ this.getDataList(1, true);
|
|
|
+ //}
|
|
|
+ },
|
|
|
+ warning(msg, type) {
|
|
|
+ this.$message({
|
|
|
+ showClose: true,
|
|
|
+ message: msg,
|
|
|
+ type: type || "warning",
|
|
|
+ });
|
|
|
+ },
|
|
|
+ showConfirmDialog(msg, resolve) {
|
|
|
+ this.$alert(msg, "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ type: "warning",
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ resolve();
|
|
|
+ })
|
|
|
+ .catch(() => {});
|
|
|
+ },
|
|
|
+ showDelDialog(row, isDelete) {
|
|
|
+ const params = {
|
|
|
+ id: row.parId,
|
|
|
+ };
|
|
|
+ const txt = row.parStatus === 0 ? "重新启用" : "禁用";
|
|
|
+ const warningTxt = isDelete
|
|
|
+ ? "是否删除该规则?可能对现有系统造成影响"
|
|
|
+ : "是否" + txt + "该条数据?";
|
|
|
+ const handleFn = isDelete
|
|
|
+ ? api.deleteRule
|
|
|
+ : row.parStatus === 0
|
|
|
+ ? api.saveRuleApply
|
|
|
+ : api.deleteRuleApply;
|
|
|
+ this.showConfirmDialog(warningTxt, () => {
|
|
|
+ handleFn(params)
|
|
|
+ .then((res) => {
|
|
|
+ if (res.data.code == "0") {
|
|
|
+ if (!this.searched) {
|
|
|
+ //未点确认时清空搜索条件
|
|
|
+ this.clearFilter();
|
|
|
+ }
|
|
|
+ if (isDelete) {
|
|
|
+ //恢复成功后跳转到筛选条件的首页
|
|
|
+ this.currentPage = 1;
|
|
|
+ } else {
|
|
|
+ if (this.filter.parStatus !== "" && this.list.length === 1) {
|
|
|
+ //有启用状态筛选条件且当前页只有最后一条数据删除时,删除成功后跳转到前一页
|
|
|
+ this.currentPage =
|
|
|
+ this.currentPage === 1 ? 1 : this.currentPage - 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.warning(res.data.msg || "操作成功", "success");
|
|
|
+ this.getDataList();
|
|
|
+ } else {
|
|
|
+ this.warning(res.data.msg);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ this.warning(error);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ clearFilter() {
|
|
|
+ this.filter = {
|
|
|
+ successFlag: "",
|
|
|
+ patientId: "",
|
|
|
+ sceneName: "",
|
|
|
+ subHospitalName: "",
|
|
|
+ recepDate: "",
|
|
|
+ resDate: ""
|
|
|
+ };
|
|
|
+ },
|
|
|
+ update() {
|
|
|
+ const loading = this.$loading({
|
|
|
+ lock: true,
|
|
|
+ text: "Loading",
|
|
|
+ spinner: "el-icon-loading",
|
|
|
+ background: "rgba(0, 0, 0, 0.7)",
|
|
|
+ });
|
|
|
+ api
|
|
|
+ .zskUpdateAll()
|
|
|
+ .then((res) => {
|
|
|
+ loading.close();
|
|
|
+ if (res.data.code == "0") {
|
|
|
+ this.warning("更新成功", "success");
|
|
|
+ this.getDataList();
|
|
|
+ } else {
|
|
|
+ this.warning(res.data.msg || "更新失败,请重试");
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ loading.close();
|
|
|
+ this.warning("更新失败,请重试");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped>
|
|
|
+@import "../../less/admin.less";
|
|
|
+/deep/ .container.knowledgeTitle {
|
|
|
+ height: 80px;
|
|
|
+}
|
|
|
+/deep/ .contents.knowledgeContents {
|
|
|
+ padding: 104px 20px 0;
|
|
|
+}
|
|
|
+/deep/ .secLine.el-form {
|
|
|
+ float: right;
|
|
|
+ display: block;
|
|
|
+ position: relative;
|
|
|
+ top: -5px;
|
|
|
+}
|
|
|
+.delete {
|
|
|
+ color: red;
|
|
|
+}
|
|
|
+.review {
|
|
|
+ color: #22ccc8;
|
|
|
+}
|
|
|
+.el-table .cell {
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: nowrap;
|
|
|
+}
|
|
|
+#upFile {
|
|
|
+ display: none !important;
|
|
|
+}
|
|
|
+.unvailable {
|
|
|
+ color: #fe7d3d;
|
|
|
+ &:hover {
|
|
|
+ color: #f19061;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.demo-form-inline {
|
|
|
+ .el-input--mini {
|
|
|
+ /deep/.el-input__inner {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.el-date-editor {
|
|
|
+ .el-input {
|
|
|
+ width: 150px !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.secLine.el-form {
|
|
|
+ position: relative;
|
|
|
+ top: -10px;
|
|
|
+ color: #ff0000;
|
|
|
+}
|
|
|
+
|
|
|
+</style>
|