Explorar el Código

日期传参问题

zsw007 hace 3 años
padre
commit
39fdae0d46

+ 567 - 0
.history/src/components/callRecord/CallRecordManager_20211101160501.vue

@@ -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="接收时间: ">
+          &nbsp;&nbsp;
+          <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="响应时间: "
+          >&nbsp;&nbsp;
+          <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 }}</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, // 患者标识
+        sceneName: this.filter.sceneName, // 服务名
+        successFlag: this.filter.successFlag,
+        startGmtReq: this.recepData ? this.recepData[0] : null,
+        endGmtReq: this.recepData ? this.recepData[1] : null,
+        startGmtResp: this.resData ? this.resData[0] : null,
+        endGmtResp: this.resData ? this.resData[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>

+ 567 - 0
.history/src/components/callRecord/CallRecordManager_20211101161133.vue

@@ -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="接收时间: ">
+          &nbsp;&nbsp;
+          <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="响应时间: "
+          >&nbsp;&nbsp;
+          <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 }}</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, // 患者标识
+        sceneName: this.filter.sceneName, // 服务名
+        successFlag: this.filter.successFlag,
+        startGmtReq: this.recepDate ? this.recepData[0] : null,
+        endGmtReq: this.recepDate ? this.recepData[1] : null,
+        startGmtResp: this.resDate ? this.resData[0] : null,
+        endGmtResp: this.resDate ? this.resData[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>

+ 567 - 0
.history/src/components/callRecord/CallRecordManager_20211101161314.vue

@@ -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="接收时间: ">
+          &nbsp;&nbsp;
+          <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="响应时间: "
+          >&nbsp;&nbsp;
+          <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 }}</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, // 患者标识
+        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>

+ 567 - 0
.history/src/components/callRecord/CallRecordManager_20211101161922.vue

@@ -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="接收时间: ">
+          &nbsp;&nbsp;
+          <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="响应时间: "
+          >&nbsp;&nbsp;
+          <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 }}</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>

+ 567 - 0
.history/src/components/callRecord/CallRecordManager_20211101162159.vue

@@ -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="接收时间: ">
+          &nbsp;&nbsp;
+          <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="响应时间: "
+          >&nbsp;&nbsp;
+          <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 }}</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>

+ 567 - 0
.history/src/components/callRecord/CallRecordManager_20211101162307.vue

@@ -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="接收时间: ">
+          &nbsp;&nbsp;
+          <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="响应时间: "
+          >&nbsp;&nbsp;
+          <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 }}</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>

+ 567 - 0
.history/src/components/callRecord/CallRecordManager_20211101162353.vue

@@ -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="接收时间: ">
+          &nbsp;&nbsp;
+          <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="响应时间: "
+          >&nbsp;&nbsp;
+          <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>

+ 567 - 0
.history/src/components/callRecord/CallRecordManager_20211101162607.vue

@@ -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="接收时间: ">
+          &nbsp;&nbsp;
+          <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="响应时间: "
+          >&nbsp;&nbsp;
+          <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, // 患者标识
+        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>

+ 5 - 5
src/components/callRecord/CallRecordManager.vue

@@ -120,7 +120,7 @@
             >
               <span>{{scope.row.parDescription.slice(0,8)+'...'}}</span>
             </el-tooltip>-->
-            <span>{{ scope.row.patientId }}</span>
+            <span>{{ scope.row.patientId === null? '-' : scope.row.patientId }}</span>
           </template>
         </el-table-column>
         <el-table-column prop="sceneName" label="服务名" align="center">
@@ -395,10 +395,10 @@ export default {
         patientId: this.filter.patientId, // 患者标识
         sceneName: this.filter.sceneName, // 服务名
         successFlag: this.filter.successFlag,
-        startGmtReq: this.recepData ? this.recepData[0] : null,
-        endGmtReq: this.recepData ? this.recepData[1] : null,
-        startGmtResp: this.resData ? this.resData[0] : null,
-        endGmtResp: this.resData ? this.resData[1] : null,
+        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;