瀏覽代碼

修改bug

695593266@qq.com 11 月之前
父節點
當前提交
ad9d13229a

+ 6 - 6
src/views/material/BOMmanage/components/baseInfo.vue

@@ -87,17 +87,17 @@
       :isEdit="true"
     ></baseInfoSave>
 
-    <!-- <BomDetailsPop ref="bomDrawer"></BomDetailsPop>; -->
+    <BomDetailsPop ref="bomDrawer"></BomDetailsPop>;
   </div>
 </template>
 
 <script>
   import baseInfoSave from './baseInfoSave.vue';
-  // import BomDetailsPop from '../../BOMmanage/detailsPop.vue';
+  import BomDetailsPop from './detailsPop.vue';
   export default {
     components: {
-      baseInfoSave
-      // BomDetailsPop
+      baseInfoSave,
+      BomDetailsPop
     },
     data() {
       return {
@@ -160,9 +160,9 @@
         //   isProduct: this.dataInfo,
         //   bomType: Number(this.dataInfo.bomType),
         //   isTemp: this.dataInfo.isTemp
-        // };
-        // this.open(rowData);
+        // }
         // this.$refs.bomDrawer.open(rowData);
+        // this.open(rowData);
         // console.log(this.$refs, 'refs');
       }
     }

+ 912 - 0
src/views/material/BOMmanage/components/detailsPop.vue

@@ -0,0 +1,912 @@
+<template>
+  <div>
+    <el-drawer
+      title=""
+      :visible.sync="drawer"
+      :custom-class="isFullscreen ? 'not-fullscreen' : 'is-fullscreen'"
+      :before-close="handleClose"
+      :with-header="false"
+      :append-to-body="true"
+    >
+      <!-- 自定义头部 -->
+      <div class="custom-drawer-header" v-if="!isWt">
+        <div class="radio_box rx-cc">
+          <el-radio-group
+            size="small"
+            v-model="currentNodeData.bomType"
+            @change="bomChange"
+          >
+            <el-radio-button
+              :label="4"
+              v-permissionccc="['main:bomcategory:ebom']"
+              >EBOM
+            </el-radio-button>
+            <el-radio-button :label="1">PBOM </el-radio-button>
+
+            <!-- v-if="
+                searchObj.isProduct ||
+                [1, 9].includes(searchObj.rootPathIdParent)
+              " -->
+            <el-radio-button
+              :label="2"
+              v-permissionccc="['main:bomcategory:mbom']"
+              >MBOM
+            </el-radio-button>
+            <el-radio-button
+              :label="3"
+              v-permissionccc="['main:bomcategory:abom']"
+              >ABOM
+            </el-radio-button>
+          </el-radio-group>
+
+          <div style="margin-left: 100px">
+            <el-button
+              type="primary"
+              size="mini"
+              icon="el-icon-plus"
+              @click="handleAdd"
+              v-if="
+                $hasPermission('main:categoryparam:saveBom') &&
+                currentNodeData.bomType == 1 &&
+                (currentNodeData.parentId == '0' || !currentNodeData.parentId)
+              "
+            >
+              新建
+            </el-button>
+
+            <el-button
+              type="danger"
+              size="mini"
+              icon="el-icon-delete"
+              @click="remove"
+              v-if="
+                (currentNodeData.approvalStatus == 0 ||
+                  currentNodeData.approvalStatus == 3) &&
+                $hasPermission('main:categoryparam:deleteBom') &&
+                (currentNodeData.parentId == '0' || !currentNodeData.parentId)
+              "
+            >
+              删除
+            </el-button>
+
+            <el-button
+              v-if="
+                currentNodeData.bomType == 1 &&
+                (currentNodeData.parentId == '0' || !currentNodeData.parentId)
+              "
+              type="primary"
+              size="mini"
+              icon="el-icon-download"
+              plain
+              >导出</el-button
+            >
+
+            <el-button
+              @click="uploadFile"
+              v-if="
+                currentNodeData.bomType == 1 &&
+                (currentNodeData.parentId == '0' || !currentNodeData.parentId)
+              "
+              type="primary"
+              size="mini"
+              icon="el-icon-upload2"
+              plain
+              >导入</el-button
+            >
+
+            <el-button
+              type="primary"
+              size="mini"
+              icon="el-icon-refresh"
+              plain
+              @click="transformation('P')"
+              :disabled="currentNodeData.approvalStatus != 2"
+              v-if="
+                currentNodeData.bomType == 4 &&
+                (currentNodeData.parentId == '0' || !currentNodeData.parentId)
+              "
+              >转换PBOM</el-button
+            >
+
+            <el-button
+              type="primary"
+              size="mini"
+              icon="el-icon-refresh"
+              plain
+              :disabled="currentNodeData.approvalStatus != 2"
+              @click="transformation('E')"
+              v-if="
+                currentNodeData.bomType == 1 &&
+                (currentNodeData.parentId == '0' || !currentNodeData.parentId)
+              "
+              >转换EBOM</el-button
+            >
+
+            <el-button
+              type="primary"
+              size="mini"
+              icon="el-icon-refresh"
+              plain
+              :disabled="currentNodeData.approvalStatus != 2"
+              @click="transformation('M')"
+              v-if="
+                currentNodeData.bomType == 1 &&
+                (searchObj.isProduct ||
+                  ['1', '9'].includes(searchObj.rootPathIdParent)) &&
+                (currentNodeData.parentId == '0' || !currentNodeData.parentId)
+              "
+              >转换MBOM</el-button
+            >
+
+            <el-button
+              type="primary"
+              size="mini"
+              icon="el-icon-refresh"
+              plain
+              :disabled="currentNodeData.approvalStatus != 2"
+              @click="transformation('A')"
+              v-if="
+                currentNodeData.bomType == 1 &&
+                (searchObj.isProduct ||
+                  ['1', '9'].includes(searchObj.rootPathIdParent)) &&
+                (currentNodeData.parentId == '0' || !currentNodeData.parentId)
+              "
+              >转换ABOM</el-button
+            >
+
+            <el-button
+              type="primary"
+              size="mini"
+              @click="handSubmit"
+              v-if="
+                (currentNodeData.approvalStatus == 0 ||
+                  currentNodeData.approvalStatus == 3) &&
+                (currentNodeData.parentId == '0' || !currentNodeData.parentId)
+              "
+            >
+              提交发布
+            </el-button>
+
+            <el-button
+              type="primary"
+              size="mini"
+              @click="handleRefresh"
+              v-if="currentNodeData.approvalStatus != 1"
+            >
+              刷新
+            </el-button>
+          </div>
+        </div>
+        <div>
+          <el-button
+            type="text"
+            @click="handleDetails()"
+            v-if="isNotData && currentNodeData.approvalStatus == 1"
+            :underline="false"
+          >
+            {{ approvalStatusOpt[+currentNodeData.approvalStatus] }}
+          </el-button>
+
+          <el-button
+            type="text"
+            style="color: #f56c6c"
+            v-if="isNotData && currentNodeData.approvalStatus == 3"
+            :underline="false"
+          >
+            {{ approvalStatusOpt[+currentNodeData.approvalStatus] }}
+          </el-button>
+
+          <el-button
+            icon="el-icon-full-screen"
+            type="text"
+            @click="handleFull"
+            >{{ isFullscreen ? '全屏' : '缩小' }}</el-button
+          >
+          <el-button
+            icon="el-icon-circle-close"
+            type="text"
+            @click="handleClose"
+            >关闭</el-button
+          >
+        </div>
+      </div>
+
+      <!-- 抽屉内容 -->
+      <div class="drawer_content">
+        <ele-split-layout
+          width="260px"
+          allow-collapse
+          :resizable="true"
+          :min-size="200"
+          :max-size="-200"
+          :left-style="{
+            overflow: 'hidden',
+            width: '100%'
+          }"
+          :right-style="{ overflow: 'hidden' }"
+          :responsive="false"
+        >
+          <!-- // tree 组件 -->
+          <div class="ele-border-lighter sys-organization-list">
+            <div>
+              版本号: &nbsp; &nbsp;
+              <el-select
+                size="mini"
+                style="width: 70%; margin: 6px 0"
+                v-model="searchObj.versions"
+                placeholder="请选择bom版本"
+                @change="getTreeData"
+                :disabled="isWt"
+              >
+                <el-option
+                  v-for="item in versList"
+                  :label="'V' + item.versions + '.0'"
+                  :value="item.versions"
+                  :key="item.id"
+                >
+                </el-option>
+              </el-select>
+              <br />
+              属性类型:
+              <el-select
+                size="mini"
+                style="width: 70%; margin: 6px 0"
+                v-model="searchObj.componentAttribute"
+                filterable
+                multiple
+                placeholder="请选择属性类型"
+                @change="getTreeData"
+                :disabled="isWt"
+              >
+                <el-option
+                  v-for="item in sxtList"
+                  :key="item.value"
+                  :value="item.value"
+                  :label="item.label"
+                ></el-option>
+              </el-select>
+            </div>
+
+            <el-tree
+              class="treeData"
+              :data="treeList"
+              :expand-on-click-node="false"
+              :props="defaultProps"
+              ref="treeRef"
+              :default-expanded-keys="current && current.id ? [current.id] : []"
+              :highlight-current="true"
+              node-key="id"
+              @node-click="handleNodeClick"
+            >
+              <span class="custom-tree-node" slot-scope="{ node, data }">
+                {{ data.categoryCode }} / {{ node.label }}
+              </span>
+            </el-tree>
+          </div>
+
+          <template v-slot:content v-if="isNotData">
+            <!-- 基本信息 -->
+            <baseInfo
+              :dataInfo="currentNodeData"
+              @getNewBomData="getNewBomData"
+            />
+
+            <!-- table -->
+            <el-tabs
+              v-model="activeName"
+              class="tab-box"
+              type="border-card"
+              @tab-click="handleClick"
+            >
+              <el-tab-pane label="属性" name="属性">
+                <attribute
+                  :attributeData="currentNodeData"
+                  :isWt="isWt"
+                ></attribute>
+              </el-tab-pane>
+
+              <el-tab-pane
+                :label="
+                  currentNodeData.bomType == 1
+                    ? 'PBOM明细表'
+                    : currentNodeData.bomType == 2
+                    ? 'MBOM明细表'
+                    : currentNodeData.bomType == 3
+                    ? 'ABOM明细表'
+                    : 'EBOM明细表'
+                "
+                name="明细表"
+              >
+                <detailedList
+                  v-if="activeName == '明细表'"
+                  :isTemp="searchObj.isTemp"
+                  :attributeData="currentNodeData"
+                  :treeId="treeId"
+                  :isWt="isWt"
+                ></detailedList>
+              </el-tab-pane>
+
+              <el-tab-pane
+                label="工艺路线"
+                name="工艺路线"
+                v-if="currentNodeData.bomType != 4"
+              >
+                <routing
+                  v-if="activeName == '工艺路线'"
+                  ref="routingRef"
+                  :isWt="isWt"
+                  :attributeData="currentNodeData"
+                  :taskParam="currentNodeData"
+                  :resourceBomId="resourceBomId"
+                ></routing>
+              </el-tab-pane>
+              <el-tab-pane
+                label="工序配置"
+                name="工序配置"
+                v-if="currentNodeData.bomType != 4"
+              >
+                <!-- && (searchObj.isProduct ||
+              [1, 9].includes(searchObj.rootPathIdParent)) -->
+                <workmanship
+                  v-if="activeName == '工序配置'"
+                  ref="workmanshipRef"
+                  :attributeData="currentNodeData"
+                  :taskParam="currentNodeData"
+                  :resourceBomId="resourceBomId"
+                ></workmanship>
+              </el-tab-pane>
+            </el-tabs>
+          </template>
+
+          <template v-slot:content v-else>
+            <el-empty
+              :image-size="200"
+              :description="
+                currentNodeData.bomType == 1
+                  ? 'PBOM 暂无数据,请先新建'
+                  : currentNodeData.bomType == 2
+                  ? 'MBOM 暂无数据,请先新建'
+                  : currentNodeData.bomType == 3
+                  ? 'ABOM 暂无数据,请先新建'
+                  : 'EBOM 暂无数据,请先新建'
+              "
+            ></el-empty>
+          </template>
+        </ele-split-layout>
+      </div>
+    </el-drawer>
+
+    <baseInfoSave
+      v-if="baseInfoShow"
+      @close="baseClose"
+      :categoryObj="currentNodeData"
+      :categoryId="searchObj.categoryId"
+      :categoryName="searchObj.categoryName"
+    ></baseInfoSave>
+
+    <importDialog
+      :defModule="moudleName"
+      ref="importDialogRef"
+      @success="getTreeData"
+    />
+
+    <el-dialog
+      title="发布"
+      :visible.sync="isSubmit"
+      v-if="isSubmit"
+      width="30%"
+      center
+    >
+      <div>
+        <el-radio v-model="radioSubmit" :label="1">药品</el-radio>
+        <el-radio v-model="radioSubmit" :label="2">器械</el-radio>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="isSubmit = false">取 消</el-button>
+        <el-button type="primary" @click="handJsSubmit()">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <LCdetail ref="detailRef"></LCdetail>
+  </div>
+</template>
+
+<script>
+  import {
+    getBomTreeList,
+    versionList,
+    getBomGetById,
+    convert,
+    convertABom,
+    convertEBOM,
+    convertEBomToPBOM,
+    deleteBomTreeList,
+    bomSubmit,
+    jsBomSubmit,
+    deviceBomSubmit,
+    hasNewVersion
+  } from '@/api/material/BOM.js';
+
+  import baseInfo from './baseInfo.vue';
+  import baseInfoSave from './baseInfoSave.vue';
+  import attribute from './attribute.vue';
+  import detailedList from './detailedList.vue';
+  import importDialog from '../qualityTesting/import-dialog.vue';
+  import LCdetail from './LCdetail.vue';
+  import routing from './routing.vue';
+  import workmanship from './workmanship.vue';
+
+  export default {
+    name: 'bomDetailsPop',
+    components: {
+      baseInfo,
+      baseInfoSave,
+      attribute,
+      detailedList,
+      importDialog,
+      LCdetail,
+      routing,
+      workmanship
+    },
+    data() {
+      return {
+        drawer: false,
+        isFullscreen: true,
+        resourceBomId: '',
+        currentNodeData: {
+          bomType: 1,
+          children: [],
+          parentId: ''
+        },
+
+        current: {},
+        treeList: [],
+        versList: [],
+        treeLoading: false,
+
+        defaultProps: {
+          children: 'children',
+          label: 'name'
+        },
+
+        searchObj: {
+          versions: '',
+          categoryId: '',
+          isProduct: false,
+          componentAttribute: [],
+          isTemp: 0
+        },
+
+        activeName: '属性',
+
+        baseInfoShow: false,
+        isNotData: true,
+
+        moudleName: 'mainUser',
+        isSubmit: false,
+        radioSubmit: 1,
+
+        treeId: null,
+
+        approvalStatusOpt: {
+          0: '未提交',
+          1: '审核中',
+          2: '审核通过',
+          3: '审核不通过'
+        },
+
+        sxtList: [
+          {
+            label: '自制件',
+            value: 1
+          },
+          {
+            label: '采购件',
+            value: 2
+          },
+          {
+            label: '外协件',
+            value: 3
+          },
+          {
+            label: '受托件',
+            value: 4
+          }
+        ],
+
+        isWt: false
+      };
+    },
+
+    computed: {
+      clientEnvironmentId() {
+        return this.$store.state.user.info.clientEnvironmentId;
+      }
+    },
+
+    methods: {
+      open(row) {
+        this.searchObj = row;
+
+        console.log(row, 'rowrowrowrowrow');
+
+        if (Object.prototype.hasOwnProperty.call(row, 'isWt') && row.isWt) {
+          this.isWt = row.isWt;
+          this.isFullscreen = false;
+        }
+
+        if (Object.prototype.hasOwnProperty.call(row, 'bomType')) {
+          this.currentNodeData.bomType = row.bomType;
+        }
+        this.drawer = true;
+
+        if (
+          this.currentNodeData.bomType == 2 ||
+          this.currentNodeData.bomType == 3
+        ) {
+          this.searchObj.componentAttribute = [1];
+        } else {
+          this.searchObj.componentAttribute = [];
+        }
+
+        this.getTreeData();
+        this.getVersion();
+      },
+
+      handleClose() {
+        this.searchObj = {
+          versions: '',
+          categoryId: '',
+          componentAttribute: [],
+          isProduct: false,
+          isTemp: 0
+        };
+        this.activeName = '属性';
+        this.drawer = false;
+      },
+
+      getNewBomData(data) {
+        let rowData = {
+          categoryId: data.categoryId,
+          categoryName: data.name,
+          code: data.code,
+          versions: data.resourceBomVersion,
+          rootPathIdParent: data.categoryLevelPathIdParent,
+          isProduct: true,
+          bomType: Number(data.bomType),
+          isTemp: data.isTemp
+        };
+        this.open(rowData);
+      },
+
+      handleFull() {
+        this.isFullscreen = !this.isFullscreen;
+        this.$forceUpdate();
+      },
+
+      bomChange(e) {
+        this.searchObj.versions = '';
+        this.searchObj.componentAttribute = [];
+        this.currentNodeData.bomType = e;
+
+        if (
+          this.currentNodeData.bomType == 2 ||
+          this.currentNodeData.bomType == 3
+        ) {
+          this.searchObj.componentAttribute = [1];
+        } else {
+          this.searchObj.componentAttribute = [];
+        }
+
+        this.getTreeData();
+        this.getVersion();
+      },
+
+      async getTreeData() {
+        try {
+          this.treeLoading = true;
+
+          let componentAttribute = '';
+
+          console.log(this.searchObj.componentAttribute);
+
+          if (
+            this.searchObj.componentAttribute &&
+            this.searchObj.componentAttribute.length != 0
+          ) {
+            componentAttribute = this.searchObj.componentAttribute.join(',');
+          }
+
+          const res = await getBomTreeList({
+            categoryId: this.searchObj.categoryId,
+            versions: this.searchObj.versions,
+            bomType: this.currentNodeData.bomType,
+            isTemp: this.searchObj.isTemp || 0,
+            componentAttribute
+          });
+          this.treeLoading = false;
+          if (res?.code === '0') {
+            if (res.data?.length > 0) {
+              this.treeList = res.data;
+              this.$nextTick(() => {
+                this.isNotData = true;
+                // 默认高亮第一个
+                this.$refs.treeRef.setCurrentKey(res.data[0].id);
+                this.handleNodeClick(res.data[0]);
+              });
+            } else {
+              this.isNotData = false;
+              this.treeList = [];
+            }
+            return this.treeList;
+          }
+        } catch (error) {
+          console.log(error);
+        }
+        this.treeLoading = false;
+      },
+
+      handleNodeClick(data) {
+        this.treeId = data.id;
+        this.resourceBomId =
+          data.parentId != 0 ? data.resourceBomId || data.id : data.id;
+        this.handBomDetails(this.treeId);
+      },
+
+      handBomDetails(id) {
+        if (id) {
+          getBomGetById(id).then((res) => {
+            res.data.attributeType = res.data.category.attributeType;
+
+            this.currentNodeData = res.data;
+            this.searchObj.versions = this.currentNodeData.versions;
+
+            this.$forceUpdate();
+
+            console.log(this.currentNodeData, 'this.currentNodeData');
+          });
+        } else {
+          this.currentNodeData = {
+            bomType: 1,
+            children: []
+          };
+        }
+      },
+
+      getVersion(type) {
+        let param = {
+          categoryId: this.searchObj.categoryId,
+          bomType: this.currentNodeData.bomType,
+          isTemp: this.searchObj.isTemp || 0
+        };
+        versionList(param).then((res) => {
+          this.versList = res || [];
+          if (type == 'del' || type == 'add') {
+            if (this.versList.length >= 1) {
+              this.searchObj.versions =
+                this.versList[this.versList.length - 1].versions;
+            } else {
+              this.searchObj.versions = '';
+            }
+
+            this.getTreeData();
+          }
+        });
+      },
+
+      handleClick(tab) {},
+      remove() {
+        if (this.currentNodeData.status == 1) {
+          return this.$message.warning('已发布版本不能删除');
+        }
+
+        this.$confirm('是否确认删除?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        })
+          .then(() => {
+            deleteBomTreeList([this.currentNodeData.id]).then((msg) => {
+              this.$message.success('删除' + msg);
+              this.getVersion('del');
+            });
+          })
+          .finally(() => {});
+      },
+
+      async transformation(tt) {
+        if (this.currentNodeData.status != 1) {
+          return this.$message.warning('只有已发布版本才可以转换');
+        }
+
+        let _type = tt == 'P' ? 1 : tt == 'M' ? 2 : tt == 'A' ? 3 : 4;
+        if (!this.isEdit) {
+          let isHas = await this.hasVersionFn(_type);
+          if (!isHas) return;
+        }
+
+        this.loadingInstance = this.$loading({
+          lock: true,
+          text: '转换中...',
+          background: 'rgba(0, 0, 0, 0.7)'
+        });
+        let ULR =
+          tt == 'M'
+            ? convert
+            : tt == 'A'
+            ? convertABom
+            : tt == 'E'
+            ? convertEBOM
+            : tt == 'P'
+            ? convertEBomToPBOM
+            : '';
+        ULR({
+          versions: this.searchObj.versions,
+          categoryId: this.searchObj.categoryId
+        })
+          .then((data) => {
+            if (data.code == '0') {
+              this.loadingInstance.close();
+              this.$message.success('转换成功');
+
+              this.currentNodeData.bomType = _type;
+              this.searchObj.versions = '';
+              this.getTreeData();
+              this.getVersion();
+            }
+          })
+          .catch((err) => {
+            this.loadingInstance.close();
+          });
+      },
+
+      handleAdd() {
+        this.baseInfoShow = true;
+      },
+
+      baseClose(val) {
+        if (val) {
+          this.getVersion('add');
+        }
+        this.activeName = '属性';
+        this.baseInfoShow = false;
+      },
+
+      uploadFile() {
+        this.$refs.importDialogRef.open();
+      },
+
+      handleRefresh() {
+        this.getTreeData();
+      },
+
+      handSubmit() {
+        if (this.clientEnvironmentId == 5) {
+          this.isSubmit = true;
+        } else {
+          this.$alert('确定要发布吗?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          })
+            .then(() => {
+              bomSubmit({ businessId: this.currentNodeData.id }).then((res) => {
+                if (res?.code == 0) {
+                  this.$message.success('发布成功');
+                  this.getTreeData();
+                }
+              });
+            })
+            .catch(() => {});
+        }
+      },
+
+      handJsSubmit() {
+        let URL = this.radioSubmit == 1 ? jsBomSubmit : deviceBomSubmit;
+        this.$alert('确定要发布吗?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        })
+          .then(() => {
+            URL({ businessId: this.currentNodeData.id }).then((res) => {
+              this.isSubmit = false;
+              this.$message.success('发布成功');
+              this.getTreeData();
+            });
+          })
+          .catch(() => {});
+      },
+
+      handleDetails() {
+        if (!this.currentNodeData.processInstanceId) {
+          this.$message.info('未提交没有审核流程');
+        } else {
+          this.$refs.detailRef.open(this.currentNodeData.processInstanceId);
+        }
+      },
+
+      async hasVersionFn(bomType) {
+        return new Promise((resolve) => {
+          let param = {
+            categoryId: this.searchObj.categoryId,
+            bomType: bomType
+          };
+          hasNewVersion(param).then((res) => {
+            if (res.data == 1) {
+              this.$confirm('已经草稿版本存在,是否覆盖?', '提示', {
+                confirmButtonText: '覆盖',
+                cancelButtonText: '取消',
+                type: 'warning'
+              })
+                .then(() => {
+                  resolve(true);
+                })
+                .catch(() => {
+                  resolve(false);
+                });
+            } else {
+              resolve(true);
+            }
+          });
+        });
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  /* 自定义全屏样式 */
+  ::v-deep .is-fullscreen {
+    width: 100vw !important;
+    height: 100vh !important;
+    overflow: hidden !important;
+    /* 隐藏滚动条 */
+  }
+
+  ::v-deep .not-fullscreen {
+    width: calc(100vw - 260px) !important;
+    height: 100vh !important;
+    overflow: hidden !important;
+    /* 隐藏滚动条 */
+  }
+
+  .custom-drawer-header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 4px 15px;
+    background-color: #f5f7fa;
+    /* 自定义背景色 */
+    border-bottom: 1px solid #ebeef5;
+    /* 自定义边框,与抽屉内容分隔 */
+  }
+
+  .drawer_content {
+    margin: 10px 20px;
+    box-sizing: border-box;
+  }
+
+  .sys-organization-list {
+    height: calc(100vh - 65px);
+    box-sizing: border-box;
+    border-width: 1px;
+    border-style: solid;
+    overflow: auto;
+    padding: 0 10px;
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+    overflow: hidden;
+
+    .treeData {
+      height: 0 1 auto;
+      overflow-y: auto;
+      height: calc(100vh - 125px);
+    }
+  }
+
+  .tab-box {
+    margin-top: 12px;
+  }
+</style>

+ 1 - 0
src/views/material/BOMmanage/detailsPop.vue

@@ -6,6 +6,7 @@
       :custom-class="isFullscreen ? 'not-fullscreen' : 'is-fullscreen'"
       :before-close="handleClose"
       :with-header="false"
+      :append-to-body="true"
     >
       <!-- 自定义头部 -->
       <div class="custom-drawer-header" v-if="!isWt">