jinx 3 년 전
부모
커밋
b90cb47f7d

+ 54 - 48
src/locales/lang/zh-CN/routes/dashboard.ts

@@ -1,48 +1,54 @@
-export default {
-  dashboard: 'Dashboard',
-  about: '关于',
-  workbench: '工作台',
-  analysis: '分析页',
-  corporation: '企业管理',
-  operate: '官网运营管理',
-  operateNews: '新闻管理',
-  operateRecruit: '招聘管理',
-  operateMessage: '留言管理',
-  product: '产品管理',
-  invoice: '发票管理',
-  orderCamera: '相机订单',
-  orderList: '订单管理',
-  orderEquity: '权益订单',
-  orderDownload: '下载订单',
-  corporationAccount: '企业账号',
-  corporationVerify: '企业认证',
-  bulletin: '信息发布',
-  bulletinRentInfo: '出租信息',
-  bulletinSellInfo: '出售信息',
-  bulletinDecoration: '工地装修',
-  advertisement: '广告位',
-  advertisementList: '轮播图',
-  advertisementPads: '推荐位',
-  scenes: 'VR场景管理',
-  scenesDownload: '场景下载',
-  scenesList: '场景列表',
-  scenesLive: '直播',
-  scenesRoom: '房间管理',
-  devices: '设备管理',
-  productRef: '商品属性',
-  productList: '商品列表',
-  productCategory: '商品分类',
-  order: '订单管理',
-  orderList: '订单列表',
-  cameraList: '相机订单列表',
-  downloadList: '下载订单列表',
-  equityList: '权益订单列表',
-  orderDetail: '订单详情',
-  member: '会员管理',
-  memberList: '会员列表',
-  staff: '员工管理',
-  staffList: '员工列表',
-  staffClean: '清除状态',
-  feedback: '反馈管理',
-  feedbackList: '反馈列表',
-};
+export default {
+  dashboard: 'Dashboard',
+  about: '关于',
+  workbench: '工作台',
+  analysis: '分析页',
+  corporation: '企业管理',
+  operate: '官网运营管理',
+  operateNews: '新闻管理',
+  operateRecruit: '招聘管理',
+  operateMessage: '留言管理',
+  invoice: '发票管理',
+  orderCamera: '相机订单',
+  orderList: '订单管理',
+  orderEquity: '权益订单',
+  orderDownload: '下载订单',
+  corporationAccount: '企业账号',
+  corporationVerify: '企业认证',
+  bulletin: '信息发布',
+  bulletinRentInfo: '出租信息',
+  bulletinSellInfo: '出售信息',
+  bulletinDecoration: '工地装修',
+  advertisement: '广告位',
+  advertisementList: '轮播图',
+  advertisementPads: '推荐位',
+  scenes: 'VR场景管理',
+  scenesDownload: '场景下载',
+  scenesList: '场景列表',
+  scenesLive: '直播',
+  scenesRoom: '房间管理',
+  devices: '设备管理',
+  product: '商品管理',
+  productRef: '商品属性',
+  productList: '商品列表',
+  productCategory: '商品分类',
+  order: '订单管理',
+  orderList: '订单列表',
+  cameraList: '相机订单列表',
+  downloadList: '下载订单列表',
+  equityList: '权益订单列表',
+  orderDetail: '订单详情',
+  member: '会员管理',
+  memberList: '会员列表',
+  staff: '员工管理',
+  staffList: '员工列表',
+  staffClean: '清除状态',
+  feedback: '反馈管理',
+  feedbackList: '反馈列表',
+  productOperation: '产品运营管理',
+  cameraScene: '相机场景管理',
+  kankanScene: '四维看看',
+  MinionScene: '四维看见',
+  laserScene: '四维双目深时',
+  liteScene: '四维双目lite',
+};

+ 66 - 0
src/router/routes/modules/productOperation.ts

@@ -0,0 +1,66 @@
+import type { AppRouteRecordRaw } from '/@/router/types';
+import { t } from '/@/hooks/web/useI18n';
+import { LAYOUT } from '/@/router/constant';
+
+export const productOperation: AppRouteRecordRaw = {
+  path: '/productOperation',
+  name: 'ProductOperation',
+  redirect: '/productOperation/index',
+  component: LAYOUT,
+  meta: {
+    title: t('routes.dashboard.productOperation'),
+    icon: 'la:file-invoice-dollar',
+    orderNo: 102,
+    // hideChildrenInMenu: true,
+  },
+  children: [
+    {
+      path: 'cameraScene',
+      name: 'CameraScene',
+      component: () => import('/@/views/productOperation/cameraScene.vue'),
+      meta: {
+        title: t('routes.dashboard.cameraScene'),
+        icon: 'la:file-invoice-dollar',
+      },
+      children: [
+        {
+          path: 'laserScene',
+          name: 'LaserScene',
+          component: () => import('/@/views/productOperation/sceneManager/laserScene.vue'),
+          meta: {
+            title: t('routes.dashboard.laserScene'),
+            icon: 'la:file-invoice-dollar',
+          },
+        },
+        {
+          path: 'liteScene',
+          name: 'LiteScene',
+          component: () => import('/@/views/productOperation/sceneManager/liteScene.vue'),
+          meta: {
+            title: t('routes.dashboard.liteScene'),
+            icon: 'la:file-invoice-dollar',
+          },
+        },
+        {
+          path: 'kankanScene',
+          name: 'KankanScene',
+          component: () => import('/@/views/productOperation/sceneManager/kankanScene.vue'),
+          meta: {
+            title: t('routes.dashboard.kankanScene'),
+            icon: 'la:file-invoice-dollar',
+          },
+        },
+        {
+          path: 'minionScene',
+          name: 'MinionScene',
+          component: () => import('/@/views/productOperation/sceneManager/minionScene.vue'),
+          meta: {
+            title: t('routes.dashboard.MinionScene'),
+            icon: 'la:file-invoice-dollar',
+          },
+        },
+      ],
+    },
+  ],
+};
+export default productOperation;

+ 187 - 0
src/views/productOperation/cameraScene.vue

@@ -0,0 +1,187 @@
+<template>
+  <BasicTable @register="registerTable">
+    <template #toolbar>
+      <a-button type="primary" @click="exportExcel"> 导出</a-button>
+    </template>
+    <template #bodyCell="{ column, record }">
+      <template v-if="column.key === 'action'">
+        <TableAction
+          stopButtonPropagation
+          :actions="[
+            {
+              label: '删除',
+              icon: 'ic:outline-delete-outline',
+              onClick: handleDelete.bind(null, record),
+            },
+          ]"
+          :dropDownActions="[
+            {
+              label: '启用',
+              popConfirm: {
+                title: '是否启用?',
+                confirm: handleOpen.bind(null, record),
+              },
+            },
+          ]"
+        />
+      </template>
+    </template>
+  </BasicTable>
+</template>
+<script lang="ts">
+  import { defineComponent, h } from 'vue';
+  import {
+    BasicTable,
+    useTable,
+    TableAction,
+    BasicColumn,
+    TableImg,
+    FormProps,
+  } from '/@/components/Table';
+  import { PageWrapper } from '/@/components/Page';
+  import { Time } from '/@/components/Time';
+  import { Descriptions } from 'ant-design-vue';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { Switch } from 'ant-design-vue';
+  import { DownList, DownExport } from '/@/api/order';
+
+  export default defineComponent({
+    components: {
+      BasicTable,
+      TableAction,
+      PageWrapper,
+      TableImg,
+      [Descriptions.name]: Descriptions,
+      [Descriptions.Item.name]: Descriptions.Item,
+    },
+    setup() {
+      const { t } = useI18n();
+      const { createMessage, createConfirm } = useMessage();
+      const columns: BasicColumn[] = [
+        {
+          title: '时间',
+          dataIndex: 'createTime',
+          width: 150,
+          customRender: ({ record }) => {
+            return (
+              record.createTime &&
+              h(Time, {
+                value: record.createTime,
+                mode: 'datetime',
+              })
+            );
+          },
+        },
+        {
+          title: '订单号',
+          dataIndex: 'orderSn',
+          ellipsis: false,
+          width: 180,
+        },
+        {
+          title: '用户名',
+          dataIndex: 'userName',
+          width: 80,
+        },
+        {
+          title: '订单金额',
+          dataIndex: 'amount',
+          width: 80,
+        },
+        {
+          title: '支付方式',
+          dataIndex: 'payType',
+          // slots: { customRender: 'orderType' },
+          width: 80,
+        },
+        {
+          title: '订单状态',
+          dataIndex: 'payStatus',
+          // slots: { customRender: 'orderStatus' },
+          width: 80,
+        },
+      ];
+      const searchForm: Partial<FormProps> = {
+        labelWidth: 100,
+        schemas: [
+          {
+            field: 'sceneName',
+            label: '开票申请时间',
+            component: 'RangePicker',
+            componentProps: {
+              maxLength: 100,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+          {
+            field: 'sceneName',
+            label: '支付时间',
+            component: 'RangePicker',
+            componentProps: {
+              maxLength: 100,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+          {
+            field: 'sceneName',
+            label: '订单号',
+            component: 'Input',
+            componentProps: {
+              maxLength: 100,
+            },
+            colProps: {
+              xl: 6,
+              xxl: 6,
+            },
+          },
+        ],
+      };
+      const [registerTable] = useTable({
+        api: DownList,
+        title: '发票列表',
+        // titleHelpMessage: ['已启用expandRowByClick', '已启用stopButtonPropagation'],
+        columns: columns,
+        useSearchForm: true,
+        formConfig: searchForm,
+        showTableSetting: true,
+        rowKey: 'id',
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
+        },
+        canResize: false,
+      });
+      function handleDelete(record: Recordable) {
+        console.log('点击了删除', record);
+      }
+      function handleOpen(record: Recordable) {
+        console.log('点击了启用', record);
+      }
+      function exportExcel() {
+        createConfirm({
+          iconType: 'warning',
+          title: () => h('span', '温馨提示'),
+          content: () => h('span', '确定当前标签下的订单记录?'),
+          onOk: async () => {
+            await DownExport();
+          },
+        });
+      }
+      return {
+        registerTable,
+        handleDelete,
+        handleOpen,
+        exportExcel,
+      };
+    },
+  });
+</script>

+ 0 - 0
src/views/productOperation/sceneManager/kankanScene.vue


+ 243 - 0
src/views/productOperation/sceneManager/laserScene.vue

@@ -0,0 +1,243 @@
+<template>
+  <BasicTable @register="registerTable">
+    <template #toolbar>
+      <!-- <a-button type="primary" @click="exportExcel"> 导出1</a-button> -->
+    </template>
+    <template #bodyCell="{ column, record }">
+      <template v-if="column.key === 'action'">
+        <TableAction
+          stopButtonPropagation
+          :actions="[
+            {
+              label: '删除',
+              icon: 'ic:outline-delete-outline',
+              onClick: handleDelete.bind(null, record),
+            },
+          ]"
+          :dropDownActions="[
+            {
+              label: '启用',
+              popConfirm: {
+                title: '是否启用?',
+                confirm: handleOpen.bind(null, record),
+              },
+            },
+          ]"
+        />
+      </template>
+    </template>
+  </BasicTable>
+</template>
+<script lang="ts">
+  import { defineComponent, h } from 'vue';
+  import {
+    BasicTable,
+    useTable,
+    TableAction,
+    BasicColumn,
+    TableImg,
+    FormProps,
+  } from '/@/components/Table';
+  import { PageWrapper } from '/@/components/Page';
+  import { Time } from '/@/components/Time';
+  import { Descriptions } from 'ant-design-vue';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { Switch } from 'ant-design-vue';
+  import { DownList, DownExport } from '/@/api/order';
+
+  export default defineComponent({
+    components: {
+      BasicTable,
+      TableAction,
+      PageWrapper,
+      TableImg,
+      [Descriptions.name]: Descriptions,
+      [Descriptions.Item.name]: Descriptions.Item,
+    },
+    setup() {
+      const { t } = useI18n();
+      const { createMessage, createConfirm } = useMessage();
+      const columns: BasicColumn[] = [
+        {
+          title: '场景标题',
+          dataIndex: 'createTime',
+          width: 150,
+          // customRender: ({ record }) => {
+          //   return (
+          //     record.createTime &&
+          //     h(Time, {
+          //       value: record.createTime,
+          //       mode: 'datetime',
+          //     })
+          //   );
+          // },
+        },
+        {
+          title: '场景码',
+          dataIndex: 'orderSn',
+          ellipsis: false,
+          width: 80,
+        },
+        {
+          title: '拍摄时间',
+          dataIndex: 'userName',
+          width: 180,
+          customRender: ({ record }) => {
+            return (
+              record.createTime &&
+              h(Time, {
+                value: record.createTime,
+                mode: 'datetime',
+              })
+            );
+          },
+        },
+        {
+          title: '计算完成时间',
+          dataIndex: 'amount',
+          width: 180,
+          customRender: ({ record }) => {
+            return (
+              record.createTime &&
+              h(Time, {
+                value: record.createTime,
+                mode: 'datetime',
+              })
+            );
+          },
+        },
+        {
+          title: 'sn码',
+          dataIndex: 'payType',
+          width: 80,
+        },
+        {
+          title: '场景大小',
+          dataIndex: 'sceneSize',
+          width: 80,
+        },
+        {
+          title: '是否复制',
+          dataIndex: 'isCopy',
+          width: 80,
+        },
+        {
+          title: '复制时间',
+          dataIndex: 'copyTime',
+          width: 180,
+          customRender: ({ record }) => {
+            return (
+              record.createTime &&
+              h(Time, {
+                value: record.createTime,
+                mode: 'datetime',
+              })
+            );
+          },
+        },
+        {
+          title: '绑定账号',
+          dataIndex: 'bindAccount',
+          width: 80,
+        },
+        {
+          title: '浏览量',
+          dataIndex: 'viewCount',
+          width: 80,
+        },
+        {
+          title: '状态',
+          dataIndex: 'status',
+          width: 80,
+        },
+        {
+          title: '操作',
+          dataIndex: 'actions',
+          key: 'actions',
+          width: 180,
+        },
+      ];
+      const searchForm: Partial<FormProps> = {
+        labelWidth: 100,
+        schemas: [
+          {
+            field: 'sceneName',
+            label: '场景标题',
+            component: 'Input',
+            componentProps: {
+              maxLength: 100,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+          {
+            field: 'snCode',
+            label: 'sn码',
+            component: 'Input',
+            componentProps: {
+              maxLength: 100,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+          {
+            field: 'bindAccount',
+            label: '绑定账号',
+            component: 'Input',
+            componentProps: {
+              maxLength: 100,
+            },
+            colProps: {
+              xl: 6,
+              xxl: 6,
+            },
+          },
+        ],
+      };
+      const [registerTable] = useTable({
+        api: DownList,
+        title: '四维深时场景列表',
+        // titleHelpMessage: ['已启用expandRowByClick', '已启用stopButtonPropagation'],
+        columns: columns,
+        useSearchForm: true,
+        formConfig: searchForm,
+        showTableSetting: true,
+        rowKey: 'id',
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
+        },
+        canResize: false,
+      });
+      function handleDelete(record: Recordable) {
+        console.log('点击了删除', record);
+      }
+      function handleOpen(record: Recordable) {
+        console.log('点击了启用', record);
+      }
+      function exportExcel() {
+        createConfirm({
+          iconType: 'warning',
+          title: () => h('span', '温馨提示'),
+          content: () => h('span', '确定当前标签下的订单记录?'),
+          onOk: async () => {
+            await DownExport();
+          },
+        });
+      }
+      return {
+        registerTable,
+        handleDelete,
+        handleOpen,
+        exportExcel,
+      };
+    },
+  });
+</script>

+ 0 - 0
src/views/productOperation/sceneManager/liteScene.vue


+ 0 - 0
src/views/productOperation/sceneManager/minionScene.vue