Ver código fonte

修改各上传资源

tengmingxue 2 anos atrás
pai
commit
c7e2a74abc

+ 38 - 1
src/api/resource/examine.ts

@@ -2,7 +2,7 @@
  * @Author: tengmingxue 1473375109@qq.com
  * @Date: 2023-09-11 19:36:34
  * @LastEditors: tengmingxue 1473375109@qq.com
- * @LastEditTime: 2023-09-24 17:15:11
+ * @LastEditTime: 2023-09-25 21:47:12
  * @FilePath: \xld-gis-admin\src\api\resource\examine.ts
  * @Description: 流程配置信息api
  */
@@ -14,6 +14,8 @@ enum Api {
     SaveFlowInfoAll = '/base-center/flow/insertFlowInfoAll', //新增流程、节点、节点人员信息
     DelFLowInfo = '/base-center/flow/deleteFlowInfo',    //删除流程
     SelectLowConfig = '/base-center/flow/selectFlowInfoAll',  //查询流程、节点、节点人员信息
+    SubmitExamine = '/base-center/flow/saveBussinfo',
+    SubminExamineResult = '/base-center/flow/submitBussinfo',
 }
 /**
  * @description: 查询流程信息
@@ -143,3 +145,38 @@ export const getFlowConfigByBusinessName = async (name) => {
         resolve(result)
     })
 }
+
+
+
+/**
+ * @description: 提交审核信息
+ * @param: bussInfo:流程信息              must
+ * @param: bussInfo.bussname   业务名称(流程名称)
+ * @param: bussInfo.flowid     流程id
+ * @param: bussInfo.serverids  资源id
+ * 
+ */
+ export const submitExamine = (params) => {
+    return new Promise<void>((resolve) => {
+        defHttp.post({ url: Api.SubmitExamine, params }).then((res) => {
+            resolve(res)
+        })
+    })
+};
+
+
+/**
+ * @description: 提交审核结果
+ * @param: bussInfoId:  业务id
+ * @param: ispass       是否通过
+ * @param: opinion      意见           required:false
+ * @param: userId       用户ID         required:false
+ * 
+ */
+ export const subminExamineResult = (params) => {
+    return new Promise<void>((resolve) => {
+        defHttp.post({ url: Api.SubminExamineResult, params }).then((res) => {
+            resolve(res)
+        })
+    })
+};

+ 53 - 1
src/api/resource/files.ts

@@ -2,7 +2,7 @@
  * @Author: tengmingxue 1473375109@qq.com
  * @Date: 2023-08-15 11:20:48
  * @LastEditors: tengmingxue 1473375109@qq.com
- * @LastEditTime: 2023-09-24 16:36:00
+ * @LastEditTime: 2023-09-25 17:47:03
  * @FilePath: \xld-gis-admin\src\api\resource\scene.ts
  * @Description: 文件资源接口
  */
@@ -11,6 +11,7 @@ import { session } from "/@/utils/Memory.js";
 enum Api {
     Login = '/callProvider',
     UploadFiles = '/datastore/file/uploadFile/1fcf0fc166206ceb7f2780302ec8f854',
+    Download = '/datastore/file/download'
 }
 const interfaceType = { apiUrl2: true };
 
@@ -32,6 +33,57 @@ export function list() {
     })
 }
 
+/**
+ * 查询资源列表
+*/
+export function listPage(param) {
+    const data = JSON.stringify(param)
+    const formData = new FormData();
+    formData.append("interfaceName", "antu.space.provider.sservicebase.ServiceBaseMetaDataViewProvider");
+    formData.append("methodName", "getResourcePagedList");
+    formData.append("args[]", session.getItem('tokenV2'));
+    formData.append("args[]", data);    //'{"type":"DR","pageIndex":1,"pageSize":20,"orderBy":"updatedate DESC"}'
+    return new Promise<void>((resolve, reject) => {
+        defHttp.post({ url: Api.Login, params: formData, ...interfaceType })
+            .then((r) => {
+                let result = r.result === '' ? {} : JSON.parse(r.result)
+                resolve(result);
+            })
+    })
+}
+
+
+/**
+ * @description:文件资源下载
+ * @param:id         文件id
+ * @param:userid     用户id
+ * @param:parentId   文件夹id      
+ */
+ export function getFileUrl(param) {
+    return new Promise<void>((resolve, reject) => {
+        try {
+            defHttp.post({
+                url: Api.Download,
+                params: {
+                    objs: [{ id: param.id, objType: "FILE", userId: param.userid }],
+                    parentId: param.parentId
+                },
+            })
+                .then((r) => {
+                    if (r && r.resp_code == 0 && r.resp_msg == "OK") {
+                        resolve(r.datas[0]);
+                    } else {
+                        resolve()
+                    }
+                }).catch(e => {
+                    resolve()
+                })
+        } catch (error) {
+            resolve()
+        }
+    })
+}
+
 
 
 

+ 26 - 3
src/api/resource/map.ts

@@ -2,7 +2,7 @@
  * @Author: tengmingxue 1473375109@qq.com
  * @Date: 2023-08-15 11:20:48
  * @LastEditors: tengmingxue 1473375109@qq.com
- * @LastEditTime: 2023-09-24 20:54:14
+ * @LastEditTime: 2023-09-25 20:37:27
  * @FilePath: \xld-gis-admin\src\api\resource\map.ts
  * @Description: 地图资源接口
  */
@@ -26,12 +26,35 @@ const interfaceType = { apiUrl2: true };
 /**
  * @description:获取地图资源列表
  */
-export function list() {
+export function list(params) {
     const formData = new FormData();
     formData.append("interfaceName", "antu.space.provider.sservicebase.ServiceBaseMetaDataViewProvider");
     formData.append("methodName", "getResourcePagedList");
     formData.append("args[]", session.getItem('tokenV2'));
-    formData.append("args[]", '{"type":"MR","fields":{"DATA":["serviceid","servicename","servicetype","servicealiasname"],"METADATA":["publisher ","publishdate"]},"pageIndex":1,"pageSize":10 }');
+    formData.append("args[]", '{"type":"MR","pageIndex":1,"pageSize":20 }');
+    return new Promise<void>((resolve, reject) => {
+        defHttp.post({ url: Api.Login, params: formData, ...interfaceType })
+            .then((r) => {
+                let result = r.result === '' ? {} : JSON.parse(r.result)
+                if (result?.items) {
+                    result.items.forEach((item, index) => {
+                        item['xh'] = index + 1
+                    })
+                }
+                resolve(result);
+            })
+    })
+}
+
+/**
+ * @description:获取地图资源列表
+ */
+ export function listPage(params) {
+    const formData = new FormData();
+    formData.append("interfaceName", "antu.space.provider.sservicebase.ServiceBaseMetaDataViewProvider");
+    formData.append("methodName", "getResourcePagedList");
+    formData.append("args[]", session.getItem('tokenV2'));
+    formData.append("args[]", `{"type":"${params.type}","pageIndex":${params.page},"pageSize":${params.pageSize} }`);
     return new Promise<void>((resolve, reject) => {
         defHttp.post({ url: Api.Login, params: formData, ...interfaceType })
             .then((r) => {

+ 9 - 1
src/views/dataAdmin/dataAdmin/configProcess/AddProcess.vue

@@ -194,6 +194,7 @@ export default defineComponent({
     const getTitle = computed(() =>
       !unref(isUpdate) ? (unref(postData) ? '查看流程配置' : '新增流程配置') : '编辑流程配置'
     );
+
     /**
      * 根据查询的接口数据设置表单数据
      */
@@ -209,12 +210,19 @@ export default defineComponent({
         formState.steps = [
           { xh: 1, name: flowInfo['FLOWNAME'], model: '1', dept: [], user: [], userList: [] },
         ];
+
         flowNode.map((item, index) => {
           const user = flowNodePerson.filter((fp) => item['ID'] === fp['FLOWNODEID']);
+          let model = '2' //并行
+          //判断是串行还是并行,如果存在生一个审核人或者下一个审核人则为逐级,否则就是并行
+          user.map(item =>{
+            if(item['NEXTUSERID'] !== '' || item['PREUSERID'] != '') model = '1'
+          })
+          
           formState.steps.push({
             xh: index + 2,
             name: item['NODENAME'],
-            model: '1',
+            model: model,
             dept: item['DEPTS'].split(','),
             user: user
               ? user.map((u) => {

+ 5 - 5
src/views/dataAdmin/dataAdmin/fileResourceUpload/fileUploadData.js

@@ -3,22 +3,22 @@ export const columns = [
   {
     title: '资源编号',
     dataIndex: 'serviceid',
-    width: 200,
+    width: 100,
   },
   {
     title: '资源名称',
     dataIndex: 'servicename',
-    width: 200,
+    width: 240,
   },
   {
     title: '类型',
     dataIndex: 'typename',
-    width: 200,
+    width: 90,
   },
   {
     title: '发布人',
     dataIndex: 'publisher',
-    width: 200,
+    width: 90,
   },
   {
     title: '发布时间',
@@ -493,7 +493,7 @@ export const fileFields = [
   {
     title: '操作',
     dataIndex: 'operation',
-    width: '10%',
+    width: '12%',
     slots: { customRender: 'operation' },
     align: 'center'
   },

+ 137 - 56
src/views/dataAdmin/dataAdmin/fileResourceUpload/index.vue

@@ -2,7 +2,11 @@
 <template>
   <div style="height: 100%; width: 100%; margin-top: 0; padding: 0">
     <!-- 使用搜索框和表格封装组件 -->
-    <BasicTable :rowSelection="{ type: 'checkbox' }" @register="registerTable" :clickToRowSelect="false">
+    <BasicTable
+      :rowSelection="{ type: 'checkbox' }"
+      @register="registerTable"
+      :clickToRowSelect="false"
+    >
       <!-- 表格右上角按钮 -->
       <template #toolbar>
         <!-- <Authority :value="authList.addAuth">
@@ -12,44 +16,59 @@
           <a-button type="primary" @click="addMethod">新增文件</a-button>
         </Authority>
         <Authority :value="authList.deleteAuth">
-          <Popconfirm title="您确定要批量删除数据" ok-text="确定" cancel-text="取消" @confirm="handleDeleteOrBatchDelete(null)">
+          <Popconfirm
+            title="您确定要批量删除数据"
+            ok-text="确定"
+            cancel-text="取消"
+            @confirm="handleDeleteOrBatchDelete(null)"
+          >
             <a-button type="primary" color="error" :disabled="hasBatchDelete"> 批量删除 </a-button>
           </Popconfirm>
         </Authority>
       </template>
       <!-- 表格操作栏 -->
       <template #action="{ record }">
-        <TableAction :actions="[
-          {
-            label: '浏览',
-            //auth: 'api:yt:role:saveOrUpdateRoleInfoWithMenu:update',
-            //icon: 'clarity:note-edit-line', //图标
-            onClick: handleEdit.bind(null, record),
-          },
-          {
-            label: '查看',
-            //auth: 'api:yt:role:saveOrUpdateRoleInfoWithMenu:update',
-            //icon: 'clarity:note-edit-line',
-            onClick: handleEdit.bind(null, record),
-          },
-          {
-            label: '编辑',
-            //auth: 'api:yt:role:saveOrUpdateRoleInfoWithMenu:update',
-            //icon: 'clarity:note-edit-line',
-            onClick: handleEdit.bind(null, record),
-          },
-          {
-            label: '删除',
-            //auth: 'api:yt:role:delete',
-            //icon: 'ant-design:delete-outlined',
-            color: 'error',
-            ifShow: true,
-            popConfirm: {
-              title: '是否确认删除',
-              confirm: handleDelete.bind(null, record),
+        <TableAction
+          :actions="[
+            {
+              label: '浏览',
+              //auth: 'api:yt:role:saveOrUpdateRoleInfoWithMenu:update',
+              //icon: 'clarity:note-edit-line', //图标
+              onClick: handleUpload.bind(null, record),
             },
-          },
-        ]" />
+            {
+              label: '查看',
+              //auth: 'api:yt:role:saveOrUpdateRoleInfoWithMenu:update',
+              //icon: 'clarity:note-edit-line',
+              onClick: handleView.bind(null, record),
+            },
+            {
+              label: '编辑',
+              //auth: 'api:yt:role:saveOrUpdateRoleInfoWithMenu:update',
+              //icon: 'clarity:note-edit-line',
+              color: 'warning',
+              onClick: handleEdit.bind(null, record),
+            },
+            {
+              label: '审核',
+              //auth: 'api:yt:role:saveOrUpdateRoleInfoWithMenu:update',
+              //icon: 'clarity:note-edit-line',
+              color: 'warning',
+              onClick: handleCheck.bind(null, record),
+            },
+            {
+              label: '删除',
+              //auth: 'api:yt:role:delete',
+              //icon: 'ant-design:delete-outlined',
+              color: 'error',
+              ifShow: true,
+              popConfirm: {
+                title: '是否确认删除',
+                confirm: handleDelete.bind(null, record),
+              },
+            },
+          ]"
+        />
       </template>
       <template #pdate="{ record }">
         <Tag :color="'red'">
@@ -60,14 +79,14 @@
         <Tag :style="`color:${record.status === 3 || record.status === 3 ? 'red' : '#05B069'};`">
           {{
             record.status === 0
-            ? '待审核'
-            : record.status === 1
+              ? '待审核'
+              : record.status === 1
               ? '审核通过'
               : record.status === 2
-                ? '审核不通过'
-                : record.status === 3
-                  ? '被驳回'
-                  : '未提交'
+              ? '审核不通过'
+              : record.status === 3
+              ? '被驳回'
+              : '未提交'
           }}
         </Tag>
       </template>
@@ -91,7 +110,9 @@ import { list } from '/@/api/resource/files';
 import { useBatchDelete } from '/@/hooks/web/useBatchDelete';
 import AddMethod from './AddMethod.vue';
 import Moment from 'moment';
-import { deleteService, deleteBatchService,queryResourceById } from '/@/api/resource/map';
+import { getFileUrl } from '/@/api/resource/files';
+import { deleteService, deleteBatchService, queryResourceById } from '/@/api/resource/map';
+import { session } from '/@/utils/Memory.js';
 
 export default defineComponent({
   name: 'mapUpload',
@@ -133,7 +154,7 @@ export default defineComponent({
       showIndexColumn: true,
       // 表格操作栏
       actionColumn: {
-        width: 200,
+        width: 220,
         title: '操作',
         dataIndex: 'action',
         slots: { customRender: 'action' },
@@ -146,7 +167,7 @@ export default defineComponent({
         redo: true,
         size: true,
         setting: false,
-        fullScreen: false
+        fullScreen: false,
       },
     });
     //
@@ -155,11 +176,11 @@ export default defineComponent({
     //
     selectionOptions.rowSelection.getCheckboxProps = (record) => {
       // Demo:status为1的选择框禁用
-      if (record.status === 1) {
-        return { disabled: true };
-      } else {
-        return { disabled: false };
-      }
+      // if (record.status === 1) {
+      //   return { disabled: true };
+      // } else {
+      //   return { disabled: false };
+      // }
     };
     //
     nextTick(() => {
@@ -171,23 +192,80 @@ export default defineComponent({
         isUpdate: false,
       });
     }
-    // 编辑
-    function handleEdit(record) {
+
+    /**
+     * 查看
+     */
+    async function handleView(record) {
+      const res = await queryResourceById(record?.serviceid);
+      if (res) {
+        const result = Object.assign(res.metadata, res.servicebase);
+        openModal(true, {
+          record: result,
+          isUpdate: true,
+        });
+      }
+    }
+
+    /**
+     * 文件下载
+     */
+    async function handleUpload(record) {
+      console.log('下载文件', record);
+      const obj = {
+        id: record['fileid'],
+        userid: record['userid'],
+        parentId: session.getItem('sysFild').dirId,
+      };
+      const res = await getFileUrl(obj);
+      if (res) {
+        const fileName = res.fileName;
+        const url = res.url;
+        // fetch(url)
+        //   .then((res) => res.blob())
+        //   .then((blob) => {
+        //     // 将链接地址字符内容转变成blob地址
+        //     const a = document.createElement('a');
+        //     a.href = URL.createObjectURL(blob);
+        //     //测试链接console.log(a.href)
+        //     a.download = fileName; // 下载文件的名字
+        //     document.body.appendChild(a);
+        //     a.click();
+        //   });
+        window.open(url);
+      }
+    }
+
+    /**
+     * 编辑
+     */
+    async function handleEdit(record) {
       // openDrawer(true, {
       //   record,
       //   isUpdate: true,
       // });
-      openModal(true, {
-        record,
-        isUpdate: true,
-      });
+      const res = await queryResourceById(record?.serviceid);
+      if (res) {
+        const result = Object.assign(res.metadata, res.servicebase);
+        openModal(true, {
+          record: result,
+          isUpdate: true,
+        });
+      }
+    }
+
+    /**
+     * 点击审核
+    */
+    async function handleCheck(record){
+      console.log('审核数据',record)
     }
     //删除
-    async function handleDelete(record){
-      const res = await deleteService(record.serviceid)
-      if(res && res.status==='0'){
+    async function handleDelete(record) {
+      const res = await deleteService(record.serviceid);
+      if (res && res.status === '0') {
         reload();
-        createMessage.success('删除成功!')
+        createMessage.success('删除成功!');
       }
     }
 
@@ -198,7 +276,10 @@ export default defineComponent({
       authList,
       registerTable,
       addMethod,
+      handleView,
       handleEdit,
+      handleUpload,
+      handleCheck,
       handleSuccess,
       hasBatchDelete,
       handleDelete,

+ 3 - 2
src/views/dataAdmin/dataAdmin/flowStep/index.vue

@@ -2,7 +2,7 @@
  * @Author: tengmingxue 1473375109@qq.com
  * @Date: 2023-08-30 17:25:03
  * @LastEditors: tengmingxue 1473375109@qq.com
- * @LastEditTime: 2023-09-22 17:21:45
+ * @LastEditTime: 2023-09-25 16:25:12
  * @FilePath: \xld-gis-admin\src\views\dataAdmin\dataAdmin\flowStep\index.vue
  * @Description: 流程图表
 -->
@@ -130,7 +130,7 @@ export default defineComponent({
       }
     };
 
-    const setFlowNodes = (flow) => {
+    const setFlowNodes = async (flow) => {
       if (!flow?.flowInfo || !flow?.flowNode || !flow?.flowNodePerson) {
         createMessage.error(`获取流程【${data.flowName}】配置信息异常!请联系管理员检查!`);
         return;
@@ -151,6 +151,7 @@ export default defineComponent({
         },
       ];
       const step = getFlowNodes(flow.flowNode, flow.flowNodePerson);
+      console.log('步骤',step)
       if(step) data.steps.push(...step)
       const length = step.length
       //最后一步默认完成

+ 8 - 6
src/views/dataAdmin/dataAdmin/mapUpload/MapSourceModal.vue

@@ -2,7 +2,7 @@
  * @Author: tengmingxue 1473375109@qq.com
  * @Date: 2023-08-15 16:19:10
  * @LastEditors: tengmingxue 1473375109@qq.com
- * @LastEditTime: 2023-09-24 11:25:35
+ * @LastEditTime: 2023-09-25 15:05:22
  * @FilePath: \xld-gis-admin\src\views\resource\map\MapSourceModal.vue
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 -->
@@ -18,10 +18,10 @@
       <a-tabs v-model:activeKey="activeKey" class="res-a-tabs">
         <a-tab-pane key="1" tab="地图资源信息">
           <!-- <BasicForm @register="registerForm"></BasicForm> -->
-          <source-detail ref="refSourceDetail" @RtnMain="RtnMain" :formData="formData" :isUpdate="isUpdate" :isView="isView"></source-detail>
+          <source-detail ref="refSourceDetail" @RtnMain="RtnMain" :formData="formData" :isUpdate="isUpdate" :isView="isView" :flowName="flowName"></source-detail>
         </a-tab-pane>
         <a-tab-pane key="2" tab="流程信息">
-          <FlowStep :flowTitle="'地图资源上传'" :flowCode="'20220523001'"></FlowStep>
+          <FlowStep :flowTitle="flowName" :flowCode="'20220523001'"></FlowStep>
         </a-tab-pane>
       </a-tabs>
     </div>
@@ -51,11 +51,12 @@ export default defineComponent({
   },
   emits: ['success', 'register'],
   setup(_, { emit }) {
-    const activeKey = ref('1');
-    const refSourceDetail = ref(null);
+    const activeKey = ref('1')
+    const refSourceDetail = ref(null)
     let formData = ref(null)
-    let isUpdate = ref(true);
+    let isUpdate = ref(true)
     let isView = ref(false)
+    const flowName= ref('地图资源上传')
     const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
       setModalProps({ confirmLoading: false });
       isUpdate.value = !!data?.isUpdate;
@@ -74,6 +75,7 @@ export default defineComponent({
     onMounted(() => {});
     return {
       activeKey,
+      flowName,
       registerModal,
       handleSubmit,
       getTitle,

+ 54 - 17
src/views/dataAdmin/dataAdmin/mapUpload/SourceDetail.vue

@@ -2,7 +2,7 @@
  * @Author: tengmingxue 1473375109@qq.com
  * @Date: 2023-08-15 22:08:21
  * @LastEditors: tengmingxue 1473375109@qq.com
- * @LastEditTime: 2023-09-24 11:46:09
+ * @LastEditTime: 2023-09-25 15:19:10
  * @FilePath: \xld-gis-admin\src\views\resource\map\SourceDetail.vue
  * @Description: 地图资源明细界面
 -->
@@ -230,7 +230,7 @@
             </a-form-item>
           </a-col>
 
-          <a-col :span="12" class="form-col">
+          <a-col :span="5" class="form-col">
             <a-form-item
               ref="runtimestatus"
               label="运行状态"
@@ -246,7 +246,7 @@
             </a-form-item>
           </a-col>
 
-          <a-col :span="4" class="form-col">
+          <a-col :span="5" class="form-col">
             <a-form-item ref="public" label="是否公开" name="public" class="label-form-item">
               <a-switch
                 checked-children=""
@@ -256,7 +256,7 @@
               />
             </a-form-item>
           </a-col>
-          <a-col :span="4" class="form-col">
+          <a-col :span="5" class="form-col">
             <a-form-item ref="share" label="是否共享" name="share" class="label-form-item">
               <a-switch
                 checked-children=""
@@ -266,7 +266,7 @@
               />
             </a-form-item>
           </a-col>
-          <a-col :span="4" class="form-col">
+          <a-col :span="5" class="form-col">
             <a-form-item
               ref="externalApply"
               label="是否外部申请"
@@ -281,7 +281,7 @@
               />
             </a-form-item>
           </a-col>
-          <a-col :span="6" class="form-col">
+          <a-col :span="4" class="form-col">
             <a-form-item ref="searched" label="是否展示" name="searched" class="label-form-item">
               <a-switch
                 checked-children=""
@@ -302,7 +302,7 @@
               <a-switch
                 checked-children=""
                 un-checked-children=""
-                v-model:checked="formState.searched"
+                v-model:checked="formState.immExaim"
                 :disabled="isView"
               />
             </a-form-item>
@@ -336,6 +336,7 @@ const { t } = useI18n(); //加载国际化
 import { useI18n } from '/@/hooks/web/useI18n';
 import Moment from 'moment';
 import { insertService, updateService } from '/@/api/resource/map';
+import { getFlowConfigByBusinessName, submitExamine } from '/@/api/resource/examine';
 import {
   serviceTypes,
   serviceTags,
@@ -347,10 +348,12 @@ import {
   ApplProcesses,
 } from '../sysDic';
 import { session } from '/@/utils/Memory.js';
+import { message } from 'ant-design-vue';
 const props = {
   formData: { type: Object, default: ref(null) },
   isUpdate: { type: Boolean, default: ref(false) },
   isView: { type: Boolean, default: ref(false) },
+  flowName: { type: String, default: '' },
 };
 interface FormState {
   code: string;
@@ -390,6 +393,7 @@ export default defineComponent({
       detail: props.formData,
       isUpdate: props.isUpdate,
       isView: props.isView,
+      flowName: props.flowName,
       fileList: [],
       serviceTags: serviceTags,
       secrets: secrets, //密级
@@ -479,6 +483,13 @@ export default defineComponent({
       }
     );
 
+    watch(
+      () => props.flowName,
+      (val) => {
+        data.flowName = val;
+      }
+    );
+
     const submitForm = () => {
       try {
         formRef.value
@@ -502,7 +513,8 @@ export default defineComponent({
                     const result = JSON.parse(res['result']);
                     console.log('发起流程审核工作', result);
                     const serviceid = result.sucList[0].servicebase.serviceid;
-                    console.log('业务id', serviceid);
+                    //console.log('业务id', serviceid);
+                    submitExam(serviceid);
                   }
                   createMessage.success('新增地图资源成功!');
                   resetForm();
@@ -580,13 +592,12 @@ export default defineComponent({
         username: userinfo?.EMPLOYEE?.NAME, //'系统管理员',
         userid: userinfo?.EMPLOYEE?.EMPLOYEE_ID, //'27AF004A-8BDN-885T-30FU-89DE3388762B',
       };
-      if(data.isUpdate){
-        Object.assign(servicebase,{serviceid:data.detail.serviceid})
-
-        Object.assign(metadata,{
-          serviceid:data.detail.serviceid,
-          id:data.detail.id,
-        })
+      if (data.isUpdate) {
+        Object.assign(servicebase, { serviceid: data.detail.serviceid });
+        Object.assign(metadata, {
+          serviceid: data.detail.serviceid,
+          id: data.detail.id,
+        });
       }
       return {
         type: 'MR',
@@ -629,7 +640,32 @@ export default defineComponent({
       formState.shsqlc = data.detail?.shsqlc;
       formState.share = data.detail.servicetypepublic === '0' ? false : true;
       formState.externalApply = data.detail.externalApply === '0' ? false : true;
-      formState.immExaim = data.detail.ishistory === '0' ? false : true;
+      //formState.immExaim = data.detail.ishistory === '0' ? false : true;
+    };
+
+    /**
+     * 发起审核
+     */
+    const submitExam = async (serviceid) => {
+      const res = (await getFlowConfigByBusinessName(data.flowName)) as any;
+      if (res && res.flowInfo) {
+        const param = {
+          bussInfo: {
+            bussname: res.flowInfo['FLOWNAME'], //流程名称
+            flowid: res.flowInfo['ID'], //流程id
+            serverids: serviceid, //服务id
+          },
+        };
+        const result = await submitExamine(param) as any
+        if(result){
+          console.log('已提交审核',result)
+          createMessage.success('已提交审核,请及时关注审核信息!')
+        }
+      }
+      else{
+        createMessage.error('未查到【' + data.flowName +',请配置完成在提交审核');
+        return
+      }
     };
 
     /**
@@ -639,7 +675,7 @@ export default defineComponent({
       console.log('上传缩略图改变', file, fileList);
     };
 
-    onMounted(() => {
+    onMounted(async () => {
       resetForm();
     });
     return {
@@ -652,6 +688,7 @@ export default defineComponent({
       resetForm,
       createMessage,
       setSubmitForm,
+      submitExam,
       setFormData,
       uploadFilesChange,
     };

+ 5 - 7
src/views/dataAdmin/dataAdmin/mapUpload/index.vue

@@ -72,14 +72,15 @@
         <Tag :style="`color:${record.status === 3 || record.status === 3 ? 'red' : '#05B069'};`">
           {{
             record.status === 0
-              ? '审核'
+              ? '审核'
               : record.status === 1
               ? '审核通过'
               : record.status === 2
               ? '审核不通过'
               : record.status === 3
               ? '被驳回'
-              : '未提交'
+              : record.status === '' 
+              ? '未提交' : '未提交'
           }}
         </Tag>
       </template>
@@ -158,7 +159,7 @@ export default defineComponent({
       bordered: true,
       showIndexColumn: true,
       actionColumn: {
-        width: 200,
+        width: 220,
         title: '操作',
         dataIndex: 'action',
         slots: { customRender: 'action' },
@@ -223,10 +224,7 @@ export default defineComponent({
     }
 
     function handleExam(record: Recordable) {
-      openModal(true, {
-        record,
-        isUpdate: true,
-      });
+      console.log('审核信息',record)
     }
 
     function handleViewMap(record: Recordable) {

+ 7 - 6
src/views/dataAdmin/dataAdmin/sceneResourceUpload/index.vue

@@ -43,6 +43,7 @@
               label: '编辑',
               //auth: 'api:yt:role:saveOrUpdateRoleInfoWithMenu:update',
               icon: '', //'clarity:note-edit-line',
+              color: 'warning',
               onClick: handleEdit.bind(null, record),
             },
             {
@@ -164,7 +165,7 @@ export default defineComponent({
       showIndexColumn: true,
       // 表格操作栏
       actionColumn: {
-        width: 200,
+        width: 220,
         title: '操作',
         dataIndex: 'action',
         slots: { customRender: 'action' },
@@ -186,11 +187,11 @@ export default defineComponent({
     //
     selectionOptions.rowSelection.getCheckboxProps = (record: Recordable) => {
       // Demo:status为1的选择框禁用
-      if (record.status === 1) {
-        return { disabled: true };
-      } else {
-        return { disabled: false };
-      }
+      // if (record.status === 1) {
+      //   return { disabled: true };
+      // } else {
+      //   return { disabled: false };
+      // }
     };
     //
     nextTick(() => {

+ 0 - 106
src/views/resource/examine/MapSourceModal.vue

@@ -1,106 +0,0 @@
-<!--
- * @Author: tengmingxue 1473375109@qq.com
- * @Date: 2023-08-15 16:19:10
- * @LastEditors: tengmingxue 1473375109@qq.com
- * @LastEditTime: 2023-08-17 14:28:44
- * @FilePath: \xld-gis-admin\src\views\resource\map\MapSourceModal.vue
- * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
--->
-<template>
-  <BasicModal
-    width="1200px"
-    v-bind="$attrs"
-    @register="registerModal"
-    :title="getTitle"
-    @ok="handleSubmit"
-  >
-    <div style="height: 60vh" class="res-form-container">
-      <a-tabs v-model:activeKey="activeKey" class="res-a-tabs">
-        <a-tab-pane key="1" tab="地图资源信息">
-          <!-- <BasicForm @register="registerForm"></BasicForm> -->
-          <source-detail ref="refSourceDetail" @RtnMain="RtnMain" :formData="formData" :isUpdate="isUpdate"></source-detail>
-        </a-tab-pane>
-        <a-tab-pane key="2" tab="流程信息" force-render>
-          <div class="tab2"></div>
-        </a-tab-pane>
-      </a-tabs>
-    </div>
-  </BasicModal>
-</template>
-  <script lang="ts">
-import { defineComponent, ref, computed, unref, reactive, onMounted } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { BasicForm, useForm } from '/@/components/Form/index';
-import { formSchema } from './map.data';
-import { BasicTree } from '/@/components/Tree';
-import { PlusOutlined } from '@ant-design/icons-vue';
-import SourceDetail from './SourceDetail.vue';
-
-export default defineComponent({
-  name: 'AccountModal',
-  components: {
-    BasicModal,
-    BasicForm,
-    BasicTree,
-    PlusOutlined,
-    SourceDetail,
-    VNodes: (_, { attrs }) => {
-      return attrs.vnodes;
-    },
-  },
-  emits: ['success', 'register'],
-  setup(_, { emit }) {
-    const data = reactive({
-      activeKey: '2',
-    });
-    const refSourceDetail = ref(null);
-    let formData = ref(null)
-    const isUpdate = ref(true);
-    const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
-      setModalProps({ confirmLoading: false });
-      isUpdate.value = !!data?.isUpdate;
-      if(isUpdate.value) formData.value = data.record
-    });
-    const getTitle = computed(() => (!unref(isUpdate) ? '新增地图资源' : '编辑地图资源'));
-
-    async function handleSubmit() {
-      refSourceDetail.value.submitForm();
-    }
-    const RtnMain = (status) => {
-      console.log('操作状态',status)
-      emit('success')
-    }
-
-    onMounted(() => {});
-    return {
-      ...ref(data),
-      registerModal,
-      handleSubmit,
-      getTitle,
-      refSourceDetail,
-      isUpdate,
-      formData,
-      RtnMain,
-    };
-  },
-});
-</script>
-  <style scoped lang="less">
-:deep(.vben-basic-tree) {
-  width: 100% !important;
-}
-
-:deep(.is-unflod) {
-  display: none !important;
-}
-
-:deep(.is-flod) {
-  display: none !important;
-}
-:deep(.res-form-container) {
-  .res-a-tabs {
-    margin-top: 61px !important;
-  }
-}
-</style>
-  

+ 0 - 610
src/views/resource/examine/SourceDetail.vue

@@ -1,610 +0,0 @@
-<!--
- * @Author: tengmingxue 1473375109@qq.com
- * @Date: 2023-08-15 22:08:21
- * @LastEditors: tengmingxue 1473375109@qq.com
- * @LastEditTime: 2023-08-17 15:24:30
- * @FilePath: \xld-gis-admin\src\views\resource\map\SourceDetail.vue
- * @Description: 地图资源明细界面
--->
-<template>
-  <div class="source-detail">
-    <a-form ref="formRef" :model="formState" :rules="rules" style="width: 100%">
-      <div class="compontents">
-        <div class="title">基本信息</div>
-        <a-row class="form-container">
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="code" label="资源编码" name="code" class="label-form-item">
-              <a-input v-model:value="formState.code" />
-            </a-form-item>
-          </a-col>
-          <a-col :span="12" class="form-col">
-            <a-form-item
-              ref="servicename"
-              label="资源名称"
-              name="servicename"
-              class="label-form-item"
-            >
-              <a-input v-model:value="formState.servicename" />
-            </a-form-item>
-          </a-col>
-
-          <a-col :span="12" class="form-col">
-            <a-form-item
-              ref="servicealiasname"
-              label="资源别名"
-              name="servicealiasname"
-              class="label-form-item"
-            >
-              <a-input v-model:value="formState.servicealiasname" />
-            </a-form-item>
-          </a-col>
-
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="keywords" label="资源标签" name="keywords" class="label-form-item">
-              <a-select v-model:value="formState.keywords" mode="multiple">
-                <template v-for="tag in serviceTags" :key="tag.code">
-                  <a-select-option :value="tag.value">{{ tag.label }}</a-select-option>
-                </template>
-              </a-select>
-            </a-form-item>
-          </a-col>
-
-          <a-col :span="24" class="form-col">
-            <a-form-item
-              ref="description"
-              label="资源描述"
-              name="description"
-              class="label-form-item"
-            >
-              <a-textarea v-model:value="formState.description" :rows="2" />
-            </a-form-item>
-          </a-col>
-
-          <a-col :span="24" class="form-col">
-            <a-form-item ref="thumbnail" label="缩略图" name="thumbnail" class="label-form-item">
-              <a-upload action="" v-model:file-list="fileList">
-                <a-button style="background-color: #0671dd; color: #fff; border-radius: 4px">
-                  <upload-outlined></upload-outlined>
-                  文件上传
-                </a-button>
-              </a-upload>
-            </a-form-item>
-          </a-col>
-        </a-row>
-      </div>
-
-      <div class="compontents">
-        <div class="title">描述信息</div>
-        <a-row class="form-container">
-          <a-col :span="12" class="form-col">
-            <a-form-item
-              ref="servicetype"
-              label="资源类型"
-              name="servicetype"
-              class="label-form-item"
-            >
-              <a-select v-model:value="formState.servicetype">
-                <template v-for="tag in serviceTypes" :key="tag.id">
-                  <a-select-option :value="tag.id">{{ tag.name }}</a-select-option>
-                </template>
-              </a-select>
-            </a-form-item>
-          </a-col>
-
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="coordinate" label="坐标系" name="coordinate" class="label-form-item">
-              <a-select v-model:value="formState.coordinate">
-                <template v-for="tag in sysCoors" :key="tag.GEOMNAME">
-                  <a-select-option :value="tag.GEOMNAME">{{ tag.GEOMTITLE }}</a-select-option>
-                </template>
-              </a-select>
-            </a-form-item>
-          </a-col>
-          <a-col :span="24" class="form-col">
-            <a-form-item ref="mapingurl" label="服务地址" name="mapingurl" class="label-form-item">
-              <a-input v-model:value="formState.mapingurl" />
-            </a-form-item>
-          </a-col>
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="dataScope" label="数据范围" name="dataScope" class="label-form-item">
-              <a-input v-model:value="formState.dataScope" />
-            </a-form-item>
-          </a-col>
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="source" label="数据来源" name="source" class="label-form-item">
-              <a-input v-model:value="formState.source" />
-            </a-form-item>
-          </a-col>
-
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="restype" label="密级" name="secrets" class="label-form-item">
-              <a-select v-model:value="formState.secrets">
-                <template v-for="tag in secrets" :key="tag.code">
-                  <a-select-option :value="tag.code">{{ tag.name }}</a-select-option>
-                </template>
-              </a-select>
-            </a-form-item>
-          </a-col>
-          <a-col :span="12" class="form-col">
-            <a-form-item
-              ref="sourcetable"
-              label="数据表"
-              name="sourcetable"
-              class="label-form-item"
-            >
-              <a-input v-model:value="formState.formdatabase" />
-            </a-form-item>
-          </a-col>
-
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="collect" label="保管单位" name="collect" class="label-form-item">
-              <a-select v-model:value="formState.collect">
-                <template v-for="tag in collectDept" :key="tag.code">
-                  <a-select-option :value="tag.code">{{ tag.name }}</a-select-option>
-                </template>
-              </a-select>
-            </a-form-item>
-          </a-col>
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="respUnit" label="责任处室" name="respUnit" class="label-form-item">
-              <a-select v-model:value="formState.respUnit">
-                <template v-for="tag in respDept" :key="tag.code">
-                  <a-select-option :value="tag.code">{{ tag.name }}</a-select-option>
-                </template>
-              </a-select>
-            </a-form-item>
-          </a-col>
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="source" label="发布日期" name="source" class="label-form-item">
-              <!-- <a-input v-model:value="formState.publishtime" disabled /> -->
-              <a-date-picker
-                v-model:value="formState.publishtime"
-                format="YYYY-MM-DD hh:mm:ss"
-                style="width: 100%"
-                disabled
-                show-time
-              >
-                <template #renderExtraFooter>extra footer</template>
-              </a-date-picker>
-            </a-form-item>
-          </a-col>
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="source" label="发布者" name="source" class="label-form-item">
-              <a-input v-model:value="formState.publisher" disabled />
-            </a-form-item>
-          </a-col>
-
-          <a-col :span="12" class="form-col">
-            <a-form-item
-              ref="updatetype"
-              label="更新方式"
-              name="updatetype"
-              class="label-form-item"
-            >
-              <a-input v-model:value="formState.updateType" />
-            </a-form-item>
-          </a-col>
-          <a-col :span="12" class="form-col">
-            <a-form-item
-              ref="updatetime"
-              label="更新时间"
-              name="updatetime"
-              class="label-form-item"
-            >
-              <a-date-picker
-                v-model:value="formState.updatetime"
-                format="YYYY-MM-DD hh:mm:ss"
-                style="width: 100%"
-                disabled
-                show-time
-              >
-                <template #renderExtraFooter>extra footer</template>
-              </a-date-picker>
-            </a-form-item>
-          </a-col>
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="epsgcode" label="EPSGCode" name="epsgcode" class="label-form-item">
-              <a-select v-model:value="formState.epsgcode">
-                <template v-for="tag in EPSGCodes" :key="tag.code">
-                  <a-select-option :value="tag.code">{{ tag.name }}</a-select-option>
-                </template>
-              </a-select>
-            </a-form-item>
-          </a-col>
-
-          <a-col :span="12" class="form-col">
-            <a-form-item
-              ref="runtimestatus"
-              label="运行状态"
-              name="runtimestatus"
-              class="label-form-item"
-            >
-              <a-switch
-                checked-children=""
-                un-checked-children=""
-                v-model:checked="formState.runtimestatus"
-              />
-            </a-form-item>
-          </a-col>
-
-          <a-col :span="6" class="form-col">
-            <a-form-item ref="public" label="是否公开" name="public" class="label-form-item">
-              <a-switch
-                checked-children=""
-                un-checked-children=""
-                v-model:checked="formState.public"
-              />
-            </a-form-item>
-          </a-col>
-          <a-col :span="6" class="form-col">
-            <a-form-item ref="share" label="是否共享" name="share" class="label-form-item">
-              <a-switch
-                checked-children=""
-                un-checked-children=""
-                v-model:checked="formState.share"
-              />
-            </a-form-item>
-          </a-col>
-          <a-col :span="6" class="form-col">
-            <a-form-item
-              ref="externalApply"
-              label="是否外部申请"
-              name="externalApply"
-              class="label-form-item"
-            >
-              <a-switch
-                checked-children=""
-                un-checked-children=""
-                v-model:checked="formState.externalApply"
-              />
-            </a-form-item>
-          </a-col>
-          <a-col :span="6" class="form-col">
-            <a-form-item ref="searched" label="是否展示" name="searched" class="label-form-item">
-              <a-switch
-                checked-children=""
-                un-checked-children=""
-                v-model:checked="formState.searched"
-              />
-            </a-form-item>
-          </a-col>
-        </a-row>
-      </div>
-    </a-form>
-  </div>
-</template>
-<script lang="ts">
-import {
-  defineComponent,
-  ref,
-  toRefs,
-  toRaw,
-  unref,
-  computed,
-  unref,
-  nextTick,
-  reactive,
-  UnwrapRef,
-  onMounted,
-  watch,
-} from 'vue';
-import { BasicForm, useForm } from '/@/components/Form/index';
-import { UploadOutlined } from '@ant-design/icons-vue';
-import { ValidateErrorEntity } from 'ant-design-vue/es/form/interface';
-import { useMessage } from '/@/hooks/web/useMessage';
-const { t } = useI18n(); //加载国际化
-// 加载菜单数据
-import { useI18n } from '/@/hooks/web/useI18n';
-import Moment from 'moment';
-import { insertService } from '/@/api/resource/map';
-import {
-  serviceTypes,
-  serviceTags,
-  secrets,
-  sysCoors,
-  respDept,
-  collectDept,
-  EPSGCodes,
-} from './map.data';
-import { session } from '/@/utils/Memory.js';
-const props = {
-  formData: { type: Object, default: ref(null) },
-  isUpdate: { type: Boolean, default: ref(false) },
-};
-interface FormState {
-  code: string;
-  servicename: string;
-  servicealiasname: string;
-  keywords: string[];
-  description: string;
-  servicetype: string;
-  coordinate: string;
-  mapingurl: string;
-  dataScope: string;
-  source: string;
-  secrets: string;
-  formdatabase: string;
-  collect: string;
-  respUnit: string;
-  publishtime: string;
-  publisher: string;
-  updateType: string;
-  updatetime: string;
-  epsgcode: string;
-  runtimestatus: boolean;
-  public: boolean;
-  share: boolean;
-  searched: boolean;
-  externalApply: boolean;
-  date1: undefined;
-}
-export default defineComponent({
-  name: 'SourceDetail',
-  components: { BasicForm, UploadOutlined },
-  props,
-  setup(props, { emit }) {
-    const data = reactive({
-      detail: props.formData,
-      isUpdate: props.isUpdate,
-      fileList: [],
-      serviceTags: serviceTags,
-      secrets: secrets, //密级
-      sysCoors: sysCoors, //坐标系
-      serviceTypes: serviceTypes, //资源类型
-      respDept: respDept, //责任科室
-      collectDept: collectDept, //保管部门
-      EPSGCodes: EPSGCodes, //EPSGCode
-    });
-    const formRef = ref();
-    const formState: UnwrapRef<FormState> = reactive({
-      code: '',
-      servicename: '',
-      servicealiasname: '',
-      keywords: [],
-      description: '',
-      servicetype: '',
-      coordinate: '',
-      mapingurl: '',
-      dataScope: '',
-      source: '',
-      secrets: '',
-      formdatabase: '',
-      collect: '',
-      respUnit: '',
-      publishtime: '',
-      publisher: '',
-      updateType: '',
-      updatetime: '',
-      epsgcode: '',
-      runtimestatus: true,
-      public: true,
-      share: true,
-      searched: true,
-      externalApply: true,
-      date1: undefined,
-    });
-    const moment = Moment;
-    const rules = {
-      servicename: [
-        { required: true, message: '请填写资源名称', trigger: 'blur' },
-        { min: 3, max: 20, message: '长度必须在3到20个字符', trigger: 'blur' },
-      ],
-      servicealiasname: [
-        { required: true, message: '请输入资源别名', trigger: 'blur' },
-        { min: 3, max: 20, message: '长度必须在3到20个字符', trigger: 'blur' },
-      ],
-      systag: [{ required: true, message: '请选择系统标签', trigger: 'change' }],
-      servicetype: [{ required: true, message: '请选择资源类型', trigger: 'change' }],
-      coordinate: [{ required: true, message: '请选择坐标系', trigger: 'change' }],
-      mapingurl: [{ required: true, message: '请输入服务地址', trigger: 'blur' }],
-
-      date1: [{ required: true, message: 'Please pick a date', trigger: 'change', type: 'object' }],
-      type: [
-        {
-          type: 'array',
-          required: true,
-          message: 'Please select at least one activity type',
-          trigger: 'change',
-        },
-      ],
-      resource: [{ required: true, message: 'Please select activity resource', trigger: 'change' }],
-      desc: [{ required: true, message: 'Please input activity form', trigger: 'blur' }],
-    };
-    const { createMessage } = useMessage();
-    watch(
-      () => props.formData,
-      (obj) => {
-        data.detail = obj;
-        if (data.isUpdate) setFormData();
-      }
-    );
-    watch(
-      () => props.isUpdate,
-      (obj) => {
-        data.isUpdate = obj;
-      }
-    );
-    const submitForm = () => {
-      try {
-        formRef.value
-          .validate()
-          .then(async () => {
-            //console.log('values', formState, toRaw(formState));
-            const params = setSubmitForm();
-            if (params) {
-              if (data.isUpdate) {
-              } else {
-                const res = await insertService(params);
-                if (res && res?.status !== '-1') {
-                  createMessage.success('新增地图资源成功!');
-                  resetForm();
-                  emit('RtnMain', true);
-                } else createMessage.error('新增地图资源失败!,失败原因:' + res?.message, 1);
-              }
-            }
-          })
-          .catch((error: ValidateErrorEntity<FormState>) => {
-            createMessage.error('请完成必填信息!', 1);
-            console.log('error', error);
-          });
-      } catch (ex) {
-        console.log(ex);
-      }
-    };
-    const resetForm = () => {
-      formRef.value.resetFields();
-    };
-
-    /**
-     * 设置提交数据
-     */
-    const setSubmitForm = () => {
-      const userinfo = session.getItem('userInfo');
-      const collect = collectDept.find((item) => item.code === formState.collect);
-      const rboffices = respDept.find((item) => item.code === formState.respUnit);
-      const secretlevels = secrets.find((item) => item.code === formState.secrets);
-      const coor = sysCoors.find((item) => item.GEOMNAME === formState.coordinate);
-      const EPSGCode = EPSGCodes.find((item) => item.code === formState.epsgcode);
-      return {
-        type: 'MR',
-        servicebase: {
-          publisher: userinfo?.EMPLOYEE?.NAME, //'系统管理员',
-          username: userinfo?.EMPLOYEE?.NAME, //'系统管理员',
-          userid: userinfo?.EMPLOYEE?.EMPLOYEE_ID, //'27AF004A-8BDN-885T-30FU-89DE3388762B',
-          servicealiasname: formState.servicealiasname, //资源别名
-          description: formState.description, //资源描述
-          ispublic: formState.public ? '1' : '0', //是否公开
-          searched: formState.searched ? '1' : '0', //是否展示
-          servicetype: formState.servicetype, //资源类型
-          externalApply: formState.externalApply ? '1' : '0', //外部申请
-          runtimestatus: formState.runtimestatus ? '1' : '0', //运行状态
-          servicename: formState.servicename, //资源名
-          mapingurl: formState.mapingurl, //服务地址
-          otherService: '',
-        },
-        metadata: {
-          mapingurl: formState.mapingurl, //服务地址
-          name: formState.servicename, //资源名
-          servicealiasname: formState.servicealiasname, //资源别名
-          thumbnail: '',
-          description: formState.description,
-          keywords: formState.keywords.toString(),
-          servicetype: formState.servicetype, //资源类型
-          dataScope: formState.dataScope, //数据范围
-          updateType: formState.updateType, //更新方式
-          source: formState.source, //数据来源
-          formdatabase: formState.formdatabase, //数据表
-          rboffice: rboffices ? rboffices.codeName : '', //责任单位
-          keepingunit: collect ? collect.codeName : '', //保管单位
-          secretlevel: secretlevels ? secretlevels.codeName : '',
-          crs: coor ? coor.GEOMNAME : '',
-          epsgCode: EPSGCode ? EPSGCode.codeName : '',
-          workSpace: '',
-          runtimestatus: formState.runtimestatus ? '1' : '0', //运行状态
-          ishistory: '0',
-          shsqlc: 'ggdata',
-          urlInfo: '',
-          otherService: '',
-          bz: '',
-          ispublic: formState.public ? '1' : '0', //是否公开
-          searched: formState.searched ? '1' : '0', //是否展示
-          externalApply: formState.externalApply ? '1' : '0', //外部申请
-          isShow: formState.share ? '1' : '0',
-          publisher: userinfo?.EMPLOYEE?.NAME, //'系统管理员',
-          username: userinfo?.EMPLOYEE?.NAME, //'系统管理员',
-          userid: userinfo?.EMPLOYEE?.EMPLOYEE_ID, //'27AF004A-8BDN-885T-30FU-89DE3388762B',
-        },
-        sourcetraces: [],
-        dataVersionConf: {},
-      };
-    };
-    /**
-     * 设置表单数据
-     */
-    const setFormData = () => {
-      console.log('表单数据请看', data.detail);
-      console.log('服务类型', serviceTypes);
-      console.log('服务标签', serviceTags);
-      console.log('密级', secrets);
-      console.log('坐标系', sysCoors);
-      console.log('责任科室', respDept);
-      console.log('保管部门', collectDept);
-      console.log('EPSGCodes', EPSGCodes);
-      formState.public = data.detail.ispublic === '1' ? true : false;
-      formState.servicename = data.detail?.servicename;
-      formState.publishtime = data.detail?.publishdate
-        ? moment(data.detail?.publishdate).format('YYYY-MM-DD HH:mm:ss')
-        : '';
-      formState.publisher = data.detail?.publisher;
-      formState.runtimestatus = data.detail.runtimestatus === 0 ? false : true;
-      formState.servicealiasname = data.detail?.servicealiasname;
-      formState.code = data.detail?.serviceid;
-      formState.servicetype = data.detail?.servicetype;
-      formState.updatetime = data.detail?.updatedate
-        ? moment(data.detail?.updatedate).format('YYYY-MM-DD HH:mm:ss')
-        : '';
-      formState.servicetype = data.detail?.servicetype;
-      formState.coordinate = data.detail?.crs;
-      formState.searched = data.detail.searched === 0 ? false : true;
-    };
-
-    onMounted(() => {
-      resetForm();
-    });
-    return {
-      ...toRefs(data),
-      formRef,
-      moment,
-      rules,
-      formState,
-      submitForm,
-      resetForm,
-      createMessage,
-      setSubmitForm,
-      setFormData,
-    };
-  },
-});
-</script>
-  
-  <style scoped lang="less">
-.source-detail {
-  height: 100%;
-  width: 100%;
-  padding: 0 20px;
-  .compontents {
-    width: 100%;
-    height: auto;
-    .title {
-      height: 19px;
-      line-height: 18px;
-      padding-left: 6px;
-      margin-bottom: 20px;
-      border-left: 3px solid #0671dd;
-      font-family: Source Han Sans CN;
-      font-size: 16px;
-      font-weight: 350;
-      letter-spacing: 0px;
-    }
-    .form-container {
-      width: 100%;
-      height: auto;
-      .form-col {
-        height: 100%;
-      }
-      .form-col-left {
-        padding-right: 20px;
-      }
-    }
-  }
-}
-.label-form-item {
-  :deep(.ant-form-item-label) {
-    width: 90px;
-  }
-  :deep(.ant-form-item-control) {
-    width: calc(100% - 90px);
-  }
-}
-</style>
-  

+ 143 - 0
src/views/resource/examine/check.vue

@@ -0,0 +1,143 @@
+<template>
+  <BasicModal
+    width="600px"
+    v-bind="$attrs"
+    @register="registerModal"
+    :title="getTitle"
+    @ok="handleSubmit"
+    :useWrapper="true"
+    :minHeight="200"
+  >
+    <div style="height: 50vh">
+      <BasicForm @register="registerForm">
+        <template #descinfo>
+          <div class="basic-info-title">描述信息</div>
+        </template>
+      </BasicForm>
+    </div>
+  </BasicModal>
+</template>
+<script lang="ts">
+import { defineComponent, ref, computed, unref, onMounted } from 'vue';
+import { BasicModal, useModalInner } from '/@/components/Modal';
+import { BasicForm, useForm } from '/@/components/Form/index';
+import { accountFormSchema } from './map.data.ts';
+import { filterRoleList } from '/@/api/system/system';
+import { useMessage } from '/@/hooks/web/useMessage';
+import { TOption } from '/@/views/rule/linkedge/config/config.data';
+import { PlusOutlined } from '@ant-design/icons-vue';
+import { subminExamineResult } from '/@/api/resource/examine';
+import { session } from '/@/utils/Memory.js';
+
+export default defineComponent({
+  name: 'AccountModal',
+  components: {
+    BasicModal,
+    BasicForm,
+    PlusOutlined,
+  },
+  emits: ['success', 'register'],
+  setup(_, { emit }) {
+    const tenantLogo = ref('');
+    const loading = ref(false);
+    const roleOptions = ref<TOption[]>([]);
+    const isUpdate = ref(true);
+    const bussid = ref('');
+    const userinfo = session.getItem('userInfo');
+    const getRoleList = async () => {
+      const res = await filterRoleList();
+      console.log(res);
+      roleOptions.value = res.map((m) => {
+        return {
+          label: m.name,
+          value: m.id,
+        };
+      });
+    };
+    onMounted(async () => {
+      //await getRoleList();   //这个会导致查询失败
+    });
+
+    const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({
+      labelWidth: 100,
+      schemas: accountFormSchema,
+      showActionButtonGroup: false,
+      actionColOptions: {
+        span: 18,
+      },
+    });
+
+    const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
+      await resetFields();
+      setModalProps({ confirmLoading: false });
+      isUpdate.value = !!data?.isUpdate;
+      if (unref(isUpdate)) {
+        bussid.value = data.record.bussid;
+        setFieldsValue(data.record);
+      }
+    });
+    //const getTitle = computed(() => (!unref(isUpdate) ? '新增' : '编辑'));
+    const getTitle = computed(() => '审核');
+    async function handleSubmit() {
+      setModalProps({ confirmLoading: true });
+      try {
+        const { createMessage } = useMessage();
+        const values = await validate(); //validate(['parentId']);
+        console.log('userinfo',userinfo)
+        const params = {
+           bussInfoId:bussid.value,    //业务id
+           ispass:values.ispass,       //是否通过
+           opinion:values.opinion,      //意见
+        }
+        const res = await subminExamineResult(params) as any
+        if (res) {
+          closeModal();
+          emit('success');
+          createMessage.success(unref(isUpdate) ? '编辑成功' : '新增成功');
+        }
+      } finally {
+        setTimeout(() => {
+          setModalProps({ confirmLoading: false });
+        }, 300);
+      }
+    }
+
+    return {
+      registerModal,
+      registerForm,
+      handleSubmit,
+      getTitle,
+      roleOptions,
+      tenantLogo,
+      loading,
+    };
+  },
+});
+</script>
+<style scoped lang="less">
+:deep(.vben-basic-tree) {
+  width: 100% !important;
+}
+
+:deep(.is-unflod) {
+  display: none !important;
+}
+
+:deep(.is-flod) {
+  display: none !important;
+}
+.basic-info-title {
+  height: 19px;
+  line-height: 18px;
+  padding-left: 6px;
+  margin-left: 20px;
+  border-left: 3px solid #0671dd;
+  font-family: Source Han Sans CN;
+  font-size: 16px;
+  font-weight: 350;
+  letter-spacing: 0px;
+}
+:deep(.ant-calendar-picker) {
+  width: 100% !important;
+}
+</style>

+ 225 - 66
src/views/resource/examine/index.vue

@@ -1,8 +1,12 @@
 <template>
   <div class="examine-container">
     <div class="left-container">
-      <template v-for="source in sourceTypes" :key="source.name">
-        <div class="soure-item-row" :class="{ active: current === source.name }" @click="current = source.name">
+      <template v-for="source in sourceTypes" :key="source.type">
+        <div
+          class="soure-item-row"
+          :class="{ active: current === source.type }"
+          @click="selectHandle(source)"
+        >
           {{ `${source.name}(${source.num})` }}
         </div>
       </template>
@@ -11,29 +15,33 @@
       <BasicTable :rowSelection="{ type: 'checkbox' }" rowKey="serviceid" @register="registerTable">
         <template #toolbar>
           <Authority>
-            <a-button type="primary" @click="batchExamine" :disabled="hasBatchDelete">批量审核</a-button>
+            <a-button type="primary" @click="batchExamine" :disabled="hasBatchDelete"
+              >批量审核</a-button
+            >
           </Authority>
         </template>
 
         <template #action="{ record }">
-          <TableAction :actions="[
-            {
-              label: '浏览',
-              icon: '' /**clarity:note-edit-line*/,
-              onClick: handleEdit.bind(null, record),
-            },
-            {
-              label: '详情',
-              icon: '' /**clarity:note-edit-line*/,
-              onClick: handleEdit.bind(null, record),
-            },
-            {
-              label: '审核',
-              icon: '' /**clarity:note-edit-line*/,
-              color: 'warning',
-              onClick: handleEdit.bind(null, record),
-            },
-          ]" />
+          <TableAction
+            :actions="[
+              {
+                label: '浏览',
+                icon: '' /**clarity:note-edit-line*/,
+                onClick: handleVliew.bind(null, record),
+              },
+              {
+                label: '详情',
+                icon: '' /**clarity:note-edit-line*/,
+                onClick: handleDetail.bind(null, record),
+              },
+              {
+                label: '审核',
+                icon: '' /**clarity:note-edit-line*/,
+                color: 'warning',
+                onClick: handleEdit.bind(null, record),
+              },
+            ]"
+          />
         </template>
         <template #pdate="{ record }">
           <Tag :color="'red'">
@@ -44,55 +52,104 @@
           <Tag :style="`color:${record.status === 3 || record.status === 3 ? 'red' : ''};`">
             {{
               record.status === 0
-              ? '待审核'
-              : record.status === 1
+                ? '待审核'
+                : record.status === 1
                 ? '审核通过'
                 : record.status === 2
-                  ? '审核不通过'
-                  : record.status === 3
-                    ? '被驳回'
-                    : '未提交'
+                ? '审核不通过'
+                : record.status === 3
+                ? '被驳回'
+                : '未提交'
             }}
           </Tag>
         </template>
       </BasicTable>
-      <MapSourceModal @register="registerModal" @success="handleSuccess" />
+      <check v-if="ischect" @register="registerModal1" @success="handleSuccess" />
+      <map-resource-upload
+        v-if="!ischect && current === 'MR'"
+        @register="registerModalMR"
+        @success="handleSuccess"
+      ></map-resource-upload>
+      <scene-resource-upload
+        v-if="!ischect && current === 'ER'"
+        @register="registerModalER"
+        @success="handleSuccess"
+      ></scene-resource-upload>
+      <file-resource-upload
+        v-if="!ischect && current === 'DR'"
+        @register="registerModalDR"
+        @success="handleSuccess"
+      ></file-resource-upload>
     </div>
   </div>
 </template>
 <script lang="ts">
-import { defineComponent, nextTick, onBeforeMount, reactive, ref, toRef } from 'vue';
+import { defineComponent, nextTick, onBeforeMount, ref, watch } from 'vue';
 import { BasicTable, useTable, TableAction } from '/@/components/Table';
-import { delRole, getRoleListByPage, setRoleStatus } from '/@/api/system/system';
+import { delRole, setRoleStatus } from '/@/api/system/system';
 // import { useDrawer } from '/@/components/Drawer';
 import { useModal } from '/@/components/Modal';
-import MapSourceModal from './MapSourceModal.vue';
-import { columns, searchFormSchema } from './map.data';
+import MapResourceUpload from '/@/views/dataAdmin/dataAdmin/mapUpload/MapSourceModal.vue';
+import FileResourceUpload from '/@/views/dataAdmin/dataAdmin/fileResourceUpload/AddMethod.vue';
+import SceneResourceUpload from '/@/views/dataAdmin/dataAdmin/sceneResourceUpload/AddMethod.vue';
+import check from './check.vue';
+import { getFileUrl } from '/@/api/resource/files';
+import { session } from '/@/utils/Memory.js';
+import {
+  columns,
+  searchFormSchemaMR,
+  searchFormSchemaER,
+  searchFormSchemaDR,
+  searchFormSchemaSR,
+} from './map.data';
 import { RoleEnum } from '/@/enums/roleEnum';
 import { Authority } from '/@/components/Authority';
 import { useBatchDelete } from '/@/hooks/web/useBatchDelete';
 import { useMessage } from '/@/hooks/web/useMessage';
 import { Switch, Popconfirm } from 'ant-design-vue';
-import { list } from '/@/api/resource/map';
+import { listPage, queryResourceById } from '/@/api/resource/map';
 import Moment from 'moment';
-import { active } from 'sortablejs';
 
 export default defineComponent({
   name: 'RoleManagement',
-  components: { BasicTable, MapSourceModal, TableAction, Authority, Switch, Popconfirm },
+  components: {
+    BasicTable,
+    check,
+    TableAction,
+    Authority,
+    Switch,
+    Popconfirm,
+    MapResourceUpload,
+    FileResourceUpload,
+    SceneResourceUpload,
+  },
   setup() {
-    let current = ref('地图资源');
+    let current = ref('MR');
     //const [registerDrawer, { openDrawer }] = useDrawer();
     const [registerModal, { openModal }] = useModal();
+    const registerModal1 = registerModal,
+      openModal1 = openModal;
+    const registerModalMR = registerModal,
+      openModalMR = openModal;
+    const registerModalDR = registerModal,
+      openModalDR = openModal;
+    const registerModalER = registerModal,
+      openModalER = openModal;
+
+    const registerModalSR = registerModal,
+      openModalSR = openModal;
     const [registerTable, { getSelectRows, setProps, reload, setSelectedRowKeys }] = useTable({
-      title: '地图资源列表',
-      api: list, //求接口
+      title: '地图资源审核列表',
+      api: (param) => {
+        const data = Object.assign(param, { type: current.value });
+        return listPage(data);
+      }, //求接口
       //dataSource: dataSources, //表格的数据
       columns,
       rowKey: 'serviceid',
       formConfig: {
-        labelWidth: 100,
-        schemas: searchFormSchema,
+        labelWidth: 90,
+        schemas: searchFormSchemaMR,
       },
       useSearchForm: true,
       showTableSetting: true,
@@ -107,6 +164,7 @@ export default defineComponent({
       },
       pagination: {
         hideOnSinglePage: false,
+        pageSize: 20,
       },
       clickToRowSelect: true, //点击当前行多选框不选中,默认是true
       rowSelection: { type: 'checkbox' }, //是否有多选功能
@@ -114,50 +172,143 @@ export default defineComponent({
         redo: true,
         size: true,
         setting: false,
-        fullScreen: false
+        fullScreen: false,
       },
     });
     const moment = Moment;
-
+    const ischect = ref(false)
     const sourceTypes = ref([
-      { name: '地图资源', num: 4 },
-      { name: '场景资源', num: 5 },
-      { name: '文件资源', num: 10 },
-      { name: '组件资源', num: 2 },
+      { type: 'MR', name: '地图资源', num: 4 },
+      { type: 'ER', name: '场景资源', num: 5 },
+      { type: 'DR', name: '文件资源', num: 10 },
+      { type: 'SR', name: '组件资源', num: 2 },
     ]);
     const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions, resetSelectedRowKeys } =
       useBatchDelete(delRole, handleSuccess, setProps);
     selectionOptions.rowSelection.getCheckboxProps = (record: Recordable) => {
       // Demo:status为1的选择框禁用
-      if (record.status === 1) {
-        return { disabled: true };
-      } else {
-        return { disabled: false };
-      }
+      // if (record.status === 1) {
+      //   return { disabled: true };
+      // } else {
+      //   return { disabled: false };
+      // }
     };
+    watch(
+      () => current.value,
+      (val) => {
+        let searchFormSchema = searchFormSchemaMR;
+        let title = '地图资源审核列表';
+        if (val === 'MR') {
+          searchFormSchema = searchFormSchemaMR;
+          title = '地图资源审核列表';
+        } else if (val === 'ER') {
+          searchFormSchema = searchFormSchemaER;
+          title = '场景资源审核列表';
+        } else if (val === 'DR') {
+          searchFormSchema = searchFormSchemaDR;
+          title = '文件资源审核列表';
+        } else {
+          searchFormSchema = searchFormSchemaSR;
+          title = '组件资源审核列表';
+        }
+        setProps({
+          title: title,
+          formConfig: {
+            labelWidth: 90,
+            schemas: searchFormSchema,
+          },
+        });
+        reload();
+      }
+    );
     nextTick(() => {
       setProps(selectionOptions);
     });
 
-    function handleCreate() {
-      // openDrawer(true, {
-      //   isUpdate: false,
-      // });
-      openModal(true, {
-        isUpdate: false,
-      });
+    function selectHandle(record) {
+      current.value = record.type;
+    }
+
+    /**
+     * 详情
+     */
+    async function handleDetail(record: Recordable) {
+      ischect.value = false
+      const res = (await queryResourceById(record?.serviceid)) as any;
+      if (res) {
+        const result = Object.assign(res.metadata, res.servicebase);
+        if (current.value === 'MR') {
+          openModalMR(true, {
+            record: result,
+            isUpdate: true,
+          });
+        }
+
+        if (current.value === 'DR') {
+          openModalDR(true, {
+            record: result,
+            isUpdate: true,
+          });
+        }
+
+        if (current.value === 'ER') {
+          openModalER(true, {
+            record: result,
+            isUpdate: true,
+          });
+        }
+      }
     }
 
+    /**
+     * 审核
+     */
     function handleEdit(record: Recordable) {
-      // openDrawer(true, {
-      //   record,
-      //   isUpdate: true,
-      // });
-      openModal(true, {
+      ischect.value = true,
+      openModal1(true, {
         record,
         isUpdate: true,
       });
     }
+    /**
+     * 浏览
+     */
+    async function handleVliew(record: Recordable) {
+      //场景资源
+      if (current.value === 'ER') {
+        window.open(
+          `http://192.168.119.143:8080/onemapV5.0/sceneview.html?${record.serviceid}`,
+          'target',
+          ''
+        );
+      }
+      //地图资源
+      if (current.value === 'MR') {
+        window.open(
+          `http://192.168.119.143:8080/onemapV5.0/mapview.html?${record.serviceid}`,
+          'target',
+          ''
+        );
+      }
+      //文件资源
+      if (current.value === 'DR') {
+        const obj = {
+          id: record['fileid'],
+          userid: record['userid'],
+          parentId: session.getItem('sysFild').dirId,
+        };
+        const res = (await getFileUrl(obj)) as any;
+        if (res) {
+          const fileName = res.fileName;
+          console.log('下载文件', fileName);
+          const url = res.url;
+          window.open(url);
+        }
+      }
+      if (current.value === 'DR') {
+        console.log('组件');
+      }
+    }
 
     function handleSuccess() {
       openModal(false, {
@@ -189,18 +340,25 @@ export default defineComponent({
       }
     };
     const batchExamine = () => {
-      console.log('审核数据', getSelectRows())
+      console.log('审核数据', getSelectRows());
     };
 
-    onBeforeMount(async () => { });
+    onBeforeMount(async () => {});
 
     return {
       current,
       moment,
+      ischect,
       sourceTypes,
       registerTable,
       registerModal,
-      handleCreate,
+      registerModal1,
+      registerModalMR,
+      registerModalDR,
+      registerModalER,
+      registerModalSR,
+      handleVliew,
+      handleDetail,
       handleEdit,
       handleSuccess,
       RoleEnum,
@@ -208,6 +366,7 @@ export default defineComponent({
       handleDeleteOrBatchDelete,
       statusChange,
       batchExamine,
+      selectHandle,
     };
   },
 });

+ 149 - 1
src/views/resource/examine/map.data.ts

@@ -60,10 +60,128 @@ export const RoleMenuDictEnum: Recordable<{ key: string; keyType: KeysTypeEnum }
   [RoleEnum.CUSTOMER_USER]: { key: 'disabled_tenant_auth', keyType: KeysTypeEnum.DISABLED },
 };
 
+
+
 /**
  * 查询条件
 */
-export const searchFormSchema: FormSchema[] = [
+export const searchFormSchemaMR: FormSchema[] = [
+  {
+    field: 'type',
+    label: '类型',
+    component: 'Input',
+    colProps: { span: 5 },
+    defaultValue:'MR',
+    ifShow:false,
+    componentProps: {
+      maxLength: 255,
+    },
+  },
+  {
+    field: 'keywork',
+    label: '关键字',
+    component: 'Input',
+    colProps: { span: 5 },
+    componentProps: {
+      maxLength: 255,
+    },
+  },
+  {
+    field: 'checkStatus',
+    label: '审核状态',
+    component: 'Select',
+    componentProps: {
+      options: checkStatus,
+    },
+    colProps: { span: 5 },
+  },
+];
+
+/**
+ * 查询条件
+*/
+export const searchFormSchemaER: FormSchema[] = [
+  // {
+  //   field: 'type',
+  //   label: '类型',
+  //   component: 'Input',
+  //   colProps: { span: 5 },
+  //   defaultValue:'ER',
+  //   ifShow:false,
+  //   componentProps: {
+  //     maxLength: 255,
+  //   },
+  // },
+  {
+    field: 'keywork',
+    label: '关键字',
+    component: 'Input',
+    colProps: { span: 5 },
+    componentProps: {
+      maxLength: 255,
+    },
+  },
+  {
+    field: 'checkStatus',
+    label: '审核状态',
+    component: 'Select',
+    componentProps: {
+      options: checkStatus,
+    },
+    colProps: { span: 5 },
+  },
+];
+
+/**
+ * 查询条件
+*/
+export const searchFormSchemaDR: FormSchema[] = [
+  {
+    field: 'type',
+    label: '类型',
+    component: 'Input',
+    colProps: { span: 5 },
+    defaultValue:'DR',
+    ifShow:false,
+    componentProps: {
+      maxLength: 255,
+    },
+  },
+  {
+    field: 'keywork',
+    label: '关键字',
+    component: 'Input',
+    colProps: { span: 5 },
+    componentProps: {
+      maxLength: 255,
+    },
+  },
+  {
+    field: 'checkStatus',
+    label: '审核状态',
+    component: 'Select',
+    componentProps: {
+      options: checkStatus,
+    },
+    colProps: { span: 5 },
+  },
+];
+
+/**
+ * 查询条件
+*/
+export const searchFormSchemaSR: FormSchema[] = [
+  {
+    field: 'type',
+    label: '类型',
+    component: 'Input',
+    colProps: { span: 5 },
+    defaultValue:'SR',
+    ifShow:false,
+    componentProps: {
+      maxLength: 255,
+    },
+  },
   {
     field: 'keywork',
     label: '关键字',
@@ -163,3 +281,33 @@ export const formSchema: FormSchema[] = [
     },
   }
 ];
+
+
+// 新增表单配置
+export const accountFormSchema = [
+  {
+    field: 'ispass',
+    label: "审核结果", //状态
+    component: 'RadioButtonGroup',
+    required: true,
+    colProps: { span: 24 },
+    defaultValue: '0',
+    componentProps: {
+      options: [
+        { label: "通过", value: '0' },
+        { label: "不通过", value: '1' },
+      ],
+    },
+  },
+
+  {
+    field: 'opinion',
+    label: '审核意见',
+    required: true,
+    component: 'Input',
+    colProps: { span: 24 },
+    componentProps: {
+      placeholder: '请输入审核意见',
+    },
+  },
+]