CallRecordManager.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792
  1. <template>
  2. <div>
  3. <crumbs title="调用记录" style="min-width: 980px" class="knowledgeTitle">
  4. <el-button size="mini" type="primary" @click="getInterface" class="btn"
  5. >各科室接口调用统计</el-button
  6. >
  7. <el-form :inline="true" class="demo-form-inline">
  8. <el-form-item label="接收时间: ">
  9. &nbsp;&nbsp;
  10. <el-date-picker
  11. v-model="filter.recepDate"
  12. type="datetimerange"
  13. align="right"
  14. size="small"
  15. start-placeholder="开始时间"
  16. end-placeholder="结束时间"
  17. style="width: 320px"
  18. :class="filter.recepDate === null ? 'active' : ''"
  19. :default-time="['00:00:00', '23:59:59']"
  20. format="yyyy-MM-dd HH:mm"
  21. value-format="yyyy-MM-dd HH:mm"
  22. >
  23. </el-date-picker>
  24. </el-form-item>
  25. <el-form-item label="响应时间: "
  26. >&nbsp;&nbsp;
  27. <el-date-picker
  28. v-model="filter.resDate"
  29. type="datetimerange"
  30. align="right"
  31. size="small"
  32. start-placeholder="开始时间"
  33. end-placeholder="结束时间"
  34. style="width: 320px"
  35. :default-time="['00:00:00', '23:59:59']"
  36. format="yyyy-MM-dd HH:mm"
  37. value-format="yyyy-MM-dd HH:mm:ss"
  38. unlink-panels
  39. >
  40. </el-date-picker>
  41. </el-form-item>
  42. <!-- <el-form-item label="状态:">
  43. <el-select
  44. v-model="filter.successFlag"
  45. clearable
  46. placeholder="请选择"
  47. size="mini"
  48. >
  49. <el-option
  50. v-for="item in stateSelect"
  51. :key="item.successFlag"
  52. :label="item.name"
  53. :value="item.successFlag"
  54. ></el-option>
  55. </el-select>
  56. </el-form-item> -->
  57. <!-- <el-form-item label="院区:" prop="subHospitalName">
  58. <el-input
  59. size="mini"
  60. v-model="filter.subHospitalName"
  61. placeholder="输入规则名称"
  62. clearable
  63. ></el-input>
  64. </el-form-item> -->
  65. <!-- <el-form-item>
  66. <el-button size="mini" @click="filterDatas">确认</el-button>
  67. </el-form-item> -->
  68. </el-form>
  69. <el-form class="secLine" :inline="true">
  70. <el-form-item label="患者标识:" prop="patientId">
  71. <el-input
  72. size="mini"
  73. v-model="filter.patientId"
  74. placeholder="请输入患者标识"
  75. clearable
  76. maxlength="50"
  77. ></el-input>
  78. </el-form-item>
  79. <el-form-item label="科室:" prop="deptName">
  80. <el-input
  81. size="mini"
  82. v-model="filter.deptName"
  83. placeholder="请输入科室"
  84. clearable
  85. maxlength="50"
  86. ></el-input>
  87. </el-form-item>
  88. <el-form-item label="服务名:" prop="sceneName">
  89. <el-input
  90. size="mini"
  91. v-model="filter.sceneName"
  92. placeholder="请输入服务名"
  93. clearable
  94. maxlength="50"
  95. ></el-input>
  96. </el-form-item>
  97. <el-form-item label="状态:">
  98. <el-select
  99. v-model="filter.successFlag"
  100. clearable
  101. placeholder="请选择"
  102. size="mini"
  103. >
  104. <el-option
  105. v-for="item in stateSelect"
  106. :key="item.successFlag"
  107. :label="item.name"
  108. :value="item.successFlag"
  109. ></el-option>
  110. </el-select>
  111. </el-form-item>
  112. <el-form-item label="子院区:" prop="subHospitalName">
  113. <el-input
  114. size="mini"
  115. v-model="filter.subHospitalName"
  116. placeholder="请输入子院区"
  117. clearable
  118. maxlength="50"
  119. ></el-input>
  120. </el-form-item>
  121. <el-form-item>
  122. <el-button size="mini" @click="filterDatas">检索</el-button>
  123. </el-form-item>
  124. </el-form>
  125. </crumbs>
  126. <div class="contents knowledgeContents">
  127. <el-table :data="list" border style="width: 100%" size="mini">
  128. <!-- <el-table-column type="index" :index="indexMethod" label="编号" width="60"></el-table-column> -->
  129. <el-table-column label="患者标识" align="center" width="200">
  130. <template slot-scope="scope">
  131. <!--<el-tooltip
  132. v-if="scope.row.parDescription.length>8"
  133. class="item"
  134. effect="dark"
  135. :content="scope.row.parDescription"
  136. placement="top"
  137. >
  138. <span>{{scope.row.parDescription.slice(0,8)+'...'}}</span>
  139. </el-tooltip>-->
  140. <span>{{
  141. scope.row.patientId === null ? "-" : scope.row.patientId
  142. }}</span>
  143. </template>
  144. </el-table-column>
  145. <el-table-column label="科室" align="center">
  146. <template slot-scope="scope">{{
  147. scope.row.deptName || "-"
  148. }}</template>
  149. </el-table-column>
  150. <el-table-column label="服务名" align="center">
  151. <template slot-scope="scope">{{ scope.row.sceneName }}</template>
  152. </el-table-column>
  153. <el-table-column
  154. prop="parConceptName"
  155. label="请求内容"
  156. align="center"
  157. width="100"
  158. >
  159. <template slot-scope="scope">
  160. <el-button type="text" size="small" @click="reqData(scope.row)"
  161. >详情</el-button
  162. >
  163. <!--<el-tooltip
  164. v-if="scope.row.parConceptName.length>8"
  165. class="item"
  166. effect="dark"
  167. :content="scope.row.parConceptName"
  168. placement="top"
  169. >
  170. <span>{{scope.row.parConceptName.slice(0,8)+'...'}}</span>
  171. </el-tooltip>-->
  172. <!-- <span>{{scope.row.parConceptName}}</span> -->
  173. </template>
  174. </el-table-column>
  175. <el-table-column
  176. prop="parLibTypeName"
  177. label="响应内容"
  178. align="center"
  179. width="100"
  180. >
  181. <template slot-scope="scope">
  182. <el-button type="text" size="small" @click="respData(scope.row)"
  183. >详情</el-button
  184. >
  185. </template>
  186. </el-table-column>
  187. <el-table-column
  188. prop="gmtReq"
  189. label="接收时间"
  190. align="center"
  191. ></el-table-column>
  192. <el-table-column
  193. prop="gmtResp"
  194. label="响应时间"
  195. align="center"
  196. ></el-table-column>
  197. <!-- <el-table-column prop="modifierName" label="操作人">
  198. <template slot-scope="scope">
  199. <el-tooltip
  200. v-if="scope.row.modifierName&&scope.row.modifierName.length>8"
  201. class="item"
  202. effect="dark"
  203. :content="scope.row.modifierName"
  204. placement="top"
  205. >
  206. <span>{{(scope.row.modifierName||'').slice(0,8)+'...'}}</span>
  207. </el-tooltip>
  208. <span
  209. v-if="scope.row.modifierName&&scope.row.modifierName.length<9"
  210. >{{scope.row.modifierName}}</span>
  211. </template>
  212. </el-table-column> -->
  213. <el-table-column
  214. prop="execTime"
  215. label="耗时(ms)"
  216. align="center"
  217. width="100"
  218. ></el-table-column>
  219. <el-table-column label="状态" width="100" align="center">
  220. <template slot-scope="scope">
  221. <span>
  222. {{ scope.row.successFlag === 1 ? "成功" : "失败" }}
  223. </span>
  224. </template>
  225. </el-table-column>
  226. <el-table-column
  227. prop="subHospitalName"
  228. label="子院区"
  229. align="center"
  230. width="180"
  231. show-overflow-tooltip
  232. >
  233. <template slot-scope="scope">
  234. <span>
  235. {{
  236. scope.row.subHospitalName === null
  237. ? "-"
  238. : scope.row.subHospitalName
  239. }}
  240. </span>
  241. </template>
  242. </el-table-column>
  243. <el-table-column
  244. prop="subHospitalCode"
  245. label="子院区编码"
  246. align="center"
  247. width="100"
  248. >
  249. <template slot-scope="scope">
  250. <span>
  251. {{
  252. scope.row.subHospitalCode === null
  253. ? "-"
  254. : scope.row.subHospitalCode
  255. }}
  256. </span>
  257. </template>
  258. </el-table-column>
  259. </el-table>
  260. <el-pagination
  261. :current-page.sync="currentPage"
  262. @current-change="currentChange"
  263. background
  264. :page-size="pageSize"
  265. :page-sizes="pageSizeArr"
  266. @size-change="handleSizeChange"
  267. :layout="pageLayout"
  268. :total="total"
  269. ></el-pagination>
  270. <!-- 请求弹出框 -->
  271. <el-dialog title="请求日志信息" :visible.sync="reqVisible" width="660px">
  272. <div class="request-item">
  273. {{ params }}
  274. </div>
  275. </el-dialog>
  276. <!-- 响应内容弹出框 -->
  277. <el-dialog title="响应日志信息" :visible.sync="respVisible" width="660px">
  278. <div class="request-item">{{ result }}</div>
  279. </el-dialog>
  280. <el-dialog
  281. @close="closeInterface"
  282. title="各科室接口调用统计"
  283. :visible.sync="dialogTableVisible"
  284. width="660px"
  285. >
  286. <div class="Interface">
  287. <el-form :inline="true">
  288. <el-form-item label="日期:">
  289. <el-date-picker
  290. v-model="time"
  291. type="daterange"
  292. align="right"
  293. size="small"
  294. start-placeholder="输入起始日期"
  295. end-placeholder="输入结束日期"
  296. style="width: 250px"
  297. :default-time="['00:00:00', '23:59:59']"
  298. format="yyyy-MM-dd"
  299. value-format="yyyy-MM-dd HH:mm:ss"
  300. >
  301. </el-date-picker>
  302. </el-form-item>
  303. <el-form-item>
  304. <el-button size="mini" @click="getSure">检索</el-button>
  305. </el-form-item>
  306. </el-form>
  307. <el-table
  308. :data="gridData"
  309. border
  310. size="mini"
  311. style="width: 100%"
  312. height="400px"
  313. >
  314. <el-table-column property="deptName" label="科室">
  315. <template slot-scope="scope">
  316. <span>
  317. {{ scope.row.deptName || "-" }}
  318. </span>
  319. </template>
  320. </el-table-column>
  321. <el-table-column
  322. property="sums"
  323. label="接口调用总次数"
  324. ></el-table-column>
  325. </el-table>
  326. </div>
  327. <div class="foot">
  328. <el-button size="mini" type="primary" @click="closeInterface"
  329. >关闭</el-button
  330. >
  331. </div>
  332. </el-dialog>
  333. </div>
  334. </div>
  335. </template>
  336. <script>
  337. import api from "@api/knowledgeLib.js";
  338. import config from "@api/config.js";
  339. import utils from "@api/utils.js";
  340. export default {
  341. name: "ZskRuleManager",
  342. data: function () {
  343. return {
  344. list: [],
  345. value2: "",
  346. stateSelect: [
  347. { successFlag: "", name: "全部" },
  348. { successFlag: 1, name: "成功" },
  349. { successFlag: 0, name: "失败" },
  350. ],
  351. ruleTypeList: [],
  352. searched: false,
  353. filter: {
  354. successFlag: "",
  355. patientId: "",
  356. sceneName: "",
  357. deptName: "", //科室
  358. subHospitalName: "", // 子院区
  359. recepDate: null, // 接收日期
  360. resDate: null, // 响应日期
  361. },
  362. cacheData: {},
  363. currentPage: 1,
  364. pageSize: config.pageSize,
  365. pageSizeArr: config.pageSizeArr,
  366. pageLayout: config.pageLayout,
  367. total: 0,
  368. titleWidth: "970px", //头部最小宽度
  369. reqVisible: false,
  370. respVisible: false,
  371. params: "",
  372. result: "",
  373. gmtReq: "",
  374. dialogTableVisible: false,
  375. time: null,
  376. gridData: [],
  377. };
  378. },
  379. created() {
  380. let that = this;
  381. //返回时避免参数未赋值就获取列表
  382. setTimeout(function () {
  383. that.getDataList();
  384. });
  385. },
  386. computed: {
  387. // pickerOptions: {
  388. // disabledDate(time) {
  389. // return time.getTime() > Date.now()
  390. // }
  391. // }
  392. },
  393. watch: {
  394. filter: {
  395. handler: function () {
  396. this.searched = false;
  397. },
  398. deep: true,
  399. },
  400. },
  401. // beforeRouteEnter(to, from, next) {
  402. // next(vm => {
  403. // //const pm = to.param;
  404. // Object.assign(vm, to.params);
  405. // vm.inCurrentPage=to.params.currentPage;
  406. // })
  407. // },
  408. methods: {
  409. // 请求内容展示
  410. reqData(row) {
  411. console.log("请求内容:", row);
  412. this.reqVisible = true;
  413. this.params = row.params;
  414. console.log("请求内容:", this.params);
  415. },
  416. // 响应内容展示
  417. respData(row) {
  418. console.log("响应内容:", row);
  419. this.respVisible = true;
  420. this.result = row.result;
  421. },
  422. statusTrans(type) {
  423. const obj = this.ruleTypeList.find((it) => it.type === type);
  424. return obj && obj.name;
  425. },
  426. handleSizeChange(val) {
  427. this.pageSize = val;
  428. this.currentPage = utils.getCurrentPage(
  429. this.currentPage,
  430. this.total,
  431. this.pageSize
  432. );
  433. this.getDataList();
  434. },
  435. filterDatas() {
  436. this.currentPage = 1;
  437. this.getDataList(1);
  438. },
  439. //各科室接口调用统计
  440. getInterface() {
  441. this.dialogTableVisible = true;
  442. this.getSure();
  443. },
  444. closeInterface() {
  445. this.dialogTableVisible = false;
  446. this.time = null;
  447. this.gridData = [];
  448. },
  449. getSure() {
  450. let params = {
  451. startGmtReq: this.time ? this.time[0] : "",
  452. endGmtReq: this.time ? this.time[1] : "",
  453. };
  454. api
  455. .getStatistByDept(params)
  456. .then((res) => {
  457. if (res.data.code == "0") {
  458. this.gridData = res.data.data;
  459. } else {
  460. this.warning(res.data.msg || "获取列表数据失败");
  461. }
  462. })
  463. .catch((error) => {
  464. console.log(error);
  465. });
  466. },
  467. getDataList(flag, isTurnPage) {
  468. const params = this.getFilterItems(isTurnPage);
  469. this.searched = true;
  470. const loading = this.$loading({
  471. lock: true,
  472. text: "Loading",
  473. spinner: "el-icon-loading",
  474. background: "rgba(0, 0, 0, 0.7)",
  475. });
  476. api
  477. .getCallRecord(params)
  478. .then((res) => {
  479. loading.close();
  480. if (res.data.code == "0") {
  481. const data = res.data.data;
  482. console.log("data???", data);
  483. for (let j = 0; j < data.records.length; j++) {
  484. data.records[j].successFlag == "1" ? "成功" : "失败";
  485. }
  486. this.list = data.records;
  487. console.log("调用接口数据:", this.list);
  488. if (!flag) {
  489. //搜索时不缓存
  490. this.cacheData[params.current] = data.records;
  491. } else {
  492. this.cacheData = {};
  493. }
  494. this.total = data.total;
  495. console.log("total????", this.total);
  496. if (this.inCurrentPage !== undefined) {
  497. this.currentPage = this.inCurrentPage;
  498. this.inCurrentPage = undefined;
  499. }
  500. } else {
  501. this.warning(res.data.msg || "获取列表数据失败");
  502. }
  503. })
  504. .catch((error) => {
  505. loading.close();
  506. console.log(error);
  507. });
  508. },
  509. getFilterItems(isTurnPage) {
  510. //翻页时筛选条件没点确定则清空
  511. if (isTurnPage && !this.searched) {
  512. this.clearFilter();
  513. }
  514. // 接收时间 开始时间补0 结束时间补59
  515. let startGmtReq, endGmtReq, startGmtResp, endGmtResp;
  516. if (this.filter.recepDate) {
  517. console.log(this.filter.recepDate[0].split(" "));
  518. if (
  519. this.filter.recepDate[0].split(0, 9) ===
  520. this.filter.recepDate[1].split(0, 9)
  521. ) {
  522. if (this.filter.recepDate[0]) {
  523. startGmtReq = this.filter.recepDate[0] + ":00";
  524. endGmtReq = this.filter.recepDate[1] + ":59";
  525. }
  526. } else {
  527. startGmtReq = this.filter.recepDate[0] + ":00";
  528. endGmtReq = this.filter.recepDate[1] + ":59";
  529. }
  530. }
  531. // 响应时间 开始时间补0 结束时间补59
  532. if (this.filter.resDate) {
  533. if (
  534. this.filter.resDate[0].split(0, 9) ===
  535. this.filter.resDate[1].split(0, 9)
  536. ) {
  537. if (this.filter.resDate[0]) {
  538. startGmtResp = this.filter.resDate[0] + ":00";
  539. endGmtResp = this.filter.resDate[1] + ":59";
  540. }
  541. } else {
  542. startGmtResp = this.filter.resDate[0] + ":00";
  543. endGmtResp = this.filter.resDate[1] + ":59";
  544. }
  545. }
  546. const param = {
  547. current: this.inCurrentPage || this.currentPage,
  548. size: this.pageSize,
  549. patientId: this.filter.patientId.trim(), // 患者标识
  550. sceneName: this.filter.sceneName.trim(), // 服务名
  551. deptName: this.filter.deptName.trim(), // 服务名
  552. successFlag: this.filter.successFlag,
  553. startGmtReq: startGmtReq,
  554. endGmtReq: endGmtReq,
  555. startGmtResp: startGmtResp,
  556. endGmtResp: endGmtResp,
  557. subHospitalName: this.filter.subHospitalName.trim(), // 子院区
  558. };
  559. return param;
  560. },
  561. indexMethod(index) {
  562. return (this.currentPage - 1) * this.pageSize + index + 1;
  563. },
  564. currentChange(next) {
  565. this.currentPage = next;
  566. /*if (this.cacheData[next]) { //如果已请求过该页数据,则使用缓存不重复请求
  567. this.list = this.cacheData[next];
  568. } else {*/
  569. this.getDataList(1, true);
  570. //}
  571. },
  572. warning(msg, type) {
  573. this.$message({
  574. showClose: true,
  575. message: msg,
  576. type: type || "warning",
  577. });
  578. },
  579. showConfirmDialog(msg, resolve) {
  580. this.$alert(msg, "提示", {
  581. confirmButtonText: "确定",
  582. type: "warning",
  583. })
  584. .then(() => {
  585. resolve();
  586. })
  587. .catch(() => {});
  588. },
  589. showDelDialog(row, isDelete) {
  590. const params = {
  591. id: row.parId,
  592. };
  593. const txt = row.parStatus === 0 ? "重新启用" : "禁用";
  594. const warningTxt = isDelete
  595. ? "是否删除该规则?可能对现有系统造成影响"
  596. : "是否" + txt + "该条数据?";
  597. const handleFn = isDelete
  598. ? api.deleteRule
  599. : row.parStatus === 0
  600. ? api.saveRuleApply
  601. : api.deleteRuleApply;
  602. this.showConfirmDialog(warningTxt, () => {
  603. handleFn(params)
  604. .then((res) => {
  605. if (res.data.code == "0") {
  606. if (!this.searched) {
  607. //未点确认时清空搜索条件
  608. this.clearFilter();
  609. }
  610. if (isDelete) {
  611. //恢复成功后跳转到筛选条件的首页
  612. this.currentPage = 1;
  613. } else {
  614. if (this.filter.parStatus !== "" && this.list.length === 1) {
  615. //有启用状态筛选条件且当前页只有最后一条数据删除时,删除成功后跳转到前一页
  616. this.currentPage =
  617. this.currentPage === 1 ? 1 : this.currentPage - 1;
  618. }
  619. }
  620. this.warning(res.data.msg || "操作成功", "success");
  621. this.getDataList();
  622. } else {
  623. this.warning(res.data.msg);
  624. }
  625. })
  626. .catch((error) => {
  627. this.warning(error);
  628. });
  629. });
  630. },
  631. clearFilter() {
  632. this.filter = {
  633. successFlag: "",
  634. patientId: "",
  635. sceneName: "",
  636. subHospitalName: "",
  637. recepDate: "", // 接收日期
  638. resDate: "", // 响应日期
  639. };
  640. },
  641. update() {
  642. const loading = this.$loading({
  643. lock: true,
  644. text: "Loading",
  645. spinner: "el-icon-loading",
  646. background: "rgba(0, 0, 0, 0.7)",
  647. });
  648. api
  649. .zskUpdateAll()
  650. .then((res) => {
  651. loading.close();
  652. if (res.data.code == "0") {
  653. this.warning("更新成功", "success");
  654. this.getDataList();
  655. } else {
  656. this.warning(res.data.msg || "更新失败,请重试");
  657. }
  658. })
  659. .catch((error) => {
  660. loading.close();
  661. this.warning("更新失败,请重试");
  662. });
  663. },
  664. },
  665. };
  666. </script>
  667. <style lang="less" scoped>
  668. @import "../../less/admin.less";
  669. /deep/ .container.knowledgeTitle {
  670. height: 80px;
  671. }
  672. /deep/ .contents.knowledgeContents {
  673. padding: 104px 20px 0;
  674. }
  675. /deep/ .secLine.el-form {
  676. float: right;
  677. display: block;
  678. position: relative;
  679. top: -5px;
  680. }
  681. .delete {
  682. color: red;
  683. }
  684. .review {
  685. color: #22ccc8;
  686. }
  687. .el-table .cell {
  688. overflow: hidden;
  689. white-space: nowrap;
  690. }
  691. #upFile {
  692. display: none !important;
  693. }
  694. .unvailable {
  695. color: #fe7d3d;
  696. &:hover {
  697. color: #f19061;
  698. }
  699. }
  700. .demo-form-inline {
  701. display: flex;
  702. justify-content: flex-end;
  703. .el-form-item:nth-child(1) {
  704. margin-right: 10px;
  705. }
  706. .el-input--mini {
  707. /deep/.el-input__inner {
  708. width: 100%;
  709. }
  710. }
  711. }
  712. .el-date-editor {
  713. .el-input {
  714. width: 150px !important;
  715. }
  716. }
  717. .secLine.el-form {
  718. position: relative;
  719. top: -10px;
  720. color: #ff0000;
  721. }
  722. .code-name {
  723. display: -webkit-box;
  724. -webkit-box-orient: vertical;
  725. -webkit-line-clamp: 1;
  726. overflow: hidden;
  727. white-space: nowrap;
  728. text-overflow: ellipsis;
  729. -o-text-overflow: ellipsis;
  730. }
  731. /deep/.el-dialog {
  732. width: 700px !important;
  733. }
  734. /deep/.el-dialog__body {
  735. overflow-y: auto;
  736. height: 505px;
  737. width: 700px;
  738. padding: 20px 0 30px;
  739. }
  740. .request-item {
  741. padding: 0 20px;
  742. }
  743. .el-time-panel__footer {
  744. /deep/.confirm {
  745. color: #48c5d7 !important;
  746. }
  747. }
  748. .active {
  749. color: #ff0000;
  750. }
  751. .btn {
  752. position: absolute;
  753. left: 31px;
  754. top: 50px;
  755. }
  756. .Interface {
  757. padding: 0 24px;
  758. .el-table {
  759. min-width: 100% !important;
  760. }
  761. }
  762. .foot {
  763. display: flex;
  764. justify-content: center;
  765. margin-top: 20px;
  766. }
  767. /deep/.el-input--mini .el-input__inner{
  768. width: 95px;
  769. }
  770. </style>