tangning 2 rokov pred
rodič
commit
1c69f36fff

+ 29 - 2
src/views/productOperation/cameraScene.vue

@@ -6,6 +6,7 @@
         <a-tab-pane :key="1" tab="四维看见" :disabled="loading"/>
         <!-- <a-tab-pane :key="2" tab="四维深时" :disabled="loading"/>
         <a-tab-pane :key="3" tab="四维双目Lite" :disabled="loading"/>  -->
+        <!-- <a-tab-pane :key="4" tab="四维全景" :disabled="loading"/>  -->
       </a-tabs
     ></template>
     <div class="desc-wrap-BasicTable">
@@ -15,7 +16,7 @@
         </template>
 
         <template #href="{ record }">
-          <a v-if="(record.status == 1 || (record.status == -2 && record.payStatus == 1))" target="_blank" :href="record.thumb">{{record.sceneName}}</a>
+          <a v-if="(record.status == 1 || (record.status == -2 && record.payStatus == 1))" target="_blank" :href="record.webSite">{{record.sceneName}}</a>
           <span v-else-if="record.sceneName">{{record.sceneName}}</span>
           <span v-else>-</span>
         </template>
@@ -24,6 +25,16 @@
             stopButtonPropagation
             :actions="[
               {
+                label: '编辑',
+                disabled:!(record.status == 1 || record.status == -2),
+                ifShow:getTypeCheckPerm('scenes-move') && tableType != 3,
+                onClick: handlegotoEdit.bind(null, record),
+              },{
+                label: '权限',
+                disabled:!(record.status == 1 || record.status == -2),
+                ifShow:getTypeCheckPerm('scenes-move') && tableType != 3,
+                onClick: handlePowers.bind(null, record),
+              },{
                 label: '迁移',
                 disabled:!(record.status == 1 || record.status == -2),
                 ifShow:getTypeCheckPerm('scenes-move') && tableType != 3,
@@ -80,6 +91,7 @@
       :okButtonProps="{ disabled: canDownload }"
     />
     <MoveModal @register="registerMoveModal" />
+    <PowersModal @register="registerPowersModal" />
   </PageWrapper>
 </template>
 <script lang="ts">
@@ -95,6 +107,7 @@
   import { PageWrapper } from '/@/components/Page';
   import DownLoadModal from './modal/DownLoadModal.vue';
   import MoveModal from './modal/MoveModal.vue';
+  import PowersModal from './modal/PowersModal.vue';
   import { Time } from '/@/components/Time';
   import { Descriptions, Tabs, Progress } from 'ant-design-vue';
   import { useI18n } from '/@/hooks/web/useI18n';
@@ -118,6 +131,7 @@
     components: {
       DownLoadModal,
       MoveModal,
+      PowersModal,
       BasicTable,
       TableAction,
       PageWrapper,
@@ -254,7 +268,7 @@
           ifShow: true,
           fixed: 'right',
           flag: 'ACTION',
-          width: 250,
+          width: 330,
         },
       ];
       const searchForm: Partial<FormProps> = {
@@ -303,6 +317,7 @@
       }
       const [registerDownModal, { openModal: openDownModal }] = useModal();
       const [registerMoveModal, { openModal: openMoveModal }] = useModal();
+      const [registerPowersModal, { openModal: openPowersModal }] = useModal();
       const [registerTable, { reload }] = useTable({
         api: operateSceneList,
         title: `场景列表`,
@@ -441,8 +456,18 @@
         let myType = tableType.value
         return getCheckPerm(val) || getCheckPerm(`${val}-${myType}`)
       }
+      function handlegotoEdit(record: Recordable){
+        let url = record.webSite.replace("smobile", "epg");
+        window.open(url);
+      }
+      function handlePowers(record: Recordable){
+        openPowersModal(true, {
+          ...record,
+        });
+      }
       return {
         registerTable,
+        registerPowersModal,
         handleDelete,
         handleCopy,
         handleMove,
@@ -461,6 +486,8 @@
         downloadOption,
         cancelDownload,
         getTypeCheckPerm,
+        handlegotoEdit,
+        handlePowers,
       };
     },
   });

+ 241 - 0
src/views/productOperation/modal/PowersModal.vue

@@ -0,0 +1,241 @@
+<template>
+  <BasicModal
+    v-bind="$attrs"
+    @register="register"
+    title="设置场景权限"
+    @cancel="resetFields"
+    @ok="handleSubmit"
+    :width="1000"
+    :min-height="0"
+  >
+    <div class="pt-2px pr-3px">
+      <BasicForm @register="registerForm" :model="model">
+        <template #text="{ model, field }">
+          {{ model[field] }}
+        </template>
+      </BasicForm>
+      <BasicTable v-show="fileFlow.showList" class="powesrTable" @register="registerTable">
+        <template #toolbar>
+          <a-button type="primary" @click="addPowes"> 新增 </a-button>
+        </template>
+        <template #action="{ record }">
+          <TableAction
+            stopButtonPropagation
+            :actions="[
+              {
+                label: '编辑',
+                ifShow: getCheckPerm('scenes-move'),
+                onClick: handleEdit.bind(null, record),
+              },
+              {
+                label: '删除',
+                //icon: 'ic:outline-delete-outline',
+                color: 'error',
+                ifShow: getCheckPerm('scenes-delete'),
+                onClick: handleDelete.bind(null, record),
+              },
+            ]"
+          />
+        </template>
+      </BasicTable>
+      <detailModal @register="registerDetail" />
+    </div>
+  </BasicModal>
+</template>
+<script lang="ts">
+  import { defineComponent, ref, nextTick, onMounted, reactive } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { sceneMove } from '/@/api/operate';
+  import { useModal } from '/@/components/Modal';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import detailModal from './detailModal.vue';
+  import { usePermissionStore } from '/@/store/modules/permission';
+  import {
+    operateSceneList,
+    sceneMove,
+    sceneDelete,
+  } from '/@/api/operate';
+  import {
+    BasicTable,
+    useTable,
+    TableAction,
+    BasicColumn,
+  } from '/@/components/Table';
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm, BasicTable, TableAction, detailModal},
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update', 'register'],
+    setup(props, { emit }) {
+      const modelRef = ref({});
+      const fileFlow = reactive({
+        showList: true,
+      });
+      const [registerDetail, { openModal: openDetaileModal }] = useModal();
+      const columns: BasicColumn[] = [
+        {
+          title: '警员ID',
+          dataIndex: 'sceneName',
+          width: 150,
+        },
+        {
+          title: '姓名',
+          dataIndex: 'sceneName',
+          width: 180,
+        },
+        {
+          title: '浏览权限',
+          dataIndex: 'num',
+          width: 180,
+        },
+        {
+          title: '编辑权限',
+          dataIndex: 'num',
+          width: 180,
+        },
+        {
+          title: '操作',
+          dataIndex: 'action',
+          slots: { customRender: 'action' },
+          ifShow: true,
+          fixed: 'right',
+          flag: 'ACTION',
+          width: 120,
+        },
+      ];
+      const permissionStore = usePermissionStore();
+      const { getCheckPerm } = permissionStore;
+      const { createMessage, createConfirm } = useMessage();
+      const [registerTable, { reload }] = useTable({
+        api: operateSceneList,
+        title: `已授权列表`,
+        // titleHelpMessage: ['已启用expandRowByClick', '已启用stopButtonPropagation'],
+        columns: columns,
+        // searchInfo: { type: tableType },
+        useSearchForm: false,
+        // formConfig: searchForm,
+        showTableSetting: false,
+        showIndexColumn: false,
+        rowKey: 'num',
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
+        },
+        canResize: true,
+      });
+      const schemas: FormSchema[] = [
+        {
+          field: 'Powerstype',
+          component: 'RadioGroup',
+          defaultValue: 0,
+          componentProps: {
+            options: [
+              { label: '授权用户', value: 0 },
+              { label: '公开浏览', value: 1 },
+            ],
+            onChange: (value) => {
+              fileFlow.showList = value.target.value ? false : true;
+              console.log('fileFlow.showList', value.target.value, fileFlow.showList)
+            },
+          },
+          label: '授权方式',
+          colProps: {
+            span: 24,
+          },
+        },
+      ];
+      const [registerForm, { validate, resetFields, setFieldsValue }] = useForm({
+        labelWidth: 80,
+        schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+      onMounted(() => {});
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        console.log(data);
+        data && onDataReceive(data);
+      });
+
+      function onDataReceive(data) {
+        modelRef.value = data;
+        resetFields();
+        setFieldsValue({
+          type: data.sceneName,
+        });
+      }
+      const handleSubmit = async () => {
+        try {
+          const params = await validate();
+          const apiData = {
+            snCode: params.snCode,
+            num: modelRef.value.num,
+          };
+          console.log('res', apiData, params);
+          const res = await sceneMove(apiData);
+          console.log('res', res);
+          closeModal();
+          resetFields();
+          createMessage.success('场景迁移成功。');
+          emit('update');
+        } catch (error) {
+          console.log('not passing', error);
+        }
+      };
+      function addPowes() {
+        openDetaileModal(true, {});
+      }
+      function handleEdit(record: Recordable) {
+        openDetaileModal(true, record);
+      }
+      async function handleDelete(record: Recordable) {
+        console.log('handleDelete', record);
+        createConfirm({
+          title: '删除',
+          content: '确定要删除场景吗?',
+          onOk: async () => {
+            sceneDelete({ num: record.num }).then(() => {
+              message.success({
+                content: '删除成功',
+              });
+
+              reload();
+            });
+          },
+        });
+      }
+      return {
+        register,
+        schemas,
+        registerForm,
+        model: modelRef,
+        fileFlow,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        t,
+        getCheckPerm,
+        handleEdit,
+        handleDelete,
+        registerTable,
+        registerDetail,
+        openDetaileModal,
+        addPowes,
+      };
+    },
+  });
+</script>
+
+<style lang="less" scoped>
+.powesrTable{
+
+}
+</style>

+ 264 - 0
src/views/productOperation/modal/detailModal.vue

@@ -0,0 +1,264 @@
+<template>
+  <BasicModal
+    v-bind="$attrs"
+    @register="register"
+    :title="title"
+    @visible-change="handleVisibleChange"
+    @cancel="resetFields"
+    @ok="handleSubmit"
+    :min-height="400"
+  >
+    <div class="pt-2px pr-3px">
+      <BasicForm @register="registerForm">
+        <template #text="{ model, field }">
+          {{ model[field] }}
+        </template>
+      </BasicForm>
+    </div>
+  </BasicModal>
+</template>
+<script lang="ts">
+  import { defineComponent, ref, nextTick, onMounted, reactive } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { companyAdd, companyUpdate } from '/@/api/customer';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { uploadApi } from '/@/api/product/index';
+  import { useModalInner } from '/@/components/Modal';
+  import dayjs from 'dayjs';
+
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update', 'register'],
+    setup(props, { emit }) {
+      const modelRef = ref(false);
+      const fileFlow = reactive({
+        file: null,
+      });
+      const { createMessage } = useMessage();
+      const title = ref('新增客户')
+      const schemas: FormSchema[] = [
+        {
+          field: 'id',
+          component: 'Input',
+          show:false,
+          label: 'id',
+          required: false,
+        },
+        {
+          field: 'ryid',
+          component: 'Input',
+          label: '警员ID',
+          required: true,
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'name',
+          component: 'Input',
+          label: '姓名',
+          required: true,
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'view',
+          component: 'RadioGroup',
+          label: '查看权限',
+          defaultValue: 1,
+          colProps: {
+            span: 24,
+          },
+          componentProps: {
+            options: [
+              { label: '不限时查看', value: 1 },
+              { label: '限时查看', value: 2 },
+            ],
+            onChange: (value) => {
+              updateSchema({
+                field: 'viewTime',ifShow:value.target.value == 2
+              })
+            },
+          },
+        },
+        {
+          field: 'viewTime',
+          component: 'DatePicker',
+          label: '查看到期日期',
+          ifShow:false,
+          required: true,
+          defaultValue:dayjs().add(1,'month').format('YYYY-MM-DD HH:mm'),
+          componentProps: {
+            disabled: false,
+            'show-time': true,
+            valueFormat: 'YYYY-MM-DD HH:mm',
+            format: 'YYYY-MM-DD HH:mm',
+            disabledDate: (current) => {
+              return current && current < dayjs().endOf('day');
+            },
+          },
+        },
+        {
+          field: 'set',
+          component: 'RadioGroup',
+          label: '编辑权限',
+          defaultValue: 0,
+          colProps: {
+            span: 24,
+          },
+          componentProps: {
+            options: [
+              { label: '无权编辑', value: 0 },
+              { label: '不限时编辑', value: 1 },
+              { label: '限时编辑', value: 2 },
+            ],
+            onChange: (value) => {
+              updateSchema({
+                field: 'setTime', ifShow: value.target.value == 2,
+              })
+            },
+          },
+        },
+        {
+          field: 'setTime',
+          component: 'DatePicker',
+          label: '编辑到期日期',
+          ifShow: false,
+          required: true,
+          defaultValue: dayjs().add(1, 'month').format('YYYY-MM-DD HH:mm'),
+          componentProps: {
+            disabled: false,
+            'show-time': true,
+            valueFormat: 'YYYY-MM-DD HH:mm',
+            format: 'YYYY-MM-DD HH:mm',
+            disabledDate: (current) => {
+              return current && current < dayjs().endOf('day');
+            },
+          },
+        },
+        {
+          field: 'empower',
+          component: 'RadioGroup',
+          label: '是否可授权他人',
+          defaultValue: 0,
+          colProps: {
+            span: 24,
+          },
+          componentProps: {
+            options: [
+              { label: '不可授权', value: 0 },
+              { label: '可授权他人', value: 1 },
+            ],
+            onChange: (value) => {
+              updateSchema({
+                field: 'isEmpower', ifShow: value.target.value == 1,
+              })
+            },
+          },
+        },
+        {
+          field: 'isEmpower',
+          component: 'CheckboxGroup',
+          label: '授权他人权限',
+          ifShow: false,
+          colProps: {
+            span: 24,
+          },
+          componentProps: {
+            options: [
+              { label: '查看权限', value: 0 },
+              { label: '编辑权限', value: 1 },
+            ],
+          },
+        },
+      ];
+      const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
+        labelWidth: 120,
+        schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+
+      onMounted(() => {});
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        console.log('data',data)
+        if (data) {
+          title.value =data.id?'编辑授权':'新增授权'
+          modelRef.value = data.id?true:false;
+          setFieldsValue(data);
+        }else{
+          title.value ='新增客户'
+        }
+        updateSchema([
+          {field: 'isEmpower', ifShow: false,},
+          {field: 'setTime', ifShow: false,},
+          {field: 'viewTime', ifShow: false,},
+        ])
+      });
+
+      // function onDataReceive(data) {
+      //   modelRef.value = data;
+      //   resetFields();
+      //   setFieldsValue({
+      //     type: data.sceneName,
+      //   });
+      // }
+      const handleSubmit = async () => {
+        try {
+          const params = await validate();
+          console.log('params',params)
+          const apiData = {
+            ...params,
+            floorLogo: params.floorLogo && params.floorLogo[0] || '',
+            qrLogo: params.qrLogo && params.qrLogo[0] || '',
+            topLogo: params.topLogo && params.topLogo[0] || '',
+          };
+          console.log(modelRef.value);
+          let tips: string;
+          if (modelRef.value) {
+            // apiData.id = modelRef.value.id;
+            await companyUpdate(apiData);
+            tips = '修改成功。';
+          } else {
+            tips = '添加成功。';
+            await companyAdd(apiData);
+          }
+
+          closeModal();
+          resetFields();
+          emit('update');
+          createMessage.success(tips);
+        } catch (error) {
+          console.log('not passing', error);
+        }
+      };
+      function handleVisibleChange(_) {
+        // console.log(v);
+        // v && props.userData && nextTick(() => onDataReceive(props.userData));
+      }
+      return {
+        register,
+        schemas,
+        registerForm,
+        modelRef,
+        fileFlow,
+        handleVisibleChange,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        title,
+        t,
+      };
+    },
+  });
+</script>