gemercheung 1 год назад
Родитель
Сommit
9d59def7bf

+ 1 - 1
package.json

@@ -38,7 +38,7 @@
     "@vueuse/core": "^7.4.1",
     "@vueuse/shared": "^7.4.1",
     "@zxcvbn-ts/core": "^1.2.0",
-    "ant-design-vue": "3.0.0-beta.7",
+    "ant-design-vue": "3.2.20",
     "axios": "^0.24.0",
     "codemirror": "^5.65.0",
     "cropperjs": "^1.5.12",

+ 18 - 8
pnpm-lock.yaml

@@ -41,8 +41,8 @@ dependencies:
     specifier: ^1.2.0
     version: 1.2.0
   ant-design-vue:
-    specifier: 3.0.0-beta.7
-    version: 3.0.0-beta.7(@vue/compiler-sfc@3.2.26)(vue@3.2.26)
+    specifier: 3.2.20
+    version: 3.2.20(vue@3.2.26)
   axios:
     specifier: ^0.24.0
     version: 0.24.0
@@ -382,6 +382,16 @@ packages:
       vue: 3.2.26
     dev: false
 
+  /@ant-design/icons-vue@6.1.0(vue@3.2.26):
+    resolution: {integrity: sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==}
+    peerDependencies:
+      vue: '>=3.0.3'
+    dependencies:
+      '@ant-design/colors': 6.0.0
+      '@ant-design/icons-svg': 4.2.1
+      vue: 3.2.26
+    dev: false
+
   /@antfu/utils@0.4.0:
     resolution: {integrity: sha512-gqkpvjkgFUu+s3kP+Ly33OKpo5zvVY3FDFhv5BIb98SncS3KD6DNxPfNDjwHIoyXbz1leWo1j8DtRLZ1D2Jv+Q==}
     dependencies:
@@ -3133,17 +3143,17 @@ packages:
     engines: {node: '>=12'}
     dev: true
 
-  /ant-design-vue@3.0.0-beta.7(@vue/compiler-sfc@3.2.26)(vue@3.2.26):
-    resolution: {integrity: sha512-8ay9+AnleifI/Ji6DnbrBku1kwo3fPjNrxyqsBAfe573T4gML9AVpX2/CaJgc41ID9liJdNV8fChgVEckeVb1A==}
+  /ant-design-vue@3.2.20(vue@3.2.26):
+    resolution: {integrity: sha512-YWpMfGaGoRastIXEYfCoJiaRiDHk4chqtYhlKQM5GqPt6NfvrM1Vg2e60yHtjxlZjed91wCMm0rAmyUr7Hwzdg==}
+    engines: {node: '>=12.22.0'}
     peerDependencies:
-      '@vue/compiler-sfc': '>=3.1.0'
-      vue: '>=3.1.0'
+      vue: '>=3.2.0'
     dependencies:
       '@ant-design/colors': 6.0.0
-      '@ant-design/icons-vue': 6.0.1(vue@3.2.26)
+      '@ant-design/icons-vue': 6.1.0(vue@3.2.26)
       '@babel/runtime': 7.16.7
+      '@ctrl/tinycolor': 3.4.0
       '@simonwep/pickr': 1.8.2
-      '@vue/compiler-sfc': 3.2.26
       array-tree-filter: 2.1.0
       async-validator: 4.0.7
       dayjs: 1.10.7

+ 108 - 0
src/api/archive/list.ts

@@ -0,0 +1,108 @@
+import { defHttp } from '/@/utils/http/axios';
+import {
+  PageParams,
+  RentListGetResultModel,
+  SceneEditParam,
+  SceneDownloadParam,
+  GetDownloadProcessModel,
+  SceneDownloadModel,
+} from './model';
+import { Result } from '/#/axios';
+
+enum Api {
+  pageList = '/service/manage_jp/storage/list',
+}
+
+/**
+ * @description: Get sample list value
+ */
+
+export const ListApi = (params: PageParams) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.pageList,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const DeleteApi = (params: string) =>
+  defHttp.post<Result>({
+    url: Api.detele,
+    params: {
+      sceneNum: params,
+    },
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const sceneCopy = (params: string) =>
+  defHttp.post<Result>({
+    url: Api.sceneCopy,
+    params: {
+      num: params,
+    },
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const UpgradeToV4 = (params: string) =>
+  defHttp.get<Result>({
+    url: Api.upgradeToV4,
+    params: {
+      num: params,
+    },
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const downloadSceneDataAPi = (params: SceneDownloadParam) =>
+  defHttp.get<SceneDownloadModel>({
+    url: Api.downloadSceneData,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const getDownloadProcessApi = (params: SceneDownloadParam) =>
+  defHttp.get<GetDownloadProcessModel>({
+    url: Api.getDownloadProcess,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
+export const generateSceneEditTokenApi = (params: SceneEditParam) =>
+  defHttp.post<Result>({
+    url: Api.generateSceneEditToken,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
+export const addDownloadNumApi = (params: SceneDownloadParam) =>
+  defHttp.get<Result>({
+    url: Api.addDownloadNum,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const checkDownloadApi = (params: SceneDownloadParam) =>
+  defHttp.get<SceneDownloadModel>({
+    url: Api.checkDownload,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });

+ 99 - 0
src/api/archive/live.ts

@@ -0,0 +1,99 @@
+import { defHttp } from '/@/utils/http/axios';
+import {
+  PageParams,
+  RentListGetResultModel,
+  SceneLiveItem,
+  bindAnchorListParam,
+  GetAllSceneModel,
+} from './model';
+import { Result, UploadFileParams } from '/#/axios';
+enum Api {
+  pageList = '/basic-api/brand/brandBindList',
+  bindAnchorList = '/zfb-api/zfb/shop/sys/user/bindList',
+  olderBindAnchorList = '/basic-api/sys/user/bindList',
+  // brandTypeList = '/zfb-api/zfb/shop/brand/brandTypeList',
+  brandTypeList = '/basic-api/brand/brandTypeList',
+  // bindUser = '/zfb-api/zfb/shop/sys/brand/bindUser',
+  bindUser = '/basic-api/brand/bindUser',
+  brandUpdate = '/basic-api/brand/update',
+  upload = '/basic-api/sys/oss/upload',
+  getAllScene = '/zfb-api/zfb/scene/list',
+}
+export type SceneLiveItemResult = SceneLiveItem;
+/**
+ * @description: Get sample list value
+ */
+
+export const ListApi = (params: PageParams) =>
+  defHttp.get<RentListGetResultModel>({
+    url: Api.pageList,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const bindOldAnchorListApi = (params: bindAnchorListParam) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.olderBindAnchorList,
+    params: params,
+    data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const bindAnchorListApi = (params: bindAnchorListParam) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.bindAnchorList,
+    params: params,
+    data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const bindUserApi = (params: bindAnchorListParam[]) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.bindUser,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const brandTypeListApi = (params: PageParams) =>
+  defHttp.get<RentListGetResultModel>({
+    url: Api.brandTypeList,
+
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
+export function uploadLiveApi(
+  params: UploadFileParams,
+  onUploadProgress: (progressEvent: ProgressEvent) => void,
+) {
+  return defHttp.uploadFile<Result>(
+    {
+      url: Api.upload,
+      onUploadProgress,
+    },
+    params,
+  );
+}
+
+export const getAllSceneApi = (params: PageParams) => {
+  defHttp.post<GetAllSceneModel>({
+    url: Api.getAllScene,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+};

+ 92 - 0
src/api/archive/model.ts

@@ -0,0 +1,92 @@
+import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel';
+/**
+ * @description: Request list interface parameters
+ */
+export type PageParams = BasicPageParams;
+export interface bindAnchorListParam {
+  brandId?: number | string;
+  canShow?: number;
+  type?: number;
+  userId?: number | string;
+}
+export interface SceneDownloadParam {
+  sceneNum?: string;
+  num?: string;
+  isObj?: number | null;
+}
+
+export interface SceneEditParam {
+  sceneNum: string;
+  userName: string;
+}
+
+export interface SceneLiveItem {
+  address: string;
+  adminId: number;
+  appListPicUrl: string;
+  bindShowerId: number;
+  bindShowerName: string;
+  bindShowerNameList: string;
+  city: string;
+  contractPhone: string;
+  createTime: number;
+  createUserDeptId: number;
+  createUserId: number;
+  deleted: number;
+  id: number;
+  introduceVideo: string;
+  introduceVideoCover: string;
+  latitude: number;
+  liveRoomUrl: string;
+  livestreamStatus: number;
+  longitude: number;
+  name: string;
+  picList: string;
+  sceneName: string;
+  sceneNum: string;
+  sceneUrl: string;
+  shareWxQrCode: string;
+  simpleDesc: string;
+  sortOrder: number;
+  token: string;
+  type: number;
+  updateTime: number;
+  updateUserId: number;
+}
+
+export interface SceneProccessItem {
+  precent?: number;
+  status?: number;
+  url?: string;
+}
+
+export interface sceneItem {
+  appListPicUrl: string;
+  createTime: number;
+  createUserId: number;
+  deleted: number;
+  id: number;
+  isShow: number;
+  name: string;
+  sceneNum: string;
+  sceneUrl: string;
+  token: string;
+  updateTime: number;
+  updateUserId: number;
+}
+export interface SceneDownloadModel {
+  downloadStatus: number;
+  downloadUrl: string;
+}
+export interface GetDownloadProcessModel {
+  percent: number;
+  status: number;
+  url: string;
+}
+/**
+ * @description: Request list return value
+ */
+export type RentListGetResultModel = BasicFetchResult<SceneLiveItem>;
+export type LiveListGetResultModel = BasicFetchResult<SceneLiveItem>;
+// export type GetDownloadProcessModel = BasicFetchResult<SceneProccessItem>;
+export type GetAllSceneModel = BasicFetchResult<sceneItem>;

+ 14 - 8
src/api/corporation/list.ts

@@ -5,19 +5,12 @@ import {
   UpdateCompanyParam,
   DeviceListItem,
   DeviceGetResultModel,
+  ContractorModel,
 } from './model';
 
 import { Result, UploadFileParams } from '/#/axios';
 
 enum Api {
-  // selectCompanyNum = '/zfb-api/zfb/company/selectCompanyNum',
-  // listAllCompany = '/zfb-api/zfb/company/getListAll',
-  // selectCompanyByType = '/zfb-api/zfb/company/selectCompanyByType',
-  // uploadLogo = '/zfb-api/zfb/company/uploadLogo',
-  // updateCompany = '/zfb-api/zfb/company/updateCompany',
-  // selectCompanyDevice = '/zfb-api/zfb/company/selectCompanyDevice',
-  // unbindDevice = '/zfb-api/zfb/company/unbindDevice',
-
   selectCompanyNum = '/service/manage_jp/company/list',
   listAllCompany = '/service/manage_jp/company/getListAll',
   selectCompanyByType = '/service/manage_jp/company/selectCompanyByType',
@@ -27,6 +20,7 @@ enum Api {
   selectCompanyDevice = '/service/manage_jp/company/selectCompanyDevice',
   // unbindDevice = '/service/manage_jp/company/unbindDevice',
   unbindDevice = '/service/manage_jp/camera/unbind',
+  contractorList = '/service/manage_jp/contractor/list',
 }
 
 /**
@@ -122,6 +116,7 @@ export function uploadLogoApi(
     params,
   );
 }
+
 export function uploadMusicApi(
   params: UploadFileParams,
   // onUploadProgress: (progressEvent: ProgressEvent) => void,
@@ -134,3 +129,14 @@ export function uploadMusicApi(
     params,
   );
 }
+//2.2.0 http://120.25.146.52:3090/project/325/interface/api/10100 承包商列表
+
+export const contractorListApi = (params: PageParams) =>
+  defHttp.post<ContractorModel>({
+    url: Api.contractorList,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });

+ 15 - 0
src/api/corporation/model.ts

@@ -108,8 +108,23 @@ export interface DeviceListItem {
   id?: number;
 }
 
+export interface contractorItem {
+  contractorAccount: string;
+  contractorName: string;
+  contractorUserId: number;
+  createTime: string;
+  id: number;
+  mainContractorAccount: string;
+  mainContractorName: string;
+  mainContractorUserId: number;
+  recStatus: string;
+  sceneCount: number;
+  updateTime: string;
+}
 /**
  * @description: Request list return value
  */
 export type CorporationListGetResultModel = BasicFetchResult<ListItem>;
 export type DeviceGetResultModel = BasicFetchResult<DeviceListItem>;
+//2.2.0
+export type ContractorModel = BasicFetchResult<contractorItem>;

+ 13 - 7
src/api/scene/list.ts

@@ -6,24 +6,21 @@ import {
   SceneDownloadParam,
   GetDownloadProcessModel,
   SceneDownloadModel,
+  patchcoldStoragedParam,
 } from './model';
 import { Result } from '/#/axios';
 
 enum Api {
-  // pageList = '/zfb-api/zfb/scene/pageList',
-  // generateSceneEditToken = '/zfb-api/zfb/api/platform/generateSceneEditToken',
-  // downloadSceneData = '/zfb-api/zfb/scene/downloadSceneData',
-  // getDownloadProcess = '/zfb-api/zfb/scene/getDownloadProcess',
-
   pageList = '/service/manage_jp/scene/list',
   generateSceneEditToken = '/service/manage_jp/platform/generateSceneEditToken',
   downloadSceneData = '/service/manage_jp/user/scene/downloadScene',
   getDownloadProcess = '/service/manage_jp/user/scene/downloadProcess',
   addDownloadNum = '/service/manage_jp/scene/addDownloadNum',
   checkDownload = '/service/manage_jp/user/scene/checkDownload',
-  detele = '/service/manage_jp/user/scene/delete',
+  delete = '/service/manage_jp/user/scene/delete',
   upgradeToV4 = '/service/manage_jp/scene/upgradeToV4',
   sceneCopy = 'service/manage_jp/scene/copyScene',
+  coldStorage = 'service//manage_jp/storage/coldStorage',
 }
 
 /**
@@ -41,7 +38,7 @@ export const ListApi = (params: PageParams) =>
   });
 export const DeleteApi = (params: string) =>
   defHttp.post<Result>({
-    url: Api.detele,
+    url: Api.delete,
     params: {
       sceneNum: params,
     },
@@ -119,3 +116,12 @@ export const checkDownloadApi = (params: SceneDownloadParam) =>
       ignoreCancelToken: true,
     },
   });
+export const patchcoldStorageApi = (params: patchcoldStoragedParam) =>
+  defHttp.post<Result>({
+    url: Api.coldStorage,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });

+ 3 - 0
src/api/scene/model.ts

@@ -83,6 +83,9 @@ export interface GetDownloadProcessModel {
   status: number;
   url: string;
 }
+export interface patchcoldStoragedParam {
+  numList: string[];
+}
 /**
  * @description: Request list return value
  */

+ 1 - 1
src/utils/http/axios/Axios.ts

@@ -196,7 +196,7 @@ export class VAxios {
     // if (conf.headers.fdToken) {
     //   this.setHeader(conf.headers);
     // }
-    console.log('options', this.options, conf);
+    // console.log('options', this.options, conf);
     const opt: RequestOptions = Object.assign({}, requestOptions, options);
 
     const { beforeRequestHook, requestCatchHook, transformRequestHook } = transform || {};

+ 0 - 100
src/views/archive/addLiveModal.vue

@@ -1,100 +0,0 @@
-<template>
-  <BasicModal
-    v-bind="$attrs"
-    @register="register"
-    :title="t('routes.scenes.addLive')"
-    @ok="handleSubmit"
-  >
-    <div class="pt-20px">
-      <BasicForm @register="registerForm">
-        <!-- <template #label="{ model, field }">
-          {{ model[field] }}
-        </template>
-        <template #process> {{ downloadInfo.process }} % </template>
-        <template #status> {{ downloadInfo.status }} </template> -->
-      </BasicForm>
-    </div>
-    <template #centerFooter> </template>
-  </BasicModal>
-</template>
-<script lang="ts">
-  import { defineComponent, ref } from 'vue';
-  import { BasicModal, useModalInner } from '/@/components/Modal';
-  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-  // import { BasicTable, useTable, BasicColumn, FormSchema } from '/@/components/Table';
-  // import { useMessage } from '/@/hooks/web/useMessage';
-  // import { checkUserAddAble } from '/@/api/corporation/modal';
-  import { useI18n } from '/@/hooks/web/useI18n';
-  import { brandTypeListApi } from '/@/api/scene/live';
-  // import { bindAnchorListParam } from '/@/api/scene/model';
-  // import { Time } from '/@/components/Time';
-  // import { useUserStore } from '/@/store/modules/user';
-  const { t } = useI18n();
-  const schemas: FormSchema[] = [
-    {
-      field: 'type',
-      label: t('common.type'),
-      component: 'ApiSelect',
-      colProps: {
-        xl: 5,
-        xxl: 5,
-      },
-      componentProps: {
-        api: brandTypeListApi,
-        resultField: 'list',
-        labelField: 'name',
-        valueField: 'id',
-        params: {
-          page: 1,
-          limit: 1000,
-        },
-      },
-    },
-  ];
-
-  export default defineComponent({
-    components: { BasicModal, BasicForm },
-    props: {
-      userData: { type: Object },
-    },
-    emits: ['register', 'success'],
-    setup() {
-      // const { createMessage } = useMessage();
-      const sceneNum = ref('');
-
-      const [registerForm, { setFieldsValue }] = useForm({
-        schemas: schemas,
-        labelWidth: 100,
-        showActionButtonGroup: false,
-
-        actionColOptions: {
-          span: 24,
-        },
-        // submitFunc: handleSubmit,
-      });
-      const [register, { closeModal }] = useModalInner((data) => {
-        data && onDataReceive(data);
-      });
-
-      function onDataReceive(data) {
-        console.log('Data Received', data, data.num);
-
-        setFieldsValue({
-          ...data,
-        });
-
-        sceneNum.value = data.num;
-      }
-      const handleSubmit = async () => {};
-
-      return {
-        t,
-        register,
-        schemas,
-        handleSubmit,
-        closeModal,
-        registerForm,
-      };
-    },
-  });
-</script>

+ 0 - 5
src/views/archive/download.vue

@@ -1,5 +0,0 @@
-<template>
-  <div> 场景下载 </div>
-</template>
-
-<script lang="ts" setup></script>

+ 0 - 170
src/views/archive/downloadModal.vue

@@ -1,170 +0,0 @@
-<template>
-  <BasicModal
-    v-bind="$attrs"
-    @register="register"
-    :title="t('routes.scenes.downloadScene')"
-    :showCancelBtn="false"
-    :okText="downloadInfo.isDownloaded ? t('common.okText') : t('routes.scenes.cancelDownload')"
-    @ok="handleSubmit"
-    @cancel="cancelDownload"
-  >
-    <div class="pt-20px">
-      <BasicForm @register="registerForm">
-        <template #label="{ model, field }">
-          {{ model[field] }}
-        </template>
-        <template #process> {{ downloadInfo.process }} % </template>
-        <template #status> {{ downloadInfo.status }} </template>
-      </BasicForm>
-    </div>
-    <template #centerFooter>
-      <!-- <a-button>xxxx</a-button> -->
-    </template>
-  </BasicModal>
-</template>
-<script lang="ts">
-  import { defineComponent, reactive, ref, watch } from 'vue';
-  import { BasicModal, useModalInner } from '/@/components/Modal';
-  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-  import { useI18n } from '/@/hooks/web/useI18n';
-  // import { BasicTable, useTable, BasicColumn, FormSchema } from '/@/components/Table';
-  // import { useMessage } from '/@/hooks/web/useMessage';
-  // import { checkUserAddAble } from '/@/api/corporation/modal';
-  import { useI18n } from '/@/hooks/web/useI18n';
-  import { getDownloadProcessApi } from '/@/api/scene/list';
-  // import { bindAnchorListParam } from '/@/api/scene/model';
-  // import { Time } from '/@/components/Time';
-  // import { useUserStore } from '/@/store/modules/user';
-  import {
-    downloadByUrl,
-    // downloadByData,
-    // downloadByBase64,
-    // downloadByOnlineUrl,
-  } from '/@/utils/file/download';
-  const { t } = useI18n();
-  const schemas: FormSchema[] = [
-    {
-      field: 'sceneName',
-      label: t('routes.scenes.sceneName') + ':',
-      component: 'Input',
-      slot: 'label',
-    },
-    {
-      field: 'process',
-      label: t('routes.scenes.process') + ':',
-      component: 'Input',
-      slot: 'process',
-    },
-    {
-      field: 'status',
-      label: t('component.upload.fileStatue') + ':',
-      component: 'Input',
-      slot: 'status',
-    },
-  ];
-
-  export default defineComponent({
-    components: { BasicModal, BasicForm },
-    props: {
-      userData: { type: Object },
-    },
-    emits: ['register', 'success'],
-    setup() {
-      const { t } = useI18n();
-      // const { createMessage } = useMessage();
-      const sceneNum = ref('');
-      const isObj = ref<Number>(0);
-      const finishDowloadUrl = ref('');
-      const downloadInfo = reactive<Recordable>({});
-      downloadInfo.timer = null;
-      downloadInfo.process = 0;
-      downloadInfo.status = t('component.upload.downloadState');
-      downloadInfo.isDownloaded = false;
-
-      const [registerForm, { setFieldsValue }] = useForm({
-        schemas: schemas,
-        labelWidth: 120,
-        showActionButtonGroup: false,
-
-        actionColOptions: {
-          span: 24,
-        },
-        // submitFunc: handleSubmit,
-      });
-      const [register, { closeModal }] = useModalInner((data) => {
-        data && onDataReceive(data);
-      });
-
-      function onDataReceive(data) {
-        console.log('Data Received', data, data.num);
-        downloadInfo.timer = null;
-        downloadInfo.process = 0;
-        downloadInfo.status = t('component.upload.downloadState');
-        downloadInfo.isDownloaded = false;
-        setFieldsValue({
-          ...data,
-        });
-        isObj.value = data.isObj;
-        sceneNum.value = data.num;
-      }
-      const handleSubmit = async () => {
-        try {
-          cancelDownload();
-          closeModal();
-          if (downloadInfo.isDownloaded) {
-            downloadByUrl({
-              url: finishDowloadUrl.value as any as string,
-              target: '_self',
-            });
-          }
-        } catch (error) {}
-      };
-      async function getDownloadInfo(sceneNum: string) {
-        let param = {
-          num: sceneNum,
-          isObj: isObj.value,
-        };
-        downloadInfo.timer = setInterval(async () => {
-          const res = await getDownloadProcessApi(param);
-          console.log('res', res);
-          const percent = res.percent && Math.round(res.percent);
-          downloadInfo.process = percent;
-          if (res.status === 1000) {
-            downloadInfo.status = t('component.upload.getting');
-          }
-          if (res.status === 1002 && res.url?.length > 0) {
-            cancelDownload();
-            finishDowloadUrl.value = res.url;
-            downloadInfo.isDownloaded = true;
-            downloadInfo.status = t('component.upload.gettingSuccess');
-            handleSubmit();
-          }
-        }, 2000);
-      }
-      function cancelDownload() {
-        clearInterval(downloadInfo.timer);
-        sceneNum.value = '';
-      }
-      watch(
-        () => sceneNum.value,
-        () => {
-          console.log('sceneNum', sceneNum.value);
-          if (sceneNum.value) {
-            getDownloadInfo(sceneNum.value);
-          }
-        },
-      );
-
-      return {
-        t,
-        register,
-        schemas,
-        handleSubmit,
-        closeModal,
-        registerForm,
-        downloadInfo,
-        cancelDownload,
-      };
-    },
-  });
-</script>

+ 14 - 36
src/views/archive/list.vue

@@ -6,7 +6,6 @@
         <a-tab-pane :key="1" :tab="t('routes.scenes.4dkj')" :disabled="loading" />
         <a-tab-pane :key="2" :tab="t('routes.scenes.4dssdy')" :disabled="loading" />
         <a-tab-pane :key="4" :tab="t('routes.scenes.obj')" :disabled="loading" />
-        <!-- <a-tab-pane :key="3" tab="四维双目Lite" :disabled="loading"/>  -->
       </a-tabs>
     </template>
     <div class="desc-wrap-BasicTable">
@@ -24,7 +23,7 @@
           <TableImg
             :size="120"
             :simpleShow="true"
-            :imgList="[record.thumb || '/resource/img/header.jpg']"
+            :imgList="[record.sceneThumb || '/resource/img/header.jpg']"
           />
         </template>
         <template #link="{ record }">
@@ -35,7 +34,7 @@
           >
             {{ record.webSite }}
           </a> -->
-          <span>{{ record.webSite }}</span>
+          <span>{{ record.sceneWebsite }}</span>
         </template>
         <template #action="{ record }">
           <TableAction
@@ -50,13 +49,11 @@
           />
         </template>
       </BasicTable>
-      <DownloadModal @register="registerDownloadModal" />
     </div>
   </PageWrapper>
 </template>
 <script lang="ts">
   import { defineComponent, computed, h, ref } from 'vue';
-  // import { openUrl } from '/@/utils/auth';
   import { PageWrapper } from '/@/components/Page';
   import {
     BasicTable,
@@ -70,11 +67,7 @@
   import { useModal } from '/@/components/Modal';
   import { Tabs } from 'ant-design-vue';
   import { sceneDetail, buildSceneObj } from '/@/api/lastApi/index';
-  // import { Progress } from 'ant-design-vue';
-  // import { h } from 'vue';
-  // addDownloadNumApi,
-  // checkDownloadApi,
-  // generateSceneEditTokenApi,
+
   import {
     ListApi,
     downloadSceneDataAPi,
@@ -83,7 +76,7 @@
     DeleteApi,
     UpgradeToV4,
     sceneCopy,
-  } from '/@/api/scene/list';
+  } from '/@/api/archive/list';
   import { useI18n } from '/@/hooks/web/useI18n';
   import {
     downloadByUrl,
@@ -93,7 +86,7 @@
   } from '/@/utils/file/download';
 
   // import { useUserStore } from '/@/store/modules/user';
-  import DownloadModal from './downloadModal.vue';
+
   import { useLocaleStore } from '/@/store/modules/locale';
   import { SceneDownloadParam } from '/@/api/scene/model';
   const localeStore = useLocaleStore();
@@ -106,7 +99,6 @@
       BasicTable,
       TableAction,
       TableImg,
-      DownloadModal,
       PageWrapper,
       [Tabs.name]: Tabs,
       [Tabs.TabPane.name]: Tabs.TabPane,
@@ -132,56 +124,42 @@
           width: 120,
         },
         {
-          title: t('routes.corporation.enterpriseName'),
-          dataIndex: 'companyName',
+          title: '场景名称',
+          dataIndex: 'userName',
           ellipsis: false,
           width: 120,
         },
         {
           title: t('routes.scenes.webSite'),
-          dataIndex: 'webSite',
+          dataIndex: 'sceneWebsite',
           ellipsis: false,
           slots: { customRender: 'link' },
           width: 180,
         },
         {
           title: t('routes.scenes.appListPicUrl'),
-          dataIndex: 'thumb',
+          dataIndex: 'sceneThumb',
           ellipsis: true,
           slots: { customRender: 'cover' },
           width: 150,
         },
         {
           title: t('routes.scenes.childName'),
-          dataIndex: 'childName',
+          dataIndex: 'snCode',
           width: 120,
         },
         {
-          title: t('routes.scenes.viewCount'),
-          dataIndex: 'viewCount',
-          width: 100,
+          title: t('routes.scenes.num'),
+          dataIndex: 'sceneNum',
+          width: 180,
         },
         {
           title: t('routes.scenes.createTime'),
-          dataIndex: 'createTime',
+          dataIndex: 'shootingTime',
           width: 140,
         },
 
         {
-          title: t('routes.scenes.num'),
-          dataIndex: 'num',
-          width: 180,
-        },
-
-        // {
-        //   title: t('routes.scenes.process'),
-        //   dataIndex: '',
-        //   width: 180,
-        //   slots: { customRender: 'process' },
-        //   ifShow: false,
-        // },
-
-        {
           title: t('common.operation'),
           dataIndex: '',
           slots: { customRender: 'action' },

+ 0 - 268
src/views/archive/live.vue

@@ -1,268 +0,0 @@
-<template>
-  <div class="p-4">
-    <BasicTable @register="registerTable" :rowSelection="{ type: 'checkbox' }">
-      <template #toolbar>
-        <a-button type="primary" @click="handleLiveOpen"> 新增</a-button>
-        <!-- <a-button type="primary" color="warning" @click="() => {}"> 编辑</a-button>
-        <a-button type="primary" color="error" @click="() => {}"> 删除</a-button> -->
-      </template>
-      <template #cover="{ record }">
-        <TableImg
-          v-if="record.appListPicUrl"
-          :size="150"
-          :simpleShow="true"
-          :imgList="[record.appListPicUrl]"
-        />
-      </template>
-      <template #houseType="{ record }">
-        {{ renderHouseType(record.houseType) }}
-      </template>
-      <template #action="{ record }">
-        <TableAction
-          :actions="[
-            {
-              icon: 'eos-icons:role-binding',
-              label: t('routes.scenes.bindAnchor'),
-              color: 'success',
-              onClick: handleBindAnchor.bind(null, record),
-            },
-            {
-              icon: 'ant-design:delete-outlined',
-              color: 'warning',
-              label: '编辑',
-              onClick: () => {},
-            },
-            {
-              icon: 'ant-design:delete-outlined',
-              color: 'error',
-              label: '删除',
-              popConfirm: {
-                title: '是否确认删除',
-                confirm: () => {
-                  createMessage.info(`暂未接入`);
-                },
-              },
-            },
-          ]"
-        />
-      </template>
-    </BasicTable>
-    <bindModal @register="registerBindModal" @success="reload" />
-    <!-- <addLiveModal @register="registeraddLiveModal" /> -->
-    <LiveDrawer @register="registerLiveDrawer" />
-  </div>
-</template>
-<script lang="ts">
-  import { defineComponent } from 'vue';
-  import {
-    BasicTable,
-    useTable,
-    BasicColumn,
-    // FormSchema,
-    FormProps,
-    TableAction,
-    TableImg,
-  } from '/@/components/Table';
-  import { useMessage } from '/@/hooks/web/useMessage';
-  // import { uploadApi } from '/@/api/sys/upload';
-  import { Tag } from 'ant-design-vue';
-  import { h } from 'vue';
-  import { ListApi, brandTypeListApi } from '/@/api/scene/live';
-  import { useI18n } from '/@/hooks/web/useI18n';
-  import { useModal } from '/@/components/Modal';
-  import { useDrawer } from '/@/components/Drawer';
-  import bindModal from './bindModal.vue';
-
-  import LiveDrawer from './liveDrawer.vue';
-  export default defineComponent({
-    components: { BasicTable, TableAction, TableImg, bindModal, LiveDrawer },
-    setup() {
-      const { createMessage } = useMessage();
-      const { t } = useI18n();
-      const [registerBindModal, { openModal: openBindModal }] = useModal();
-
-      const [registerLiveDrawer, { openDrawer: openLiveDrawer }] = useDrawer();
-
-      const columns: BasicColumn[] = [
-        {
-          title: 'ID',
-          dataIndex: 'id',
-          fixed: 'left',
-          width: 100,
-        },
-        {
-          title: t('routes.scenes.anchorRoom'),
-          dataIndex: 'name',
-          ellipsis: false,
-          width: 130,
-        },
-        {
-          title: t('common.type'),
-          dataIndex: 'houseType',
-          slots: { customRender: 'houseType' },
-          width: 100,
-        },
-        {
-          title: t('routes.scenes.appListPicUrl'),
-          dataIndex: 'appListPicUrl',
-          slots: { customRender: 'cover' },
-          width: 150,
-        },
-        {
-          title: t('routes.scenes.sortOrder'),
-          dataIndex: 'sortOrder',
-          width: 150,
-          sorter: true,
-        },
-        {
-          title: t('routes.scenes.webSite'),
-          dataIndex: 'liveRoomUrl',
-          slots: { customRender: 'link' },
-          width: 180,
-        },
-        {
-          title: t('routes.scenes.bindShowerNameList'),
-          dataIndex: 'bindShowerNameList',
-          ellipsis: false,
-          width: 180,
-        },
-
-        {
-          title: t('routes.scenes.livestreamStatus'),
-          dataIndex: 'livestreamStatus',
-          width: 180,
-          customRender: ({ record }) => {
-            const enable = record.livestreamStatus === 1;
-            const color = enable ? 'green' : 'red';
-            const text = enable ? t('common.yes') : t('common.no');
-            return h(Tag, { color: color }, () => text);
-          },
-        },
-
-        {
-          title: t('common.operation'),
-          dataIndex: '',
-          slots: { customRender: 'action' },
-          width: 250,
-          fixed: 'right',
-        },
-      ];
-
-      const searchForm: Partial<FormProps> = {
-        labelWidth: 100,
-        schemas: [
-          {
-            field: 'sceneName',
-            label: t('routes.scenes.anchorRoom'),
-            component: 'Input',
-
-            colProps: {
-              xl: 5,
-              xxl: 5,
-            },
-          },
-          {
-            field: 'type',
-            label: t('common.type'),
-            component: 'ApiSelect',
-            colProps: {
-              xl: 5,
-              xxl: 5,
-            },
-            componentProps: {
-              api: brandTypeListApi,
-              resultField: 'list',
-              labelField: 'name',
-              valueField: 'id',
-              params: {
-                page: 1,
-                limit: 1000,
-              },
-            },
-          },
-          {
-            field: 'livestreamStatus',
-            label: t('routes.scenes.livestreamStatus'),
-            component: 'Select',
-            colProps: {
-              xl: 5,
-              xxl: 5,
-            },
-            componentProps: {
-              options: [
-                {
-                  label: t('common.all'),
-                  value: '',
-                  key: '0',
-                },
-                {
-                  label: t('common.yes'),
-                  value: 1,
-                  key: '1',
-                },
-                {
-                  label: t('common.no'),
-                  value: 0,
-                  key: '2',
-                },
-              ],
-            },
-          },
-        ],
-      };
-      function renderHouseType(type: number): string {
-        switch (type) {
-          case 0:
-            return t(`routes.scenes.houseType.0`);
-          case 1:
-            return t(`routes.scenes.houseType.1`);
-          case 2:
-            return t(`routes.scenes.houseType.2`);
-          case 3:
-            return t(`routes.scenes.houseType.3`);
-          default:
-            return t(`routes.scenes.houseType.9`);
-        }
-      }
-
-      const [registerTable, { reload }] = useTable({
-        title: t(`routes.scenes.liveBroadcast`),
-        api: ListApi,
-        columns: columns,
-        useSearchForm: true,
-        formConfig: searchForm,
-        showTableSetting: true,
-        tableSetting: { fullScreen: true },
-        showIndexColumn: false,
-        rowKey: 'id',
-        pagination: { pageSize: 20 },
-        clickToRowSelect: false,
-        defSort: {
-          field: 'order',
-          order: 'asc',
-        },
-      });
-
-      function handleBindAnchor(record: Recordable) {
-        console.log('record', record);
-        openBindModal(true, record);
-      }
-      function handleLiveOpen(record: Recordable) {
-        console.log('record', record);
-        openLiveDrawer(true, record);
-      }
-      return {
-        registerTable,
-        createMessage,
-        renderHouseType,
-        t,
-        registerBindModal,
-        handleBindAnchor,
-
-        reload,
-        registerLiveDrawer,
-        handleLiveOpen,
-      };
-    },
-  });
-</script>

+ 0 - 228
src/views/archive/liveDrawer.vue

@@ -1,228 +0,0 @@
-<template>
-  <BasicDrawer
-    v-bind="$attrs"
-    @register="registerDrawer"
-    showFooter
-    :title="getTitle"
-    width="60%"
-    @ok="handleSubmit"
-  >
-    <div class="entry-x">
-      <BasicForm @register="registerForm">
-        <template #map>
-          <!-- <Card style="width: 300px; height: 300px"> -->
-          <div ref="wrapRef" style="width: 100%; height: 400px"></div>
-          <!-- </Card> -->
-        </template>
-      </BasicForm>
-    </div>
-  </BasicDrawer>
-</template>
-<script lang="ts">
-  import { defineComponent, ref, computed, unref, nextTick, onMounted, reactive } from 'vue';
-  import { BasicForm, useForm, FormSchema } from '/@/components/Form/index';
-  // import { Card } from 'ant-design-vue';
-  import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
-
-  // import { useMessage } from '/@/hooks/web/useMessage';
-  import { useI18n } from '/@/hooks/web/useI18n';
-
-  import { brandTypeListApi, uploadLiveApi, getAllSceneApi } from '/@/api/scene/live';
-  import { data as CascaderData } from '/@/utils/cascaderData';
-
-  import { useScript } from '/@/hooks/web/useScript';
-  const A_MAP_URL = 'https://webapi.amap.com/maps?v=2.0&key=e661b00bdf2c44cccf71ef6070ef41b8';
-  // const A_MAP_URL = 'https://webapi.amap.com/maps?v=2.0&key=5a2d384532ae531bf99bd8487c4f03d2';
-  // const A_MAP_URL = 'https://webapi.amap.com/maps?v=1.4.10&key=e661b00bdf2c44cccf71ef6070ef41b8';
-
-  //webapi.amap.com/maps?v=1.4.10&key=e661b00bdf2c44cccf71ef6070ef41b8
-
-  // Card
-  export default defineComponent({
-    name: 'MenuDrawer',
-    components: { BasicDrawer, BasicForm },
-    emits: ['success', 'register'],
-    setup() {
-      const isUpdate = ref(true);
-      const wrapRef = ref<HTMLDivElement | null>(null);
-      const defaultAddress = reactive({
-        address: '山阴路688号恒隆广场B座1217',
-        longt: '山阴路688号恒隆广场B座1217',
-      });
-      console.log('defaultAddress', defaultAddress);
-      const { toPromise } = useScript({ src: A_MAP_URL });
-
-      const { t } = useI18n();
-      // const { createMessage } = useMessage();
-      const schemas: FormSchema[] = [
-        {
-          field: 'type',
-          label: t('routes.scenes.liveType'),
-          component: 'ApiSelect',
-          // colProps: {
-          //   xl: 5,
-          //   xxl: 5,
-          // },
-          componentProps: {
-            api: brandTypeListApi,
-            resultField: 'list',
-            labelField: 'name',
-            valueField: 'id',
-            params: {
-              page: 1,
-              limit: 1000,
-            },
-          },
-        },
-        {
-          field: 'name',
-          component: 'Input',
-          label: t('routes.scenes.liveName'),
-
-          required: true,
-        },
-        {
-          field: 'appListPicUrl',
-          label: t('routes.scenes.appListPicUrl'),
-          component: 'Upload',
-          helpMessage: '推荐大小:400 * 400 像素',
-          required: true,
-          colProps: {
-            span: 10,
-          },
-          componentProps: {
-            api: uploadLiveApi,
-            maxgoodsNumber: 1,
-            afterFetch: function (data) {
-              Reflect.set(data, 'url', data.message.url);
-              return data;
-            },
-            onChange: async () => {
-              await validateFields(['wapBannerUrl']);
-            },
-          },
-        },
-        {
-          field: 'sceneUrl',
-          label: t('routes.scenes.sceneUrl'),
-          component: 'ApiSelect',
-          required: true,
-          colProps: {
-            span: 10,
-          },
-          componentProps: {
-            api: getAllSceneApi,
-          },
-        },
-        // :fieldNames="{ label: 'name', value: 'code', children: 'children' }"
-        {
-          field: 'location',
-          label: '直播间位置',
-          component: 'ApiCascader',
-          labelWidth: 100,
-          componentProps: {
-            api: () => {
-              return CascaderData;
-            },
-            apiParamKey: 'provinceCode',
-            dataField: 'children',
-            labelField: 'name',
-            valueField: 'code',
-            isLeaf: (record) => {
-              return !(record.levelType < 3);
-            },
-          },
-          colProps: {
-            span: 20,
-          },
-        },
-        {
-          field: 'map',
-          label: '地图位置',
-          component: 'Input',
-          labelWidth: 100,
-          slot: 'map',
-          colProps: {
-            span: 20,
-          },
-        },
-      ];
-      // updateSchema, validate
-      const [registerForm, { resetFields, setFieldsValue, validateFields }] = useForm({
-        labelWidth: 120,
-        schemas: schemas,
-        showActionButtonGroup: false,
-        baseColProps: { lg: 24, md: 24 },
-      });
-      // closeDrawer;
-      const [registerDrawer, { setDrawerProps }] = useDrawerInner(async (data) => {
-        resetFields();
-        setDrawerProps({ confirmLoading: false });
-        isUpdate.value = !!data?.isUpdate;
-
-        if (unref(isUpdate)) {
-          console.log('data.record', data);
-
-          setFieldsValue({
-            ...data.record,
-          });
-        }
-        initMap();
-        // updateSchema({
-        //   field: 'parentId',
-        //   componentProps: {
-        //     treeData,
-        //   },
-        // });
-      });
-
-      async function initMap() {
-        await toPromise();
-        await nextTick();
-        const wrapEl = unref(wrapRef);
-        console.log('wrapEl', wrapEl);
-        if (!wrapEl) return;
-        const AMap = (window as any).AMap;
-        console.log('AMap', AMap);
-        // center: [this.longitude || 120.262337, this.latitude || 30.178285],
-        // const geocoder = new AMap.Geocoder({});
-        const map = new AMap.Map(wrapEl, {
-          zoom: 18,
-          center: [120.262337, 30.178285],
-          viewMode: '3D',
-          resizeEnable: true,
-          floorControl: true,
-          showIndoorMap: true,
-        });
-        AMap.plugin('AMap.Geocoder', function () {
-          var geocoder = new AMap.Geocoder({
-            // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
-            city: '010',
-          });
-
-          geocoder.getLocation('北京市海淀区苏州街', function (status, result) {
-            if (status === 'complete' && result.info === 'OK') {
-              // result中对应详细地理坐标信息
-              console.log('result', result);
-            }
-          });
-        });
-
-        const marker = new AMap.Marker({
-          position: new AMap.LngLat(120.262337, 30.178285),
-          title: 'lala',
-        });
-        map.add(marker);
-      }
-      onMounted(() => {
-        initMap();
-      });
-
-      const getTitle = computed(() => (!unref(isUpdate) ? '新增直播间' : '编辑直播间'));
-
-      async function handleSubmit() {}
-
-      return { registerDrawer, registerForm, getTitle, handleSubmit, wrapRef };
-    },
-  });
-</script>

+ 59 - 237
src/views/corporation/contractorList.vue

@@ -9,107 +9,65 @@
         <!-- <a-tab-pane :key="3" tab="四维双目Lite" :disabled="loading"/>  -->
       </a-tabs>
     </template>
-    <div class="desc-wrap-BasicTable">
-      <BasicTable
-        @register="registerTable"
-        :rowSelection="{ type: 'checkbox', onChange: handleSelect }"
-      >
-        <template #toolbar>
-          <!-- <a-button type="primary" @click="() => {}"> 新增</a-button> -->
-          <!-- <a-button type="primary" color="warning" @click="() => {}"> 编辑</a-button>
+    <!-- :rowSelection="{ type: 'checkbox', onChange: handleSelect }" -->
+    <BasicTable @register="registerTable">
+      <template #toolbar>
+        <!-- <a-button type="primary" @click="handleCreate"> 新增</a-button> -->
+        <!-- <a-button type="primary" color="warning" @click="() => {}"> 编辑</a-button>
         <a-button type="primary" color="error" @click="() => {}"> 删除</a-button> -->
-        </template>
+      </template>
 
-        <template #cover="{ record }">
-          <TableImg
-            :size="120"
-            :simpleShow="true"
-            :imgList="[record.thumb || '/resource/img/header.jpg']"
-          />
-        </template>
-        <template #link="{ record }">
-          <!-- <a
-            v-if="record.status != 0"
-            :href="record.webSite + `&lang=${isJA ? 'ja' : 'zh'}`"
-            target="_blank"
-          >
-            {{ record.webSite }}
-          </a> -->
-          <span>{{ record.webSite }}</span>
-        </template>
-        <template #action="{ record }">
-          <TableAction
-            :actions="[
-              {
-                color: 'success',
-                label: '复原',
-                // disabled: record.status != -2,
-                onClick: openSceneEditor.bind(null, record),
-              },
-            ]"
-          />
-        </template>
-      </BasicTable>
-    </div>
+      <template #cover="{ record }">
+        <TableImg
+          :size="120"
+          :simpleShow="true"
+          :imgList="[record.thumb || '/resource/img/header.jpg']"
+        />
+      </template>
+      <template #createTime="{ record }">
+        <Time v-if="record.createTime" :value="record.createTime" mode="datetime" />
+      </template>
+    </BasicTable>
   </PageWrapper>
 </template>
 <script lang="ts">
-  import { defineComponent, computed, h, ref } from 'vue';
-  import { openUrl } from '/@/utils/auth';
-  import { PageWrapper } from '/@/components/Page';
+  import { defineComponent, computed, ref } from 'vue';
   import {
     BasicTable,
     useTable,
     BasicColumn,
     FormProps,
-    TableAction,
+    // TableAction,
     TableImg,
   } from '/@/components/Table';
   import { useMessage } from '/@/hooks/web/useMessage';
-  // import { useModal } from '/@/components/Modal';
   import { Tabs } from 'ant-design-vue';
-  import { sceneDetail, buildSceneObj } from '/@/api/lastApi/index';
-  // import { Progress } from 'ant-design-vue';
-  // import { h } from 'vue';
-  // addDownloadNumApi,
-  // checkDownloadApi,
-  // generateSceneEditTokenApi,
-  import {
-    ListApi,
-    downloadSceneDataAPi,
-    addDownloadNumApi,
-    checkDownloadApi,
-    DeleteApi,
-    UpgradeToV4,
-    sceneCopy,
-  } from '/@/api/scene/list';
-  import { useI18n } from '/@/hooks/web/useI18n';
-  import {
-    downloadByUrl,
-    // downloadByData,
-    // downloadByBase64,
-    // downloadByOnlineUrl,
-  } from '/@/utils/file/download';
+  import { contractorListApi } from '/@/api/corporation/list';
 
-  import { useUserStore } from '/@/store/modules/user';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { Time } from '/@/components/Time';
+  // import { useUserStore } from '/@/store/modules/user';
 
   import { useLocaleStore } from '/@/store/modules/locale';
-  import { SceneDownloadParam } from '/@/api/scene/model';
+  import { PageWrapper } from '/@/components/Page';
+
   const localeStore = useLocaleStore();
   console.log('localeStore', localeStore);
-  const userStore = useUserStore();
+
+  // const userStore = useUserStore();
 
   export default defineComponent({
     components: {
       BasicTable,
-      TableAction,
+      // TableAction,
       TableImg,
       PageWrapper,
+      Time,
       [Tabs.name]: Tabs,
       [Tabs.TabPane.name]: Tabs.TabPane,
     },
     setup() {
-      const { createMessage, createConfirm } = useMessage();
+      const { createMessage } = useMessage();
       const { t } = useI18n();
       const loading = ref(false);
       const tableType = ref<Number>(0); //0看看 、1看见、2深时
@@ -122,88 +80,57 @@
           defaultHidden: true,
         },
         {
-          title: t('routes.scenes.sceneName'),
-          dataIndex: 'sceneName',
+          title: '总承包商名称',
+          dataIndex: 'mainContractorName',
           ellipsis: false,
           width: 120,
         },
         {
-          title: t('routes.corporation.enterpriseName'),
-          dataIndex: 'companyName',
+          title: '总承包商账号',
+          dataIndex: 'mainContractorAccount',
           ellipsis: false,
           width: 120,
         },
         {
-          title: t('routes.scenes.webSite'),
-          dataIndex: 'webSite',
+          title: '承包商昵称',
+          dataIndex: 'contractorName',
           ellipsis: false,
-          slots: { customRender: 'link' },
+          // slots: { customRender: 'link' },
           width: 180,
         },
         {
-          title: t('routes.scenes.appListPicUrl'),
-          dataIndex: 'thumb',
+          title: '承包商账号',
+          dataIndex: 'contractorAccount',
           ellipsis: true,
-          slots: { customRender: 'cover' },
+          // slots: { customRender: 'cover' },
           width: 150,
         },
         {
-          title: t('routes.scenes.childName'),
-          dataIndex: 'childName',
+          title: '拍摄场景数',
+          dataIndex: 'sceneCount',
           width: 120,
         },
         {
-          title: t('routes.scenes.viewCount'),
-          dataIndex: 'viewCount',
-          width: 100,
-        },
-        {
-          title: t('routes.scenes.createTime'),
+          title: '关联时间',
           dataIndex: 'createTime',
-          width: 140,
+          slots: { customRender: 'createTime' },
+          width: 200,
         },
-
-        {
-          title: t('routes.scenes.num'),
-          dataIndex: 'num',
-          width: 180,
-        },
-
         // {
-        //   title: t('routes.scenes.process'),
+        //   title: t('common.operation'),
         //   dataIndex: '',
-        //   width: 180,
-        //   slots: { customRender: 'process' },
-        //   ifShow: false,
+        //   slots: { customRender: 'action' },
+        //   width: isJA.value ? 100 : 100,
+        //   fixed: 'right',
         // },
-
-        {
-          title: t('common.operation'),
-          dataIndex: '',
-          slots: { customRender: 'action' },
-          width: isJA.value ? 100 : 100,
-          fixed: 'right',
-        },
       ];
 
       const searchForm: Partial<FormProps> = {
         labelWidth: 100,
         schemas: [
           {
-            field: 'companyName',
-            label: t('routes.corporation.enterpriseName'),
-            component: 'Input',
-            colProps: {
-              lg: 6,
-              xl: 6,
-              xxl: 6,
-              sm: 12,
-              xs: 24,
-            },
-          },
-          {
-            field: 'sceneName',
-            label: t('routes.scenes.sceneName'),
+            field: 'mainContractorName',
+            label: '总承包商名称',
             component: 'Input',
             colProps: {
               lg: 6,
@@ -214,8 +141,8 @@
             },
           },
           {
-            field: 'childName',
-            label: t('routes.scenes.childName'),
+            field: 'contractorName',
+            label: '承包商名称',
             component: 'Input',
             colProps: {
               lg: 6,
@@ -229,8 +156,8 @@
       };
       // { getForm }
       const [registerTable, { reload, getSelectRowKeys }] = useTable({
-        title: t('routes.scenes.sceneList'),
-        api: ListApi,
+        title: t('routes.dashboard.contractorManage'),
+        api: contractorListApi,
         columns: columns,
         useSearchForm: true,
         formConfig: searchForm,
@@ -249,109 +176,7 @@
           return T;
         },
       });
-      async function handleGenerate(record: Recordable) {
-        let { data } = await sceneDetail({ id: record.id });
-        let { buildObjStatus } = data.data;
-        let toastText =
-          buildObjStatus == 2
-            ? t('routes.scenes.objTips.Modifying')
-            : buildObjStatus == 1
-            ? t('routes.scenes.objTips.coverData')
-            : t('routes.scenes.objTips.updateSuccess');
-        console.log('buildObjStatus', data);
-        if (data.code === 200) {
-          createConfirm({
-            iconType: 'warning',
-            title: () => h('span', t('routes.scenes.creatobj')),
-            content: () => h('span', toastText),
-            onOk: async () => {
-              if (buildObjStatus !== 2) {
-                await buildSceneObj({ id: record.id });
-              }
-              createMessage.success(t('common.optSuccess'));
-              reload();
-            },
-          });
-        } else {
-          createMessage.error(t(`apiCode.errCode${data.code}`));
-        }
-      }
-      function handleLivestream(item) {
-        let url = item.webSite;
-        let page = url.substring(url.lastIndexOf('/') + 1, url.lastIndexOf('.html'));
-        url = url.replace(page, 'rtc-live');
-        window.open(url.replace('http://', 'https://') + (isJA.value ? '&lang=ja' : ''), '_blank');
-      }
-      function handleCopy(item) {
-        createConfirm({
-          iconType: 'warning',
-          title: () => h('span', t('routes.scenes.copyInfi.title')),
-          content: () => h('span', t('routes.scenes.copyInfi.content')),
-          onOk: async () => {
-            await sceneCopy(item.num);
-            createMessage.success(t('common.optSuccess'));
-            reload();
-          },
-        });
-      }
-      function handleUpgrade(item) {
-        createConfirm({
-          iconType: 'warning',
-          title: () => h('span', t('routes.scenes.upgradeMessg.title')),
-          content: () => h('span', t('routes.scenes.upgradeMessg.text')),
-          onOk: async () => {
-            console.log('item', item);
-            let res = await UpgradeToV4(item.num);
-            console.log('res', res);
-            createMessage.success(t('common.optSuccess'));
-            reload();
-          },
-        });
-      }
-      async function openSceneEditor(record: Recordable) {
-        try {
-          const langtext = isJA.value ? 'ja' : 'zh';
-          const token = userStore.getToken; //&token=${token}
-          let url = record.webSite.replace('smobile', 'epc') + `&lang=${langtext}`;
-          if (tableType.value == 4 || tableType.value == 2) {
-            url = url + `&token=${token}`;
-          }
-          if (record.isUpgrade == 1) {
-            url = url.replace('smg', 'epg');
-          }
-          openUrl(url);
-        } catch (error) {
-          console.log('error', error);
-        }
-      }
-      async function handleDelete(record: Recordable) {
-        console.log('DeleteApi', record);
-        await DeleteApi(record.num);
-        createMessage.success(t('common.optSuccess'));
-        reload();
-      }
 
-      async function handleDownloadScene(record: Recordable) {
-        let param: SceneDownloadParam = {
-          num: record.num,
-          isObj: null,
-        };
-        if (tableType.value == 4 || tableType.value == 2) {
-          param.isObj = tableType.value == 4 ? 1 : 0;
-        }
-        await addDownloadNumApi(param);
-        // SceneDownloadModel
-        const checker = await checkDownloadApi(param);
-        if (checker.downloadStatus < 3) {
-          const res = await downloadSceneDataAPi(param);
-          console.log('res', res);
-        } else {
-          downloadByUrl({
-            url: checker.downloadUrl,
-            target: '_self',
-          });
-        }
-      }
       function changeTable(val: Number) {
         tableType.value = val;
         reload();
@@ -360,22 +185,19 @@
         const keys = getSelectRowKeys();
         console.log('key', keys);
       };
+      const handleCreate = () => {
+        console.log('handleCreate');
+      };
       return {
         registerTable,
         createMessage,
         t,
-        handleGenerate,
-        openSceneEditor,
-        handleDownloadScene,
-        handleDelete,
-        handleLivestream,
-        handleUpgrade,
         changeTable,
-        handleCopy,
         tableType,
         loading,
         isJA,
         handleSelect,
+        handleCreate,
       };
     },
   });

+ 1 - 1
src/views/dashboard/analysis/components/SiteAnalysis.vue

@@ -3,7 +3,7 @@
     :tab-list="tabListTitle"
     v-bind="$attrs"
     :active-tab-key="activeKey"
-    @tabChange="onTabChange"
+    @tab-change="onTabChange"
   >
     <p v-if="activeKey === 'tab1'">
       <VisitAnalysis />

+ 97 - 0
src/views/scenes/assistantModal.vue

@@ -0,0 +1,97 @@
+<template>
+  <BasicModal
+    v-bind="$attrs"
+    @register="register"
+    :title="`添加协助`"
+    width="600px"
+    :centered="true"
+    @ok="handleSubmit"
+    @cancel="() => {}"
+  >
+    <div class="pt-20px">
+      <BasicForm @register="registerForm" />
+    </div>
+    <template #centerFooter>
+      <!-- <a-button>xxxx</a-button> -->
+    </template>
+  </BasicModal>
+</template>
+<script lang="ts">
+  import { defineComponent, reactive, ref, computed } from 'vue';
+  // import { Switch } from 'ant-design-vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+
+  // import { BasicTable, useTable } from '/@/components/Table';
+  import { BasicForm, useForm } from '/@/components/Form/index';
+  // import { useMessage } from '/@/hooks/web/useMessage';
+  // import { checkUserAddAble } from '/@/api/corporation/modal';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  // bindAnchorListApi
+  // import { bindOldAnchorListApi, bindUserApi } from '/@/api/scene/live';
+  // import { bindAnchorListParam } from '/@/api/scene/model';
+
+  const { t } = useI18n();
+  // const { createMessage } = useMessage();
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['register', 'success'],
+    setup() {
+      const [register, { closeModal }] = useModalInner((data) => {
+        data && onDataReceive(data);
+      });
+      const [registerForm] = useForm({
+        schemas: [{ field: 'type', component: 'Input', label: '企业账号' }],
+        labelWidth: 100,
+        baseColProps: { span: 22 },
+        autoSubmitOnEnter: true,
+        showResetButton: false,
+        showSubmitButton: false,
+        submitFunc: async () => {},
+      });
+
+      const SelectRowsList = computed(() => {
+        const data = getSelectRowKeys();
+        return data;
+      });
+      const mapCheckedValue = computed(() => (key) => {
+        return key === 1 ? true : false;
+      });
+      const checked = ref<boolean>(false);
+      const headerInfo = reactive<Recordable>({});
+      const searchInfo = reactive<Recordable>({});
+
+      function onDataReceive(data) {
+        console.log('Data Received', data.id);
+      }
+
+      const handleSelect = async () => {
+        // const keys = getSelectRowKeys();
+        // console.log('key', key);
+      };
+      const handleChange = (val, row) => {
+        console.log('val,row', val, row);
+      };
+      const handleSubmit = async () => {
+        console.log('handleSubmit');
+      };
+
+      return {
+        register,
+        searchInfo,
+        closeModal,
+        handleSelect,
+        headerInfo,
+        handleChange,
+        t,
+        checked,
+        SelectRowsList,
+        mapCheckedValue,
+        handleSubmit,
+        registerForm,
+      };
+    },
+  });
+</script>

+ 65 - 10
src/views/scenes/list.vue

@@ -10,9 +10,12 @@
       </a-tabs>
     </template>
     <div class="desc-wrap-BasicTable">
-      <BasicTable @register="registerTable">
+      <BasicTable
+        @register="registerTable"
+        :rowSelection="{ type: 'checkbox', getCheckboxProps: getCheckboxProps }"
+      >
         <template #toolbar>
-          <!-- <a-button type="primary" @click="() => {}"> 新增</a-button> -->
+          <a-button type="primary" @click="handlePatchSelect"> 批量归档</a-button>
           <!-- <a-button type="primary" color="warning" @click="() => {}"> 编辑</a-button>
         <a-button type="primary" color="error" @click="() => {}"> 删除</a-button> -->
         </template>
@@ -34,8 +37,13 @@
           >
           <span v-else>{{ record.webSite }}</span>
         </template>
+        <template #payStatus="{ record }">
+          <span v-if="record.payStatus != -2"> 正常</span>
+          <span v-else>归档中</span>
+        </template>
         <template #action="{ record }">
           <TableAction
+            v-if="record.payStatus != -2"
             :actions="[
               {
                 // icon: 'dashicons:editor-kitchensink',
@@ -60,6 +68,11 @@
                 },
               },
               {
+                label: '协助',
+                disabled: record.status != -2,
+                onClick: needAssistant.bind(null, record),
+              },
+              {
                 label: t('routes.scenes.copy'),
                 ifShow: tableType != 2 && tableType != 4,
                 disabled: record.status != -2,
@@ -81,17 +94,12 @@
                   confirm: handleDelete.bind(null, record),
                 },
               },
-              // {
-              //   // icon: 'dashicons:editor-kitchensink',
-              //   color: 'error',
-              //   label: t('routes.scenes.editor'),
-              //   onClick: openSceneEditor.bind(null, record),
-              // },
             ]"
           />
         </template>
       </BasicTable>
       <DownloadModal @register="registerDownloadModal" />
+      <AssistantModal @register="registerAssistantModal" />
     </div>
   </PageWrapper>
 </template>
@@ -124,6 +132,7 @@
     DeleteApi,
     UpgradeToV4,
     sceneCopy,
+    patchcoldStorageApi,
   } from '/@/api/scene/list';
   import { useI18n } from '/@/hooks/web/useI18n';
   import {
@@ -135,6 +144,7 @@
 
   import { useUserStore } from '/@/store/modules/user';
   import DownloadModal from './downloadModal.vue';
+  import AssistantModal from './assistantModal.vue';
   import { useLocaleStore } from '/@/store/modules/locale';
   import { SceneDownloadParam } from '/@/api/scene/model';
   const localeStore = useLocaleStore();
@@ -147,6 +157,7 @@
       TableAction,
       TableImg,
       DownloadModal,
+      AssistantModal,
       PageWrapper,
       [Tabs.name]: Tabs,
       [Tabs.TabPane.name]: Tabs.TabPane,
@@ -154,6 +165,7 @@
     setup() {
       const { createMessage, createConfirm } = useMessage();
       const [registerDownloadModal, { openModal: openDownloadModal }] = useModal();
+      const [registerAssistantModal, { openModal: openAssistantModal }] = useModal();
       const { t } = useI18n();
       const loading = ref(false);
       const tableType = ref<Number>(0); //0看看 、1看见、2深时
@@ -212,6 +224,12 @@
           dataIndex: 'num',
           width: 180,
         },
+        {
+          title: '场景状态',
+          dataIndex: 'payStatus',
+          slots: { customRender: 'payStatus' },
+          width: 180,
+        },
 
         // {
         //   title: t('routes.scenes.process'),
@@ -272,7 +290,7 @@
         ],
       };
       // { getForm }
-      const [registerTable, { reload }] = useTable({
+      const [registerTable, { reload, getSelectRowKeys }] = useTable({
         title: t('routes.scenes.sceneList'),
         api: ListApi,
         columns: columns,
@@ -283,7 +301,7 @@
         tableSetting: { fullScreen: true },
         clickToRowSelect: false,
         showIndexColumn: false,
-        rowKey: 'id',
+        rowKey: 'num',
         beforeFetch: (T) => {
           loading.value = true;
           return T;
@@ -401,6 +419,39 @@
         tableType.value = val;
         reload();
       }
+
+      function needAssistant(record: Recordable) {
+        console.log('record', record);
+        openAssistantModal(true, { ...record });
+      }
+      function handlePatchSelect() {
+        const keys = getSelectRowKeys();
+
+        createConfirm({
+          iconType: 'warning',
+          title: () => h('span', '批量归档'),
+          content: () => h('span', '是否确定?'),
+          onOk: async () => {
+            try {
+              const res = await patchcoldStorageApi({
+                numList: keys,
+              });
+              console.log('res', res);
+              if (res.code === 0) {
+              }
+            } catch (error) {}
+
+            // createMessage.success(t('common.optSuccess'));
+            // reload();
+          },
+        });
+      }
+      function getCheckboxProps(record: any) {
+        return {
+          disabled: record.payStatus === -2,
+        };
+      }
+
       return {
         registerTable,
         createMessage,
@@ -417,6 +468,10 @@
         tableType,
         loading,
         isJA,
+        needAssistant,
+        registerAssistantModal,
+        handlePatchSelect,
+        getCheckboxProps,
       };
     },
   });