|
@@ -1,422 +0,0 @@
|
|
|
-<template>
|
|
|
|
|
- <page-wrapper>
|
|
|
|
|
- <el-card :bordered="false" class="proCard">
|
|
|
|
|
- <!-- row-key 属性,用于设置树形表格的行键,默认为id,这里设置为code,保证唯一性 不能为空字符串 -->
|
|
|
|
|
- <BasicTable
|
|
|
|
|
- :columns="colomns"
|
|
|
|
|
- :data-source="comTreeData"
|
|
|
|
|
- :row-key="(row) => row.uniqueCode"
|
|
|
|
|
- :action-column="actionColumn"
|
|
|
|
|
- :expend-row="expendRowKeys"
|
|
|
|
|
- :tableSetting="{
|
|
|
|
|
- width: 200,
|
|
|
|
|
- size: false,
|
|
|
|
|
- redo: false,
|
|
|
|
|
- fullscreen: false,
|
|
|
|
|
- striped: false,
|
|
|
|
|
- setting: false,
|
|
|
|
|
- }"
|
|
|
|
|
- ref="tableRef"
|
|
|
|
|
- @checked-row-change="onCheckedRow"
|
|
|
|
|
- @order-change="orderByItem"
|
|
|
|
|
- >
|
|
|
|
|
- <template #tableTitle>
|
|
|
|
|
- <div>
|
|
|
|
|
- <el-button type="primary" @click="companyAdd" style="margin-right: 40px">
|
|
|
|
|
- <template #icon>
|
|
|
|
|
- <el-icon>
|
|
|
|
|
- <Plus />
|
|
|
|
|
- </el-icon>
|
|
|
|
|
- </template>
|
|
|
|
|
- 添加公司
|
|
|
|
|
- </el-button>
|
|
|
|
|
- </div>
|
|
|
|
|
- </template>
|
|
|
|
|
- <template #empty>
|
|
|
|
|
- <div class="empty-content flex flex-col items-center">
|
|
|
|
|
- <img src="@/assets/icons/no-content.png" class="empty-img" />
|
|
|
|
|
- <span class="empty-text">目前无内容,请先添加公司</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </template>
|
|
|
|
|
- </BasicTable>
|
|
|
|
|
- </el-card>
|
|
|
|
|
-
|
|
|
|
|
- <div v-if="disableDepartmentEdit">
|
|
|
|
|
- <!-- 上飞定制的抽屉表单 -->
|
|
|
|
|
- <!-- 公司 -->
|
|
|
|
|
- <CompanyDrawer_shangfei
|
|
|
|
|
- v-if="showDrawer === DrawerType.company"
|
|
|
|
|
- :detail="detail"
|
|
|
|
|
- @on-close="handleUpdateTableCom"
|
|
|
|
|
- @on-ok="subCompany"
|
|
|
|
|
- />
|
|
|
|
|
- <!-- 车间 -->
|
|
|
|
|
- <WorkshopDrawer_shangfei
|
|
|
|
|
- v-if="showDrawer === DrawerType.workshop"
|
|
|
|
|
- :detail="detail"
|
|
|
|
|
- @on-close="handleUpdataWorkshopTab"
|
|
|
|
|
- @on-ok="subWorkshop"
|
|
|
|
|
- />
|
|
|
|
|
- <!-- 工位 -->
|
|
|
|
|
- <!-- 上飞定制环境中工位采用自由输入,不采用下拉框 -->
|
|
|
|
|
- <WorkspaceDrawer
|
|
|
|
|
- v-if="showDrawer === DrawerType.workspace"
|
|
|
|
|
- :detail="detail"
|
|
|
|
|
- @on-close="handleUpdataWorkspaceTab"
|
|
|
|
|
- @on-ok="subWorkspace"
|
|
|
|
|
- />
|
|
|
|
|
- </div>
|
|
|
|
|
- <div v-else>
|
|
|
|
|
- <!-- 其他项目的抽屉表单 -->
|
|
|
|
|
- <!-- 公司 -->
|
|
|
|
|
- <CompanyDrawer
|
|
|
|
|
- v-if="showDrawer === DrawerType.company"
|
|
|
|
|
- :detail="detail"
|
|
|
|
|
- @on-ok="subCompany"
|
|
|
|
|
- @on-close="handleUpdateTableCom" />
|
|
|
|
|
- <!-- 车间 -->
|
|
|
|
|
- <WorkshopDrawer
|
|
|
|
|
- v-if="showDrawer === DrawerType.workshop"
|
|
|
|
|
- :detail="detail"
|
|
|
|
|
- @on-close="handleUpdataWorkshopTab"
|
|
|
|
|
- @on-ok="subWorkshop" />
|
|
|
|
|
-
|
|
|
|
|
- <!-- 工位 -->
|
|
|
|
|
- <WorkspaceDrawer
|
|
|
|
|
- v-if="showDrawer === DrawerType.workspace"
|
|
|
|
|
- :detail="detail"
|
|
|
|
|
- @on-close="handleUpdataWorkspaceTab"
|
|
|
|
|
- @on-ok="subWorkspace"
|
|
|
|
|
- /></div>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 用于渝北项目政府租户绑定企业 -->
|
|
|
|
|
- <SceneDialog v-if="dialogVisible" @close-dialog="closeDialog" />
|
|
|
|
|
- </page-wrapper>
|
|
|
|
|
-</template>
|
|
|
|
|
-
|
|
|
|
|
-<script setup lang="ts">
|
|
|
|
|
- import { ref, onMounted, reactive, h, Ref } from 'vue';
|
|
|
|
|
- import { Plus } from '@element-plus/icons-vue';
|
|
|
|
|
- import { BasicTable, BasicColumn } from '@/components/Table';
|
|
|
|
|
- import ActionColomn from './components/ActionColomns.vue';
|
|
|
|
|
- import CompanyDrawer from './components/CompanyDrawer.vue';
|
|
|
|
|
- import CompanyDrawer_shangfei from './components/CompanyDrawer-shangfei.vue';
|
|
|
|
|
- import WorkshopDrawer from './components/WorkshopDrawer.vue';
|
|
|
|
|
- import WorkshopDrawer_shangfei from './components/WorkshopDrawer-shangfei.vue';
|
|
|
|
|
- import WorkspaceDrawer from './components/WorkspaceDrawer.vue';
|
|
|
|
|
- import WorkspaceDrawer_shangfei from './components/WorkspaceDrawer-shangfei.vue';
|
|
|
|
|
- import { DrawerType } from '@/types/scene/constant.ts';
|
|
|
|
|
- import SceneDialog from './components/SceneDialog.vue';
|
|
|
|
|
- import { colomns } from './hook/use-table-method';
|
|
|
|
|
- import { delCompany, delWorkshop, delWorkspace, updateComShopSpaceTreeSort } from '@/api/scene/scene';
|
|
|
|
|
- import { ComTreeType, UseComType, UseWorkshopType, UseWorkspaceType } from '@/types/scene/type.ts';
|
|
|
|
|
- import useComTree from './store/use-com-tree';
|
|
|
|
|
- import { storeToRefs } from 'pinia';
|
|
|
|
|
- import { useGlobSetting } from '@/hooks/setting';
|
|
|
|
|
- import { ElMessageBox } from 'element-plus';
|
|
|
|
|
- import { cloneDeep } from 'lodash-es';
|
|
|
|
|
-
|
|
|
|
|
- // 此处获取了全局变量,关系到用不用sf定制的组件
|
|
|
|
|
- const globSetting = useGlobSetting();
|
|
|
|
|
- const disableDepartmentEdit = globSetting.disableDepartmentEdit;
|
|
|
|
|
-
|
|
|
|
|
- // 公司车间工位数据
|
|
|
|
|
- const comTree = useComTree();
|
|
|
|
|
- const { comTreeData } = storeToRefs(comTree);
|
|
|
|
|
-
|
|
|
|
|
- const { getComTreeDetail } = comTree;
|
|
|
|
|
-
|
|
|
|
|
- const expendRowKeys = ref(['']);
|
|
|
|
|
-
|
|
|
|
|
- const showDrawer = ref<DrawerType | null>(null);
|
|
|
|
|
-
|
|
|
|
|
- const dialogVisible = ref<boolean>(false);
|
|
|
|
|
-
|
|
|
|
|
- const closeDialog = () => {
|
|
|
|
|
- dialogVisible.value = false;
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 改变el-drawer公司的状态
|
|
|
|
|
- const handleUpdateTableCom = () => {
|
|
|
|
|
- showDrawer.value = null;
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 改变el-drawer车间的状态
|
|
|
|
|
- const handleUpdataWorkshopTab = () => {
|
|
|
|
|
- showDrawer.value = null;
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 改变el-drawer工位的状态
|
|
|
|
|
- const handleUpdataWorkspaceTab = () => {
|
|
|
|
|
- showDrawer.value = null;
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- onMounted(() => {
|
|
|
|
|
- //获取公司树数据
|
|
|
|
|
- getComTreeDetail();
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- function onCheckedRow(rowKeys) {
|
|
|
|
|
- console.log(rowKeys);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- const orderByItem = (rowKeys) => {
|
|
|
|
|
- console.log(rowKeys);
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 表格外新建公司时的表单初始化
|
|
|
|
|
- * @modifications
|
|
|
|
|
- * - 2025-01-09: Yunfeng
|
|
|
|
|
- * - V4-平台权限重构
|
|
|
|
|
- */
|
|
|
|
|
- const companyAdd = () => {
|
|
|
|
|
- showDrawer.value = DrawerType.company;
|
|
|
|
|
- detail.value = {
|
|
|
|
|
- // isDisabled: IS_DISABLED.FALSE,
|
|
|
|
|
- name: '',
|
|
|
|
|
- // orderNum: comTreeData.value.length,
|
|
|
|
|
- };
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- //新增车间
|
|
|
|
|
- const subWorkshop = () => {
|
|
|
|
|
- getComTreeDetail();
|
|
|
|
|
- showDrawer.value = null;
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- const subWorkspace = () => {
|
|
|
|
|
- getComTreeDetail();
|
|
|
|
|
- showDrawer.value = null;
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- //操作列
|
|
|
|
|
- const actionColumn: BasicColumn = reactive({
|
|
|
|
|
- width: 360,
|
|
|
|
|
- label: '操作',
|
|
|
|
|
- prop: 'booking',
|
|
|
|
|
- key: 'action',
|
|
|
|
|
- fixed: 'right',
|
|
|
|
|
- render(record) {
|
|
|
|
|
- return h(ActionColomn, {
|
|
|
|
|
- // rowUpDisable:
|
|
|
|
|
- // rowDownDisable:
|
|
|
|
|
- subItem: record.row,
|
|
|
|
|
- handleRelate: handleRelate,
|
|
|
|
|
- // handleConfig: handleConfig,
|
|
|
|
|
- handleAdd: handleAdd,
|
|
|
|
|
- handleEdit: handleEdit,
|
|
|
|
|
- handleDelete: handleDelete,
|
|
|
|
|
- handleUp: rowUp,
|
|
|
|
|
- handleDown: rowDown,
|
|
|
|
|
- });
|
|
|
|
|
- },
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- //绑定
|
|
|
|
|
- const handleRelate = (row) => {
|
|
|
|
|
- console.log(row);
|
|
|
|
|
- dialogVisible.value = true;
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 公司,车间,工位的模板数据
|
|
|
|
|
- const editedItem: Ref<(UseComType<any> & UseWorkshopType<any> & UseWorkspaceType) | undefined> = ref();
|
|
|
|
|
-
|
|
|
|
|
- //点击所有添加和编辑时显示的数据内容
|
|
|
|
|
- const detail = ref({});
|
|
|
|
|
-
|
|
|
|
|
- // 点击添加下一级时
|
|
|
|
|
- const handleAdd = (row) => {
|
|
|
|
|
- editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem 中
|
|
|
|
|
- if (editedItem.value?.nodeType === DrawerType.company) {
|
|
|
|
|
- // 如果当前层级为公司级,应传入车间表单
|
|
|
|
|
- showDrawer.value = DrawerType.workshop;
|
|
|
|
|
- detail.value = {
|
|
|
|
|
- // 车间表单需提交:车间名称,所属公司,状态
|
|
|
|
|
- // 因为是添加车间所以没有id
|
|
|
|
|
- name: '',
|
|
|
|
|
- seniorScene: editedItem.value?.name,
|
|
|
|
|
- // isDisabled: IS_DISABLED.FALSE,
|
|
|
|
|
- companyId: editedItem.value?.id,
|
|
|
|
|
- // orderNum: editedItem.value?.children?.length,
|
|
|
|
|
- };
|
|
|
|
|
- } else if (editedItem.value?.nodeType === DrawerType.workshop) {
|
|
|
|
|
- // 当前层级为车间级,应传入工位表单
|
|
|
|
|
- showDrawer.value = DrawerType.workspace;
|
|
|
|
|
- detail.value = {
|
|
|
|
|
- // 工位表单需提交:工位名称,所属车间,负责人,状态
|
|
|
|
|
- name: '',
|
|
|
|
|
- code: '', // 上飞定制需要
|
|
|
|
|
- seniorScene: editedItem.value?.name,
|
|
|
|
|
- principalName: '',
|
|
|
|
|
- // isDisabled: IS_DISABLED.FALSE,
|
|
|
|
|
- workshopId: editedItem.value?.id,
|
|
|
|
|
- workshopCode: editedItem.value?.code, // 上飞定制需要
|
|
|
|
|
- };
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 点击编辑时
|
|
|
|
|
- const handleEdit = (row) => {
|
|
|
|
|
- editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem 中
|
|
|
|
|
- // 如果当前层级为什么级去什么表单
|
|
|
|
|
- showDrawer.value = editedItem.value!.nodeType;
|
|
|
|
|
- if (editedItem.value?.nodeType === DrawerType.company) {
|
|
|
|
|
- // 公司表单初始值
|
|
|
|
|
- detail.value = {
|
|
|
|
|
- id: editedItem.value.id,
|
|
|
|
|
- name: editedItem.value.name,
|
|
|
|
|
- regionCode: editedItem.value.regionCode,
|
|
|
|
|
- latitude: editedItem.value.latitude,
|
|
|
|
|
- longitude: editedItem.value.longitude,
|
|
|
|
|
- // isDisabled: editedItem.value.isDisabled,
|
|
|
|
|
- thumbnail: editedItem.value.thumbnail,
|
|
|
|
|
- };
|
|
|
|
|
- } else if (editedItem.value?.nodeType === DrawerType.workshop) {
|
|
|
|
|
- // 车间表单初始值
|
|
|
|
|
- detail.value = {
|
|
|
|
|
- id: editedItem.value.id,
|
|
|
|
|
- name: editedItem.value.name,
|
|
|
|
|
- seniorScene: comTreeData.value.find((it) => it.id === editedItem.value?.companyId)!.name,
|
|
|
|
|
- // isDisabled: editedItem.value.isDisabled,
|
|
|
|
|
- };
|
|
|
|
|
- } else if (editedItem.value?.nodeType === DrawerType.workspace) {
|
|
|
|
|
- const curWorkshop = comTreeData.value
|
|
|
|
|
- .find((it) => it.id === editedItem.value?.companyId)!
|
|
|
|
|
- .children!.find((it) => it.id === editedItem.value?.workshopId);
|
|
|
|
|
- // 工位表单初始值
|
|
|
|
|
- detail.value = {
|
|
|
|
|
- id: editedItem.value.id,
|
|
|
|
|
- name: editedItem.value.name,
|
|
|
|
|
- code: editedItem.value.code, // 上飞定制需要
|
|
|
|
|
- seniorScene: curWorkshop?.name,
|
|
|
|
|
- principalName: editedItem.value.principalName,
|
|
|
|
|
- // isDisabled: editedItem.value.isDisabled,
|
|
|
|
|
- workshopCode: curWorkshop?.code, // 上飞定制需要
|
|
|
|
|
- };
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 点击删除时
|
|
|
|
|
- const handleDelete = (row) => {
|
|
|
|
|
- if (row.children?.length > 0) {
|
|
|
|
|
- ElMessageBox.confirm('存在下级车间,无法删除', '车间删除', {
|
|
|
|
|
- confirmButtonText: '确认',
|
|
|
|
|
- showCancelButton: false,
|
|
|
|
|
- type: 'error',
|
|
|
|
|
- });
|
|
|
|
|
- } else {
|
|
|
|
|
- ElMessageBox.confirm('确认要删除该车间吗', {
|
|
|
|
|
- confirmButtonText: '确认',
|
|
|
|
|
- cancelButtonText: '取消',
|
|
|
|
|
- type: 'warning',
|
|
|
|
|
- })
|
|
|
|
|
- .then(async () => {
|
|
|
|
|
- try {
|
|
|
|
|
- if (row.nodeType === DrawerType.company) {
|
|
|
|
|
- await delCompany(row.id);
|
|
|
|
|
- } else if (row.nodeType === DrawerType.workshop) {
|
|
|
|
|
- await delWorkshop(row.id);
|
|
|
|
|
- } else {
|
|
|
|
|
- await delWorkspace(row.id);
|
|
|
|
|
- }
|
|
|
|
|
- } catch (e: any) {
|
|
|
|
|
- ElMessageBox.confirm(e, {
|
|
|
|
|
- confirmButtonText: '确认',
|
|
|
|
|
- showCancelButton: false,
|
|
|
|
|
- type: 'error',
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- getComTreeDetail();
|
|
|
|
|
- })
|
|
|
|
|
- .catch(() => {});
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 点击上移时
|
|
|
|
|
- const rowUp = (row) => {
|
|
|
|
|
- editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem
|
|
|
|
|
- const data = cloneDeep(comTreeData.value);
|
|
|
|
|
- const tree = ref<any[]>();
|
|
|
|
|
- if (editedItem.value?.nodeType === DrawerType.company) {
|
|
|
|
|
- // 公司排序
|
|
|
|
|
- tree.value = data;
|
|
|
|
|
- } else if (editedItem.value?.nodeType === DrawerType.workshop) {
|
|
|
|
|
- // 车间排序
|
|
|
|
|
- tree.value = data.find((it) => it.id === editedItem.value!.companyId)!.children;
|
|
|
|
|
- } else if (editedItem.value?.nodeType === DrawerType.workspace) {
|
|
|
|
|
- // 工位排序
|
|
|
|
|
- tree.value = data
|
|
|
|
|
- .find((it) => it.id === editedItem.value!.companyId)!
|
|
|
|
|
- .children!.find((it) => it.id === editedItem.value!.workshopId)!.children;
|
|
|
|
|
- }
|
|
|
|
|
- const rowIndex = tree.value!.findIndex((it) => {
|
|
|
|
|
- return it.id === editedItem.value?.id;
|
|
|
|
|
- });
|
|
|
|
|
- const buf = tree.value![rowIndex].orderNum;
|
|
|
|
|
- tree.value![rowIndex].orderNum = tree.value![rowIndex - 1].orderNum;
|
|
|
|
|
- tree.value![rowIndex - 1].orderNum = buf;
|
|
|
|
|
- updateComShopSpaceTreeSort(data as unknown as ComTreeType).then(() => {
|
|
|
|
|
- getComTreeDetail();
|
|
|
|
|
- });
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 点击下移时
|
|
|
|
|
- const rowDown = (row) => {
|
|
|
|
|
- editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem
|
|
|
|
|
- const data = cloneDeep(comTreeData.value);
|
|
|
|
|
- const tree = ref<any[]>();
|
|
|
|
|
- if (editedItem.value?.nodeType === DrawerType.company) {
|
|
|
|
|
- // 公司排序
|
|
|
|
|
- tree.value = data;
|
|
|
|
|
- } else if (editedItem.value?.nodeType === DrawerType.workshop) {
|
|
|
|
|
- // 车间排序
|
|
|
|
|
- tree.value = data.find((it) => it.id === editedItem.value!.companyId)!.children;
|
|
|
|
|
- } else if (editedItem.value?.nodeType === DrawerType.workspace) {
|
|
|
|
|
- // 工位排序
|
|
|
|
|
- tree.value = data
|
|
|
|
|
- .find((it) => it.id === editedItem.value!.companyId)!
|
|
|
|
|
- .children!.find((it) => it.id === editedItem.value!.workshopId)!.children;
|
|
|
|
|
- }
|
|
|
|
|
- const rowIndex = tree.value!.findIndex((it) => {
|
|
|
|
|
- return it.id === editedItem.value?.id;
|
|
|
|
|
- });
|
|
|
|
|
- const buf = tree.value![rowIndex].orderNum;
|
|
|
|
|
- tree.value![rowIndex].orderNum = tree.value![rowIndex + 1].orderNum;
|
|
|
|
|
- tree.value![rowIndex + 1].orderNum = buf;
|
|
|
|
|
- updateComShopSpaceTreeSort(data as unknown as ComTreeType).then(() => {
|
|
|
|
|
- getComTreeDetail();
|
|
|
|
|
- });
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- //编辑公司的提交按钮
|
|
|
|
|
- const subCompany = () => {
|
|
|
|
|
- getComTreeDetail();
|
|
|
|
|
- showDrawer.value = null;
|
|
|
|
|
- };
|
|
|
|
|
-</script>
|
|
|
|
|
-
|
|
|
|
|
-<style scoped>
|
|
|
|
|
- .proCard {
|
|
|
|
|
- position: relative;
|
|
|
|
|
- height: calc(100vh - 64px - 12px);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .tag-select {
|
|
|
|
|
- margin-right: 10px;
|
|
|
|
|
- margin-bottom: 10px;
|
|
|
|
|
- border-radius: 4px;
|
|
|
|
|
- border: 1px solid rgba(0, 0, 0, 0.15);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .relate-select {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- margin-bottom: 20px;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .select-title {
|
|
|
|
|
- width: 100px;
|
|
|
|
|
- margin-right: 20px;
|
|
|
|
|
- }
|
|
|
|
|
-</style>
|
|
|