details.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951
  1. <template>
  2. <!-- 巡点检计划审批 -->
  3. <div class="page" v-loading="pageLoading">
  4. <el-form label-width="130px">
  5. <div class="content-detail">
  6. <div class="basic-details">
  7. <HeaderTitle title="基本信息" size="16px">
  8. <el-button
  9. type="primary"
  10. @click="
  11. $router.push({
  12. path: '/maintenance/delivery',
  13. query: { title: '计划' }
  14. })
  15. "
  16. >返回</el-button
  17. >
  18. </HeaderTitle>
  19. <el-row>
  20. <el-col :span="12">
  21. <el-col :span="12">
  22. <el-form-item label="计划单号">
  23. <span> {{ infoData.code }} </span>
  24. </el-form-item>
  25. </el-col>
  26. <el-col :span="12">
  27. <el-form-item label="来源计划配置单号">
  28. <span> {{ infoData.planConfigCode }} </span>
  29. </el-form-item>
  30. </el-col>
  31. <el-col :span="12">
  32. <el-form-item label="名称">
  33. <span> {{ infoData.name }} </span>
  34. </el-form-item>
  35. </el-col>
  36. <el-col :span="12">
  37. <el-form-item label="部门">
  38. <span v-if="infoData.executor && infoData.executor.length">
  39. {{ infoData.executor[0].deptName }}
  40. </span>
  41. </el-form-item>
  42. </el-col>
  43. <el-col :span="12">
  44. <el-form-item label="人员">
  45. <span v-if="infoData.executor && infoData.executor.length">
  46. {{ infoData.executor.map((i) => i.name).join(',') }}
  47. </span>
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="12">
  51. <el-form-item label="计划完成时长">
  52. <span v-if="infoData.duration >= 0"
  53. >{{ infoData.duration }}分钟</span
  54. >
  55. </el-form-item>
  56. </el-col>
  57. <el-col :span="12">
  58. <el-form-item label="周期">
  59. <span v-if="infoData.ruleInfo">
  60. {{ infoData.ruleInfo.cycleValue
  61. }}{{
  62. getDictValue('巡点检周期', infoData.ruleInfo.cycleType)
  63. }}
  64. </span>
  65. </el-form-item>
  66. </el-col>
  67. <el-col :span="12">
  68. <el-form-item label="设备分类">
  69. <span> {{ infoData.categoryLevelName }} </span>
  70. </el-form-item>
  71. </el-col>
  72. <el-col :span="12">
  73. <el-form-item label="规则名称">
  74. <span>
  75. {{ infoData.ruleInfo && infoData.ruleInfo.name }}
  76. </span>
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="12">
  80. <el-form-item label="创建部门">
  81. <span> {{ infoData.createUserGroupName }} </span>
  82. </el-form-item>
  83. </el-col>
  84. <el-col :span="12">
  85. <el-form-item label="创建人">
  86. <span> {{ infoData.createUserName }} </span>
  87. </el-form-item>
  88. </el-col>
  89. <el-col :span="12">
  90. <el-form-item label="创建时间">
  91. <span> {{ infoData.createTime }} </span>
  92. </el-form-item>
  93. </el-col>
  94. <el-col :span="24">
  95. <el-form-item label="备注">
  96. <span> {{ infoData.remark }} </span>
  97. </el-form-item>
  98. </el-col>
  99. </el-col>
  100. <el-col :span="12">
  101. <!-- <img :src="infoData.imageUrl" alt="" /> -->
  102. </el-col>
  103. </el-row>
  104. </div>
  105. <!-- 巡点检、保养设备 -->
  106. <div class="maintain_equipment_info">
  107. <HeaderTitle title="量具送检设备" size="16px"></HeaderTitle>
  108. <div class="maintain_equipment_info_content">
  109. <div
  110. class="equipment_item"
  111. v-for="item in infoData.planDeviceList"
  112. :key="item.id"
  113. >
  114. <div class="equipment_info" v-if="item.substance">
  115. <div class="item_info">
  116. <span class="item_label">设备编码</span>
  117. <span class="item_value">{{ item.substance.code }}</span>
  118. </div>
  119. <div class="item_info">
  120. <span class="item_label">设备名称</span>
  121. <span class="item_value">{{ item.substance.name }}</span>
  122. </div>
  123. <div class="item_info">
  124. <span class="item_label">设备型号</span>
  125. <span class="item_value">{{ item.substance.model }}</span>
  126. </div>
  127. <div class="item_info">
  128. <span class="item_label">编号</span>
  129. <span class="item_value">{{
  130. item.substance.codeNumber
  131. }}</span>
  132. </div>
  133. <div class="item_info">
  134. <span class="item_label">使用人</span>
  135. <span class="item_value">{{ item.substance.usePerson }}</span>
  136. </div>
  137. <div class="item_info">
  138. <span class="item_label">使用岗位</span>
  139. <span class="item_value">{{ item.substance.postName }}</span>
  140. </div>
  141. <div class="item_info">
  142. <span class="item_label">负责人</span>
  143. <span class="item_value">{{
  144. item.substance.chargePerson
  145. }}</span>
  146. </div>
  147. <div class="item_info">
  148. <span class="item_label">是否丢失</span>
  149. <span class="item_value">{{ loseOptions[item.isLose] }}</span>
  150. </div>
  151. <div class="item_info">
  152. <span class="item_label">质检状态</span>
  153. <span class="item_value">{{
  154. qualityStatusOptions[item.qualityStatus]
  155. }}</span>
  156. </div>
  157. <div class="item_info">
  158. <span class="item_label">量具状态</span>
  159. <span class="item_value">{{
  160. item.isHarvest > 0 ? harvestOptions[item.isHarvest] : ''
  161. }}</span>
  162. </div>
  163. <div class="item_info">
  164. <span class="item_label">设备位置</span>
  165. <span class="item_value">{{
  166. item.substance.positionNames
  167. }}</span>
  168. </div>
  169. </div>
  170. <p>操作事项</p>
  171. <div class="ruleMatters_box">
  172. <el-table :data="item.workItems" border>
  173. <el-table-column label="序号" width="50">
  174. <template slot-scope="scope">
  175. <span>{{ scope.$index + 1 }}</span>
  176. </template>
  177. </el-table-column>
  178. <el-table-column label="事项" prop="name" width="100">
  179. <template slot-scope="scope">
  180. <div>
  181. <span>{{ scope.row.name }}</span>
  182. </div>
  183. </template>
  184. </el-table-column>
  185. <el-table-column label="内容" prop="content" width="300">
  186. <template slot-scope="scope">
  187. <div>
  188. <span>{{ scope.row.content }}</span>
  189. </div>
  190. </template>
  191. </el-table-column>
  192. <el-table-column label="操作指导" prop="operationGuide">
  193. <template slot-scope="scope">
  194. <div class="operationGuide_box">
  195. <div class="left_content">
  196. <template v-if="scope.row.operationGuide">
  197. <div
  198. v-for="(item, index) in scope.row.operationGuide
  199. .toolList"
  200. :key="item.id"
  201. >{{ index + 1 }}.{{ item.name }}</div
  202. >
  203. </template>
  204. </div>
  205. <div class="line"></div>
  206. <div class="right_content">
  207. <template v-if="scope.row.operationGuide">
  208. <div
  209. v-for="(item, index) in scope.row.operationGuide
  210. .procedureList"
  211. :key="item.id"
  212. >{{ index + 1 }}.{{ item.content }}</div
  213. >
  214. </template>
  215. </div>
  216. </div>
  217. </template>
  218. </el-table-column>
  219. <el-table-column label="标准" prop="norm" width="100">
  220. <template slot-scope="scope">
  221. <div>
  222. <span>{{ scope.row.norm }}</span>
  223. </div>
  224. </template>
  225. </el-table-column>
  226. </el-table>
  227. </div>
  228. <!-- <div class="matter_info">
  229. <el-table :data="item.workItems || []" border>
  230. <el-table-column label="序号" align="center" width="80">
  231. <template slot-scope="scope">
  232. <span>{{ scope.$index + 1 }}</span>
  233. </template>
  234. </el-table-column>
  235. <el-table-column label="事项" prop="name" />
  236. <el-table-column label="内容" prop="content" />
  237. <el-table-column label="标准" prop="norm" />
  238. </el-table>
  239. </div> -->
  240. </div>
  241. </div>
  242. </div>
  243. <!-- 高亮流程图 -->
  244. <el-card class="box-card" v-loading="processInstanceLoading">
  245. <div slot="header" class="clearfix">
  246. <span class="el-icon-picture-outline">流程图</span>
  247. </div>
  248. <my-process-viewer
  249. key="designer"
  250. v-model="bpmnXML"
  251. v-bind="bpmnControlForm"
  252. :activityData="activityList"
  253. :processInstanceData="processInstance"
  254. :taskData="tasks"
  255. />
  256. </el-card>
  257. <!-- 巡点检、审批信息 -->
  258. <!-- <div class="examine_info">
  259. <HeaderTitle title="审批信息" size="16px"></HeaderTitle>
  260. <div class="item_row">
  261. <div class="item_info">
  262. <span class="item_label border_top">审批结果</span>
  263. <span class="item_value" v-if="infoData.approvalResult === 0"
  264. >驳回</span
  265. >
  266. <span class="item_value" v-if="infoData.approvalResult === 1"
  267. >通过</span
  268. >
  269. </div>
  270. <div class="item_info border_top">
  271. <span class="item_label">审批人</span>
  272. <span class="item_value">{{ infoData.verifyUserName }}</span>
  273. </div>
  274. <div class="item_info border_right border_top">
  275. <span class="item_label">审批时间</span>
  276. <span class="item_value">{{ infoData.approvalTime }}</span>
  277. </div>
  278. <div
  279. class="item_info reason border_right"
  280. v-if="infoData.auditResult == 0"
  281. >
  282. <span class="item_label">驳回原因</span>
  283. <span class="item_value">{{ infoData.rejectCause }}</span>
  284. </div>
  285. </div>
  286. </div> -->
  287. <!-- 巡点检、执行信息 -->
  288. <!-- <div class="execute_info">
  289. <HeaderTitle title="执行信息" size="16px"></HeaderTitle>
  290. <el-table :data="infoData.planWorkOrderList || []">
  291. <el-table-column label="序号" align="center" width="60">
  292. <template slot-scope="scope">
  293. <span>{{ scope.$index + 1 }}</span>
  294. </template>
  295. </el-table-column>
  296. <el-table-column
  297. label="工单编号"
  298. align="center"
  299. prop="workOrderCode"
  300. />
  301. <el-table-column label="状态" align="center">
  302. <template slot-scope="scope">
  303. <span>{{ scope.row.status.descp }}</span>
  304. </template>
  305. </el-table-column>
  306. <el-table-column
  307. label="执行部门"
  308. align="center"
  309. prop="executorDeptName"
  310. />
  311. <el-table-column
  312. label="执行人员"
  313. align="center"
  314. prop="executeUserName"
  315. />
  316. <el-table-column
  317. label="开始时间"
  318. align="center"
  319. prop="acceptTime"
  320. />
  321. <el-table-column
  322. label="完成时间"
  323. align="center"
  324. prop="finishTime"
  325. />
  326. <el-table-column
  327. label="计划工时"
  328. align="center"
  329. prop="planManhour"
  330. />
  331. <el-table-column
  332. label="实际工时"
  333. align="center"
  334. prop="practicalManhour"
  335. />
  336. <el-table-column
  337. label="开始时间"
  338. align="center"
  339. prop="acceptTime"
  340. width="160"
  341. >
  342. <template slot-scope="scope">
  343. {{ scope.row.acceptTime ? scope.row.acceptTime : '-' }}
  344. </template>
  345. </el-table-column>
  346. <el-table-column
  347. label="完成时间"
  348. align="center"
  349. prop="finishTime"
  350. width="160"
  351. >
  352. <template slot-scope="scope">
  353. {{ scope.row.finishTime ? scope.row.finishTime : '-' }}
  354. </template>
  355. </el-table-column>
  356. <el-table-column label="计划工时" align="center" prop="planManhour">
  357. <template slot-scope="{ row }">
  358. <span>{{
  359. row.planManhour ? row.planManhour + '分钟' : '-'
  360. }}</span>
  361. </template>
  362. </el-table-column>
  363. <el-table-column
  364. label="实际工时"
  365. align="center"
  366. prop="practicalManhour"
  367. >
  368. <template slot-scope="{ row }">
  369. <span>{{
  370. row.practicalManhour ? row.practicalManhour + '分钟' : '-'
  371. }}</span>
  372. </template>
  373. </el-table-column>
  374. </el-table>
  375. </div> -->
  376. <div class="btnbox" v-if="$route.query.isshow">
  377. <el-button class="confirm-btn" type="danger" plain @click="reject"
  378. >驳回</el-button
  379. >
  380. <el-button class="confirm-btn" type="success" plain @click="pass"
  381. >通过</el-button
  382. >
  383. <!-- <el-button class="cancel-btn">关闭</el-button> -->
  384. </div>
  385. <div class="textbox" v-if="showtext" ref="rejectContent">
  386. <el-input
  387. type="textarea"
  388. placeholder="请输入驳回原因"
  389. v-model="cause"
  390. maxlength="30"
  391. rows="5"
  392. show-word-limit
  393. >
  394. </el-input>
  395. <div class="textbtnbox">
  396. <el-button size="small" round @click="cancelreject">取消</el-button>
  397. <el-button size="small" round @click="surereject">提交</el-button>
  398. </div>
  399. </div>
  400. </div>
  401. </el-form>
  402. </div>
  403. </template>
  404. <script>
  405. // import { getDetail, sendAudit } from '@/api/stockManagement/stocking'
  406. // import { useDictLabel, patrolMatterStatus } from '@/utils/dict/index'
  407. import store from '@/store';
  408. import {
  409. getProcessInstance,
  410. getTaskListByProcessInstanceId,
  411. getProcessDefinitionBpmnXML,
  412. getActivityList
  413. } from '@/api/bpm/index';
  414. import { getById } from '@/api/maintenance/patrol_maintenance';
  415. import dictMixins from '@/mixins/dictMixins';
  416. export default {
  417. mixins: [dictMixins],
  418. data() {
  419. return {
  420. // 流程实例
  421. id: undefined, // 流程实例的编号
  422. processInstance: {},
  423. // BPMN 数据
  424. bpmnXML: null,
  425. bpmnControlForm: {
  426. prefix: 'flowable'
  427. },
  428. activityList: [],
  429. // 审批记录
  430. tasksLoad: true,
  431. tasks: [],
  432. num: 1,
  433. dialogVisible: false,
  434. baseInfo: {},
  435. pageLoading: false,
  436. typeValue: null,
  437. contract_type: [],
  438. loseOptions: {
  439. 0: '正常',
  440. 1: '丢失'
  441. },
  442. qualityStatusOptions: {
  443. 0: '正常',
  444. 1: '异常'
  445. },
  446. harvestOptions: {
  447. 1: '已收',
  448. 2: '未收'
  449. },
  450. status: [
  451. {
  452. value: true,
  453. label: '失效'
  454. },
  455. {
  456. value: false,
  457. label: '生效'
  458. }
  459. ],
  460. ruleItem: [],
  461. cause: '',
  462. showtext: false,
  463. infoData: {}
  464. };
  465. },
  466. async created() {
  467. this.requestDict('巡点检周期');
  468. this.getInfo();
  469. },
  470. methods: {
  471. /** 获得流程实例 */
  472. getDetail(id) {
  473. // 获得流程实例相关
  474. this.processInstanceLoading = true;
  475. getProcessInstance(id).then((response) => {
  476. if (!response) {
  477. this.$message.error('查询不到流程信息!');
  478. return;
  479. }
  480. // 设置流程信息
  481. this.processInstance = response;
  482. // //将业务表单,注册为动态组件
  483. // const path = this.processInstance.processDefinition.formCustomViewPath;
  484. // Vue.component("async-biz-form-component", function (resolve) {
  485. // require([`@/views${path}`], resolve);
  486. // });
  487. // 加载流程图
  488. getProcessDefinitionBpmnXML(
  489. this.processInstance.processDefinition.id
  490. ).then((response) => {
  491. this.bpmnXML = response;
  492. });
  493. // 加载活动列表
  494. getActivityList({
  495. processInstanceId: this.processInstance.id
  496. }).then((response) => {
  497. console.log(response, 'response');
  498. this.activityList = response;
  499. });
  500. // 取消加载中
  501. this.processInstanceLoading = false;
  502. });
  503. // 获得流程任务列表(审批记录)
  504. this.tasksLoad = true;
  505. getTaskListByProcessInstanceId(id).then((response) => {
  506. // 审批记录
  507. this.tasks = [];
  508. // 移除已取消的审批
  509. response.forEach((task) => {
  510. if (task.result !== 4) {
  511. this.tasks.push(task);
  512. }
  513. });
  514. // 排序,将未完成的排在前面,已完成的排在后面;
  515. this.tasks.sort((a, b) => {
  516. // 有已完成的情况,按照完成时间倒序
  517. if (a.endTime && b.endTime) {
  518. return b.endTime - a.endTime;
  519. } else if (a.endTime) {
  520. return 1;
  521. } else if (b.endTime) {
  522. return -1;
  523. // 都是未完成,按照创建时间倒序
  524. } else {
  525. return b.createTime - a.createTime;
  526. }
  527. });
  528. // 需要审核的记录
  529. const userId = store.getters.userId;
  530. this.tasks.forEach((task) => {
  531. if (task.result !== 1 && task.result !== 6) {
  532. // 只有待处理才需要
  533. return;
  534. }
  535. if (!task.assigneeUser || task.assigneeUser.id !== userId) {
  536. // 自己不是处理人
  537. return;
  538. }
  539. });
  540. // 取消加载中
  541. this.tasksLoad = false;
  542. });
  543. },
  544. // getStatus: useDictLabel(patrolMatterStatus),
  545. delete() {},
  546. // 点击切换事件
  547. tab(index) {
  548. this.num = index;
  549. },
  550. // 表格数据
  551. async getInfo() {
  552. this.pageLoading = true;
  553. const res = await getById(this.$route.query.id).catch(() => {
  554. this.pageLoading = false;
  555. });
  556. if (res?.data) {
  557. this.infoData = res.data;
  558. this.getDetail(this.infoData.processInstanceId);
  559. }
  560. this.pageLoading = false;
  561. },
  562. //通过按钮事件
  563. pass() {
  564. let params = {
  565. id: this.$route.query.id,
  566. checked: true,
  567. myHandleId: this.$route.query.dbid,
  568. cause: '',
  569. type: 2,
  570. handleType: 0
  571. };
  572. sendAudit(params).then((res) => {
  573. if (res.success) {
  574. this.$message.success('审批通过!');
  575. this.$router.back();
  576. }
  577. });
  578. },
  579. //驳回按钮事件
  580. reject() {
  581. this.showtext = true;
  582. let bodyscrollHeight = document.body.scrollHeight;
  583. this.$nextTick(() => {
  584. document.documentElement.scrollTop = bodyscrollHeight;
  585. });
  586. },
  587. cancelreject() {
  588. this.showtext = false;
  589. this.cause = '';
  590. },
  591. surereject() {
  592. if (!this.cause) {
  593. this.$message.info('请填写驳回原因!');
  594. } else {
  595. let params = {
  596. id: this.$route.query.id,
  597. checked: false,
  598. myHandleId: this.$route.query.dbid,
  599. cause: this.cause,
  600. type: 2,
  601. handleType: 0
  602. };
  603. sendAudit(params).then((res) => {
  604. if (res.success) {
  605. this.$message.success('驳回成功!');
  606. this.$router.back();
  607. }
  608. });
  609. }
  610. }
  611. }
  612. };
  613. </script>
  614. <style lang="scss" scoped>
  615. // @import '@/assets/css/oaa.scss';
  616. .page {
  617. padding: 10px;
  618. }
  619. .page-title {
  620. background: #fff;
  621. font-size: 18px;
  622. padding: 6px 20px;
  623. font-weight: 500;
  624. .page-title-div {
  625. margin: 5px 0;
  626. height: 30px;
  627. line-height: 30px;
  628. border-bottom: 1px solid #eaeefb;
  629. .title-div-no {
  630. margin-left: 10px;
  631. font-weight: 400;
  632. color: #909090;
  633. font-size: 14px;
  634. }
  635. }
  636. }
  637. .page-data {
  638. padding-top: 10px;
  639. }
  640. .content-detail {
  641. background: #fff;
  642. padding: 20px;
  643. }
  644. .flows {
  645. .flow-left {
  646. width: 156px;
  647. height: 70px;
  648. border: 1px dashed #ccc;
  649. padding: 10px;
  650. }
  651. .row {
  652. margin-top: 13px;
  653. }
  654. }
  655. .basic-details-title {
  656. margin-bottom: 12px;
  657. margin-top: 20px;
  658. border-bottom: 1px solid #1890ff;
  659. padding-bottom: 8px;
  660. display: flex;
  661. justify-content: space-between;
  662. }
  663. .basic-details-title .border-span {
  664. height: 18px;
  665. font-size: 16px;
  666. border-left: 4px solid #1890ff;
  667. padding-left: 8px;
  668. font-weight: 500;
  669. }
  670. .heade-right {
  671. // float: right;
  672. .heade-right-content {
  673. margin-right: 12px;
  674. font-size: 14px;
  675. display: inline-block;
  676. .content-key {
  677. color: #3e3e3e;
  678. margin-right: 12px;
  679. font-weight: 500;
  680. }
  681. .content-value {
  682. color: #000;
  683. }
  684. }
  685. }
  686. .list-title {
  687. font-size: 14px;
  688. color: #3e3e3e;
  689. margin: 10px 0px;
  690. }
  691. .goods {
  692. background: #a30014;
  693. border: 1px solid #a30014;
  694. }
  695. .details-title {
  696. display: inline-block;
  697. color: #6e6e6e;
  698. font-size: 14px;
  699. font-weight: bold;
  700. margin-right: 13px;
  701. width: 70px;
  702. text-align: right;
  703. }
  704. .details-con {
  705. color: #3e3e3e;
  706. font-size: 14px;
  707. }
  708. .detailed-tab {
  709. margin-left: 10px;
  710. margin-top: 10px;
  711. }
  712. ::v-deep .el-form-item--medium .el-form-item__label {
  713. color: #6e6e6e;
  714. font-size: 14px;
  715. font-weight: bold;
  716. }
  717. .warehouse {
  718. display: block;
  719. border-bottom: 1px solid #eaeefb;
  720. padding: 10px 0;
  721. }
  722. .box-card {
  723. .store-box {
  724. width: 80%;
  725. .store-box-span {
  726. display: inline-block;
  727. font-size: 14px;
  728. height: 50px;
  729. width: 50px;
  730. text-align: center;
  731. line-height: 50px;
  732. color: #fff;
  733. margin: 2px;
  734. }
  735. }
  736. }
  737. .vacant {
  738. background: #3196fb;
  739. }
  740. .inUse {
  741. background: #157a2c;
  742. }
  743. .invalid {
  744. background: #cccccc;
  745. }
  746. .full {
  747. background: #cc3300;
  748. }
  749. .maintain_equipment_info {
  750. .maintain_equipment_info_title {
  751. border-bottom: 1px solid #1890ff;
  752. padding-bottom: 3px;
  753. margin-bottom: 20px;
  754. > span {
  755. display: inline-block;
  756. line-height: 16px;
  757. border-left: 6px solid #1890ff;
  758. padding-left: 6px;
  759. }
  760. }
  761. .maintain_equipment_info_content {
  762. padding: 0 30px;
  763. .equipment_item {
  764. border: 1px solid #ccc;
  765. font-size: 14px;
  766. padding: 15px;
  767. margin-bottom: 30px;
  768. .equipment_info {
  769. display: flex;
  770. flex-wrap: wrap;
  771. border: 1px solid #ddd;
  772. .item_info {
  773. width: 33.33%;
  774. height: 24px;
  775. line-height: 24px;
  776. display: flex;
  777. .item_label {
  778. width: 90px;
  779. text-align: center;
  780. background-color: #f2f2f2;
  781. font-weight: 700;
  782. }
  783. .item_value {
  784. border-bottom: 1px solid #f2f2f2;
  785. flex: 1;
  786. padding-left: 5px;
  787. }
  788. // &:last-child {
  789. // width: 100%;
  790. // .item_value {
  791. // border: 0;
  792. // }
  793. // }
  794. }
  795. }
  796. > p {
  797. margin-top: 20px;
  798. color: #797979;
  799. }
  800. .matter_info {
  801. ::v-deep .el-table {
  802. th.el-table__cell {
  803. background-color: #f2f2f2;
  804. padding: 0;
  805. }
  806. td.el-table__cell {
  807. padding: 0;
  808. }
  809. }
  810. }
  811. .ruleMatters_box {
  812. flex: 3;
  813. height: 100%;
  814. display: flex;
  815. flex-direction: column;
  816. .divider {
  817. flex: 0 0 50px;
  818. .title {
  819. height: 35px;
  820. }
  821. }
  822. .el-table {
  823. overflow: auto;
  824. .operationGuide_box {
  825. width: 100%;
  826. display: flex;
  827. position: relative;
  828. .left_content {
  829. flex: 0 0 300px;
  830. padding: 10px;
  831. margin-right: 10px;
  832. overflow-y: auto;
  833. }
  834. .line {
  835. position: absolute;
  836. top: -10px;
  837. left: 300px;
  838. bottom: -10px;
  839. height: 110%;
  840. width: 1px;
  841. background-color: #ededed;
  842. }
  843. .right_content {
  844. flex: 1;
  845. padding: 10px;
  846. overflow-y: auto;
  847. }
  848. }
  849. }
  850. }
  851. }
  852. }
  853. }
  854. .examine_info {
  855. margin-bottom: 30px;
  856. .examine_info_title {
  857. border-bottom: 1px solid #1890ff;
  858. padding-bottom: 3px;
  859. margin-bottom: 20px;
  860. > span {
  861. display: inline-block;
  862. line-height: 16px;
  863. border-left: 6px solid #1890ff;
  864. padding-left: 6px;
  865. }
  866. }
  867. .item_row {
  868. display: flex;
  869. flex-wrap: wrap;
  870. font-size: 14px;
  871. padding: 0 15px;
  872. box-sizing: border-box;
  873. .item_info {
  874. width: 33.33%;
  875. height: 24px;
  876. line-height: 24px;
  877. display: flex;
  878. &.border_right {
  879. border-right: 1px solid #f2f2f2;
  880. }
  881. &.border_top {
  882. border-top: 1px solid #f2f2f2;
  883. }
  884. &.reason {
  885. width: 100%;
  886. }
  887. .item_label {
  888. width: 90px;
  889. text-align: center;
  890. background-color: #f2f2f2;
  891. font-weight: 700;
  892. }
  893. .item_value {
  894. border-bottom: 1px solid #f2f2f2;
  895. flex: 1;
  896. padding-left: 5px;
  897. }
  898. }
  899. }
  900. }
  901. .execute_info {
  902. .execute_info_title {
  903. border-bottom: 1px solid #1890ff;
  904. padding-bottom: 3px;
  905. margin-bottom: 20px;
  906. > span {
  907. display: inline-block;
  908. line-height: 16px;
  909. border-left: 6px solid #1890ff;
  910. padding-left: 6px;
  911. }
  912. }
  913. ::v-deep .el-table th.el-table__cell {
  914. background-color: #f2f2f2;
  915. }
  916. ::v-deep .el-table .el-table__cell {
  917. padding: 5px 0;
  918. }
  919. }
  920. .btnbox {
  921. display: flex;
  922. justify-content: center;
  923. margin-top: 10px;
  924. }
  925. ::v-deep .el-button {
  926. padding: 10px 20px;
  927. margin-right: 10px;
  928. }
  929. .textbox {
  930. margin-top: 10px;
  931. }
  932. .textbtnbox {
  933. margin-top: 10px;
  934. display: flex;
  935. justify-content: center;
  936. }
  937. </style>