index.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873
  1. <template>
  2. <div class="index_box">
  3. <div class="content_box">
  4. <!-- @tab-click="handleClick" -->
  5. <!-- 工序名称 -->
  6. <!-- <Search></Search> -->
  7. <div class="content_box_tab">
  8. <el-input
  9. style="width: 180px"
  10. clearable
  11. v-model="name"
  12. placeholder="请输入筛选项"
  13. @input="seekInput"
  14. />
  15. <el-tabs
  16. v-model="activeName"
  17. type="card"
  18. stretch
  19. @tab-click="tabClickValue"
  20. >
  21. <el-tab-pane label="工序" name="0">
  22. <el-tree
  23. :data="produceTaskList"
  24. :props="defaultProps"
  25. node-key="id"
  26. :highlight-current="true"
  27. @node-click="handleNodeClick"
  28. ref="taskListRef"
  29. >
  30. </el-tree>
  31. <!--
  32. v-loading="treeLoading"
  33. :node-key="nodeKey"
  34. ref="tree"
  35. :highlight-current="true"
  36. :expand-on-click-node="false"
  37. @node-click="handleNodeClick"
  38. v-bind="$attrs"
  39. :default-expand-all="defaultExpandAll" -->
  40. </el-tab-pane>
  41. <!-- <el-tab-pane label="工位" name="second"> -->
  42. <!-- <AssetTree @handleNodeClick="handleNodeClickNew" @setRootId="setRootId" id="0" :paramsType="'type'"
  43. ref="treeList" eqDevice="sb" /> -->
  44. <!-- <el-tree
  45. :data="factoryworkstationList"
  46. :props="defaultPropsTow"
  47. node-key="id"
  48. :highlight-current="true"
  49. @node-click="handleNodeClick"
  50. >
  51. </el-tree>
  52. </el-tab-pane> -->
  53. </el-tabs>
  54. </div>
  55. <div style="width: calc(100% - 220px)">
  56. <div class="seek-list" style="background-color: #157a2c">
  57. <div>
  58. <el-input
  59. style="width: 180px; margin-right: 5px"
  60. clearable
  61. v-model="keyWord"
  62. placeholder="请输入关键字"
  63. @clear="handleSearch"
  64. />
  65. <!-- <el-input style="width: 180px" clearable v-model="taskName" placeholder="请输入工序进度" /> -->
  66. <!-- -->
  67. <el-button
  68. size="mini"
  69. type="primary"
  70. style="margin: 0 5px"
  71. @click="handleSearch"
  72. >查询</el-button
  73. >
  74. </div>
  75. <div
  76. style="
  77. width: 55%;
  78. color: #fff;
  79. display: flex;
  80. justify-content: space-between;
  81. "
  82. >
  83. <div>
  84. <b style="margin-right: 50px">当前工序:{{ title }}</b>
  85. <b>下道工序:{{ title1 }}</b>
  86. </div>
  87. <div> 操作员:{{ info.name }} </div>
  88. </div>
  89. </div>
  90. <ele-split-layout
  91. space="0px"
  92. width="45%"
  93. :resizable="true"
  94. :min-size="200"
  95. :max-size="-200"
  96. :left-style="{
  97. overflow: 'hidden',
  98. width: '100%'
  99. }"
  100. :right-style="{ overflow: 'hidden' }"
  101. :responsive="false"
  102. style="height: calc(100vh - 70px - 50px - 90px)"
  103. >
  104. <!-- 左侧 工单列表 -->
  105. <div class="left_main">
  106. <div class="top">
  107. <!-- /工单列表 -->
  108. <produceOrder
  109. @workSelect="workSelect"
  110. @rowClick="rowClick"
  111. ref="produceOrder"
  112. @getTaskName="getTaskName"
  113. >
  114. </produceOrder>
  115. </div>
  116. <!-- <div class="bottom">
  117. <productionResource :BomObj="BomObj"></productionResource>
  118. </div> -->
  119. </div>
  120. <!-- 右侧 详情 -->
  121. <template v-slot:content>
  122. <div class="right_main">
  123. <!-- 领料 -->
  124. <!-- <div v-if="operationType == 'pick'"> -->
  125. <div v-if="operationType == 'pick'">
  126. <pickDetails
  127. ref="pickListRef"
  128. :workTaskId="workTaskId"
  129. :taskId="taskObj.id"
  130. @pickAdd="pickAdd"
  131. ></pickDetails>
  132. </div>
  133. <div v-if="operationType == 'feed'">
  134. <!-- 投料 -->
  135. <feeding
  136. :workListIds="workListIds"
  137. :feedNeedEquipment="feedNeedEquipment"
  138. ></feeding>
  139. </div>
  140. <div v-if="operationType == 'job'">
  141. <!-- // 报工列表 入库 -->
  142. <warehousing
  143. v-if="taskObj.id == -1"
  144. :workListIds="workListIds"
  145. ref="wareRef"
  146. ></warehousing>
  147. <!-- // 设备 入库 -->
  148. <!-- 普通报工 -->
  149. <!-- <jobBooking
  150. v-else
  151. :workListIds="workListIds"
  152. ref="jobRef"
  153. :reportNeedFeed="reportNeedFeed"
  154. ></jobBooking> -->
  155. <jobBooking
  156. v-else
  157. :workListIds="workListIds"
  158. ref="jobRef"
  159. :reportNeedFeed="reportNeedFeed"
  160. ></jobBooking>
  161. <!-- <workPlan
  162. style="width: 100%"
  163. v-else
  164. :workListIds="workListIds"
  165. ref="jobRef"
  166. :reportNeedFeed="reportNeedFeed"
  167. >
  168. </workPlan> -->
  169. </div>
  170. <!-- 工步 -->
  171. <div v-if="operationType == 'workStep'"> </div>
  172. <!-- 质检工序 -->
  173. <div v-if="operationType == 'inspection'">
  174. <inspection
  175. :workListIds="workListIds"
  176. ref="inspectionRef"
  177. ></inspection>
  178. </div>
  179. <!-- 委外 -->
  180. <div
  181. v-if="operationType == 'Outsourcing' && isType == '3'"
  182. class="right_main_box"
  183. >
  184. <outsourcing
  185. :outsourceFormVal="outsourceForm"
  186. @changePlugIn="changePlugIn"
  187. v-if="isStep"
  188. ></outsourcing>
  189. <!-- -->
  190. <outsourceList
  191. :outsourceFormVal="outObj"
  192. @closeForm="closeForm"
  193. @outScucc="outScucc"
  194. v-else
  195. ></outsourceList>
  196. </div>
  197. </div>
  198. </template>
  199. </ele-split-layout>
  200. <footBtn
  201. @footBtn="footBtn"
  202. :type="type"
  203. :singleReportInspection="singleReportInspection"
  204. style="background: rgba(223, 250, 222, 0.6); padding: 10px"
  205. ></footBtn>
  206. </div>
  207. <!-- <footBtn @footBtn="footBtn"></footBtn> -->
  208. </div>
  209. <!--领料弹框 -->
  210. <picking
  211. v-if="pickingShow"
  212. @close="pickingClose"
  213. :workListIds="workListIds"
  214. ></picking>
  215. <!-- 工艺文件 -->
  216. <wokePopup ref="wokePopupRef"></wokePopup>
  217. <!-- 检验报工 -->
  218. <workPlan ref="jobRefs"> </workPlan>
  219. <!-- <workes ref="jobRefs"> </workes> -->
  220. <!-- :workListIds="workListIds" :taskId="taskObj.id" -->
  221. <!-- 工步 -->
  222. <workStep ref="workStepRef" />
  223. </div>
  224. </template>
  225. <script>
  226. import Search from './components/search.vue';
  227. import footBtn from './components/footBtn.vue';
  228. // import produceOrder from './components/produceOrder.vue';
  229. import produceOrder from './components/new_produceOrder.vue';
  230. import productionResource from './components/productionResource/index.vue';
  231. import outsourcing from './components/outsourcing/index.vue';
  232. import picking from './components/picking/index.vue';
  233. import wokePopup from './components/picking/wokePopup.vue';
  234. import inspection from './components/inspection/index.vue';
  235. import pickDetails from './components/picking/details.vue';
  236. import AssetTree from '@/components/AssetTree/joobIndex.vue';
  237. import feeding from './components/feeding/index.vue';
  238. import jobBooking from './components/jobBooking/index.vue';
  239. import workPlan from './components/workPlan/index.vue';
  240. import workes from './components/workPlan/components/work.vue';
  241. import warehousing from './components/warehousing/index.vue';
  242. import outsourceList from './components/outsourcing/outsourceList.vue';
  243. import workStep from './components/workStep/index.vue';
  244. import { parameterGetByCode } from '@/api/system/dictionary-data';
  245. import {
  246. getByTaskId,
  247. pcCheckOutsource,
  248. getTaskInstanceById,
  249. checkOutsourceMaterial,
  250. listTask,
  251. factoryworkstationPage,
  252. nextTask
  253. } from '@/api/produce/index';
  254. export default {
  255. components: {
  256. Search,
  257. footBtn,
  258. wokePopup,
  259. produceOrder,
  260. productionResource,
  261. outsourcing,
  262. picking,
  263. pickDetails,
  264. outsourceList,
  265. feeding,
  266. AssetTree,
  267. jobBooking,
  268. inspection,
  269. warehousing,
  270. workStep,
  271. workPlan
  272. },
  273. data() {
  274. return {
  275. name: '',
  276. activeName: '0',
  277. taskName: '',
  278. keyWord: '', //搜索
  279. title: '',
  280. type: '',
  281. loading: false,
  282. operationType: null,
  283. popupType: '', // 弹窗
  284. workListIds: [],
  285. factoryworkstationList: [],
  286. title1: '',
  287. arr: [],
  288. arrTow: [],
  289. produceTaskList: [],
  290. isType: '',
  291. isStep: true,
  292. outsourceForm: {},
  293. outObj: {},
  294. pickingShow: false,
  295. wokePopup: false,
  296. BomObj: {},
  297. defaultProps: {
  298. children: 'children',
  299. label: 'newName'
  300. },
  301. defaultPropsTow: {
  302. children: 'children',
  303. label: 'name',
  304. value: 'code'
  305. },
  306. feedNeedEquipment: 0, //投料是否要添加生产设备1是0否
  307. reportNeedFeed: 0, //生产质检是否需要处置再报工1是0否
  308. singleReportInspection: null, //获取选中的工单是单个还是批量
  309. workTaskId: null, //选中的工单工序id
  310. workStepQueryParam: {
  311. taskId: null,
  312. workOrderId: null
  313. }
  314. };
  315. },
  316. computed: {
  317. taskObj() {
  318. return this.$store.state.user.taskObj;
  319. },
  320. info() {
  321. return this.$store.state.user.info;
  322. },
  323. rightShow() {
  324. return (type) => {};
  325. }
  326. },
  327. created() {
  328. this.init();
  329. this.getTaskList();
  330. this.getFactoryworkstationPageList();
  331. this.operationType = null;
  332. this.workListIds = [];
  333. },
  334. methods: {
  335. tabClickValue() {
  336. this.name = '';
  337. this.seekInput();
  338. },
  339. // 前端筛选
  340. seekInput() {
  341. // console.log(activeName);
  342. if (this.activeName == '0') {
  343. if (!this.name) return (this.produceTaskList = this.arr);
  344. this.produceTaskList = this.produceTaskList.filter((item) => {
  345. return item.name.indexOf(this.name) > -1;
  346. });
  347. } else {
  348. if (!this.name) return (this.factoryworkstationList = this.arrTow);
  349. this.factoryworkstationList = this.factoryworkstationList.filter(
  350. (item) => {
  351. return item.name.indexOf(this.name) > -1;
  352. }
  353. );
  354. }
  355. },
  356. // 折叠悬浮中样式调整
  357. init() {
  358. this.$store.dispatch('theme/setCollapse', true);
  359. },
  360. async getTaskName(value) {
  361. if (value.length > 0) {
  362. let res = await nextTask({
  363. taskId: this.taskObj.id,
  364. workOrderIds: value.map((item) => item.id)
  365. });
  366. this.title1 = res.data.map((item) => item.taskTypeName).toString();
  367. } else {
  368. this.title1 = '';
  369. }
  370. },
  371. handleSearch() {
  372. let obj = {
  373. keyWord: this.keyWord,
  374. taskName: this.taskName
  375. };
  376. this.$refs.produceOrder.handleSearch(obj);
  377. //handleSearch(this.code);
  378. },
  379. handleNodeClickNew(info) {
  380. console.log(info, '999');
  381. // this.current = info;
  382. let current = { id: info.id };
  383. this.$store.commit('user/currentObj', current);
  384. },
  385. setRootId(id) {
  386. this.rootId = id;
  387. },
  388. // 点击工序
  389. handleNodeClick(data) {
  390. this.feedNeedEquipment = data.feedNeedEquipment;
  391. this.reportNeedFeed = data.reportNeedFeed;
  392. let obj = {
  393. 1: `${data.workCenterName}-${data.name}(普通工序)`,
  394. 3: `${data.workCenterName}-${data.name}(质检工序)`,
  395. 4: `${data.workCenterName}-${data.name}(包装工序)`,
  396. 5: `${data.workCenterName}-${data.name}(入库工序)`,
  397. 6: `${data.workCenterName}-${data.name}(质检工序)`
  398. };
  399. this.title = obj[data.type] || '';
  400. this.type = data.type;
  401. let taskObj = {};
  402. taskObj = this.produceTaskList.find((item) => item.id === data.id);
  403. this.$store.commit('user/setTaskObj', taskObj);
  404. },
  405. handleChoose(val) {
  406. console.log(val);
  407. },
  408. // 获取工序列表
  409. getTaskList() {
  410. listTask().then((res) => {
  411. res.map((v) => {
  412. v.newName = `${v.workCenterName}-${v.name}`;
  413. });
  414. this.produceTaskList = res;
  415. this.arr = JSON.parse(JSON.stringify(this.produceTaskList));
  416. //默认选择第一个工序
  417. if (this.produceTaskList?.length) {
  418. this.$store.commit('user/setTaskObj', this.produceTaskList[0]);
  419. this.$nextTick(() => {
  420. this.$refs.taskListRef.setCurrentKey(this.produceTaskList[0].id);
  421. });
  422. }
  423. // newName
  424. });
  425. },
  426. // 获取工位
  427. getFactoryworkstationPageList() {
  428. factoryworkstationPage({ pageNum: 1, size: 99999999 }).then((res) => {
  429. console.log(res, 'res');
  430. this.factoryworkstationList = res.list;
  431. this.arrTow = JSON.parse(JSON.stringify(this.factoryworkstationList));
  432. // newName
  433. });
  434. },
  435. closeForm() {
  436. this.isStep = true;
  437. },
  438. outScucc() {
  439. this.operationType = null;
  440. },
  441. // 切换组件
  442. async changePlugIn(e) {
  443. this.outObj = e;
  444. let req = {
  445. taskId: e.taskId,
  446. taskIds: e.taskIds,
  447. workOrderId: e.workOrderId,
  448. quantity: e.formedNumLast
  449. };
  450. const res = await checkOutsourceMaterial(req);
  451. this.outObj = { ...res.data, ...this.outsourceForm, ...this.outObj };
  452. this.isStep = false;
  453. },
  454. workSelect(data) {
  455. console.log(11112222, data);
  456. this.workTaskId = data.list.length > 0 ? data.list[0].taskId : null;
  457. this.workStepQueryParam.taskId =
  458. data.list.length > 0 ? data.list[0].taskId : null;
  459. this.workStepQueryParam.workOrderId =
  460. data.list.length > 0 ? data.list[0].id : null;
  461. this.singleReportInspection =
  462. data.list.length > 0 ? data.list[0].singleReport : null; //获取选中的工单是单个还是批量
  463. this.isStep = true;
  464. this.operationType = null;
  465. this.workListIds = data.ids;
  466. this.workData = data.list[0];
  467. },
  468. pickingWokeClose() {
  469. this.wokePopup = false;
  470. },
  471. async getCodeData(req) {
  472. await parameterGetByCode({ code: 'enable_quality_plus' }).then(
  473. (res) => {
  474. if (res.value == '1') {
  475. this.$refs.jobRefs.open(req);
  476. }
  477. }
  478. );
  479. },
  480. footBtn(t) {
  481. // this.operationType = t;
  482. // 新增判断 *** 出现弹窗的时候不然右边数据消失
  483. if (t == 'work' || t == 'workStep') {
  484. this.popupType = t;
  485. } else {
  486. this.operationType = t;
  487. }
  488. if (
  489. Object.keys(this.$store.state.user.taskObj).length === 0 &&
  490. this.$store.state.user.taskObj.constructor === Object
  491. ) {
  492. this.$message.warning('请选择工序');
  493. return true;
  494. }
  495. if (['pick', 'feed', 'job', 'work', 'workStep'].includes(t)) {
  496. if (this.workListIds.length == 0) {
  497. this.$message.warning('请选择工单列表');
  498. return false;
  499. }
  500. }
  501. // console.log('按钮被点击了.....', t);
  502. if (t === 'job') {
  503. let req = {
  504. taskId: this.taskObj.id,
  505. workOrderId: this.workListIds[0],
  506. data: this.workData
  507. };
  508. if (this.taskObj.id == '1916800744740663298') {
  509. // this.$refs.jobRefs.open(req);
  510. this.getCodeData(req);
  511. }
  512. }
  513. if (t == 'pick') {
  514. this.$nextTick(() => {
  515. this.$refs.pickListRef.getList(this.workListIds);
  516. });
  517. }
  518. // 工步
  519. if (t === 'workStep') {
  520. if (this.workListIds.length > 1) {
  521. return this.$message.warning('工步只能选择一个工单!');
  522. }
  523. this.$refs.workStepRef.open(this.workStepQueryParam);
  524. // let req = {
  525. // taskId: this.taskObj.id,
  526. // workOrderId: this.workListIds[0]
  527. // };
  528. // this.$refs.wokePopupRef.open(req);
  529. }
  530. // 工艺路线 *** 修改 判断只能选择一个
  531. // if (t === 'work') {
  532. // let req = {
  533. // taskId: this.taskObj.id,
  534. // workOrderId: this.workListIds[0]
  535. // };
  536. // this.$refs.wokePopupRef.open(req);
  537. // }
  538. if (t === 'work') {
  539. if (this.workListIds.length > 1) {
  540. return this.$message.warning('工艺文件只能选择一个工单!');
  541. }
  542. let req = {
  543. taskId: this.taskObj.id,
  544. workOrderId: this.workListIds[0]
  545. };
  546. this.$refs.wokePopupRef.open(req);
  547. }
  548. if (t == 'feed') {
  549. }
  550. // 委外
  551. if (t == 'Outsourcing') {
  552. if (this.workListIds.length > 1) {
  553. return this.$message.warning('委外工序只能选择一个工单!');
  554. } else if (this.workListIds.length < 1)
  555. return this.$message.warning('请选择工单!');
  556. else {
  557. // /
  558. this.handOutsource(this.workListIds[0]);
  559. }
  560. }
  561. },
  562. handOutsource(workOrderId) {
  563. console.log(this.taskObj, workOrderId);
  564. // return
  565. let param = {
  566. taskId: this.taskObj.id,
  567. workOrderId: workOrderId
  568. };
  569. pcCheckOutsource(param).then((res) => {
  570. this.outsourceForm = {
  571. ...res.data
  572. };
  573. this.outsourceForm.name = this.taskObj.name + '委外';
  574. console.log(res, 'res');
  575. if (res.data.outsource) {
  576. this.isType = '3';
  577. this.getTaskInstanceByIdFn(workOrderId);
  578. } else {
  579. return this.$message.warning('此工序不能委外');
  580. }
  581. });
  582. },
  583. //获取工单列表
  584. getTaskInstanceByIdFn(workOrderId) {
  585. getTaskInstanceById(workOrderId).then((res) => {
  586. console.log(res, 'res');
  587. let { data } = res;
  588. if (data.length) {
  589. data = data.filter((item) => item.type == 1 || item.type == 4);
  590. let arr = data.findIndex(
  591. (item) => item.sourceTaskId == this.taskObj.id
  592. );
  593. console.log(arr);
  594. if (arr != -1) {
  595. data.splice(0, arr + 1);
  596. }
  597. console.log(data, '吃饭吃饭吃饭吃饭');
  598. this.$set(this.outsourceForm, 'newStepsList', data);
  599. }
  600. });
  601. },
  602. pickAdd() {
  603. this.pickingShow = true;
  604. },
  605. // 关闭领料弹窗
  606. pickingClose(val) {
  607. if (val) {
  608. this.$nextTick(() => {
  609. this.$refs.pickListRef.getList(this.workListIds);
  610. });
  611. }
  612. this.pickingShow = false;
  613. },
  614. rowClick(row, taskId) {
  615. console.log(row, taskId, 'row');
  616. if (taskId) {
  617. let params = {
  618. categoryId: row.categoryId,
  619. taskId: taskId
  620. };
  621. getByTaskId(params).then((res) => {
  622. this.BomObj = res.data;
  623. this.$forceUpdate();
  624. });
  625. }
  626. }
  627. },
  628. mounted() {
  629. this.$nextTick(() => {
  630. const targetElements =
  631. document.getElementsByClassName('ele-admin-tabs');
  632. if (targetElements.length > 0) {
  633. // 遍历所有具有 'ele-admin-tabs' 类的元素
  634. Array.from(targetElements).forEach((element) => {
  635. // 对每个元素添加 'new-ele-admin-tabs' 类
  636. element.classList.add('new-ele-admin-tabs');
  637. });
  638. }
  639. });
  640. },
  641. destroyed() {
  642. this.$nextTick(() => {
  643. const targetElements =
  644. document.getElementsByClassName('ele-admin-tabs');
  645. if (targetElements.length > 0) {
  646. Array.from(targetElements).forEach((element) => {
  647. element.classList.remove('new-ele-admin-tabs');
  648. });
  649. }
  650. });
  651. }
  652. };
  653. </script>
  654. <style>
  655. .content_box {
  656. display: flex;
  657. }
  658. .content_box_tab {
  659. width: 220px;
  660. padding: 5px;
  661. height: calc(100vh - 73px);
  662. background-color: #fff;
  663. overflow-y: auto;
  664. }
  665. .footBtn {
  666. position: absolute;
  667. bottom: 20px;
  668. left: 0;
  669. }
  670. .new-ele-admin-tabs {
  671. display: none !important;
  672. }
  673. .c_title {
  674. color: #157a2c;
  675. font-size: 16px;
  676. font-weight: bold;
  677. }
  678. .tableZ_box {
  679. border: 1px solid #e3e5e5;
  680. margin: 6px 0;
  681. &:last-child {
  682. border-bottom: none;
  683. }
  684. .row {
  685. width: 100%;
  686. display: flex;
  687. }
  688. .col {
  689. width: calc(100% / 5);
  690. display: flex;
  691. align-items: center;
  692. min-width: 200px;
  693. min-height: 32px;
  694. border-bottom: 1px solid #e3e5e5;
  695. border-right: 1px solid #e3e5e5;
  696. &:last-child {
  697. border-right: none;
  698. }
  699. .name {
  700. display: flex;
  701. align-items: center;
  702. padding: 4px;
  703. width: 80px;
  704. height: 100%;
  705. background-color: #d0e4d5;
  706. color: #000;
  707. }
  708. .content {
  709. padding: 4px 6px;
  710. color: #000;
  711. }
  712. }
  713. .pd6 {
  714. padding: 0 6px;
  715. }
  716. }
  717. </style>
  718. <style lang="scss" scoped>
  719. .seek-list {
  720. display: flex;
  721. justify-content: space-between;
  722. align-items: center;
  723. padding: 10px 10px;
  724. }
  725. .right_main_box {
  726. background-color: #fff;
  727. height: 100%;
  728. box-sizing: border-box;
  729. }
  730. .index_box {
  731. padding: 10px;
  732. padding-bottom: 0;
  733. width: 100%;
  734. box-sizing: border-box;
  735. min-width: 1280px !important;
  736. height: calc(100vh - 60px);
  737. // overflow-x: auto;
  738. /* 当内容超出宽度时,允许水平滚动 */
  739. white-space: nowrap;
  740. /* 防止内部文本换行,确保所有内容都在一行显示 */
  741. scrollbar-width: thin;
  742. /* 设置滚动条宽度(浏览器兼容性可能有所不同) */
  743. scrollbar-color: #40a9ff transparent;
  744. /* 设置滚动条颜色和轨道颜色(同样,浏览器兼容性) */
  745. }
  746. .main {
  747. width: 100%;
  748. min-width: 1280px;
  749. height: calc(100vh - 70px - 50px - 80px);
  750. display: flex;
  751. justify-content: space-between;
  752. }
  753. .left_main {
  754. width: 100%;
  755. height: 100%;
  756. display: flex;
  757. flex-direction: column;
  758. justify-content: space-around;
  759. min-width: 640px;
  760. .top {
  761. width: 100%;
  762. height: 100%;
  763. overflow: hidden;
  764. }
  765. // .bottom {
  766. // width: 100%;
  767. // min-height: calc((100vh - 70px - 50px - 80px - 20px) / 2);
  768. // overflow: hidden;
  769. // }
  770. }
  771. ::v-deep .el-tabs__item.is-active {
  772. background-color: #dffade;
  773. /* 蓝色背景 */
  774. color: #333;
  775. }
  776. ::v-deep .is-active {
  777. color: #dffade;
  778. }
  779. .right_main {
  780. min-width: 640px;
  781. padding-bottom: 12px;
  782. height: calc((100vh - 70px - 50px - 80px - 12px));
  783. background: #f0f3f3;
  784. }
  785. </style>