ソースを参照

feat: 接入登录

louhangfei 1 年間 前
コミット
526ec08ab3
25 ファイル変更251 行追加3075 行削除
  1. 7 2
      src/api/system/user.ts
  2. 23 79
      src/components/Login.vue
  3. 212 0
      src/components/LoginOld.vue
  4. 2 2
      src/components/Nav.vue
  5. 3 5
      src/components/UserInfo.vue
  6. 1 0
      src/router/router-guards.ts
  7. 3 3
      src/store/modules/user.ts
  8. 0 200
      src/views/system-config/business-scene/PageBusinessScene.vue
  9. 0 152
      src/views/system-config/business-scene/components/InfoDrawer.vue
  10. 0 37
      src/views/system-config/business-scene/components/MessageBox.ts
  11. 0 21
      src/views/system-config/business-scene/components/style.scss
  12. 0 58
      src/views/system-config/business-scene/useTableHook.ts
  13. 0 422
      src/views/system-config/scene-manage/SceneManage.vue
  14. 0 184
      src/views/system-config/scene-manage/components/ActionColomns.vue
  15. 0 109
      src/views/system-config/scene-manage/components/AddCompanyInfo.vue
  16. 0 219
      src/views/system-config/scene-manage/components/CompanyDrawer-shangfei.vue
  17. 0 310
      src/views/system-config/scene-manage/components/CompanyDrawer.vue
  18. 0 125
      src/views/system-config/scene-manage/components/SceneDialog.vue
  19. 0 214
      src/views/system-config/scene-manage/components/WorkshopDrawer-shangfei.vue
  20. 0 181
      src/views/system-config/scene-manage/components/WorkshopDrawer.vue
  21. 0 230
      src/views/system-config/scene-manage/components/WorkspaceDrawer-shangfei.vue
  22. 0 187
      src/views/system-config/scene-manage/components/WorkspaceDrawer.vue
  23. 0 50
      src/views/system-config/scene-manage/hook/use-sence-templete.ts
  24. 0 237
      src/views/system-config/scene-manage/hook/use-table-method.tsx
  25. 0 48
      src/views/system-config/scene-manage/store/use-com-tree.ts

+ 7 - 2
src/api/system/user.ts

@@ -3,7 +3,7 @@ import { UserProps } from './user-operate';
 import { OrganizationUserTree } from '@/views/system/user/types';
 export interface BasicResponseModel<T = any> {
   code: number;
-  msg: string;
+  message: string;
   data: T;
 }
 
@@ -73,10 +73,15 @@ export function delUser(params) {
   });
 }
 
+interface LoginParams {
+  username: string;
+  password: string;
+}
+
 /**
  * @description: 用户登录
  */
-export function login(params) {
+export function login(params: LoginParams) {
   return http.request<BasicResponseModel>(
     {
       url: '/login/auth',

+ 23 - 79
src/components/Login.vue

@@ -3,49 +3,24 @@
     <div class="login-form">
       <img :src="exitIcon" alt="关闭" class="exit-icon" @click="emit('close')" />
       <header class="login-form__header">
-        <span>{{ type !== 'modifyPassword' ? '登录' : '修改密码' }}</span>
+        <span>登录</span>
       </header>
       <main class="login-form__main">
-        <el-form ref="formRef" :model="login" label-width="auto" class="login-form__form">
-          <el-form-item
-            prop="username"
-            :rules="[{ required: true, message: '账号不能为空' }]"
-            v-if="type !== 'modifyPassword'"
-          >
+        <el-form ref="formRef" :model="formValue" label-width="auto" class="login-form__form">
+          <el-form-item prop="username" :rules="[{ required: true, message: '账号不能为空' }]">
             <el-input
               placeholder="请输入您的账号"
-              v-model="login.username"
+              v-model="formValue.username"
               type="text"
               autocomplete="off"
               clearable
               class="el-input--default"
             />
           </el-form-item>
-          <el-form-item
-            prop="password"
-            :rules="[{ required: true, message: type === 'modifyPassword' ? '原密码不能为空' : '密码不能为空' }]"
-          >
-            <el-input
-              :placeholder="type !== 'modifyPassword' ? '请输入您的密码' : '请输入原密码'"
-              v-model="login.password"
-              type="password"
-              autocomplete="off"
-              show-password
-              clearable
-              class="el-input--default"
-            />
-          </el-form-item>
-          <el-form-item
-            prop="newPassword"
-            v-if="type === 'modifyPassword'"
-            :rules="[
-              { required: true, message: '新密码不能为空' },
-              { min: 6, message: '新密码至少6位' },
-            ]"
-          >
+          <el-form-item prop="password" :rules="[{ required: true, message: '密码不能为空' }]">
             <el-input
-              placeholder="请输入新密码(至少6位)"
-              v-model="login.newPassword"
+              :placeholder="'请输入您的密码'"
+              v-model="formValue.password"
               type="password"
               autocomplete="off"
               show-password
@@ -53,37 +28,18 @@
               class="el-input--default"
             />
           </el-form-item>
-          <el-form-item
-            prop="confirmPassword"
-            v-if="type === 'modifyPassword'"
-            :rules="[
-              { required: true, message: '确认密码不能为空' },
-              { validator: validatePassword, trigger: 'blur' },
-            ]"
-          >
-            <el-input
-              placeholder="请确认密码"
-              v-model="login.confirmPassword"
-              type="password"
-              autocomplete="off"
-              show-password
-              clearable
-              class="el-input--default"
-            />
-          </el-form-item>
-          <el-form-item
+
+          <!-- <el-form-item
             prop="code"
             :rules="[{ required: true, message: '验证码不能为空' }]"
             v-if="type !== 'modifyPassword'"
           >
-            <el-input placeholder="验证码" v-model="login.code" clearable class="el-input--default" />
-          </el-form-item>
+            <el-input placeholder="验证码" v-model="formValue.code" clearable class="el-input--default" />
+          </el-form-item> -->
         </el-form>
       </main>
       <footer class="login-form__footer">
-        <el-button class="login-form__button" @click="handleLogin">
-          {{ type !== 'modifyPassword' ? '登录' : '修改密码' }}
-        </el-button>
+        <el-button class="login-form__button" @click="handleLogin">登录</el-button>
       </footer>
     </div>
   </div>
@@ -94,38 +50,26 @@
   import exitIcon from 'assets/svg/exit.svg';
   import type { FormInstance } from 'element-plus';
   import { ElMessage } from 'element-plus';
-  import useMockUserStore from '@/store/modules/mockUser';
   import { storeToRefs } from 'pinia';
-  const mockUserStore = useMockUserStore();
-  const { userInfo } = storeToRefs(mockUserStore);
-  const props = defineProps<{
-    type: 'login' | 'switchAccount' | 'modifyPassword';
-  }>();
-  const login = reactive({
+
+  import { useUserStore } from '@/store/modules/user';
+  import { login } from '@/api/system/user';
+  const userStore = useUserStore();
+
+  const formValue = reactive({
     username: '',
     password: '',
-    code: '',
-    newPassword: '',
-    confirmPassword: '',
   });
   const emit = defineEmits(['close']);
-  const validatePassword = (rule: any, value: string, callback: any) => {
-    if (value !== login.newPassword) {
-      callback(new Error('两次输入密码不一致'));
-    } else {
-      callback();
-    }
-  };
   const formRef = ref<FormInstance>();
   const handleLogin = () => {
     if (!formRef.value) return;
-    formRef.value.validate((valid: boolean) => {
+    formRef.value.validate((valid: boolean, ...rest) => {
       if (valid) {
-        userInfo.value = login.username;
-        const message =
-          props.type === 'login' ? '登录成功' : props.type === 'switchAccount' ? '切换账号成功' : '修改密码成功';
-        ElMessage.success(message);
-        emit('close');
+        console.log('valid', formValue);
+        userStore.login(formValue).then((res) => {
+          window.location.reload();
+        });
       }
     });
   };

+ 212 - 0
src/components/LoginOld.vue

@@ -0,0 +1,212 @@
+<template>
+  <div class="login-container">
+    <div class="login-form">
+      <img :src="exitIcon" alt="关闭" class="exit-icon" @click="emit('close')" />
+      <header class="login-form__header">
+        <span>{{ type !== 'modifyPassword' ? '登录' : '修改密码' }}</span>
+      </header>
+      <main class="login-form__main">
+        <el-form ref="formRef" :model="login" label-width="auto" class="login-form__form">
+          <el-form-item
+            prop="username"
+            :rules="[{ required: true, message: '账号不能为空' }]"
+            v-if="type !== 'modifyPassword'"
+          >
+            <el-input
+              placeholder="请输入您的账号"
+              v-model="login.username"
+              type="text"
+              autocomplete="off"
+              clearable
+              class="el-input--default"
+            />
+          </el-form-item>
+          <el-form-item
+            prop="password"
+            :rules="[{ required: true, message: type === 'modifyPassword' ? '原密码不能为空' : '密码不能为空' }]"
+          >
+            <el-input
+              :placeholder="type !== 'modifyPassword' ? '请输入您的密码' : '请输入原密码'"
+              v-model="login.password"
+              type="password"
+              autocomplete="off"
+              show-password
+              clearable
+              class="el-input--default"
+            />
+          </el-form-item>
+          <el-form-item
+            prop="newPassword"
+            v-if="type === 'modifyPassword'"
+            :rules="[
+              { required: true, message: '新密码不能为空' },
+              { min: 6, message: '新密码至少6位' },
+            ]"
+          >
+            <el-input
+              placeholder="请输入新密码(至少6位)"
+              v-model="login.newPassword"
+              type="password"
+              autocomplete="off"
+              show-password
+              clearable
+              class="el-input--default"
+            />
+          </el-form-item>
+          <el-form-item
+            prop="confirmPassword"
+            v-if="type === 'modifyPassword'"
+            :rules="[
+              { required: true, message: '确认密码不能为空' },
+              { validator: validatePassword, trigger: 'blur' },
+            ]"
+          >
+            <el-input
+              placeholder="请确认密码"
+              v-model="login.confirmPassword"
+              type="password"
+              autocomplete="off"
+              show-password
+              clearable
+              class="el-input--default"
+            />
+          </el-form-item>
+          <el-form-item
+            prop="code"
+            :rules="[{ required: true, message: '验证码不能为空' }]"
+            v-if="type !== 'modifyPassword'"
+          >
+            <el-input placeholder="验证码" v-model="login.code" clearable class="el-input--default" />
+          </el-form-item>
+        </el-form>
+      </main>
+      <footer class="login-form__footer">
+        <el-button class="login-form__button" @click="handleLogin">
+          {{ type !== 'modifyPassword' ? '登录' : '修改密码' }}
+        </el-button>
+      </footer>
+    </div>
+  </div>
+</template>
+
+<script lang="ts" setup>
+  import { ref, reactive } from 'vue';
+  import exitIcon from 'assets/svg/exit.svg';
+  import type { FormInstance } from 'element-plus';
+  import { ElMessage } from 'element-plus';
+  import useMockUserStore from '@/store/modules/mockUser';
+  import { storeToRefs } from 'pinia';
+  const mockUserStore = useMockUserStore();
+  const { userInfo } = storeToRefs(mockUserStore);
+  const props = defineProps<{
+    type: 'login' | 'switchAccount' | 'modifyPassword';
+  }>();
+  const login = reactive({
+    username: '',
+    password: '',
+    code: '',
+    newPassword: '',
+    confirmPassword: '',
+  });
+  const emit = defineEmits(['close']);
+  const validatePassword = (rule: any, value: string, callback: any) => {
+    if (value !== login.newPassword) {
+      callback(new Error('两次输入密码不一致'));
+    } else {
+      callback();
+    }
+  };
+  const formRef = ref<FormInstance>();
+  const handleLogin = () => {
+    if (!formRef.value) return;
+    formRef.value.validate((valid: boolean) => {
+      if (valid) {
+        userInfo.value = login.username;
+        const message =
+          props.type === 'login' ? '登录成功' : props.type === 'switchAccount' ? '切换账号成功' : '修改密码成功';
+        ElMessage.success(message);
+        emit('close');
+      }
+    });
+  };
+</script>
+
+<style lang="scss" scoped>
+  .login-container {
+    @include flex-center;
+    position: fixed;
+    left: 0;
+    top: 0;
+    width: 100vw;
+    height: 100vh;
+    background-color: rgba(0, 0, 0, 0.42);
+    z-index: 1000;
+  }
+  .login-form {
+    position: relative;
+    width: 700cpx;
+    padding: 0 33cpx;
+    background: $white-color;
+    border-radius: 24cpx;
+    &__header {
+      width: 100%;
+      height: 100cpx;
+      font-size: 28cpx;
+      font-weight: 550;
+      color: #333;
+      text-align: center;
+      line-height: 100cpx;
+      letter-spacing: 5cpx;
+    }
+    &__main {
+      @include flex-center;
+      flex-direction: column;
+      gap: 20cpx;
+    }
+    &__code {
+      @include flex-center;
+      justify-content: space-between;
+      width: 100%;
+      height: 72cpx;
+      .el-input--default {
+        width: 50%;
+      }
+    }
+    &__footer {
+      width: 100%;
+      height: 100cpx;
+      margin-top: 18cpx;
+      .login-form__button {
+        width: 100%;
+        height: 74cpx;
+        font-size: 24cpx;
+        color: $white-color;
+        background-color: $primary-color;
+        border-radius: 8cpx;
+        cursor: pointer;
+      }
+    }
+    .exit-icon {
+      position: absolute;
+      top: 15cpx;
+      right: 16cpx;
+      width: 40cpx;
+      height: 40cpx;
+      cursor: pointer;
+    }
+  }
+  .login-form__form {
+    display: flex;
+    flex-direction: column;
+    gap: 2cpx;
+    width: 100%;
+  }
+  .el-input--default {
+    width: 100%;
+    height: 72cpx;
+    :deep(.el-input__inner) {
+      font-size: 20cpx;
+      color: #999;
+    }
+  }
+</style>

+ 2 - 2
src/components/Nav.vue

@@ -22,7 +22,7 @@
         </el-input>
       </div>
       <div class="platform__right__login">
-        <span @click="handleLogin('login')" v-if="!userStore.id">登录</span>
+        <span @click="handleLogin('login')" v-if="!userStore.info?.id">登录</span>
         <UserInfo
           v-else
           @switchAccount="handleLogin('switchAccount')"
@@ -31,7 +31,7 @@
       </div>
     </div>
   </header>
-  <Login v-if="userStore.showLogin" :type="loginType" @close="userStore.showLogin = false" class="fadeIn" />
+  <Login v-if="userStore.showLogin" @close="userStore.showLogin = false" class="fadeIn" />
 </template>
 
 <script lang="ts" setup>

+ 3 - 5
src/components/UserInfo.vue

@@ -2,7 +2,7 @@
   <el-dropdown trigger="click">
     <div class="user-info">
       <img :src="UserAvatar" class="user-avatar" />
-      <span class="user-name">{{ userInfo }}</span>
+      <span class="user-name">{{ userStore.info?.realname }}</span>
       <img :src="ArrowIcon" class="dropdown-icon" />
     </div>
     <template #dropdown>
@@ -18,10 +18,8 @@
 <script lang="ts" setup>
   import UserAvatar from 'assets/images/user-avatar@1X.png';
   import ArrowIcon from 'assets/svg/arrow.svg';
-  import useMockUserStore from '@/store/modules/mockUser';
-  import { storeToRefs } from 'pinia';
-  const mockUserStore = useMockUserStore();
-  const { userInfo } = storeToRefs(mockUserStore);
+  import { useUserStore } from '@/store/modules/user';
+  const userStore = useUserStore();
   const emit = defineEmits(['switchAccount', 'modifyPassword']);
 </script>
 

+ 1 - 0
src/router/router-guards.ts

@@ -86,6 +86,7 @@ export function createRouterGuards(router: Router) {
       await setDynamicRoute(router);
     } catch (err) {
       userStore.showLogin = true;
+      next();
       return;
     }
     NProgress.done();

+ 3 - 3
src/store/modules/user.ts

@@ -25,7 +25,7 @@ export interface IUserState {
     avatar: string;
     desc: string;
     token: string;
-    roleType: string;
+    roleType: number;
     nickname: string;
     mobile: string;
     email: string;
@@ -70,8 +70,8 @@ export const useUserStore = defineStore({
       return this.info;
     },
     /** 获取角色类型,可能为多个 */
-    getRoleTypes(): string[] {
-      return this.info.roleType.split(',');
+    getRoleTypes(): number {
+      return this.info.roleType;
     },
   },
   actions: {

+ 0 - 200
src/views/system-config/business-scene/PageBusinessScene.vue

@@ -1,200 +0,0 @@
-<template>
-    <div class="business-scene">
-       <el-card class="mb-3 proCard">
-      <el-space align="center">
-        <el-input
-          :style="{ width: '320px' }"
-          clearable
-          v-model="searchKey"
-          placeholder="请输入关键字"
-          @keyup.enter="handleSearch"
-        />
-        <el-button type="primary" :icon="Search" @click="handleSearch">查询</el-button>
-      </el-space>
-    </el-card>
-
-        <header class="header">
-            <el-button class="header__button" type="primary" :icon="Plus"
-                @click="openDrawer('添加业务场景')">添加业务场景</el-button>
-        </header>
-        <main class="main">
-            <BasicTable :columns="columns" :action-column="actionColumn" :data-source="tableData" :tableSetting="{
-                size: false,
-                redo: false,
-                fullscreen: false,
-                striped: false,
-                setting: false,
-            }" />
-        </main>
-        <InfoDrawer :title="drawerTitle" :data="tableInfo" @close-drawer="drawerVisiable = false"
-            @fetch-table="getTableData()" v-if="drawerVisiable" />
-    </div>
-</template>
-
-<script lang="ts" setup>
-import { onMounted, ref, h, reactive } from 'vue';
-import { ElTag } from 'element-plus';
-import { Plus, Search } from '@element-plus/icons-vue'
-import { BasicTable } from '@/components/Table';
-import { useTableHook } from './useTableHook.ts';
-import { SceneListInfo } from '@/types/business-scene/type.ts'
-import { BasicColumn, TableActionIcons } from '@/components/Table';
-import InfoDrawer from './components/InfoDrawer.vue';
-import { openMessageBox, getMessage } from './components/MessageBox.ts'
-import Up from '@/assets/icons/up.png';
-import Down from '@/assets/icons/down.png';
-import Edit from '@/assets/icons/edit.png';
-import Delete from '@/assets/icons/delete.png';
-
-const { orderNums, tableData, getTableData, deleteTableData, sortTableData } = useTableHook()
-const drawerVisiable = ref(false);
-const drawerTitle = ref('添加业务场景')
-const openDrawer = (title: string) => {
-    drawerVisiable.value = true;
-    drawerTitle.value = title;
-    tableInfo.value = { name: '', viewTemplateList: [], remark: '', isDisabled: 0 }
-}
-const columns: BasicColumn[] = [
-    {
-        label: '场景名称',
-        prop: 'name',
-        width: 150
-    },
-    {
-        label: '关联模板',
-        prop: 'viewTemplateList',
-        minWidth: 300,
-        render(record) {
-            const template = record.row.viewTemplateList.map(item => item.name);
-            const tags = template.map((item) => h(ElTag, { type: 'info' }, item));
-            return h(
-                'div',
-                {
-                    class: 'div__container--tag',
-                },
-                tags,
-            );
-        },
-    },
-    // {
-    //     label: '状态',
-    //     prop: 'isDisabled',
-    //     width: 140,
-    //     align: 'center',
-    //     render(record) {
-    //         const status = record.row.isDisabled;
-    //         return h(
-    //             ElTag,
-    //             { type: status === 0 ? 'success' : 'danger' },
-    //             status === 0 ? '启用' : '停用',
-    //         );
-    //     },
-    // },
-    {
-        label: '备注',
-        prop: 'remark',
-        width: 160
-    },
-    {
-        label: '创建时间',
-        prop: 'createdAt',
-        width: 180
-    },
-];
-const tableInfo = ref<SceneListInfo>();
-const actionColumn: BasicColumn = reactive({
-    width: 240,
-    title: '操作',
-    prop: 'action',
-    fixed: 'right',
-    render(record) {
-        return h(TableActionIcons as any, {
-            space: 20,
-            iconStyle: 'img',
-            size: 16,
-            actionIcons: [
-                {
-                    label: '编辑',
-                    icon: Edit,
-                    onClick: () => {
-                        openDrawer('编辑业务场景');
-                        tableInfo.value = record.row;
-                    },
-                },
-                {
-                    label: '删除',
-                    icon: Delete,
-                    onClick: () => {
-                        openMessageBox(undefined, undefined, () => deleteTableData(record.row.id))
-                    },
-                },
-                {
-                    label: '升序',
-                    icon: Up,
-                    disabled: record.row.orderNum === orderNums.value[0],
-                    onClick: () => {
-                        sortTableData(record.row.id, 'increase')
-                        getMessage('success', '升序成功');
-                    },
-                },
-                {
-                    label: '降序',
-                    icon: Down,
-                    disabled: record.row.orderNum === orderNums.value[1],
-                    onClick: () => {
-                        sortTableData(record.row.id, 'decrease')
-                        getMessage('success', '降序成功');
-                    },
-                },
-            ],
-            class: 'table__action--enabled',
-        });
-    },
-});
-
-const searchKey = ref();
-const handleSearch = () => {
-  if (searchKey.value === '') return getTableData();
-  tableData.value = tableData.value.filter(item => item.name.includes(searchKey.value))
-}
-onMounted(() => {
-    getTableData();
-})
-</script>
-
-<style lang="scss" scoped>
-.business-scene {
-    display: flex;
-    flex-direction: column;
-    background: #ffffff;
-    box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.12);
-    border-radius: 6px;
-    width: 100%;
-    height: calc(100vh - 64px - 12px);
-    padding: 24px 44px 0 21px;
-}
-
-.header {
-    display: flex;
-    justify-content: space-between;
-    width: inherit;
-    height: 32px;
-}
-
-.main {
-    position: relative;
-    margin-top: 16px;
-    width: inherit;
-    flex: 1;
-}
-
-:deep(.div__container--tag) {
-    display: flex;
-    flex-wrap: wrap;
-    gap: 4px;
-}
-
-:deep(.div__container--tag)::-webkit-scrollbar {
-    height: 6px;
-}
-</style>

+ 0 - 152
src/views/system-config/business-scene/components/InfoDrawer.vue

@@ -1,152 +0,0 @@
-<template>
-    <main>
-        <el-drawer v-model="visiable" :title="props.title" @close="emits('closeDrawer')">
-            <section class="drawer__form">
-                <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="auto">
-                    <el-form-item label="场景名称" prop="name">
-                        <el-input v-model="ruleForm.name" maxlength="100" placeholder="请输入场景名称" type="text" />
-                    </el-form-item>
-                    <el-form-item label="应用模板" prop="viewTemplateList">
-                        <el-select v-model="ruleForm.viewTemplateList" multiple placeholder="请选择应用模板"
-                            class="select__custom--multiple" value-key="id">
-                            <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item" />
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item label="备注" prop="remark">
-                        <el-input v-model="ruleForm.remark" maxlength="100" placeholder="请输入备注" type="textarea"
-                            :autosize="{ minRows: 3, maxRows: 6 }" />
-                    </el-form-item>
-                    <!-- <el-form-item label="状态" prop="isDisabled">
-                        <el-switch v-model="ruleForm.isDisabled" :active-value=0 :inactive-value=1 />
-                    </el-form-item> -->
-                </el-form>
-            </section>
-            <footer class="drawer__btn">
-                <el-button @click="resetForm()">重置</el-button>
-                <el-button type="primary" @click="submitForm()">提交</el-button>
-            </footer>
-        </el-drawer>
-    </main>
-</template>
-
-<script lang="ts" setup>
-import { ref, reactive, onMounted } from 'vue';
-import { SceneListInfo, TemplateListInfo } from '@/types/business-scene/type.ts'
-import type { FormInstance, FormRules } from 'element-plus'
-import { getAllSceneModuleList } from '@/api/template/template'
-import { addSceneData, editSceneData } from '@/api/sys-config/business-scene'
-import { AddSceneDataParam, EditSceneDataParam } from '@/types/business-scene/type'
-import { debounce } from 'lodash-es';
-import { getMessage } from './MessageBox'
-const visiable = ref(true)
-const props = defineProps<{
-    title: string;
-    data: SceneListInfo | undefined
-}>()
-const emits = defineEmits(['closeDrawer', 'fetchTable'])
-const ruleForm = reactive({
-    name: '',
-    viewTemplateList: [] as TemplateListInfo[],
-    remark: '',
-    isDisabled: 0
-})
-const options = ref<TemplateListInfo[]>([])
-const ruleFormRef = ref<FormInstance>();
-const rules = reactive<FormRules<typeof ruleForm>>({
-    name: [{ required: true, message: '场景名称不能为空', trigger: 'change' }],
-    viewTemplateList: [{ required: true, message: '应用模板不能为空', trigger: 'change' }],
-})
-const debounceSubmit = debounce((params) => {
-    addSceneData(params)
-        .then(() => {
-            emits('fetchTable')
-            emits('closeDrawer')
-            getMessage("success", '添加业务场景数据成功!')
-        })
-}, 500);
-const debounceEdit = debounce((params) => {
-    editSceneData(params)
-        .then(() => {
-            emits('fetchTable')
-            emits('closeDrawer')
-            getMessage("success", '修改业务场景数据成功!')
-        })
-}, 500);
-const submitForm = () => {
-    if (!ruleFormRef.value) return;
-    ruleFormRef.value.validate((valid) => {
-        if (!valid) return
-        const addParams: AddSceneDataParam = {
-            name: ruleForm.name,
-            viewTemplateIdList: ruleForm.viewTemplateList.map(item => item.id),
-            remark: ruleForm.remark,
-            // isDisabled: ruleForm.isDisabled
-        }
-        if (props.title !== '添加业务场景') {
-            const editParams: EditSceneDataParam = {
-                id: props.data?.id!,
-                ...addParams
-            }
-            debounceEdit(editParams);
-            return;
-        }
-        debounceSubmit(addParams);
-    });
-}
-const resetForm = () => {
-    if (!ruleFormRef.value) return;
-    if (props.title !== '添加业务场景') {
-        initRuleForm(props.data)
-        return;
-    }
-    ruleFormRef.value.resetFields();
-}
-const initRuleForm = (data) => {
-    ruleForm.name = data.name;
-    ruleForm.viewTemplateList = data.viewTemplateList;
-    ruleForm.remark = data.remark;
-    ruleForm.isDisabled = data.isDisabled;
-}
-onMounted(async () => {
-    const res = await getAllSceneModuleList();
-    options.value = res.map(item => ({
-        id: item.id,
-        name: item.name
-    }));
-    initRuleForm(props.data)
-})
-</script>
-
-<style lang="scss" scoped>
-:deep(.el-drawer__body) {
-    display: flex;
-    flex-direction: column;
-    gap: 10px;
-    height: 100%;
-}
-
-.el-form {
-    display: flex;
-    flex-direction: column;
-    gap: 20px;
-}
-
-.drawer__form {
-    height: calc(100% - 32px);
-    overflow-y: auto;
-}
-
-.drawer__btn {
-    display: flex;
-    justify-content: center;
-    height: 32px;
-}
-
-.select__custom--multiple {
-    :deep(.el-select__selection) {
-        min-height: 25px;
-        max-height: 120px;
-        overflow-y: auto;
-    }
-}
-</style>

+ 0 - 37
src/views/system-config/business-scene/components/MessageBox.ts

@@ -1,37 +0,0 @@
-import './style.scss';
-import { ElMessage, ElMessageBox } from 'element-plus';
-export const getMessage = (type: 'success' | 'warning' | 'info' | 'error', message: string) => {
-  return ElMessage({
-    type,
-    message,
-  });
-};
-export const openMessageBox = (
-  title?: string | undefined,
-  message?: string | undefined,
-  fn?: () => void,
-  elMessage?: string | undefined,
-) => {
-  ElMessageBox.confirm(
-    message ? message : '请确认是否删除该数据?',
-    title ? title : '业务场景删除?',
-    {
-      confirmButtonText: '确认',
-      cancelButtonText: '取消',
-      customClass: 'elMessageBox__custom--warning',
-    },
-  )
-    .then(async () => {
-      const message = elMessage ? elMessage : '删除成功!';
-      if (!fn) {
-        getMessage('success', message);
-        return;
-      } else {
-        try {
-          await fn();
-          getMessage('success', message);
-        } catch {}
-      }
-    })
-    .catch(() => {});
-};

+ 0 - 21
src/views/system-config/business-scene/components/style.scss

@@ -1,21 +0,0 @@
-.elMessageBox__custom--warning {
-  border-radius: 8px;
-  .el-message-box__title {
-    display: flex;
-    align-items: center;
-    gap: 10px;
-  }
-  .el-message-box__title::before {
-    content: '';
-    display: block;
-    width: 24px;
-    height: 24px;
-    background-image: url('@/assets/images/deleteTip.png');
-    background-size: cover;
-    background-position: center;
-    background-repeat: no-repeat;
-  }
-  .el-message-box__container {
-    margin-left: 5px;
-  }
-}

+ 0 - 58
src/views/system-config/business-scene/useTableHook.ts

@@ -1,58 +0,0 @@
-import { computed, ref } from 'vue';
-import { SceneListInfo, SortSceneItemParam, SortSceneDataParam } from '@/types/business-scene/type';
-import { getSceneList, deleteSceneData, sortSceneData } from '@/api/sys-config/business-scene';
-export const useTableHook = () => {
-  const tableData = ref<SceneListInfo[]>([]);
-  const getTableData = async () => {
-    tableData.value = await getSceneList();
-  };
-  const deleteTableData = async (id: number) => {
-    await deleteSceneData(id);
-    await getTableData();
-  };
-  const orderNums = computed(() => {
-    const length = tableData.value.length;
-    const firstOrderNum = length > 0 ? tableData.value[0].orderNum : null;
-    const lastOrderNum = length > 0 ? tableData.value[length - 1].orderNum : null;
-    return [firstOrderNum, lastOrderNum];
-  });
-  const getSwapParam = (id: number, sortType: 'increase' | 'decrease') => {
-    const index = tableData.value.findIndex((item) => item.id === id);
-    if (index === -1) return;
-    let idAndOrderDTOList: SortSceneItemParam[] = [];
-    const currentOrder = tableData.value[index].orderNum; //当前的顺序
-    if (sortType === 'increase') {
-      /**
-       * @description prevId -- 上一个的ID prevOrder -- 上一个的oderNum
-       */
-      const prevData = tableData.value[index - 1];
-      const prevId = prevData.id;
-      const prevOrder = prevData.orderNum;
-      idAndOrderDTOList = [
-        { sceneId: prevId, orderNum: currentOrder },
-        { sceneId: id, orderNum: prevOrder },
-      ];
-    } else {
-      /**
-       * @description nextId -- 下一个的ID nextOrder -- 下一个的oderNum
-       */
-      const nextData = tableData.value[index + 1];
-      const nextId = nextData.id;
-      const nextOrder = nextData.orderNum;
-      idAndOrderDTOList = [
-        { sceneId: nextId, orderNum: currentOrder },
-        { sceneId: id, orderNum: nextOrder },
-      ];
-    }
-    const sortSceneDataParam: SortSceneDataParam = {
-      idAndOrderDTOList,
-    };
-    return sortSceneDataParam;
-  };
-  const sortTableData = async (id: number, sortType: 'increase' | 'decrease') => {
-    const idAndOrderDTOList = getSwapParam(id, sortType);
-    await sortSceneData(idAndOrderDTOList!);
-    await getTableData();
-  };
-  return { orderNums, tableData, getTableData, deleteTableData, sortTableData };
-};

+ 0 - 422
src/views/system-config/scene-manage/SceneManage.vue

@@ -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>

+ 0 - 184
src/views/system-config/scene-manage/components/ActionColomns.vue

@@ -1,184 +0,0 @@
-<template>
-  <div style="display: flex">
-    <div style="display: flex; margin-right: 7px">
-      <div
-        v-if="userStore?.info?.tenantCode === 'gov' && props.subItem.parentId !== undefined"
-        @click="changeRelate"
-        class="wordStyle"
-        style="margin-right: 10px"
-        >绑定</div
-      >
-      <div v-else style="margin-right: 10px; width: 27px"></div>
-      <!-- <div
-        v-if="(props.subItem as ComAddDatas).parentId !== undefined"
-        @click="changeConig"
-        class="wordStyle"
-        style="margin-right: 10px; width: 122px"
-        >页面设置</div
-      > -->
-      <!-- <div v-else style="margin-right: 10px; width: 122px"></div> -->
-      <div v-if="!isWorkspace" @click="changeAdd" class="wordStyle">添加下一级</div>
-      <div v-else style="margin-right: 10px; width: 67px"></div
-    ></div>
-    <div style="width: 1px; height: 14px; color: #e9e9e9; margin-right: 14px">|</div>
-    <img src="@/assets/icons/edit.png" @click="changeEdit" class="action-img" alt="" />
-    <img src="@/assets/icons/delete.png" @click="changeDelete" class="action-img" alt="" />
-    <img
-      src="@/assets/icons/up.png"
-      @click="changeUp"
-      :class="{ 'action-disable': isFirst, 'action-img': !isFirst }"
-      alt=""
-    />
-    <img
-      src="@/assets/icons/down.png"
-      @click="changeDown"
-      :class="{ 'action-disable': isLast, 'action-img': !isLast }"
-      alt=""
-    />
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { computed } from 'vue';
-  import useComTree from '../store/use-com-tree';
-  import { storeToRefs } from 'pinia';
-  import { useUserStore } from '@/store/modules/user';
-  import { UseComType, UseWorkshopType, UseWorkspaceType } from '@/types/scene/type.ts';
-
-  const userStore = useUserStore();
-  const comTree = useComTree();
-  const { comTreeData } = storeToRefs(comTree);
-
-  const props = defineProps<{
-    subItem: UseComType<any> & UseWorkshopType<any> & UseWorkspaceType;
-    handleRelate: (row) => unknown;
-    // handleConig: (row) => unknown; //Deprecated in V4
-    handleAdd: (row) => unknown;
-    handleEdit: (row) => unknown;
-    handleDelete: (row) => unknown;
-    handleUp: (row) => unknown;
-    handleDown: (row) => unknown;
-  }>();
-
-  const isCompany = computed(() => {
-    return props.subItem.nodeType === 'company';
-  });
-
-  const isWorkshop = computed(() => {
-    return props.subItem.nodeType === 'workshop';
-  });
-
-  const isWorkspace = computed(() => {
-    return props.subItem.nodeType === 'workspace';
-  });
-
-  const isFirst = computed(() => {
-    let index;
-    if (isCompany.value) {
-      index = comTreeData.value.findIndex((item) => item.id === props.subItem.id);
-    } else if (isWorkshop.value) {
-      index = comTreeData.value
-        .find((item) => item.id === props.subItem.companyId)
-        ?.children?.findIndex((item) => item.id === props.subItem.id);
-    } else {
-      index = comTreeData.value
-        .find((item) => item.id === props.subItem.companyId)
-        ?.children?.find((item) => item.id === props.subItem.workshopId)
-        ?.children?.findIndex((item) => item.id === props.subItem.id);
-    }
-    return index === 0;
-  });
-
-  const isLast = computed(() => {
-    let index;
-    let length;
-    if (isCompany.value) {
-      index = comTreeData.value.findIndex((item) => item.id === props.subItem.id);
-      length = comTreeData.value.length;
-    } else if (isWorkshop.value) {
-      index = comTreeData.value
-        .find((item) => item.id === props.subItem.companyId)
-        ?.children?.findIndex((item) => item.id === props.subItem.id);
-      length = comTreeData.value.find((item) => item.id === props.subItem.companyId)?.children
-        ?.length;
-    } else {
-      index = comTreeData.value
-        .find((item) => item.id === props.subItem.companyId)
-        ?.children?.find((item) => item.id === props.subItem.workshopId)
-        ?.children?.findIndex((item) => item.id === props.subItem.id);
-      length = comTreeData.value
-        .find((item) => item.id === props.subItem.companyId)
-        ?.children?.find((item) => item.id === props.subItem.workshopId)?.children?.length;
-    }
-    return index === length - 1;
-  });
-
-  const changeRelate = () => {
-    props.handleRelate(props.subItem);
-  };
-
-  // const changeConig = () => { //Deprecated in V4
-  //   props.handleConig(props.subItem);
-  // };
-
-  const changeAdd = () => {
-    props.handleAdd(props.subItem);
-  };
-
-  const changeEdit = () => {
-    props.handleEdit(props.subItem);
-  };
-
-  const changeDelete = () => {
-    props.handleDelete(props.subItem);
-  };
-
-  const changeUp = () => {
-    props.handleUp(props.subItem);
-  };
-
-  const changeDown = () => {
-    props.handleDown(props.subItem);
-  };
-</script>
-
-<style scoped>
-  .wordStyle {
-    height: 22px;
-    font-size: 14px;
-    color: #1890ff;
-    line-height: 22px;
-    cursor: pointer;
-    margin-right: 7px;
-  }
-
-  .otp-btn {
-    width: 52px;
-    height: 26px;
-  }
-
-  :deep(.el-button--primary) {
-    --el-button-bg-color: #3f9eff;
-    --el-button-hover-bg-color: #64b0fe;
-    --el-button-active-bg-color: #2f8ae7;
-  }
-  :deep(.el-button--danger) {
-    --el-button-bg-color: #f56c6c;
-    --el-button-hover-bg-color: #f68888;
-    --el-button-active-bg-color: #c35353;
-  }
-
-  .action-img {
-    margin-right: 10px;
-    cursor: pointer;
-    height: 16px;
-    margin-top: 5px;
-  }
-  .action-disable {
-    margin-right: 10px;
-    height: 16px;
-    margin-top: 5px;
-    filter: grayscale(100%);
-    cursor: not-allowed;
-  }
-</style>

+ 0 - 109
src/views/system-config/scene-manage/components/AddCompanyInfo.vue

@@ -1,109 +0,0 @@
-<template>
-  <!-- This component is not referenced by any other components. -->
-  <el-dialog v-model="dialogVisible" title="添加企业信息" width="500" @close="() => emit('close')">
-    <div>
-      <div class="relate-select">
-        <div class="select-title">企业分类</div>
-        <el-select v-model="companyType" placeholder="请选择企业类型" style="width: 180px">
-          <el-option
-            v-for="item in OPTIONS"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
-        </el-select>
-      </div>
-      <div class="relate-select">
-        <div class="select-title">企业名称</div>
-        <el-select
-          v-model="tenantName"
-          placeholder="请选择企业租户信息"
-          style="width: 180px"
-          @change="changeCom"
-        >
-          <el-option
-            v-for="item in companyList"
-            :key="item.tenantCode"
-            :label="item.tenantName"
-            :value="item.tenantCode"
-          />
-        </el-select>
-      </div>
-      <div v-if="tenantCode" class="relate-select">
-        <div class="select-title">企业租户信息</div>
-        <el-input v-model="tenantCode" style="width: 180px" disabled />
-      </div>
-    </div>
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="() => emit('close')">取消</el-button>
-        <el-button type="primary" @click="confirm"> 确定 </el-button>
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup lang="ts">
-  import { onMounted, ref } from 'vue';
-  import { OPTIONS } from '@/types/scene/constant.ts';
-  import { getCompanyList, changeRelate } from '@/api/scene/scene.ts';
-  import { CompanyType } from '@/types/scene/type.ts';
-  import { ElMessage } from 'element-plus';
-
-  const emit = defineEmits(['close']);
-  onMounted(() => {
-    getCompanyList().then((res) => {
-      companyList.value = res;
-    });
-  });
-  const dialogVisible = true;
-  const companyType = ref('');
-  const tenantName = ref('');
-  const companyList = ref<CompanyType[]>([]);
-  const tenantCode = ref('');
-  const tenantId = ref();
-
-  const changeCom = (val: any) => {
-    const item = companyList.value.find((item) => item.tenantCode === val);
-    tenantName.value = item?.tenantName!;
-    tenantId.value = item?.tenantId!;
-    tenantCode.value = val;
-  };
-
-  const confirm = () => {
-    const subData = {
-      tenantCode: tenantCode.value,
-      tenantId: tenantId.value,
-      type: companyType.value,
-    };
-    changeRelate(subData).then(() => {
-      ElMessage({
-        message: '绑定成功',
-        type: 'success',
-      });
-      reset();
-      emit('close');
-    });
-  };
-
-  const reset = () => {
-    tenantName.value = '';
-    tenantCode.value = '';
-    tenantId.value = null;
-    companyType.value = '';
-  };
-</script>
-
-<style lang="scss" scoped>
-  .relate-select {
-    display: flex;
-
-    align-items: center;
-    margin-bottom: 20px;
-  }
-
-  .select-title {
-    width: 100px;
-    margin-right: 20px;
-  }
-</style>

+ 0 - 219
src/views/system-config/scene-manage/components/CompanyDrawer-shangfei.vue

@@ -1,219 +0,0 @@
-<template>
-  <div>
-    <el-drawer
-      ref="companyDrawerRef"
-      class="test"
-      :model-value="true"
-      @close="() => emit('onClose')"
-      with-header="true"
-      size="35%"
-    >
-      <template #header="{ titleId }">
-        <p :id="titleId">{{ title }}</p>
-      </template>
-      <el-form
-        ref="ruleFormRef"
-        :model="ruleForm"
-        :rules="rules"
-        label-width="90px"
-        class="demo-ruleForm"
-        size="default"
-        status-icon
-      >
-        <el-form-item label="公司名称" prop="name">
-          <el-input
-            v-model="ruleForm.name"
-            style="width: 200px"
-            disabled
-            placeholder="上海飞机制造有限公司"
-          />
-        </el-form-item>
-        <el-form-item label="所在省市" prop="regionCode" required>
-          <el-select v-model="ruleForm.regionCode" placeholder="请选择省市" style="width: 200px">
-            <el-option
-              v-for="item in provinceList"
-              :key="item.regionCode"
-              :label="item.regionName"
-              :value="item.regionCode"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="坐标经度" prop="longitude"
-          ><el-input v-model="ruleForm.longitude" type="number" style="width: 200px"></el-input
-        ></el-form-item>
-        <el-form-item label="坐标纬度" prop="latitude"
-          ><el-input v-model="ruleForm.latitude" type="number" style="width: 200px"></el-input
-        ></el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="ruleForm.remark" style="width: 200px" />
-        </el-form-item>
-        <!-- <el-form-item label="状态">
-          <el-switch
-            v-model="ruleForm.isDisabled"
-            :active-value="IS_DISABLED.FALSE"
-            :inactive-value="IS_DISABLED.TRUE"
-            class="switchUse"
-          />
-        </el-form-item> -->
-      </el-form>
-      <div style="position: absolute; left: 108px; bottom: 67px">
-        <el-button v-if="!props.detail.id" @click="resetDrawCom">重置</el-button>
-        <el-button type="primary" v-if="!props.detail.id" @click="newCompanyAdd"> 提交 </el-button>
-        <el-button type="primary" v-if="props.detail.id" @click="editedSub(ruleFormRef)">
-          提交
-        </el-button>
-      </div>
-    </el-drawer>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { computed, reactive, ref, defineProps, defineEmits, watch } from 'vue';
-  import { addCompany, editCompany } from '@/api/scene/scene.ts';
-  // import { IS_DISABLED } from '@/types/scene/constant.ts';
-  import type { FormInstance, FormRules } from 'element-plus';
-  import { getProvinceList } from '@/api/system/region';
-  import { useRequest } from 'vue-hooks-plus';
-
-  const props = defineProps<{
-    detail: {
-      id?: number; // 传不传id关系到是不是修改
-      name?: string;
-      // isDisabled?: IS_DISABLED;
-      remark?: string;
-      longitude?: number; //经度
-      latitude?: number; //纬度
-      regionCode?: string;
-      companyId?: number;
-    };
-  }>();
-
-  const title = computed(() => {
-    if (props.detail.id) {
-      return '编辑公司';
-    }
-    return '添加公司';
-  });
-
-  const emit = defineEmits<{
-    (e: 'onOk'): unknown;
-    (e: 'onClose'): unknown;
-  }>();
-
-  //表格中的规则
-  const ruleFormRef = ref<FormInstance>();
-  //匹配规则
-  // const pattern = /经度\s*[::]\s*([0-9.]+)\s*[;;]\s*纬度\s*[::]\s*([0-9.]+)/;
-
-  interface RuleForm {
-    name: string; //名称
-    regionCode?: string; //省市
-    remark?: string; //备注
-    longitude?: number; //经度
-    latitude?: number; //纬度
-    // isDisabled?: IS_DISABLED;
-  }
-
-  const ruleForm = reactive<RuleForm>({
-    name: '上海飞机制造有限公司',
-    // isDisabled: IS_DISABLED.FALSE,
-    remark: '',
-    longitude: undefined,
-    latitude: undefined,
-    regionCode: '',
-  });
-  const rules = reactive<FormRules>({
-    // name: [
-    //   { required: true, message: '公司名称不能为空', trigger: 'blur' },
-    //   { min: 1, max: 100, message: '长度在1-100之间', trigger: 'blur' },
-    // ],
-    regionCode: [{ required: true, message: '省市不能为空', trigger: 'blur' }],
-  });
-
-  const { data: provinceList } = useRequest(getProvinceList);
-
-  //编辑时需要传入子组件的数据
-  watch(
-    () => props.detail,
-    (data) => {
-      // ruleForm.name = data.name!; //上飞定制不可变
-      // ruleForm.isDisabled = data.isDisabled;
-      ruleForm.remark = data.remark;
-      ruleForm.latitude = data.latitude;
-      ruleForm.longitude = data.longitude;
-      ruleForm.regionCode = data.regionCode;
-    },
-    { immediate: true },
-  );
-
-  //添加新公司的提交
-  const newCompanyAdd = () => {
-    if (!ruleFormRef.value) return;
-    ruleFormRef.value.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-
-      const newComData = {
-        name: ruleForm.name,
-        // isDisabled: ruleForm.isDisabled,
-        remark: ruleForm.remark,
-        longitude: ruleForm.longitude,
-        latitude: ruleForm.latitude,
-        regionCode: ruleForm.regionCode,
-      };
-
-      //提交数据并重置关闭el-draw
-      addCompany(newComData)
-        .then(() => {
-          console.log('添加成功');
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    });
-  };
-
-  //编辑公司时的提交
-  const editedSub = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-    formEl.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-
-      const editNewCom = {
-        id: props.detail.id,
-        name: ruleForm.name,
-        // isDisabled: ruleForm.isDisabled,
-        remark: ruleForm.remark,
-        longitude: ruleForm.longitude,
-        latitude: ruleForm.latitude,
-        regionCode: ruleForm.regionCode,
-      };
-      // 编辑上传
-      editCompany(editNewCom)
-        .then(() => {
-          console.log('编辑成功');
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    });
-  };
-
-  //重置编辑框
-  const resetDrawCom = () => {
-    ruleForm.name = '';
-    // ruleForm.isDisabled = IS_DISABLED.FALSE;
-    ruleForm.regionCode = '';
-    ruleForm.remark = '';
-    ruleForm.latitude = undefined;
-    ruleForm.longitude = undefined;
-  };
-</script>
-
-<style scoped></style>

+ 0 - 310
src/views/system-config/scene-manage/components/CompanyDrawer.vue

@@ -1,310 +0,0 @@
-<template>
-  <div>
-    <el-drawer
-      ref="companyDrawerRef"
-      class="test"
-      :model-value="true"
-      @close="() => emit('onClose')"
-      with-header="true"
-      size="35%"
-      destroy-on-close
-    >
-      <template #header="{ titleId }">
-        <p :id="titleId">{{ title }}</p>
-      </template>
-      <el-form
-        ref="ruleFormRef"
-        :model="ruleForm"
-        :rules="rules"
-        label-width="90px"
-        class="demo-ruleForm"
-        size="default"
-        status-icon
-      >
-        <el-form-item label="公司名称" prop="name">
-          <el-input v-model="ruleForm.name" style="width: 200px" />
-        </el-form-item>
-        <el-form-item label="所在省市" prop="regionCode" required>
-          <el-select v-model="ruleForm.regionCode" placeholder="请选择省市" style="width: 200px">
-            <el-option
-              v-for="province in provinceList"
-              :key="province.regionCode"
-              :label="province.regionName"
-              :value="province.regionCode"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="坐标经度" prop="longitude"
-          ><el-input v-model="ruleForm.longitude" type="number" style="width: 200px"></el-input
-        ></el-form-item>
-        <el-form-item label="坐标纬度" prop="latitude"
-          ><el-input v-model="ruleForm.latitude" type="number" style="width: 200px"></el-input
-        ></el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="ruleForm.remark" style="width: 200px" />
-        </el-form-item>
-        <!-- <el-form-item label="状态">
-          <el-switch
-            v-model="ruleForm.isDisabled"
-            :active-value="IS_DISABLED.FALSE"
-            :inactive-value="IS_DISABLED.TRUE"
-            class="switchUse"
-          />
-        </el-form-item> -->
-        <el-form-item label="公司头像">
-          <el-upload
-            ref="uploadRef"
-            :class="{ 'no-el-upload': fileList.length > 0 }"
-            :action="actionUrl"
-            :on-preview="handlePictureCardPreview"
-            :on-remove="handleUploadRemove"
-            :on-success="handleUploadSuccess"
-            :before-upload="beforeThumbnailUpload"
-            :limit="1"
-            :headers="getHeaders()"
-            :data="{ bizType: 'COMPANY_THUMBNAIL' }"
-            list-type="picture-card"
-            v-model:file-list="fileList"
-          >
-            <!-- <img v-if="ruleForm.thumbnail" :src="ruleForm.thumbnail" />
-            <el-icon v-else><Plus /></el-icon> -->
-            <el-icon v-if="!ruleForm.thumbnail || ruleForm.thumbnail.length === 0"
-              ><Plus
-            /></el-icon>
-          </el-upload>
-        </el-form-item>
-      </el-form>
-      <div style="position: absolute; left: 108px; bottom: 67px">
-        <el-button v-if="!props.detail.id" @click="resetDrawCom">重置</el-button>
-        <el-button type="primary" v-if="!props.detail.id" @click="newCompanyAdd"> 提交 </el-button>
-        <el-button type="primary" v-if="props.detail.id" @click="editedSub(ruleFormRef)">
-          提交
-        </el-button>
-      </div>
-    </el-drawer>
-    <el-dialog v-model="dialogVisible">
-      <img w-full :src="dialogImageUrl" alt="Preview Image" />
-    </el-dialog>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { computed, reactive, ref, defineProps, defineEmits, watch, onMounted } from 'vue';
-
-  import {
-    // addCompanyModuleLabel,
-    // editCompanyModuleLabel,
-    addCompany,
-    editCompany,
-  } from '@/api/scene/scene.ts';
-  // import { SceneLabelType, TemplateType } from '@/types/scene/type.ts';
-
-  // import { IS_DISABLED } from '@/types/scene/constant.ts';
-  import type { FormInstance, FormRules } from 'element-plus';
-  import { ElMessage } from 'element-plus';
-  // import { CirclePlus } from '@element-plus/icons-vue';
-  import { getProvinceList } from '@/api/system/region';
-  import { useRequest } from 'vue-hooks-plus';
-  import { Plus } from '@element-plus/icons-vue';
-  import { getHeaders } from '@/utils/http/axios';
-  import type { UploadRawFile, UploadFile } from 'element-plus';
-  import urlJoin from 'url-join';
-  import { useGlobSetting } from '@/hooks/setting';
-
-  const props = defineProps<{
-    detail: {
-      id?: number; //传不传id代表着是不是编辑
-      name?: string;
-      // orderNum?: number;
-      // isDisabled?: IS_DISABLED;
-      remark?: string;
-      longitude?: number; //经度
-      latitude?: number; //纬度
-      regionCode?: string; //省市代码
-      thumbnail?: string;
-    };
-  }>();
-
-  const { urlPrefix } = useGlobSetting();
-
-  const actionUrl = computed(() => {
-    return urlJoin(urlPrefix!, `/admin/minio/uploadFile`);
-  });
-
-  const uploadRef = ref();
-
-  const dialogImageUrl = ref('');
-  const dialogVisible = ref(false);
-  const fileList = ref<UploadFile[]>([]);
-
-  onMounted(() => {
-    if (props.detail.thumbnail) {
-      fileList.value.push({
-        name: '公司头像',
-        status: 'success',
-        uid: 1,
-        url: props.detail.thumbnail,
-      });
-    }
-  });
-  const beforeThumbnailUpload = (file: UploadRawFile) => {
-    if (file.type !== 'image/png' && file.type !== 'image/jpeg') {
-      ElMessage.error('仅支持上传png/jpg/jpeg格式的图片');
-      return false;
-    } else if (file.size / 1024 / 1024 > 10) {
-      ElMessage.error('上传图片大小不能超过10MB');
-      return false;
-    }
-    return true;
-  };
-  const handlePictureCardPreview = (file: UploadFile) => {
-    dialogImageUrl.value = file.url!;
-    dialogVisible.value = true;
-  };
-
-  const handleUploadRemove = () => {
-    ruleForm.thumbnail = '';
-  };
-
-  const handleUploadSuccess = (res) => {
-    ruleForm.thumbnail = res.data.url;
-  };
-
-  const title = computed(() => {
-    if (props.detail.id) {
-      return '编辑公司';
-    }
-    return '添加公司';
-  });
-  const emit = defineEmits<{
-    (e: 'onOk'): unknown;
-    (e: 'onClose'): unknown;
-  }>();
-
-  //表格中的规则
-  const ruleFormRef = ref<FormInstance>();
-  //匹配规则
-  // const pattern = /经度\s*[::]\s*([0-9.]+)\s*[;;]\s*纬度\s*[::]\s*([0-9.]+)/;
-
-  interface RuleForm {
-    name: string; //名称
-    // isDisabled?: IS_DISABLED; //状态
-    remark?: string; //备注
-    longitude?: number; //经度
-    latitude?: number; //纬度
-    regionCode?: string; //省市代码
-    thumbnail?: string; //公司缩略图
-  }
-
-  const ruleForm = reactive<RuleForm>({
-    name: '',
-    // isDisabled: IS_DISABLED.TRUE,
-    remark: '',
-    longitude: undefined, //经度
-    latitude: undefined, //纬度
-    regionCode: '',
-    thumbnail: '',
-  });
-  const rules = reactive<FormRules>({
-    name: [
-      { required: true, message: '公司名称不能为空', trigger: 'blur' },
-      { min: 1, max: 100, message: '字符长度在1-100之间', trigger: 'blur' },
-    ],
-    regionCode: [{ required: true, message: '省市不能为空', trigger: 'blur' }],
-  });
-
-  const { data: provinceList } = useRequest(getProvinceList);
-
-  //编辑时需要传入子组件的数据
-  watch(
-    () => props.detail,
-    (data) => {
-      ruleForm.name = data.name!;
-      // ruleForm.isDisabled = data.isDisabled;
-      ruleForm.remark = data.remark;
-      ruleForm.latitude = data.latitude;
-      ruleForm.longitude = data.longitude;
-      ruleForm.regionCode = data.regionCode;
-      ruleForm.thumbnail = data.thumbnail;
-    },
-    { immediate: true },
-  );
-
-  //添加新公司的提交
-  const newCompanyAdd = () => {
-    if (!ruleFormRef.value) return;
-    ruleFormRef.value.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-
-      const newComData = {
-        name: ruleForm.name,
-        // isDisabled: ruleForm.isDisabled,
-        // orderNum: props.detail.orderNum,
-        remark: ruleForm.remark,
-        longitude: ruleForm.longitude,
-        latitude: ruleForm.latitude,
-        regionCode: ruleForm.regionCode,
-        thumbnail: ruleForm.thumbnail,
-      };
-      //提交数据并重置关闭el-draw
-      addCompany(newComData)
-        .then(() => {
-          console.log('添加成功');
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    });
-  };
-
-  //编辑公司时的提交
-  const editedSub = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-    formEl.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-
-      //新增的数据
-      const editNewCom = {
-        id: props.detail.id,
-        name: ruleForm.name,
-        // isDisabled: ruleForm.isDisabled,
-        remark: ruleForm.remark,
-        longitude: ruleForm.longitude,
-        latitude: ruleForm.latitude,
-        regionCode: ruleForm.regionCode,
-        thumbnail: ruleForm.thumbnail,
-      };
-      // 编辑上传
-      editCompany(editNewCom)
-        .then(() => {
-          console.log('编辑成功');
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    });
-  };
-
-  //重置编辑框
-  const resetDrawCom = () => {
-    ruleForm.name = '';
-    // ruleForm.isDisabled = IS_DISABLED.TRUE;
-    ruleForm.regionCode = '';
-    ruleForm.latitude = undefined;
-    ruleForm.longitude = undefined;
-    ruleForm.thumbnail = '';
-  };
-</script>
-
-<style scoped>
-  :deep(.no-el-upload .el-upload--picture-card) {
-    display: none;
-  }
-</style>

+ 0 - 125
src/views/system-config/scene-manage/components/SceneDialog.vue

@@ -1,125 +0,0 @@
-<template>
-  <page-wrapper>
-    <el-dialog
-      :model-value="true"
-      @close="() => emit('closeDialog')"
-      title="添加企业信息"
-      width="500"
-    >
-      <!-- <span>This is a message</span> -->
-      <div>
-        <div class="relate-select">
-          <div class="select-title">企业分类</div>
-          <el-select v-model="companyType" placeholder="请选择企业类型" style="width: 180px">
-            <el-option
-              v-for="item in OPTIONS"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            />
-          </el-select>
-        </div>
-        <div class="relate-select">
-          <div class="select-title">企业名称</div>
-          <el-select
-            v-model="tenantName"
-            placeholder="请选择企业租户信息"
-            style="width: 180px"
-            @change="changeCom"
-          >
-            <el-option
-              v-for="item in companyList"
-              :key="item.tenantCode"
-              :label="item.tenantName"
-              :value="item.tenantCode"
-            />
-          </el-select>
-        </div>
-        <div v-if="tenantCode" class="relate-select">
-          <div class="select-title">企业租户信息</div>
-          <el-input v-model="tenantCode" style="width: 180px" disabled />
-        </div>
-      </div>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button @click="cancel">取消</el-button>
-          <el-button type="primary" @click="close"> 确定 </el-button>
-        </div>
-      </template>
-    </el-dialog>
-  </page-wrapper>
-</template>
-
-<script setup lang="ts">
-  import { ref, onMounted } from 'vue';
-  import { ElMessage } from 'element-plus';
-  import { OPTIONS } from '@/types/scene/constant.ts';
-  import { getCompanyList, changeRelate } from '@/api/scene/scene.ts';
-  import { CompanyType } from '@/types/scene/type.ts';
-
-  const emit = defineEmits<{
-    (e: 'closeDialog'): unknown;
-  }>();
-
-  // const dialogVisible = ref<boolean>(false);
-  const companyType = ref('');
-  const tenantName = ref('');
-  const tenantCode = ref('');
-  const tenantId = ref();
-  const companyList = ref<CompanyType[]>([]);
-
-  const reset = () => {
-    // dialogVisible.value = false;
-    tenantName.value = '';
-    tenantCode.value = '';
-    tenantId.value = null;
-    companyType.value = '';
-  };
-
-  const close = () => {
-    const subData = {
-      tenantCode: tenantCode.value,
-      tenantId: tenantId.value,
-      type: companyType.value,
-    };
-    changeRelate(subData).then(() => {
-      ElMessage({
-        message: '绑定成功',
-        type: 'success',
-      });
-      reset();
-      emit('closeDialog');
-    });
-  };
-  const changeCom = (val: any) => {
-    console.log(val);
-    const item = companyList.value.find((item) => item.tenantCode === val);
-    console.log('item', item);
-    tenantName.value = item?.tenantName!;
-    tenantId.value = item?.tenantId!;
-    tenantCode.value = val;
-  };
-
-  onMounted(() => {
-    getCompanyList().then((res) => {
-      companyList.value = res;
-    });
-  });
-  const cancel = () => {
-    emit('closeDialog');
-  };
-</script>
-
-<style scoped>
-  .relate-select {
-    display: flex;
-
-    align-items: center;
-    margin-bottom: 20px;
-  }
-
-  .select-title {
-    width: 100px;
-    margin-right: 20px;
-  }
-</style>

+ 0 - 214
src/views/system-config/scene-manage/components/WorkshopDrawer-shangfei.vue

@@ -1,214 +0,0 @@
-<template>
-  <div>
-    <el-drawer
-      class="test"
-      :model-value="true"
-      @close="() => emit('onClose')"
-      with-header="true"
-      size="35%"
-    >
-      <template #header="{ titleId }">
-        <p :id="titleId">{{ title }}</p>
-      </template>
-      <el-form
-        ref="ruleFormRef"
-        :model="ruleForm"
-        :rules="rules"
-        label-width="120px"
-        class="demo-ruleForm"
-        size="default"
-        status-icon
-      >
-        <el-form-item label="车间名称" prop="name">
-          <el-select v-model="ruleForm.name" placeholder="请选择车间" style="width: 200px">
-            <el-option
-              v-for="item in workshopList"
-              :key="item.workshopCode"
-              :label="item.workshopName"
-              :value="item.workshopName"
-              :disabled="!item.isEnable"
-              @click="changeWorkShopCode(item.workshopCode, item.isEnable)"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="所属公司" prop="seniorScene">
-          <el-input v-model="ruleForm.seniorScene" disabled />
-        </el-form-item>
-
-        <!-- <el-form-item label="状态">
-          <el-switch
-            v-model="ruleForm.isDisabled"
-            :active-value="IS_DISABLED.FALSE"
-            :inactive-value="IS_DISABLED.TRUE"
-            class="switchUse"
-          />
-        </el-form-item> -->
-      </el-form>
-      <div style="position: absolute; left: 108px; bottom: 67px">
-        <el-button v-if="!props.detail.id" @click="resetDraw">重置</el-button>
-        <el-button v-if="!props.detail.id" type="primary" @click="addNewType(ruleFormRef)">
-          提交
-        </el-button>
-        <el-button v-if="props.detail.id" type="primary" @click="editedSub(ruleFormRef)">
-          提交
-        </el-button>
-      </div>
-    </el-drawer></div
-  >
-</template>
-
-<script setup lang="ts">
-  import { computed, reactive, ref, defineProps, defineEmits, watch } from 'vue';
-  // import { IS_DISABLED } from '@/types/scene/constant.ts';
-  import { type FormInstance, type FormRules } from 'element-plus';
-  import { addWorkshop, editWorkshop } from '@/api/scene/scene.ts';
-  import { getWorkshopInfoList } from '@/api/workShopData';
-
-  type WorkshopListType = {
-    isEnable: boolean;
-    workshopCode: string;
-    workshopName: string;
-  };
-
-  const workshopList = ref<WorkshopListType[]>([]);
-  getWorkshopInfoList().then((res) => {
-    workshopList.value = res;
-  });
-
-  const changeWorkShopCode = (workshopCode: string, isEnable: boolean) => {
-    if (isEnable === false) return;
-    ruleForm.code = workshopCode;
-  };
-
-  const props = defineProps<{
-    detail: {
-      id?: number;
-      code?: string;
-      name?: string;
-      seniorScene?: string;
-      // isDisabled?: IS_DISABLED;
-      companyId?: number;
-    };
-  }>();
-
-  //将表单数据传至父组件
-  const emit = defineEmits<{
-    (e: 'onOk'): unknown;
-    (e: 'onClose'): unknown;
-  }>();
-
-  //表格中的规则
-  const ruleFormRef = ref<FormInstance>();
-
-  const title = computed(() => {
-    if (props.detail.id) {
-      return '编辑车间';
-    }
-    return '添加车间';
-  });
-
-  interface RuleForm {
-    name: string; //名称
-    code: string; //车间code
-    seniorScene: string; //上级场景
-    // isDisabled?: IS_DISABLED; //状态
-  }
-  const ruleForm = reactive<RuleForm>({
-    name: '',
-    code: '',
-    seniorScene: '',
-    // isDisabled: IS_DISABLED.FALSE,
-  });
-  const rules = reactive<FormRules>({
-    name: [
-      { required: true, message: '车间名称不能为空', trigger: 'blur' },
-      { min: 1, max: 100, message: 'Length should be 3 to 5', trigger: 'blur' },
-    ],
-    seniorScene: [
-      { required: true, message: '', trigger: 'blur' },
-      { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    ],
-  });
-
-  //编辑时需要传入子组件的数据
-  watch(
-    () => props.detail,
-    (data) => {
-      ruleForm.name = data.name!;
-      ruleForm.seniorScene = data.seniorScene!;
-      // ruleForm.isDisabled = data.isDisabled;
-    },
-    { immediate: true },
-  );
-
-  //添加新车间的提交
-  const addNewType = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-    formEl.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-      const newAddData = {
-        companyId: props.detail.companyId,
-        name: ruleForm.name,
-        code: ruleForm.code,
-        // isDisabled: ruleForm.isDisabled,
-      };
-
-      addWorkshop(newAddData)
-        .then(() => {
-          console.log('成功添加车间');
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    });
-  };
-
-  //编辑公司时的提交
-  const editedSub = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-    formEl.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-
-      const editNewWorkshopData = {
-        id: props.detail.id,
-        code: ruleForm.code,
-        name: ruleForm.name,
-        // isDisabled: ruleForm.isDisabled,
-      };
-
-      editWorkshop(editNewWorkshopData)
-        .then(() => {
-          console.log('成功修改车间');
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    });
-  };
-
-  //重置编辑框
-  const resetDraw = () => {
-    ruleForm.name = '';
-    ruleForm.code = '';
-    // ruleForm.isDisabled = IS_DISABLED.FALSE;
-  };
-</script>
-
-<style scoped>
-  .tag-select {
-    margin-right: 10px;
-    margin-bottom: 10px;
-    border-radius: 4px;
-    border: 1px solid rgba(0, 0, 0, 0.15);
-  }
-</style>

+ 0 - 181
src/views/system-config/scene-manage/components/WorkshopDrawer.vue

@@ -1,181 +0,0 @@
-<template>
-  <div>
-    <el-drawer
-      class="test"
-      :model-value="true"
-      @close="() => emit('onClose')"
-      with-header="true"
-      size="35%"
-    >
-      <template #header="{ titleId }">
-        <p :id="titleId">{{ title }}</p>
-      </template>
-      <el-form
-        ref="ruleFormRef"
-        :model="ruleForm"
-        :rules="rules"
-        label-width="120px"
-        class="demo-ruleForm"
-        size="default"
-        status-icon
-      >
-        <el-form-item label="车间名称" prop="name">
-          <el-input v-model="ruleForm.name" />
-        </el-form-item>
-        <el-form-item label="所属公司" prop="seniorScene">
-          <el-input v-model="ruleForm.seniorScene" disabled />
-        </el-form-item>
-        <!-- <el-form-item label="状态">
-          <el-switch
-            v-model="ruleForm.isDisabled"
-            :active-value="IS_DISABLED.FALSE"
-            :inactive-value="IS_DISABLED.TRUE"
-            class="switchUse"
-          />
-        </el-form-item> -->
-      </el-form>
-      <div style="position: absolute; left: 108px; bottom: 67px">
-        <el-button v-if="!props.detail.id" @click="resetDraw">重置</el-button>
-        <el-button v-if="!props.detail.id" type="primary" @click="addNewType(ruleFormRef)">
-          提交
-        </el-button>
-        <el-button v-if="props.detail.id" type="primary" @click="editedSub(ruleFormRef)">
-          提交
-        </el-button>
-      </div>
-    </el-drawer></div
-  >
-</template>
-
-<script setup lang="ts">
-  import { computed, reactive, ref, defineProps, defineEmits, watch } from 'vue';
-  import { type FormInstance, type FormRules } from 'element-plus';
-  // import { addWorkshop, editWorkshop } from '@/api/scene/scene.ts';
-
-  const props = defineProps<{
-    detail: {
-      id?: number;
-      name?: string;
-      seniorScene?: string;
-      // isDisabled?: IS_DISABLED;
-      companyId?: number;
-      // orderNum?: number;
-    };
-  }>();
-
-  //将表单数据传至父组件
-  const emit = defineEmits<{
-    (e: 'onOk'): unknown;
-    (e: 'onClose'): unknown;
-  }>();
-
-  //表格中的规则
-  const ruleFormRef = ref<FormInstance>();
-
-  const title = computed(() => {
-    if (props.detail.companyId) {
-      return '编辑车间';
-    }
-    return '添加车间';
-  });
-
-  interface RuleForm {
-    name: string; //名称
-    seniorScene: string; //上级场景
-    // isDisabled?: IS_DISABLED; //状态
-  }
-  const ruleForm = reactive<RuleForm>({
-    name: '',
-    seniorScene: '',
-    // isDisabled: IS_DISABLED.TRUE,
-  });
-  const rules = reactive<FormRules>({
-    name: [
-      { required: true, message: '车间名称不能为空', trigger: 'blur' },
-      { min: 1, max: 100, message: '最大输入不超过100字', trigger: 'blur' },
-    ],
-    seniorScene: [
-      { required: true, message: '', trigger: 'blur' },
-      { min: 1, max: 100, message: '最大输入不超过100字', trigger: 'blur' },
-    ],
-  });
-
-  //编辑时需要传入子组件的数据
-  watch(
-    () => props.detail,
-    (data) => {
-      ruleForm.name = data.name!;
-      ruleForm.seniorScene = data.seniorScene!;
-      // // ruleForm.isDisabled = data.isDisabled;
-    },
-    { immediate: true },
-  );
-
-  //添加新车间的提交
-  const addNewType = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-    formEl.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-      const newAddData = {
-        name: ruleForm.name,
-        // status: Number(ruleForm.isDisabled),
-        companyId: props.detail.companyId,
-        // orderNum: props.detail.orderNum,
-      };
-
-      // addWorkshop(newAddData)
-      //   .then(() => {
-      //     console.log('成功添加车间');
-      //   })
-      //   .catch((err) => {
-      //     console.log(err);
-      //   })
-      //   .finally(() => {
-      //     emit('onOk');
-      //   });
-    });
-  };
-
-  //编辑公司时的提交
-  const editedSub = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-    formEl.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-      const editNewWorkshopData = {
-        id: props.detail.id,
-        name: ruleForm.name,
-        // // isDisabled: ruleForm.isDisabled,
-      };
-
-      // editWorkshop(editNewWorkshopData)
-      //   .then(() => {
-      //     console.log('成功修改车间');
-      //   })
-      //   .catch((err) => {
-      //     console.log(err);
-      //   })
-      //   .finally(() => {
-      //     emit('onOk');
-      //   });
-    });
-  };
-
-  //重置编辑框
-  const resetDraw = () => {
-    ruleForm.name = '';
-    // ruleForm.isDisabled = IS_DISABLED.FALSE;
-  };
-</script>
-
-<style scoped>
-  .tag-select {
-    margin-right: 10px;
-    margin-bottom: 10px;
-    border-radius: 4px;
-    border: 1px solid rgba(0, 0, 0, 0.15);
-  }
-</style>

+ 0 - 230
src/views/system-config/scene-manage/components/WorkspaceDrawer-shangfei.vue

@@ -1,230 +0,0 @@
-<template>
-  <div>
-    <el-drawer
-      class="test"
-      :model-value="true"
-      @close="() => emit('onClose')"
-      with-header="true"
-      size="35%"
-    >
-      <template #header="{ titleId }">
-        <p :id="titleId">{{ title }}</p>
-      </template>
-      <el-form
-        ref="ruleFormRef"
-        :model="ruleForm"
-        :rules="rules"
-        label-width="120px"
-        class="demo-ruleForm"
-        size="default"
-        status-icon
-      >
-        <el-form-item label="工位名称" prop="name">
-          <el-select v-model="ruleForm.name" placeholder="请选择工位" style="width: 200px">
-            <el-option
-              v-for="item in workSpaceList"
-              :key="item.workspaceCode"
-              :label="item.workspaceName"
-              :value="item.workspaceName"
-              :disabled="!item.isEnable"
-              @click="changeWorkSpaceCode(item.workspaceCode, item.isEnable)"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="所属车间" prop="seniorScene">
-          <el-input v-model="ruleForm.seniorScene" disabled />
-        </el-form-item>
-        <el-form-item label="负责人" prop="principalName">
-          <el-input v-model="ruleForm.principalName" />
-        </el-form-item>
-        <!-- <el-form-item label="状态">
-          <el-switch
-            v-model="ruleForm.isDisabled"
-            :active-value="IS_DISABLED.FALSE"
-            :inactive-value="IS_DISABLED.TRUE"
-            class="switchUse"
-          />
-        </el-form-item> -->
-      </el-form>
-      <div style="position: absolute; left: 108px; bottom: 67px">
-        <el-button v-if="!props.detail.id" @click="resetDraw">重置</el-button>
-        <el-button v-if="!props.detail.id" type="primary" @click="addNewType(ruleFormRef)">
-          提交
-        </el-button>
-        <el-button v-if="props.detail.id" type="primary" @click="editedSub(ruleFormRef)">
-          提交
-        </el-button>
-      </div>
-    </el-drawer>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { computed, reactive, ref, defineProps, defineEmits, watch } from 'vue';
-  // import { IS_DISABLED } from '@/types/scene/constant.ts';
-  import { type FormInstance, type FormRules } from 'element-plus';
-  import { addWorkspace, editWorkspace } from '@/api/scene/scene.ts';
-  import { getWorkSpaceInfoList } from '@/api/workShopData';
-
-  const props = defineProps<{
-    detail: {
-      id?: number;
-      name?: string;
-      code?: string;
-      seniorScene?: string;
-      principalName?: string;
-      // isDisabled?: IS_DISABLED;
-      workshopId?: number;
-      workshopCode?: string;
-    };
-  }>();
-
-  type workSpaceListType = {
-    isEnable: boolean;
-    workspaceCode: string;
-    workspaceName: string;
-  };
-
-  const workSpaceList = ref<workSpaceListType[]>([]);
-  getWorkSpaceInfoList({ workshopCode: props.detail.workshopCode }).then((res) => {
-    workSpaceList.value = res;
-  });
-  const changeWorkSpaceCode = (workspaceCode: string, isEnable: boolean) => {
-    if (isEnable === false) return;
-    ruleForm.code = workspaceCode;
-  };
-
-  const emit = defineEmits<{
-    (e: 'onOk'): unknown;
-    (e: 'onClose'): unknown;
-  }>();
-
-  const title = computed(() => {
-    if (props.detail.principalName) {
-      return '编辑工位';
-    }
-    return '添加工位';
-  });
-
-  //表格中的规则
-  const ruleFormRef = ref<FormInstance>();
-
-  interface RuleForm {
-    name: string; //名称
-    seniorScene: string; //上级场景
-    code: string; //代码
-    principalName?: string; //负责人
-    // isDisabled?: IS_DISABLED;
-  }
-  const ruleForm = reactive<RuleForm>({
-    name: '',
-    seniorScene: '',
-    code: '',
-    principalName: '',
-    // isDisabled: IS_DISAsBLED.FALSE,
-  });
-  const rules = reactive<FormRules>({
-    name: [
-      { required: true, message: '工位不能为空', trigger: 'blur' },
-      { min: 1, max: 100, message: 'Length should be 3 to 5', trigger: 'blur' },
-    ],
-    // seniorScene: [
-    //   { required: true, message: '', trigger: 'blur' },
-    //   { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    // ],
-    principalName: [
-      { required: true, message: '负责人不能为空', trigger: 'blur' },
-      { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    ],
-  });
-
-  watch(
-    () => props.detail,
-    (data) => {
-      ruleForm.name = data.name!;
-      ruleForm.seniorScene = data.seniorScene!;
-      ruleForm.code = data.code!;
-      ruleForm.principalName = data.principalName;
-      // ruleForm.isDisabled = data.isDisabled;
-    },
-    { immediate: true },
-  );
-
-  //添加的提交
-  const addNewType = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-
-    formEl.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-
-      const newAddData = {
-        code: ruleForm.code,
-        workshopId: props.detail.workshopId,
-        name: ruleForm.name,
-        principalName: ruleForm.principalName,
-        // isDisabled: ruleForm.isDisabled,
-      };
-
-      addWorkspace(newAddData)
-        .then(() => {
-          console.log('成功添加车间');
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    });
-  };
-
-  //编辑时的提交
-  const editedSub = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-
-    formEl.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-
-      const editNewWorkspaceData = {
-        id: props.detail.id,
-        code: ruleForm.code,
-        name: ruleForm.name,
-        principalName: ruleForm.principalName,
-        // isDisabled: ruleForm.isDisabled,
-      };
-
-      //编辑并上传
-      editWorkspace(editNewWorkspaceData)
-        .then(() => {
-          console.log('成功修改车间');
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    });
-  };
-
-  //重置编辑框
-  const resetDraw = () => {
-    ruleForm.name = '';
-    ruleForm.code = '';
-    // ruleForm.isDisabled = IS_DISABLED.FALSE;
-    ruleForm.principalName = '';
-  };
-</script>
-
-<style scoped>
-  .tag-select {
-    margin-right: 10px;
-    margin-bottom: 10px;
-    border-radius: 4px;
-    border: 1px solid rgba(0, 0, 0, 0.15);
-  }
-</style>

+ 0 - 187
src/views/system-config/scene-manage/components/WorkspaceDrawer.vue

@@ -1,187 +0,0 @@
-<template>
-  <div>
-    <el-drawer class="test" :model-value="true" @close="() => emit('onClose')" with-header="true" size="35%">
-      <template #header="{ titleId }">
-        <p :id="titleId">{{ title }}</p>
-      </template>
-      <el-form
-        ref="ruleFormRef"
-        :model="ruleForm"
-        :rules="rules"
-        label-width="120px"
-        class="demo-ruleForm"
-        size="default"
-        isDisabled-icon
-      >
-        <el-form-item label="工位名称" prop="name">
-          <el-input v-model="ruleForm.name" />
-        </el-form-item>
-        <el-form-item label="所属车间" prop="seniorScene">
-          <el-input v-model="ruleForm.seniorScene" disabled />
-        </el-form-item>
-        <el-form-item label="负责人" prop="principalName">
-          <el-input v-model="ruleForm.principalName" />
-        </el-form-item>
-        <!-- <el-form-item label="状态">
-          <el-switch
-            v-model="ruleForm.isDisabled"
-            :active-value="IS_DISABLED.FALSE"
-            :inactive-value="IS_DISABLED.TRUE"
-            class="switchUse"
-          />
-        </el-form-item> -->
-      </el-form>
-      <div style="position: absolute; left: 108px; bottom: 67px">
-        <el-button v-if="!props.detail.id" @click="resetDraw">重置</el-button>
-        <el-button v-if="!props.detail.id" type="primary" @click="addNewType(ruleFormRef)"> 提交 </el-button>
-        <el-button v-if="props.detail.id" type="primary" @click="editedSub(ruleFormRef)"> 提交 </el-button>
-      </div>
-    </el-drawer></div
-  >
-</template>
-
-<script setup lang="ts">
-  import { computed, reactive, ref, defineProps, defineEmits, watch } from 'vue';
-  // import { IS_DISABLED } from '@/types/scene/constant.ts';
-  import { type FormInstance, type FormRules } from 'element-plus';
-  import { addWorkspace, editWorkspace } from '@/api/scene/scene.ts';
-  import { uid } from 'uid';
-
-  const props = defineProps<{
-    // allCodes: string[];
-    detail: {
-      id?: number;
-      name?: string;
-      seniorScene?: string;
-      principalName?: string;
-      // isDisabled?: IS_DISABLED;
-      workshopId?: number;
-      // orderNum?: number;
-    };
-  }>();
-
-  const emit = defineEmits<{
-    (e: 'onOk'): unknown;
-    (e: 'onClose'): unknown;
-  }>();
-
-  const title = computed(() => {
-    if (props.detail.id) {
-      return '编辑工位';
-    }
-    return '添加工位';
-  });
-
-  //表格中的规则
-  const ruleFormRef = ref<FormInstance>();
-
-  interface RuleForm {
-    name: string; //名称
-    seniorScene: string; //所属车间
-    principalName?: string; //负责人
-    // isDisabled?: IS_DISABLED;
-  }
-  const ruleForm = reactive<RuleForm>({
-    name: '',
-    seniorScene: '',
-    principalName: '',
-    // isDisabled: IS_DISABLED.FALSE,
-  });
-  const rules = reactive<FormRules>({
-    name: [
-      { required: true, message: '工位名称不能为空', trigger: 'blur' },
-      { min: 1, max: 100, message: '最大输入不超过100字', trigger: 'blur' },
-    ],
-    principalName: [
-      { required: true, message: '负责人不能为空', trigger: 'blur' },
-      { min: 1, max: 100, message: '最大输入不超过100字', trigger: 'blur' },
-    ],
-  });
-
-  watch(
-    () => props.detail,
-    (data) => {
-      ruleForm.name = data.name!;
-      ruleForm.seniorScene = data.seniorScene!;
-      ruleForm.principalName = data.principalName;
-      // // ruleForm.isDisabled = data.isDisabled;
-    },
-    { immediate: true },
-  );
-
-  //添加新公司的提交
-  const addNewType = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-
-    formEl.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-
-      const newAddData = {
-        name: ruleForm.name,
-        principalName: ruleForm.principalName,
-        // // isDisabled: ruleForm.isDisabled,
-        workshopId: props.detail.workshopId,
-        // orderNum: props.detail.orderNum,
-        code: uid(20),
-      };
-      addWorkspace(newAddData)
-        .then(() => {
-          console.log('成功添加工位');
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    });
-  };
-
-  //编辑公司时的提交
-  const editedSub = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-
-    formEl.validate((valid) => {
-      if (!valid) {
-        return;
-      }
-
-      const editNewWorkspaceData = {
-        id: props.detail.id,
-        name: ruleForm.name,
-        // // isDisabled: ruleForm.isDisabled,
-        principalName: ruleForm.principalName,
-      };
-
-      //编辑车间并上传
-      editWorkspace(editNewWorkspaceData)
-        .then(() => {
-          console.log('成功编辑工位');
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    });
-  };
-
-  //重置编辑框
-  const resetDraw = () => {
-    ruleForm.name = '';
-    // ruleForm.isDisabled = IS_DISABLED.FALSE;
-    ruleForm.principalName = '';
-  };
-</script>
-
-<style scoped>
-  .tag-select {
-    margin-right: 10px;
-    margin-bottom: 10px;
-    border-radius: 4px;
-    border: 1px solid rgba(0, 0, 0, 0.15);
-  }
-</style>

+ 0 - 50
src/views/system-config/scene-manage/hook/use-sence-templete.ts

@@ -1,50 +0,0 @@
-import { querySceneLabel, querytemplate, queryWorkshopModule } from '@/api/scene/scene.ts';
-import { TemplateType, SceneLabelType, WorkshopModuleType } from '@/types/scene/type.ts';
-import { onMounted, ref } from 'vue';
-
-export function useSceneTemplete() {
-  //场景标签
-  const sceneList = ref<SceneLabelType[]>([]);
-
-  const getSceneLabel = () => {
-    querySceneLabel().then((res) => {
-      sceneList.value = res;
-    });
-  };
-
-  //场景模板
-  const templateList = ref<TemplateType[]>([]);
-
-  const getTemplete = () => {
-    querytemplate().then((res) => {
-      templateList.value = res?.filter((x) => x.status === 0) || [];
-      console.log('templateList.value', templateList.value);
-    });
-  };
-
-  //车间模板
-  const workshopTemplateList = ref<WorkshopModuleType[]>([]);
-
-  const getWorkshopTemplete = () => {
-    queryWorkshopModule().then((res) => {
-      workshopTemplateList.value = res;
-    });
-  };
-
-  onMounted(() => {
-    getSceneLabel();
-    getTemplete();
-    getWorkshopTemplete();
-  });
-
-  return {
-    sceneList,
-    getSceneLabel,
-    templateList,
-    getTemplete,
-    workshopTemplateList,
-    getWorkshopTemplete,
-  };
-}
-
-export default useSceneTemplete;

+ 0 - 237
src/views/system-config/scene-manage/hook/use-table-method.tsx

@@ -1,237 +0,0 @@
-import { useGlobSetting } from '@/hooks/setting';
-import { DrawerType } from '@/types/scene/constant.ts';
-
-const { appPCUrl } = useGlobSetting()
-
-export const colomns = [
-  { label: '名称', prop: 'name', minWidth: 300 },
-  {
-    label: '设置', prop: 'labelName', minWidth: 300,
-    render: ({ row }) => {
-      if (row.nodeType === DrawerType.company) {
-        return (
-          <a
-            href={`./#/layout/scene-config?companyId=${row.id}&companyName=${row.name}&viewType=1`}
-          >
-            布局设置
-          </a>
-        );
-      } else if (row.nodeType === DrawerType.workshop) {
-        return (
-          <a
-            href={`./#/layout/camera-config?workshopId=${row.id}&workshopName=${row.name}&viewType=1`}
-          >
-            相机导航设置
-          </a>
-        );
-      }
-    },
-  },
-  // { label: '场景标签', prop: 'labelName', minWidth: 300 },
-  // { label: '代码', prop: 'code' },
-  // {
-  //   label: '预览',
-  //   prop: 'preview',
-  //   minWidth: 300,
-  //   render: ({ row, column }) => {
-  //     if (row.nodeType === DrawerType.company) {
-  //       return (
-  //         // TODO 这里的跳转需要根据前台的路由地址来
-  //         <a
-  //           href={`${appPCUrl}#/company?companyId=${row.id}`}
-  //           target="_blank"
-  //         >
-  //           公司预览
-  //         </a>
-  //       );
-  //     } else if (row.nodeType === DrawerType.workshop) {
-  //       return (
-  //         <a href={`${appPCUrl}#/shop?id=${row.id}`} target="_blank">
-  //           车间预览
-  //         </a>
-  //       );
-  //     }
-  //   },
-  // },
-];
-
-// interface DataSourceUser
-//   extends UseComType<UseWorkshopType<UseWorkspaceType>> {
-//   parent?: UseComType<UseWorkshopType<UseWorkspaceType>> | null;
-// }
-// 修改: 现在排序车间或工位时按上一级id找 找到公司id为止
-
-// export const dataSourceWithParent = (d: DataSourceUser[], parent: DataSourceUser | null) => {
-//   d.forEach((item, _index) => {
-//     item.parent = parent;
-
-//     if (item.children && item.children?.length > 0) {
-//       dataSourceWithParent(item.children as DataSourceUser[], item);
-//     }
-//   });
-
-//   return d;
-// };
-
-// export function removeParent(data) {
-//   return data.map((item) => {
-//     // 删除 tag 属性
-//     delete item.parent;
-
-//     // 递归处理子项
-//     if (item.children && item.children.length > 0) {
-//       item.children = removeParent(item.children);
-//     }
-
-//     return item;
-//   });
-// }
-
-//找到各个层级
-// export function findIndexByItem(data, targetItem, path = []) {
-//   for (let i = 0; i < data.length; i++) {
-//     const currentPath = path.concat(i);
-//     if (data[i].id === targetItem.id && data[i].name === targetItem.name) {
-//       return currentPath;
-//     }
-//     if (data[i].children && data[i].children.length > 0) {
-//       const childResult = findIndexByItem(data[i].children, targetItem, currentPath);
-//       if (childResult.length > 0) {
-//         return childResult;
-//       }
-//     }
-//   }
-//   return [];
-// }
-
-//用于重新修改serial
-// export const updateSerials = (data) => {
-//   for (let i = 0; i < data.length; i++) {
-//     data[i].serial = i;
-
-//     // 如果有子项,递归查找
-//     if (data[i].children && data[i].children.length > 0) {
-//       updateSerials(data[i].children);
-//     }
-//   }
-//   return data;
-//   // return false; // 表示未找到目标项
-// };
-
-//用于新增数据
-// export const updateData = (data, targetId, newAdd) => {
-//   for (let i = 0; i < data.length; i++) {
-//     const currentItem = data[i];
-
-//     if (currentItem.id === targetId) {
-//       if (!currentItem.children) {
-//         currentItem.children = [];
-//       }
-//       currentItem.children.push(newAdd);
-//       return true; // 表示已经找到并修改
-//     }
-
-//     // 如果有子项,递归查找
-//     if (currentItem.children && currentItem.children.length > 0) {
-//       const found = updateData(currentItem.children, targetId, newAdd);
-
-//       if (found) {
-//         return true; // 如果在子项中找到目标项,停止继续查找
-//       }
-//     }
-//   }
-
-//   return false; // 表示未找到目标项
-// };
-
-//判断该条数据的层级
-// export const findItemLevel = (data, targetId, targetName, currentLevel = 0) => {
-//   for (let i = 0; i < data.length; i++) {
-//     const item = data[i];
-
-//     if (item.id === targetId && item.name === targetName) {
-//       return currentLevel;
-//     }
-
-//     if (item.children && item.children.length > 0) {
-//       const childLevel = findItemLevel(item.children, targetId, targetName, currentLevel + 1);
-//       if (childLevel !== -1) {
-//         return childLevel;
-//       }
-//     }
-//   }
-
-//   return -1;
-// };
-
-
-//得到parent
-// export const getParent = (data: DataSourceUser[], targetCode: string) => {
-
-
-//   //let parentNode = {} as DataSourceUser
-//   for (let i = 0; i < data.length; i++) {
-//     const item = data[i];
-
-//     if (item.code === targetCode) {
-//       // parentNode = item
-//       return item
-//     }
-
-//     if (item.children && item.children.length > 0) {
-//       const foundItem = getParent(item.children as DataSourceUser[], targetCode);
-//       if (foundItem) {
-//         return foundItem
-//       }
-//     }
-//   }
-
-//   return null;
-// };
-
-//删除行
-// export const deleteTableRow = (dataSource, targetId) => {
-//   const deleteRecursive = (data) => {
-//     for (let i = 0; i < data.length; i++) {
-//       const currentItem = data[i];
-
-//       if (currentItem.id === targetId) {
-//         // 删除当前项
-//         data.splice(i, 1);
-//         return true;
-//       }
-
-//       // 如果有子项,递归查找
-//       if (currentItem.children && currentItem.children.length > 0) {
-//         const found = deleteRecursive(currentItem.children);
-
-//         if (found) {
-//           return true; // 如果在子项中找到目标项,停止继续查找
-//         }
-//       }
-//     }
-
-//     return false; // 表示未找到目标项
-//   };
-
-//   // 从顶层开始递归删除
-//   deleteRecursive(dataSource);
-// };
-
-//找出数据中的全部code
-// export const flattenCodes = (data) => {
-//   const codes: string[] = [];
-//   const traverse = (node: { code: string; children: any[] }) => {
-//     codes.push(node.code);
-//     if (node.children && node.children.length > 0) {
-//       node.children.forEach(traverse);
-//     }
-//   };
-//   data.forEach(traverse);
-//   return codes;
-// };
-
-// export enum ENABLED {
-//   FALSE = 1,
-//   TRUE = 0,
-// }

+ 0 - 48
src/views/system-config/scene-manage/store/use-com-tree.ts

@@ -1,48 +0,0 @@
-import { getComShopSpaceTree } from '@/api/scene/scene.ts';
-import { ComTreeType } from '@/types/scene/type.ts';
-import { defineStore } from 'pinia';
-import { ref } from 'vue';
-// import { dataSourceWithParent } from './use-table-method';
-
-export const useComTree = defineStore('scene-data', () => {
-  //场景数据
-  const comTreeData = ref<ComTreeType[]>([]);
-
-  /**
-   * @description 获取公司树结构数据并预处理
-   * @version V4
-   * @author Yunfeng
-   * @date 2025-01-13
-   */
-  const getComTreeDetail = () => {
-    getComShopSpaceTree().then((res) => {
-      comTreeData.value = comTreeWithUniqueCode(res);
-    });
-  };
-
-  /**
-   * @description 为公司树中每个节点添加唯一性标识UniqueCode,用于表格树结构的row-key
-   * @version V4
-   * @author Yunfeng
-   * @date 2025-01-13
-   */
-  const comTreeWithUniqueCode = (tree: ComTreeType[]) => {
-    tree.forEach((item) => {
-      item.uniqueCode = `${item.id}`;
-      item.children &&
-        item.children.forEach((item) => {
-          item.uniqueCode = `${item.uniqueCode}-${item.id}`;
-          if (item.children) {
-            item.children.forEach((child) => {
-              child.uniqueCode = `${item.uniqueCode}-${child.id}`;
-            });
-          }
-        });
-    });
-    return tree;
-  };
-
-  return { comTreeData, getComTreeDetail };
-});
-
-export default useComTree;