Browse Source

绑定企业

zhudie 1 year ago
parent
commit
9e83ba77a8

+ 42 - 0
src/api/scene/scene-relate.ts

@@ -0,0 +1,42 @@
+import { http } from '@/utils/http/axios';
+
+//查询场景标签
+
+export interface CompanyType {
+  tenantId: number;
+  userId: number;
+  createDate: string;
+  modifyDate: string;
+  tenantCode: string;
+  tenantName: string;
+  beginDate: string;
+  endDate: string;
+  tenantStatus:number;
+  isDelete:boolean;
+}
+
+export const getCompanyList = (): Promise<CompanyType[]> => {
+  return http.request({
+    url: '/relationship/getEnterpriseList',
+    method: 'get',
+  });
+};
+
+//查询场景模板
+
+export interface InputType {
+  tenantCode: string;
+  tenantId: number;
+  type: string;
+}
+
+export const changeRelate = (data: InputType) => {
+  return http.request({
+    url: '/relationship/addEnterpriseRel',
+    method: 'put',
+    data,
+  });
+};
+
+
+

+ 116 - 2
src/views/system-config/scene-manage/SceneManage.vue

@@ -73,6 +73,47 @@
       @on-close="handleUpdataWorkspaceTab"
       @on-ok="subWorkspace"
     />
+
+    <el-dialog
+    v-model="dialogVisible"
+    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="dialogVisible =false">取消</el-button>
+        <el-button type="primary" @click="close">
+          确定
+        </el-button>
+      </div>
+    </template>
+  </el-dialog>
   </page-wrapper>
 </template>
 
@@ -80,7 +121,7 @@
   import { ref, onMounted, reactive, h, computed } from 'vue';
   import { Plus } from '@element-plus/icons-vue';
   import { BasicTable, BasicColumn } from '@/components/Table';
-  import { ElMessageBox } from 'element-plus';
+  import { ElMessage, ElMessageBox } from 'element-plus';
   import ActionColomn from './actionColomns.vue';
   import CompanyDrawer from './CompanyDrawer.vue';
   import WorkshopDrawer from './WorkshopDrawer.vue';
@@ -93,6 +134,7 @@
     removeParent,
     flattenCodes,
     getParent,
+    options,
   } from './use-method.tsx';
   import {
     ComAddDatas,
@@ -103,12 +145,19 @@
     delWorkspace,
     sortSceneList,
   } from '@/api/scene/sceneOperate';
+  import {
+    getCompanyList,
+    CompanyType,
+    changeRelate,
+  } from '@/api/scene/scene-relate';
   import useScene from './use-scene';
   import useSceneTemplete from './use-sence-templete';
   import { useRouter } from 'vue-router';
   import { storeToRefs } from 'pinia';
   import { cloneDeep } from 'lodash-es';
 
+  
+
   const router = useRouter();
 
   const useSceneList = useScene();
@@ -127,6 +176,48 @@
   const page = ref(1);
   const size = ref(10);
   const total = computed(() => tableData.value.length);
+  const dialogVisible =ref<boolean>(false)
+  const companyType = ref('')
+  // const companyId = 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();
+    })
+
+}
+  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
+    // tenantCode.value = item.tenantCode
+    // tenantId.value = item.tenantId
+  }
 
   //改变el-drawer公司的状态
   const handleUpdateTableCom = () => {
@@ -154,6 +245,9 @@
 
     //获取tableData数据
     getSceneDetail();
+    getCompanyList().then((res)=>{
+      companyList.value = res
+    })
   });
 
   function onCheckedRow(rowKeys) {
@@ -200,7 +294,7 @@
 
   //操作列
   const actionColumn: BasicColumn = reactive({
-    width: 350,
+    width: 360,
     label: '操作',
     prop: 'booking',
     key: 'action',
@@ -210,6 +304,7 @@
         // rowUpDisable:
         // rowDownDisable:
         subItem: record.row,
+        handleRelate:handleRelate,
         handleConig: handleConfig,
         handleAdd: handleAdd,
         handleEdit: handleEdit,
@@ -220,6 +315,13 @@
     },
   });
 
+
+  //绑定
+  const handleRelate=(row)=>{
+    console.log('row',row);
+    dialogVisible.value = true
+  }
+
   //页面设置函数
   const handleConfig = (row) => {
     router.push({
@@ -434,4 +536,16 @@
     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>

+ 16 - 1
src/views/system-config/scene-manage/actionColomns.vue

@@ -1,6 +1,13 @@
 <template>
   <div style="display: flex">
     <div style="display: flex; margin-right: 7px">
+      <div
+        v-if="userStore?.info?.tenantCode === 'gov'"
+        @click="changeRelate"
+        class="wordStyle"
+        style="margin-right: 10px"
+        >绑定企业</div
+      >
       <div
         v-if="(props.subItem as ComAddDatas).parentId !== undefined"
         @click="changeConig"
@@ -8,7 +15,7 @@
         style="margin-right: 10px"
         >页面设置</div
       >
-      <div v-else style="margin-right: 10px; width: 56px"></div>
+      <div v-else style="margin-right: 10px; width: 122px"></div>
       <div v-if="!isWorkshop" @click="changeAdd" class="wordStyle">添加下一级</div>
       <div v-else style="margin-right: 10px; width: 67px"></div
     ></div>
@@ -35,12 +42,16 @@
   import { ComAddDatas, WorkshopAddDatas, WorkspaceAddDatas } from '@/api/scene/sceneOperate.ts';
   import useScene from './use-scene';
   import { storeToRefs } from 'pinia';
+  import { useUserStore } from '@/store/modules/user';
 
+  // '
+ const userStore = useUserStore();
   const useSceneList = useScene();
   const { tableData } = storeToRefs(useSceneList);
 
   const props = defineProps<{
     subItem: ComAddDatas | WorkshopAddDatas | WorkspaceAddDatas;
+    handleRelate: (row) => unknown;
     handleConig: (row) => unknown;
     handleAdd: (row) => unknown;
     handleEdit: (row) => unknown;
@@ -67,6 +78,10 @@
     }
   });
 
+  const changeRelate = () => {
+    props.handleRelate(props.subItem);
+  };
+
   const changeConig = () => {
     props.handleConig(props.subItem);
   };

+ 15 - 0
src/views/system-config/scene-manage/use-method.tsx

@@ -60,6 +60,21 @@ export const dataSourceWithParent = (d: DataSourceUser[], parent: DataSourceUser
   return d;
 };
 
+export const options = [
+  {
+    value: 'industry',
+    label: '工业企业',
+  },
+  {
+    value: 'gas',
+    label: '燃气企业',
+  },
+  {
+    value: 'other',
+    label: '其他企业',
+  },
+];
+
 export function removeParent(data) {
   return data.map((item) => {
     // 删除 tag 属性