CoreDeviceReport.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  1. <!-- 核心设备报表 -->
  2. <template>
  3. <div class="core-device-report">
  4. <div class="main-left">
  5. <Select
  6. class="system-select"
  7. width="217"
  8. :isReadOnly="true"
  9. tipPlace="top"
  10. caption="系统名称:"
  11. @change="changeCurSystem"
  12. v-model="systemId"
  13. :selectdata="systemList"
  14. :placeholder="'请选择'"
  15. hideClear
  16. />
  17. <div class="system-content">
  18. <div
  19. v-for="(item) in systemContentData"
  20. :key="'key_' + item.category_code"
  21. class="item-content"
  22. :class="{'active': item.isActive}"
  23. @click="changeEquipment(item.category_code)"
  24. >
  25. <div class="first-row">
  26. <div>{{item.name}}</div>
  27. <div>{{item.isMaintenance?'维保中' : ''}}</div>
  28. </div>
  29. <div class="sec-row">
  30. <div>
  31. {{item.num}}
  32. <span>台</span>
  33. </div>
  34. <span :class="{'abnormal': item.abnormal}">{{item.statusNum !== 0?item.statusNum : ''}}</span>
  35. </div>
  36. </div>
  37. </div>
  38. </div>
  39. <div class="main-right">
  40. <div class="search-container">
  41. <Input
  42. iconType="search"
  43. v-model="searchKey"
  44. placeholder="搜索"
  45. width="192"
  46. @pressEnter="getTableData"
  47. @clear="getTableData"
  48. />
  49. </div>
  50. <el-table
  51. :data="tableData"
  52. style="width: 100%;margin-bottom: 63px;"
  53. @row-click="showEquipmentStatus"
  54. >
  55. <el-table-column label="序号" type="index" :index="indexMethod"></el-table-column>
  56. <el-table-column prop="sbjc" label="设备简称"></el-table-column>
  57. <el-table-column prop="assetnum" label="设备编号"></el-table-column>
  58. <el-table-column prop="is_exception" label="状态">
  59. <template slot-scope="scope">
  60. <span
  61. style="display: inline-block;width: 6px;height:6px;border-radius: 3px;background: #0091FF;"
  62. :style="{'background': !scope.row.is_exception?'#0091FF' : '#F54E45'}"
  63. ></span>
  64. <span style="margin-left: 10px">{{ !scope.row.is_exception?'正常' : '异常' }}</span>
  65. </template>
  66. </el-table-column>
  67. <el-table-column prop="photos_num" label="照片">
  68. <template slot-scope="scope">
  69. <span
  70. style="color: #025BAA"
  71. @click="showPicturesDetail(scope.row, 'equip')"
  72. >{{ scope.row.photos_num?(scope.row.photos_num + '张') : '—' }}</span>
  73. <!-- <span style="color: #025BAA" @click="showPicturesDetail(scope.row)">1张</span> -->
  74. </template>
  75. </el-table-column>
  76. <el-table-column prop="attachments_num" label="报告">
  77. <template slot-scope="scope">
  78. <span style="color: #025BAA" @click="(e) => showReportDetail(scope.row, 'equip', e)">{{ scope.row.attachments_num?(scope.row.attachments_num+ '张') : '—'}}</span>
  79. <!-- <span style="color: #025BAA" @click="(e) => showReportDetail(scope.row, 'equip', e)">1张</span> -->
  80. </template>
  81. </el-table-column>
  82. </el-table>
  83. <div class="page">
  84. <el-pagination
  85. background
  86. layout="prev, pager, next"
  87. :total="tatol"
  88. :current-page="curPage"
  89. :page-size="pageSize"
  90. @current-change="changeTablePage"
  91. ></el-pagination>
  92. </div>
  93. <el-dialog :title="equipTitle" :visible.sync="dialogTableVisible" width="1260px">
  94. <el-date-picker
  95. style="margin-bottom: 12px;"
  96. v-model="dialogTime"
  97. type="daterange"
  98. range-separator="至"
  99. @change="changeTime"
  100. start-placeholder="开始日期"
  101. end-placeholder="结束日期"
  102. ></el-date-picker>
  103. <el-table :data="historyTableData" style="margin-bottom: 55px;" max-height="500">
  104. <el-table-column width="200" property="finishDate" label="日期"></el-table-column>
  105. <el-table-column width="100" property="typeName" label="事项类型"></el-table-column>
  106. <el-table-column property="taskName" label="事项名称"></el-table-column>
  107. <el-table-column width="100" property="photosNum" label="照片">
  108. <template slot-scope="scope">
  109. <span
  110. style="color: #025BAA"
  111. @click="showPicturesDetail(scope.row, 'his')"
  112. >{{ scope.row.photosNum || scope.row.photosNum === 0?(scope.row.photosNum + '张') : '—' }}</span>
  113. <!-- <span style="color: #025BAA" @click="showPicturesDetail(scope.row)">1张</span> -->
  114. </template>
  115. </el-table-column>
  116. <el-table-column width="100" property="attachmentsNum" label="报告">
  117. <template slot-scope="scope">
  118. <span style="color: #025BAA" @click="(e) => showReportDetail(scope.row, 'his', e)">{{ scope.row.attachmentsNum?(scope.row.attachmentsNum+ '张') : '—'}}</span>
  119. <!-- <span style="color: #025BAA" @click="(e) => showReportDetail(scope.row, 'his', e)">1张</span> -->
  120. </template>
  121. </el-table-column>
  122. </el-table>
  123. <div class="page">
  124. <el-pagination
  125. background
  126. layout="prev, pager, next"
  127. :current-page="hisCurPage"
  128. :page-size="hisPageSize"
  129. :total="hisTotal"
  130. @current-change="changeHisTablePage"
  131. ></el-pagination>
  132. </div>
  133. </el-dialog>
  134. <div class="img-detail-container">
  135. <el-dialog :title="detailTitle" :visible.sync="showDetail" width="1260px">
  136. <div class="detail-container">
  137. <div class="pictures-menu">
  138. <div
  139. v-for="(item) in pictureList"
  140. :key="'id_' + item.id"
  141. class="item"
  142. @click="changeCurImg(item.id)"
  143. :class="{'active': item.isActive}"
  144. >
  145. <img :src="item.url" alt />
  146. <div class="name" :title="item.name">{{item.name}}</div>
  147. </div>
  148. </div>
  149. <div class="cur-img-container">
  150. <img v-if="curImg.url" :src="curImg.url" alt />
  151. </div>
  152. </div>
  153. </el-dialog>
  154. </div>
  155. </div>
  156. <div v-show="showAccessory" class="accessory-container" :style="{'top': accessoryPos.top + 'px', 'left': accessoryPos.left + 'px'}">
  157. <div v-for="(item) in accessoryList" :key="'id_' + item.id">
  158. <a :href="item.url" target="_blank" :title="item.name">{{item.name}}</a>
  159. </div>
  160. </div>
  161. </div>
  162. </template>
  163. <script>
  164. import { Select, Input } from "meri-design";
  165. import {
  166. querySystemList,
  167. queryEquipmentList,
  168. queryTableData,
  169. queryHistoryTableData,
  170. queryDetailData
  171. } from "../../api/coreDeviceReport";
  172. import _ from "lodash";
  173. import moment from "moment";
  174. import { log } from "util";
  175. export default {
  176. data() {
  177. return {
  178. systemId: "", // 当前系统Id
  179. systemList: [], // 系统
  180. systemContentData: [
  181. // {id: 1, name: '高压配电柜', isMaintenance: true, num: 95, statusNum: 0, abnormal: false, isActive: true},
  182. // {id: 2, name: '变压器', isMaintenance: false, num: 256, statusNum: 12, abnormal: true, isActive: false},
  183. // {id: 3, name: '低压配电柜', isMaintenance: false, num: 354, statusNum: 0, abnormal: false, isActive: false},
  184. // {id: 4, name: '直流屏', isMaintenance: false, num: 175, statusNum: 0, abnormal: false, isActive: false},
  185. // {id: 5, name: '柴油发电机组', isMaintenance: false, num: 186, status: 0, abnormal: false, isActive: false},
  186. ], // 系统下的各种组成
  187. searchKey: "", // 搜索关键字
  188. tableData: [
  189. // {serialNumber: 1, equipmentName: 2, equipmentNumber: 3, status: '正常', photo: 5, report: 6},
  190. // {serialNumber: 1, equipmentName: 2, equipmentNumber: 3, status: '异常', photo: 5, report: 6},
  191. // {serialNumber: 1, equipmentName: 2, equipmentNumber: 3, status: '正常', photo: 5, report: 6},
  192. ], // 表数据
  193. curPage: 1, // 当前页码
  194. pageSize: 10, // 每页条数
  195. tatol: 0, // 总数据
  196. dialogTableVisible: false, // 弹窗显示状态
  197. // 核心设备实例
  198. equipTitle: "", // 核心设备弹窗名称
  199. assetnum: null, // 设备台账编码
  200. historyTableData: [], // 核心设备实例的所有历史事项信息
  201. dialogTime: null, // 弹框内的时间
  202. hisCurPage: 1, // 当前页码
  203. hisPageSize: 8, // 当前页码
  204. hisTotal: 0, // 总条数
  205. startTime: null, // 开始时间
  206. endTime: null, // 结束事件
  207. showDetail: false, // 显示照片、报告详情
  208. detailTitle: "图片预览", // 弹窗名称
  209. pictureList: [
  210. // {id: 1, url: require('../../assets/images/login_back.png'), name: '图层名称1.jpg'},
  211. // {id: 2, url: require('../../assets/images/matter_pop3.png'), name: '图层名称2.jpg'},
  212. // {id: 3, url: require('../../assets/images/login_back.png'), name: '图层名称3.jpg'},
  213. ], // 图片列表
  214. curImg: {}, // 当前图片
  215. showAccessory: false, // 附件窗口显示状态
  216. isClickAccessory: false, // 是否点击的是附件
  217. accessoryList: [], // 附件
  218. accessoryPos: {
  219. top: 0,
  220. left: 0
  221. }, // 附件弹窗位置
  222. };
  223. },
  224. components: {
  225. Select,
  226. Input
  227. },
  228. computed: {},
  229. mounted() {
  230. document.addEventListener('click', () => {
  231. setTimeout(() => {
  232. if (this.isClickAccessory) {
  233. this.isClickAccessory = false;
  234. return
  235. }
  236. this.showAccessory = false;
  237. }, 20)
  238. })
  239. this.getSystemList();
  240. },
  241. methods: {
  242. /**
  243. * 获取系统列表数据
  244. */
  245. getSystemList() {
  246. querySystemList().then(res => {
  247. if (res.result === "success") {
  248. let data = res.data;
  249. let newData = [];
  250. _.forEach(data, item => {
  251. newData.push({
  252. id: item.code,
  253. name: item.name
  254. });
  255. });
  256. this.systemList = newData;
  257. const { query } = this.$route;
  258. if (!_.isEmpty(query)) {
  259. this.systemId = query.smsxt || newData[0].id;
  260. } else {
  261. this.systemId = newData[0].id;
  262. }
  263. this.getEquipmentOfSystem();
  264. }
  265. });
  266. },
  267. /**
  268. * 切换系统名称
  269. */
  270. changeCurSystem(val) {
  271. console.log("val", val);
  272. this.getEquipmentOfSystem();
  273. },
  274. /**
  275. * 获取系统下的设备
  276. */
  277. getEquipmentOfSystem() {
  278. let param = {
  279. plazaId: 1000423,
  280. ccode: 1002347
  281. };
  282. if (this.systemId !== "") {
  283. param.smsxt = this.systemId;
  284. }
  285. queryEquipmentList("/data/home/querySystemCard", param).then(res => {
  286. const { result, data } = res;
  287. if (result === "success") {
  288. let newData = [],
  289. abnormalList = [];
  290. _.forEach(data[0].assetTypeList, (item, index) => {
  291. let itemData = {
  292. name: item.category_name,
  293. isMaintenance: item.is_detecting,
  294. statusNum: item.is_exception_num,
  295. num: item.asset_num,
  296. abnormal: item.is_exception_num !== 0,
  297. category_code: item.category_code
  298. };
  299. if (!item.category_code) {
  300. console.error("without category_code..", item);
  301. }
  302. if (item.is_exception_num === 0) {
  303. newData.push(itemData);
  304. } else {
  305. abnormalList.push(itemData);
  306. }
  307. });
  308. newData = abnormalList.concat(newData);
  309. _.map(newData, (o, i) => {
  310. return (o.isActive = i === 0);
  311. });
  312. const { query } = this.$route;
  313. this.systemContentData = newData;
  314. if (!_.isEmpty(query) && query.equipId) {
  315. _.map(this.systemContentData, o => {
  316. return (o.isActive = o.category_code == query.equipId);
  317. });
  318. }
  319. this.getTableData();
  320. }
  321. });
  322. },
  323. /**
  324. * 切换系统下的设备
  325. */
  326. changeEquipment(id) {
  327. _.map(this.systemContentData, o => {
  328. return (o.isActive = o.category_code === id);
  329. });
  330. this.getTableData();
  331. },
  332. /**
  333. * 获取表数据
  334. */
  335. getTableData() {
  336. let query = {
  337. category_code: _.find(this.systemContentData, o => {
  338. return o.isActive;
  339. }).category_code
  340. };
  341. let url = `/data/sms_asset/query?plazaId=1000423&page=${this.curPage}&size=${this.pageSize}&orderBy=is_exception,0`;
  342. if (_.trim(this.searchKey) !== "") {
  343. url = `${url}&keyword=${this.searchKey}:sbjc,sbjbm`;
  344. }
  345. queryTableData(url, query).then(res => {
  346. const { result, count, data } = res;
  347. if (result === "success") {
  348. this.tatol = count;
  349. this.tableData = data;
  350. }
  351. });
  352. },
  353. /**
  354. * 表第一列序号
  355. */
  356. indexMethod(index) {
  357. return index + 1;
  358. },
  359. /**
  360. * 切换页码
  361. */
  362. changeTablePage(page) {
  363. this.curPage = page;
  364. this.getTableData();
  365. },
  366. /**
  367. * 显示设备实例的维保、专维等状态
  368. */
  369. showEquipmentStatus(row, column, e) {
  370. setTimeout(() => {
  371. if (this.showDetail || this.showAccessory) {
  372. // if (this.showAccessory) {
  373. // this.showAccessory = false;
  374. // }
  375. return;
  376. }
  377. this.equipTitle = row.sbjc;
  378. this.dialogTableVisible = true;
  379. this.assetnum = row.assetnum;
  380. this.initTimePicker();
  381. }, 36);
  382. },
  383. /**
  384. * 获取核心设备实例的所有历史事项信息
  385. */
  386. getEquipmentHistoryMsg() {
  387. this.historyTableData = [];
  388. let param = {
  389. page: this.hisCurPage,
  390. size: this.hisPageSize,
  391. plazaId: 1000423,
  392. assetnum: this.assetnum,
  393. // assetnum: 24071,
  394. startDate: this.startTime,
  395. // startDate: 20000101000000,
  396. endDate: this.endTime
  397. // endDate: 20200201000000
  398. };
  399. queryHistoryTableData("/data/base/queryDateByAssetNum", param).then(
  400. res => {
  401. const { result, data, count } = res;
  402. if (result === "success") {
  403. this.historyTableData = data;
  404. this.hisTotal = count;
  405. _.forEach(this.historyTableData, item => {
  406. let name;
  407. switch (item.type) {
  408. case 0:
  409. name = "专维";
  410. break;
  411. case 1:
  412. name = "维保专业";
  413. break;
  414. case 2:
  415. name = "第三方视图";
  416. break;
  417. }
  418. item.typeName = name;
  419. item.finishDate = moment
  420. .unix(item.finishDate / 1000)
  421. .format("YYYY.MM.DD");
  422. });
  423. }
  424. }
  425. );
  426. },
  427. /**
  428. * 初始化时间选择器
  429. */
  430. initTimePicker() {
  431. let endTime = new Date(),
  432. startTime = new Date(endTime.getTime() - 1000 * 60 * 60 * 24 * 30);
  433. this.dialogTime = [startTime, endTime];
  434. this.changeTime();
  435. },
  436. /**
  437. * 切换时间
  438. */
  439. changeTime() {
  440. this.hisCurPage = 1;
  441. if (this.dialogTime) {
  442. this.startTime = moment
  443. .unix(new Date(this.dialogTime[0]).getTime() / 1000)
  444. .format("YYYYMMDDHHmmss");
  445. this.endTime = moment
  446. .unix(new Date(this.dialogTime[1]).getTime() / 1000)
  447. .format("YYYYMMDDHHmmss");
  448. } else {
  449. this.initTimePicker();
  450. }
  451. this.getEquipmentHistoryMsg();
  452. },
  453. /**
  454. * 切换设备台账下所有历史事项信息页码
  455. */
  456. changeHisTablePage(page) {
  457. this.hisCurPage = page;
  458. this.getEquipmentHistoryMsg();
  459. },
  460. /**
  461. * 显示图片详情
  462. */
  463. showPicturesDetail(val, type) {
  464. console.log("val", val);
  465. if (type === "equip") {
  466. if (!val.file_type || !val.file_type_id) {
  467. return;
  468. }
  469. } else {
  470. if (!val.photosNum) {
  471. return;
  472. }
  473. }
  474. this.showDetail = true;
  475. this.detailTitle = "图片预览";
  476. this.getDetailData(val);
  477. },
  478. /**
  479. * 显示附件详情
  480. */
  481. showReportDetail(val, type, e) {
  482. console.log("val", val);
  483. if (type === "equip") {
  484. if (!val.file_type || !val.file_type_id) {
  485. // return;
  486. }
  487. } else {
  488. if (!val.attachments_num) {
  489. // return;
  490. }
  491. }
  492. console.log('e', e)
  493. this.accessoryPos = {
  494. top: e.clientY + 5,
  495. left: e.clientX - 360 -5
  496. }
  497. this.isClickAccessory = true;
  498. this.showAccessory = true;
  499. this.detailTitle = "附件预览";
  500. this.getDetailData(val);
  501. },
  502. /**
  503. * 获取图片/报告详情
  504. */
  505. getDetailData(val, type) {
  506. let param = {
  507. file_type: type === 'equip'?val.file_type : val.type,
  508. // file_type: 0,
  509. file_type_id: type === 'equip'?val.file_type_id : val.id,
  510. // file_type_id: this.detailTitle === "图片预览" ?2914 : 1136,
  511. // file_type_id: 9886,
  512. type: this.detailTitle === "图片预览" ? 0 : 1
  513. };
  514. queryDetailData("/data/base/queryFileDetails", param).then(res => {
  515. console.log("res", res);
  516. const { result, data } = res;
  517. if (result === "success") {
  518. let newData = [];
  519. _.forEach(data, (item, index) => {
  520. newData.push({
  521. id: item.id,
  522. url: item.urlname,
  523. isActive: index === 0,
  524. name: item.description
  525. });
  526. });
  527. if (this.detailTitle === "图片预览") {
  528. this.pictureList = newData;
  529. if (this.pictureList.length > 0) {
  530. this.curImg = this.pictureList[0];
  531. }
  532. } else {
  533. this.accessoryList = newData;
  534. }
  535. }
  536. });
  537. },
  538. /**
  539. * 切换当前预览大图
  540. */
  541. changeCurImg(id) {
  542. _.map(this.pictureList, o => {
  543. return (o.isActive = o.id === id);
  544. });
  545. this.curImg = _.find(this.pictureList, o => {
  546. return o.isActive;
  547. });
  548. }
  549. }
  550. };
  551. </script>
  552. <style lang='less' scoped>
  553. .core-device-report {
  554. display: flex;
  555. width: 100%;
  556. height: 100%;
  557. .main-left {
  558. padding-left: 16px;
  559. padding-right: 14px;
  560. padding-top: 12px;
  561. padding-bottom: 12px;
  562. width: 247px;
  563. border-top: 1px solid #e4e6e7;
  564. border-right: 1px solid #e4e6e7;
  565. .system-select {
  566. margin-bottom: 16px;
  567. }
  568. .item-content {
  569. padding-left: 12px;
  570. padding-right: 21px;
  571. padding-top: 7px;
  572. padding-bottom: 8px;
  573. border-bottom: 1px solid #e4e6e7;
  574. cursor: pointer;
  575. > div {
  576. display: flex;
  577. }
  578. .first-row {
  579. margin-bottom: 6px;
  580. display: flex;
  581. justify-content: space-between;
  582. > div:first-child {
  583. font-size: 14px;
  584. color: #1f2429;
  585. line-height: 19px;
  586. }
  587. > div:nth-of-type(2) {
  588. margin-left: 8px;
  589. font-size: 12px;
  590. color: #cd981d;
  591. line-height: 20px;
  592. }
  593. }
  594. .sec-row {
  595. margin-bottom: 6px;
  596. > div:first-child {
  597. font-size: 14px;
  598. color: #1f2429;
  599. line-height: 19px;
  600. > span {
  601. font-size: 12px;
  602. color: #646c73;
  603. }
  604. }
  605. // >div:nth-of-type(2){
  606. // padding-left: 8px;
  607. // padding-right: 8px;
  608. // font-size: 12px;
  609. // color: #0065B3;
  610. // line-height: 22px;
  611. // background: #E1F2FF;
  612. // }
  613. .abnormal {
  614. margin-left: 11px;
  615. padding-left: 3px;
  616. padding-right: 3px;
  617. font-size: 12px;
  618. color: #f54e45 !important;
  619. background: #fde3e2 !important;
  620. border-radius: 9px;
  621. }
  622. }
  623. }
  624. .system-content {
  625. .active {
  626. background: #e5eef5;
  627. border-radius: 2px;
  628. .first-row > div:first-child,
  629. .sec-row > div {
  630. color: #025baa;
  631. > span {
  632. color: #025baa;
  633. }
  634. }
  635. }
  636. }
  637. }
  638. .main-right {
  639. flex: 1;
  640. background: #fff;
  641. padding-left: 15px;
  642. padding-right: 13px;
  643. padding-top: 13px;
  644. padding-bottom: 25px;
  645. .search-container {
  646. margin-bottom: 12px;
  647. }
  648. .page {
  649. display: flex;
  650. justify-content: flex-end;
  651. }
  652. }
  653. .el-dialog {
  654. min-height: 600px;
  655. }
  656. .detail-container {
  657. display: flex;
  658. height: 600px;
  659. }
  660. .pictures-menu {
  661. margin-right: 21px;
  662. padding-top: 16px;
  663. padding-bottom: 16px;
  664. padding-right: 5px;
  665. height: 100%;
  666. overflow: auto;
  667. .item {
  668. > img {
  669. width: 180px;
  670. border: 4px solid rgba(245, 246, 247, 1);
  671. border-radius: 4px;
  672. }
  673. .name {
  674. width: 180px;
  675. font-size: 12px;
  676. color: #1f2429;
  677. line-height: 16px;
  678. margin-top: 12px;
  679. text-align: center;
  680. overflow: hidden;
  681. text-overflow: ellipsis;
  682. white-space: nowrap;
  683. }
  684. &:not(:last-of-type) {
  685. margin-bottom: 20px;
  686. }
  687. }
  688. .active > img {
  689. border-color: rgba(31, 35, 41, 0.15);
  690. }
  691. }
  692. .cur-img-container {
  693. padding: 20px;
  694. flex: 1;
  695. height: 100%;
  696. background: #f5f6f7;
  697. display: flex;
  698. justify-content: center;
  699. align-items: center;
  700. > img {
  701. max-width: 730px;
  702. max-height: 530px;
  703. }
  704. }
  705. .accessory-container{
  706. padding-top: 4px;
  707. padding-bottom: 4px;
  708. width: 360px;
  709. max-height: 166px;
  710. overflow: auto;
  711. position: fixed;
  712. background: #fff;
  713. box-shadow: 0px 2px 10px 0px rgba(31,35,41,0.1);
  714. border-radius: 2px;
  715. border: 1px solid rgba(228,229,231,1);
  716. z-index: 5000;
  717. >div>a{
  718. padding-left: 12px;
  719. padding-right: 12px;
  720. display: block;
  721. height: 38px;
  722. font-size: 14px;
  723. line-height: 38px;
  724. overflow: hidden;
  725. text-overflow: ellipsis;
  726. white-space: nowrap;
  727. &:hover{
  728. background: #F5F6F7;
  729. }
  730. }
  731. }
  732. }
  733. </style>