XiaXxxxxx 2 years ago
parent
commit
b9a61d20f9

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

@@ -20,7 +20,8 @@ enum Api {
     GetFlowInfoDB = '/base-center/flow/getFlowInfoDB',//查询待办业务
     GetFlowInfoYB = '/base-center/flow/getFlowInfoYB',//查询待办业务
     GetResourceGroup = '/datasearch-center/space/getResourceGroup',//分组统计所有资源数量
-    SelectFlowRecord = "/base-center/flow/selectFlowRecord"//查询业务流转记录信息
+    SelectFlowRecord = "/base-center/flow/selectFlowRecord",//查询业务流转记录信息
+    SelectBussinfoById = '/base-center/flow/selectBussinfoById'
 }
 
 
@@ -269,3 +270,19 @@ export const queryTaskYbInfoPage = (params) => {
         })
     })
 };
+
+/**
+ * @description: 根据id查询业务信息
+ * @param: bussid:业务id
+ * @param: page:页数              must
+ * @param: rows:每页数据条数       must
+ * @param: keyStr:模糊查询关键字
+ * @param: userId:用户id
+ */
+export const queryBussInfoById = (params) => {
+    return new Promise<void>((resolve) => {
+        defHttp.post({ url: Api.SelectBussinfoById, params: params }).then((res) => {
+            resolve(res)
+        })
+    })
+};

+ 3 - 0
src/api/sys/menu.ts

@@ -62,6 +62,9 @@ export const structureList = () => {
       if (res.datas && res.datas.depInfo) {
         var a = tool.structureTree([res.datas]);
         console.log(a)
+        a[0].children.forEach(item=>{
+          item.level = 0
+        })
         resolve(a[0].children)
       } else {
         resolve([])

+ 1 - 1
src/layouts/default/header/components/user-dropdown/PersonInfoModal.vue

@@ -37,7 +37,7 @@
                     </a-form-item>
                     <!-- 登录名称 -->
                     <a-form-item label="登录名称" name="loginName">
-                        <a-input v-model:value="form.loginName" style="width: 100%" placeholder="请输入" />
+                        <a-input v-model:value="form.loginName" style="width: 100%" placeholder="请输入" disabled/>
                     </a-form-item>
                     <!-- 职责 -->
                     <a-form-item label="手机号码" name="mobile">

+ 5 - 1
src/layouts/default/header/index.vue

@@ -51,7 +51,7 @@
   </Header>
 </template>
 <script lang="ts">
-import { defineComponent, ref, unref, computed, onMounted, watch } from 'vue';
+import { defineComponent, ref, unref, computed, onMounted, watch, onBeforeUnmount } from 'vue';
 import { propTypes } from '/@/utils/propTypes';
 import { Layout } from 'ant-design-vue';
 import { AppLogo } from '/@/components/Application';
@@ -249,6 +249,10 @@ export default defineComponent({
       // 挂载消息提示组件
       tips.mount('#tips-container')
     })
+    onBeforeUnmount(() => {
+      smsTimer.value && clearInterval(smsTimer.value)
+      smsTimer.value = null
+    })
 
     return {
       settingImg,

+ 7 - 1
src/store/modules/app.ts

@@ -29,6 +29,8 @@ interface AppState {
   tipsShowFlag: Boolean;
   // 展示消息总数
   tipsTotalNum: String;
+  // 控制跳转审核
+  routerPushAuditFlag: Boolean
 }
 let timeId: TimeoutHandle;
 export const useAppStore = defineStore({
@@ -39,7 +41,8 @@ export const useAppStore = defineStore({
     projectConfig: Persistent.getLocal(PROJ_CFG_KEY),
     beforeMiniInfo: {},
     tipsShowFlag:false,
-    tipsTotalNum:'0'
+    tipsTotalNum:'0',
+    routerPushAuditFlag: false
   }),
   getters: {
     getPageLoading(): boolean {
@@ -71,6 +74,9 @@ export const useAppStore = defineStore({
     },
   },
   actions: {
+    setRouterPushAuditFlag(flag: Boolean): void {
+      this.routerPushAuditFlag = flag;
+    },
     setTipsShowFlag(flag: Boolean): void {
       this.tipsShowFlag = flag;
     },

+ 9 - 5
src/views/authorize/empower/index.vue

@@ -13,7 +13,7 @@
         </div>
         <div class="input" v-if="selectTypeValue != 'SR'">
           <span>应用系统</span>
-          <a-select allowClear="true" v-model:value="selectSystemValue" style="width: 200px"
+          <a-select allowClear v-model:value="selectSystemValue" style="width: 200px"
             :options="sysOptions"></a-select>
         </div>
         <div class="input">
@@ -38,11 +38,11 @@
             @click="handleAuditAll">批量审核</a-button>
         </template>
         <template #BLZT="{ record }">
-          <Tag :style="`color:${record.status === 3 || record.status === 3 ? 'red' : ''};`">
+          <a-tag :style="`color:${record.status === 3 || record.status === 3 ? 'red' : ''};`">
             {{
               record.BLZT == '在办' ? '审核中' : record.BLZT == '已办结' ? '审核完' : ''
             }}
-          </Tag>
+          </a-tag>
         </template>
         <template #action="{ record }">
           <TableAction :actions="[
@@ -84,18 +84,20 @@ import moment from 'moment';
 import { session } from '/@/utils/Memory';
 import { queryTaskInfoPage, queryTaskYbInfoPage } from '/@/api/resource/examine';
 import { getAppDesign } from '/@/api/oem';
-import { useRouter } from 'vue-router'
+import { useRouter } from 'vue-router';
 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 AssResourceUpload from '/@/views/dataAdmin/assembly/MapSourceModal.vue';
 import { useModal } from '/@/components/Modal';
 import { queryResourceById } from '/@/api/resource/map';
+import { useAppStore } from '/@/store/modules/app';
 
 export default defineComponent({
   name: 'Empowerment',
   components: { BasicTable, TableAction, AuditModal, MapResourceUpload, FileResourceUpload, SceneResourceUpload, AssResourceUpload },
   setup() {
+    const appStore = useAppStore();
     const [registerModal, { openModal }] = useModal();
     const ischect = ref(true)
     const searchValue = ref('')
@@ -280,6 +282,7 @@ export default defineComponent({
       bussInfo.value.resId = record.SERVICEID;
       bussInfo.value.record = record;
       showAuditModal.value = true;
+      appStore.setRouterPushAuditFlag(false)
     }
     //审核提交
     const onSubmit = (isPass) => {
@@ -291,7 +294,7 @@ export default defineComponent({
       // 请求后拿到数据,打开对应的资源审核弹窗
       nextTick(()=>{
         let dataList = getDataSource()
-        if(currRoute?.query?.bussid){
+        if(currRoute?.query?.bussid && appStore.routerPushAuditFlag){
           dataList.forEach(item=>{
             item.BUSSID === currRoute.query.bussid && handleAudit(item)
           })
@@ -300,6 +303,7 @@ export default defineComponent({
     }
 
     return {
+      ischect,
       handleTypeChange,
       showAuditModal,
       bussInfo,

+ 43 - 42
src/views/dataAdmin/dataAdmin/directoryManagement/DirManagerDrawer.vue

@@ -1,47 +1,48 @@
 <template>
-    <a-drawer :title="title" :visible="true" :width="540" :body-style="{ paddingBottom: '80px' }"
-        :footer-style="{ textAlign: 'right' }" @close="onClose">
-        <a-form ref="formRef" :model="form" :rules="rules" :label-col="labelCol" :wrapper-col="wrapperCol">
-            <!-- 上级节点名称 -->
-            <a-form-item label="上级节点" name="pName">
-                <a-input v-model:value="form.pName" disabled />
-            </a-form-item>
-            <!-- 节点名称 -->
-            <a-form-item label="节点名称" name="name">
-                <a-input v-model:value="form.name" />
-            </a-form-item>
-            <!-- 节点别名 -->
-            <a-form-item label="节点别名" name="alaisename">
-                <a-input v-model:value="form.alaisename" />
-            </a-form-item>
-            <!-- 节点编码 -->
-            <!-- <a-form-item label="节点编码" name="code">
+    <a-modal :title="title" :visible="true" :width="600" :footer-style="{ textAlign: 'right' }" @cancel="onClose" centered>
+        <div class="content" style="padding: 10px;">
+            <a-form ref="formRef" :model="form" :rules="rules" :label-col="labelCol" :wrapper-col="wrapperCol">
+                <!-- 上级节点名称 -->
+                <a-form-item label="上级节点" name="pName">
+                    <a-input v-model:value="form.pName" disabled />
+                </a-form-item>
+                <!-- 节点名称 -->
+                <a-form-item label="节点名称" name="name">
+                    <a-input v-model:value="form.name" />
+                </a-form-item>
+                <!-- 节点别名 -->
+                <a-form-item label="节点别名" name="alaisename">
+                    <a-input v-model:value="form.alaisename" />
+                </a-form-item>
+                <!-- 节点编码 -->
+                <!-- <a-form-item label="节点编码" name="code">
                 <a-input v-model:value="form.code" />
             </a-form-item> -->
-            <!-- 节点分类 -->
-            <a-form-item label="节点分类" name="type">
-                <a-input v-model:value="form.type" disabled />
-            </a-form-item>
-            <!-- 节点描述 -->
-            <a-form-item label="节点描述" name="remark">
-                <a-textarea v-model:value="form.remark" />
-            </a-form-item>
-        </a-form>
-        <div :style="{
-            position: 'absolute',
-            right: 0,
-            bottom: 0,
-            width: '100%',
-            borderTop: '1px solid #e9e9e9',
-            padding: '10px 16px',
-            background: '#fff',
-            textAlign: 'right',
-            zIndex: 1,
-        }">
-            <a-button style="margin-right: 8px" @click="onClose">取消</a-button>
-            <a-button type="primary" @click="onSubmit">确定</a-button>
+                <!-- 节点分类 -->
+                <a-form-item label="节点分类" name="type">
+                    <a-input v-model:value="form.type" disabled />
+                </a-form-item>
+                <!-- 节点描述 -->
+                <a-form-item label="节点描述" name="remark">
+                    <a-textarea v-model:value="form.remark" />
+                </a-form-item>
+            </a-form>
+            <div :style="{
+                position: 'absolute',
+                right: 0,
+                bottom: 0,
+                width: '100%',
+                borderTop: '1px solid #e9e9e9',
+                padding: '10px 16px',
+                background: '#fff',
+                textAlign: 'right',
+                zIndex: 1,
+            }">
+                <a-button style="margin-right: 8px" @click="onClose">取消</a-button>
+                <a-button type="primary" @click="onSubmit">确定</a-button>
+            </div>
         </div>
-    </a-drawer>
+    </a-modal>
 </template>
 <script>
 import { defineComponent, reactive, ref, onMounted, watch } from 'vue';
@@ -141,7 +142,7 @@ export default defineComponent({
                     2: JSON.stringify(form)
                 }
                 addNode(param).then(res => {
-                    if(res.status==='0'){
+                    if (res.status === '0') {
                         message.success('添加成功')
                         emit('onSubmit', true, form.name)
                     }
@@ -161,7 +162,7 @@ export default defineComponent({
             title,
             formRef,
             labelCol: { span: 6 },
-            wrapperCol: { span: 18 },
+            wrapperCol: { span: 16 },
             onClose,
             onSubmit,
             resetForm

+ 1 - 1
src/views/dataAdmin/dataAdmin/directoryManagement/index.vue

@@ -87,7 +87,7 @@
                 </a-col>
                 <a-col :span="8">
                   <a-form-item label="排序">
-                    <a-input v-model:value="formState.sortindex" disabled />
+                    <a-input v-model:value="formState.sortindex" />
                   </a-form-item>
                 </a-col>
               </a-row>

+ 23 - 58
src/views/dataAdmin/dataAdmin/resourceCataloging/index.vue

@@ -27,21 +27,18 @@
             <a-row>
               <a-col :span="10">
                 类型:
-                <!-- <a-checkbox v-model:checked="checked.checked1" @change="(e)=>{selectType(e)}">地图MR</a-checkbox>
-              <a-checkbox v-model:checked="checked.checked2" @change="(e)=>{selectType(e)}">场景ER</a-checkbox>
-              <a-checkbox v-model:checked="checked.checked3" @change="(e)=>{selectType(e)}">文件数据DR</a-checkbox> -->
                 <a-checkbox-group v-model:value="checked" name="checkboxgroup" :options="plainOptions"
                   @change="(checkedValue) => { selectType(checkedValue) }" />
               </a-col>
               <a-col :span="5">
-                坐标系:<a-select ref="select" :value="coordinateSearchvalue" style="width: 150px" @change="handleChange">
+                坐标系:<a-select allowClear ref="select" :value="coordinateChangeValue" style="width: 150px"
+                  @change="handleChange">
                   <a-select-option v-for="item in coordinateData" :key="item.ID" :value="item.GEOMNAME">{{ item.GEOMNAME
                   }}</a-select-option>
                 </a-select>
               </a-col>
               <a-col :span="5">
-                资源名称:<a-input-search v-model:value="inputValue" placeholder="支持名称搜索" style="width: 150px"
-                  @search="onSearch" />
+                资源名称:<a-input v-model:value="inputValue" placeholder="支持名称搜索" style="width: 150px" />
               </a-col>
               <a-col :span="4" style="display: flex;justify-content: flex-end;">
                 <a-button style="margin-right: 10px;" @click="resetKeyWord">重置</a-button>
@@ -113,39 +110,6 @@
         </div>
       </div>
     </div>
-    <!-- <a-modal :visible="visible" title="添加节点" @ok="handleOk" width="50%">
-    <div style="margin: 10px;">
-      <a-form :model="formState2" :labelCol="{ span: 4 }" :wrapperCol="{ span: 20 }">
-        <a-row>
-          <a-col :span="10">
-            <a-form-item label="上级节点">
-             <a-input v-model:value="formState2.pName" :disabled="true"/>
-            </a-form-item>
-          </a-col>
-          <a-col :span="10">
-            <a-form-item label="名称">
-             <a-input v-model:value="formState2.name" />
-            </a-form-item>
-          </a-col>
-          <a-col :span="10">
-            <a-form-item label="别名">
-             <a-input v-model:value="formState2.alaisename" />
-            </a-form-item>
-          </a-col>
-          <a-col :span="10">
-            <a-form-item label="分类">
-             <a-input v-model:value="formState2.type" />
-            </a-form-item>
-          </a-col>
-          <a-col :span="20">
-            <a-form-item label="描述">
-              <a-textarea v-model:value="formState2.remark" />
-            </a-form-item>
-          </a-col>
-        </a-row>
-      </a-form>
-    </div>
-  </a-modal> -->
   </div>
 </template>
 <script>
@@ -160,14 +124,14 @@ import { session } from '/@/utils/Memory';
 export default defineComponent({
 
   setup() {
-    let coordinateChangeValue = ref('2000坐标系4490')
-    let typeChangeValue = ref('MR,SR,ER,DR,DT')
+    let coordinateChangeValue = ref('')
+    let typeChangeValue = ref('MR,ER,DR')
     let clickTreeNode = ref({})
     // 生命周期函数
     onMounted(() => {
       getTreeList()
       getcoordinateData()
-      getUsedResource(coordinateChangeValue.value, typeChangeValue.value)
+      getUsedResource()
     })
     // 获取树的节点列表
     const treeData = ref([]) // 树的数据
@@ -272,7 +236,6 @@ export default defineComponent({
 
     // 请求坐标系数据
     let coordinateData = ref([]) // 坐标系数据
-    let coordinateSearchvalue = ref('2000坐标系4490')
     const getcoordinateData = () => {
       const gisToken = session.getItem('tokenV2')
       let directoryFormData = new FormData()
@@ -287,35 +250,38 @@ export default defineComponent({
       })
     }
 
-    const inputValue = ref(null)
+    const inputValue = ref('')
     const getKeyWordData = () => {
-
+      getUsedResource()
     }
     const resetKeyWord = () => {
       inputValue.value = ''
+      checked.value = ['MR', 'DR', 'ER']
+      typeChangeValue.value = 'MR,ER,DR'
+      coordinateChangeValue.value = ''
     }
 
     // 坐标系下拉框处理函数
     const handleChange = value1 => {
-      coordinateChangeValue.value = value1
-      getUsedResource(coordinateChangeValue.value, typeChangeValue.value)
-      getAssociatedData(clickTreeNode.value.id, coordinateChangeValue.value)
+      coordinateChangeValue.value = value1 || ''
+      getUsedResource()
+      getAssociatedData(clickTreeNode.value.id)
     }
 
     // 请求可用资源
     let usedResourceData = ref([]) // 可使用资源数据
-    const getUsedResource = (value1, value2) => {
+    const getUsedResource = () => {
       const gisToken = session.getItem('tokenV2')
       let directoryFormData = new FormData()
       directoryFormData.append('interfaceName', 'antu.space.provider.sservicebase.SServicebaseProvider')
       directoryFormData.append('methodName', 'pageList')
       directoryFormData.append('args[]', gisToken)
       directoryFormData.append('args[]', '1')
-      directoryFormData.append('args[]', '50')
+      directoryFormData.append('args[]', '100')
+      directoryFormData.append('args[]', inputValue.value)
+      directoryFormData.append('args[]', typeChangeValue.value)
       directoryFormData.append('args[]', '')
-      directoryFormData.append('args[]', value2)
-      directoryFormData.append('args[]', '')
-      directoryFormData.append('args[]', value1)
+      directoryFormData.append('args[]', coordinateChangeValue.value)
       console.log("参数" + JSON.stringify(directoryFormData))
       addTreeNode(directoryFormData).then((res) => {
         if (res.status == 0) {
@@ -345,7 +311,7 @@ export default defineComponent({
     }
 
     // 顶部复选框处理函数
-    let checked = ref(['MR', 'DR', 'ER']) // 复选框
+    const checked = ref(['MR', 'DR', 'ER']) // 复选框
     const plainOptions = ref([{
       label: '地图MR',
       value: 'MR',
@@ -359,7 +325,7 @@ export default defineComponent({
     const selectType = (e) => {
       let typeValue = e.toString()
       typeChangeValue.value = typeValue
-      getUsedResource(coordinateChangeValue.value, typeChangeValue.value)
+      getUsedResource()
     }
 
     // 点击树节点函数
@@ -372,14 +338,14 @@ export default defineComponent({
 
     // 得到已经关联的数据
     let associatedData = ref([]) //已关联数据
-    const getAssociatedData = (value1, value2) => {
+    const getAssociatedData = (value1) => {
       const gisToken = session.getItem('tokenV2')
       let directoryFormData = new FormData()
       directoryFormData.append('interfaceName', 'antu.space.provider.sservicebase.SServicebaseProvider')
       directoryFormData.append('methodName', 'getByDids')
       directoryFormData.append('args[]', gisToken)
       directoryFormData.append('args[]', value1)
-      directoryFormData.append('args[]', value2)
+      directoryFormData.append('args[]', coordinateChangeValue.value)
       addTreeNode(directoryFormData).then((res) => {
         if (res.status == 0) {
           let data = JSON.parse(res.result)
@@ -454,7 +420,6 @@ export default defineComponent({
       handleChange,
       getTreeList,
       coordinateData,
-      coordinateSearchvalue,
       getcoordinateData,
       usedResourceData,
       getUsedResource,

+ 6 - 5
src/views/dataAdmin/dataAdmin/version/VersionDrawer.vue

@@ -1,7 +1,7 @@
 <template>
-    <a-drawer :title="title" :visible="true" :width="540" :body-style="{ paddingBottom: '80px' }"
-        :footer-style="{ textAlign: 'right' }" @close="onClose">
-        <a-form ref="formRef" :model="form" :rules="rules" :label-col="labelCol" :wrapper-col="wrapperCol">
+    <a-modal :title="title" :visible="true" :width="600" :footer-style="{ textAlign: 'right' }" @cancel="onClose" centered>
+        <div class="content" style="padding:20px 10px 0;min-height: 300px;">
+            <a-form ref="formRef" :model="form" :rules="rules" :label-col="labelCol" :wrapper-col="wrapperCol">
             <!-- 名称 -->
             <a-form-item label="版本名称" name="name">
                 <a-input v-model:value="form.name" style="width: 100%" placeholder="请输入名称" />
@@ -25,7 +25,8 @@
             <a-button style="margin-right: 8px" @click="onClose">取消</a-button>
             <a-button type="primary" @click="onSubmit">确定</a-button>
         </div>
-    </a-drawer>
+        </div>
+    </a-modal>
 </template>
 <script>
 import { defineComponent, reactive, ref, onMounted, watch } from 'vue';
@@ -151,7 +152,7 @@ export default defineComponent({
             title,
             formRef,
             labelCol: { span: 6 },
-            wrapperCol: { span: 18 },
+            wrapperCol: { span: 16 },
             onClose,
             onSubmit,
             resetForm

+ 29 - 11
src/views/resource/examine/index.vue

@@ -8,7 +8,7 @@
       </template>
     </div>
     <div class="right-container">
-      <BasicTable :rowSelection="{ type: 'checkbox' }" rowKey="serviceid" @register="registerTable">
+      <BasicTable @register="registerTable" @fetch-success="onFetchSuccess">
         <template #toolbar>
           <Authority>
             <a-button type="primary" @click="batchExamine" :disabled="hasBatchDelete">批量审核</a-button>
@@ -35,26 +35,26 @@
           ]" />
         </template>
         <template #pdate="{ record }">
-          <Tag :color="'red'">
+          <a-tag :color="'red'">
             {{ record.publishdate ? moment(record.publishdate).format('YYYY-MM-DD HH:mm:ss') : '' }}
-          </Tag>
+          </a-tag>
         </template>
         <template #FLOWNAME="{ record }">
           {{ record.FLOWNAME.replace('上传', '') }}
         </template>
         <template #status="{ record }">
-          <Tag :style="`color:${record.status === 3 || record.status === 3 ? 'red' : ''};`">
+          <a-tag :style="`color:${record.status === 3 || record.status === 3 ? 'red' : ''};`">
             {{
               !record.status ? '待审核' : record.status == 2 ? '审核不通过' : record.status ? '审核通过' : ''
             }}
-          </Tag>
+          </a-tag>
         </template>
         <template #BLZT="{ record }">
-          <Tag :style="`color:${record.status === 3 || record.status === 3 ? 'red' : ''};`">
+          <a-tag :style="`color:${record.status === 3 || record.status === 3 ? 'red' : ''};`">
             {{
               record.BLZT
             }}
-          </Tag>
+          </a-tag>
         </template>
       </BasicTable>
       <check v-if="ischect" @register="registerModal" @success="handleSuccess" />
@@ -96,7 +96,8 @@ import { queryResourceById } from '/@/api/resource/map';
 import Moment from 'moment';
 import { updateExamine } from '/@/api/resource/updateExamine';
 import { useModal } from '/@/components/Modal';
-
+import { useRouter } from 'vue-router';
+import { useAppStore } from '/@/store/modules/app';
 
 export default defineComponent({
   name: 'RoleManagement',
@@ -113,9 +114,12 @@ export default defineComponent({
     SceneResourceUpload,
   },
   setup() {
-    let current = ref('MR');
+    const appStore = useAppStore();
+    const { currentRoute } = useRouter();
+    const currRoute = currentRoute.value;
+    let current = ref(currRoute?.query?.type || 'MR');
     let statusShow = ref(1);
-    const [registerTable, { getSelectRows, setProps, reload, setSelectedRowKeys }] = useTable({
+    const [registerTable, { getSelectRows, setProps, reload, setSelectedRowKeys, getDataSource }] = useTable({
       title: '地图资源审核列表',
       api: (param) => {
         statusShow.value = param.checkStatus;
@@ -124,7 +128,7 @@ export default defineComponent({
       }, //求接口
       //dataSource: dataSources, //表格的数据
       columns,
-      rowKey: 'SERVICEID',
+      rowKey: (record) => record.BUSSID,
       formConfig: {
         labelWidth: 90,
         schemas: searchFormSchemaMR,
@@ -154,6 +158,18 @@ export default defineComponent({
       },
     });
 
+    const onFetchSuccess = () => {
+      // 请求后拿到数据,打开对应的资源审核弹窗
+      nextTick(()=>{
+        let dataList = getDataSource()
+        if(currRoute?.query?.bussid && appStore.routerPushAuditFlag){
+          dataList.forEach(item=>{
+            item.BUSSID === currRoute.query.bussid && handleEdit(item)
+          })
+        }
+      });
+    }
+
     const moment = Moment;
     const ischect = ref(true)
     const sourceTypes = ref([
@@ -238,6 +254,7 @@ export default defineComponent({
           record,
           isUpdate: true,
         });
+        appStore.setRouterPushAuditFlag(false)
       }, 100);
     }
     /**
@@ -332,6 +349,7 @@ export default defineComponent({
       statusChange,
       batchExamine,
       selectHandle,
+      onFetchSuccess
     };
   },
 });

+ 3 - 8
src/views/systemAdmin/system/account/AccountModal1.vue

@@ -6,7 +6,7 @@
                 <div class="basic-info">
                     <div class="small-title">基础信息</div>
                     <a-form-item label="登录名" name="loginName">
-                        <a-input v-model:value="form.loginName" style="width: 100%" placeholder="请输入登录名" />
+                        <a-input v-model:value="form.loginName" style="width: 100%" placeholder="请输入登录名" :disabled="title!=='新增用户'"/>
                     </a-form-item>
                     <a-form-item label="用户姓名" name="userName">
                         <a-input v-model:value="form.userName" style="width: 100%" placeholder="请输入姓名" />
@@ -358,14 +358,9 @@ export default defineComponent({
                 //此处调用新增
                 if (title.value === '新增用户') {
                     form.userid = uuidv4();
-                    form.pwd = form.pwd || '000000';
-                    form.pwd = md5(form.pwd);
+                    form.pwd = form.pwd ? md5(form.pwd) : md5('000000')
                 }else{
-                    if(form.pwd){
-                        form.pwd = md5(form.pwd);
-                    }else{
-                        delete form.pwd
-                    }
+                    form.pwd = form.pwd ? md5(form.pwd) : ''
                 }
                 form.loginName = form.loginName.toUpperCase();
                 form.userjs = form.userjsArr.join(';');

+ 5 - 8
src/views/systemAdmin/system/structure/StructureModal.vue

@@ -17,7 +17,7 @@
                 </a-form-item>
                 <!-- 排序 -->
                 <a-form-item label="机构排序" name="orderId">
-                    <a-input type="number" v-model:value="form.orderId" style="width: 100%" placeholder="请输入序号" />
+                    <a-input v-model:value="form.orderId" style="width: 100%" placeholder="请输入序号" />
                 </a-form-item>
             </a-form>
         </div>
@@ -76,9 +76,7 @@ export default defineComponent({
                 trigger: 'blur'
             }],
             orderId: [{
-                required: true,
-                message: '请输入正确序号',
-                trigger: 'blur'
+                required: true, pattern: /(^[0-9]\d*$)/, message: "请输入正确序号", trigger: 'change'
             }]
         };
         const title = ref(props.title)
@@ -116,13 +114,12 @@ export default defineComponent({
         };
         const onSubmit = () => {
             formRef.value.validate().then(async () => {
+                if (!form.parentId) {
+                    form.parentId = await structureListRootId()
+                }
                 //此处调用新增
                 if (title.value === '新增机构') {
                     form.departid = uuidv4()
-                    // form.departid = null
-                    if(!form.parentId){
-                        form.parentId = await structureListRootId()
-                    }
                 }
                 saveStructure(form).then(res => {
                     if (res === 1) {

+ 1 - 1
src/views/systemAdmin/system/structure/index.vue

@@ -127,7 +127,7 @@ export default defineComponent({
         departid: record.departid,
         departName: record.departName,
         orderId: record.orderId,
-        parentId: record.parentId
+        parentId: record.level===0 ? '' : record.parentId
       }
       modalTitle.value = '编辑机构'
       ifShowModal.value = true

+ 214 - 65
src/views/tips/index.vue

@@ -59,35 +59,79 @@
                 </div>
             </div>
             <div class="pagination-box">
-                <Pagination size="small" v-model:current="pageData.page" :total="pageData.total" @change="changeSize" />
+                <div class="read-all">
+                    <div class="read-btn" v-if="currentBtn.code !== 'todo' && readTitle === 0" @click="readAllMsg">一键已读
+                    </div>
+                </div>
+                <Pagination simple v-model:current="pageData.page" :total="pageData.total" @change="changeSize" />
             </div>
         </div>
     </div>
     <Modal :visible="ifShowDialog" centered title="消息详情" :maskClosable="false" :footer="null" @cancel="closeDialog"
-        :width="400">
+        :width="600">
         <div class="content" style="padding: 20px 20px 20px;font-size: 16px;">
-            <div class="msg-item" v-for="(item, index) in formItemData" :key="index">
-                <div class="label">{{ item.label }}:</div>
-                <div class="value">{{ item.value }}</div>
+            <div class="msg-item">
+                <div class="label">消息名称:</div>
+                <div class="value">{{ formItemData.msgTitle }}</div>
+            </div>
+            <div class="msg-item">
+                <div class="label">消息描述:</div>
+                <div class="value">{{ formItemData.msgDescrible }}</div>
+            </div>
+            <div class="msg-item">
+                <div class="label">消息时间:</div>
+                <div class="value">{{ formItemData.msgTime }}</div>
+            </div>
+            <div class="msg-item">
+                <div class="label">资源名称:</div>
+                <div class="value">{{ formItemData.serviceName }}</div>
+            </div>
+            <div class="msg-item">
+                <div class="label">审核状态:</div>
+                <div class="value">{{ formItemData.shzt }}</div>
+            </div>
+            <div class="msg-item">
+                <div class="label">审核详情:</div>
+            </div>
+            <!-- 审核流程相关列表 -->
+            <div class="audit-list">
+                <div class="audit" v-for="(item, index) in formItemData.lcxx" :key="index">
+                    <div class="check">
+                        <div class="name">人员:{{ item.nodeName }}</div>
+                        <div class="ispass">审核:{{ item.nodeIsPass }}</div>
+                        <div class="time">时间:{{ item.nodeTime }}</div>
+                        
+                    </div>
+                    <div class="check-info">意见:{{ item.nodeInfo || '未填写' }}</div>
+                </div>
             </div>
         </div>
     </Modal>
 </template>
 <script>
-import { defineComponent, reactive, ref, toRefs, computed, onMounted, watch } from 'vue';
+import { defineComponent, reactive, ref, toRefs, computed, onMounted, watch, createVNode } from 'vue';
 import { useAppStore } from '/@/store/modules/app';
 import { Modal, Pagination } from 'ant-design-vue';
+import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
 import { getSmsByUserId, editSmsById } from '/@/api/sys/tips';
+import { queryBussInfoById } from '/@/api/resource/examine';
 import { router } from '/@/router';
 
 export default defineComponent({
     name: 'tips',
-    components: { Modal, Pagination },
+    components: { Modal, Pagination, ExclamationCircleOutlined },
     setup() {
         const appStore = useAppStore();
         // const router = useRouter();
         const tipsDomRef = ref(null)
 
+        const sourceTypes = [
+            { SERVICETYPE: 'MR', name: '地图资源上传' },
+            { SERVICETYPE: 'ER', name: '场景资源上传' },
+            { SERVICETYPE: 'DR', name: '文件资源上传' },
+            { SERVICETYPE: 'SR', name: '组件资源上传' },
+        ]
+
         const navBtns = reactive([
             {
                 name: `待办信息`,
@@ -107,34 +151,24 @@ export default defineComponent({
             currentBtn.code = item.code
             currentBtn.name = item.name
             pageData.page = 1
-            item.code === 'todo' && (pageData.total = todoData.length)
-            item.code === 'message' && (pageData.total = msgData.filter(msg => msg.read === readTitle.value).length)
-            currentTodo.value = todoData.slice(0, 10)
-            currentMsg.value = msgData.filter(msg => msg.read === readTitle.value).slice(0, 10)
+            item.code === 'todo' && (pageData.total = todoData.value.length)
+            item.code === 'message' && (pageData.total = msgData.value.filter(msg => msg.read === readTitle.value).length)
+            currentTodo.value = todoData.value.slice(0, 10)
+            currentMsg.value = msgData.value.filter(msg => msg.read === readTitle.value).slice(0, 10)
         }
-        const todoData = reactive([])
-        const msgData = reactive([])
+        const todoData = ref([])
+        const msgData = ref([])
         const currentTodo = ref([])
         const currentMsg = ref([])
         const ifShowDialog = ref(false)
-        const formItemData = ref([
-            {
-                label: '消息名称',
-                value: ''
-            },
-            {
-                label: '操作说明',
-                value: ''
-            },
-            {
-                label: '操作状态',
-                value: ''
-            },
-            {
-                label: '操作时间',
-                value: ''
-            }
-        ])
+        const formItemData = reactive({
+            msgTitle: "",
+            msgDescrible: "",
+            msgTime: "",
+            serviceName: "",
+            shzt: "",
+            lcxx: []
+        })
         const pageData = reactive({
             page: 1,
             total: 10
@@ -153,6 +187,12 @@ export default defineComponent({
         //         deep: true
         //     }
         // )
+        watch(
+            () => appStore.tipsShowFlag,
+            (val) => {
+                getAllData()
+            }
+        )
 
         // 关闭弹窗
         const closeTips = () => {
@@ -162,60 +202,119 @@ export default defineComponent({
         const choseRead = (flag) => {
             readTitle.value = flag
             pageData.page = 1
-            currentMsg.value = msgData.filter(msg => msg.read === readTitle.value).slice((pageData.page - 1) * 10, pageData.page * 10);
-            pageData.total = msgData.filter(msg => msg.read === readTitle.value).length;
+            currentMsg.value = msgData.value.filter(msg => msg.read === readTitle.value).slice((pageData.page - 1) * 10, pageData.page * 10);
+            pageData.total = msgData.value.filter(msg => msg.read === readTitle.value).length;
         }
         // 读取消息详情
         const readMsg = (item) => {
-            formItemData.value = [
-                {
-                    label: '消息名称',
-                    value: item.title
-                },
-                {
-                    label: '消息说明',
-                    value: item.opt
-                },
-                {
-                    label: '创建时间',
-                    value: item.time
+            formItemData.msgTitle = item.title;
+            formItemData.msgDescrible = item.opt;
+            formItemData.msgTime = item.time;
+            let params = {
+                bussid: item.bussid,
+                page: 1,
+                rows: 1000
+            }
+            queryBussInfoById(params).then(res => {
+                if (res.resp_code === 0) {
+                    formItemData.serviceName = res.datas.pageData[0].NAME;
+                    formItemData.shzt = res.datas.pageData[0].SHZT;
+                    res.datas.lzxx.pageData.forEach((lc) => {
+                        formItemData.lcxx.push({
+                            nodeName: lc.CHECKUSERNAEM,
+                            nodeTime: lc.CHECKTIME,
+                            nodeInfo: lc.CHECKINFO,
+                            nodeIsPass: lc.ISPASS==='0'?'不通过':'通过'
+                        })
+                    })
                 }
-            ]
+            })
             ifShowDialog.value = true
             if (!readTitle.value) {
-                msgData.forEach(msg => {
+                msgData.value.forEach(msg => {
                     if (msg.id === item.id) {
                         msg.read = 1
                         let params = { smid: msg.id }
-                        editSmsById(params).then(res => {
-                        })
+                        editSmsById(params)
                     }
                 })
-                currentMsg.value = msgData.filter(msg => msg.read === readTitle.value).slice((pageData.page - 1) * 10, pageData.page * 10);
-                pageData.total = msgData.filter(msg => msg.read === readTitle.value).length;
+                currentMsg.value = msgData.value.filter(msg => msg.read === readTitle.value).slice((pageData.page - 1) * 10, pageData.page * 10);
+                pageData.total = msgData.value.filter(msg => msg.read === readTitle.value).length;
             }
         }
+        // 一键读取所有消息
+        const readAllMsg = () => {
+            if (!currentMsg.value.length) {
+                return;
+            }
+            Modal.confirm({
+                title: '删除提示',
+                icon: createVNode(ExclamationCircleOutlined),
+                content: '确定将所有消息改为已读?',
+                centered: true,
+                okText: '确定',
+                cancelText: '取消',
+                onOk: (() => {
+                    let ids = [];
+                    currentMsg.value.forEach(msg => {
+                        ids.push(msg.id)
+                    })
+                    let params = { smid: ids.join(',') }
+                    editSmsById(params).then(res => {
+                        if (res.resp_code === 0) {
+                            msgData.value.forEach(msg => {
+                                msg.read = 1
+                            })
+                            currentMsg.value = [];
+                            pageData.total = 0;
+                        }
+                    })
+                })
+            });
+        };
         // 跳转待办页面
         const gotoTodo = (item) => {
             // console.log(router);
             // console.log(item);
-            let path = item.title.indexOf('授权') > -1 ? '/authorize/empower' : '/resource/examine'
-            router.push({ path: path, query: { bussid: item.bussid } })
+            let path = item.title.indexOf('授权') > -1 ? '/authorize/empower' : '/resource/examine';
+            let type = 'MR';
+            let t = new Date().getTime()
+            appStore.setRouterPushAuditFlag(true)
+            if (path === '/resource/examine') {
+                sourceTypes.forEach(source => {
+                    source.name === item.title && (type = source.SERVICETYPE)
+                })
+            }
+            router.push({ path: path, query: { bussid: item.bussid, type: type, t: t } })
             closeTips()
         }
         // 关闭消息详情弹窗
         const closeDialog = () => {
             ifShowDialog.value = false
+            formItemData.msgTitle = "";
+            formItemData.msgDescrible = "";
+            formItemData.msgTime = "";
+            formItemData.serviceName = "";
+            formItemData.shzt = "";
+            formItemData.lcxx = [];
         }
         // 切换分页
         const changeSize = (page, pageSize) => {
             // console.log(page);
             // console.log(pageSize);
-            currentBtn.code === 'todo' && (currentTodo.value = todoData.slice((page - 1) * pageSize, page * pageSize))
-            currentBtn.code === 'message' && (currentMsg.value = msgData.filter(msg => msg.read === readTitle.value).slice((page - 1) * pageSize, page * pageSize))
+            currentBtn.code === 'todo' && (currentTodo.value = todoData.value.slice((page - 1) * pageSize, page * pageSize))
+            currentBtn.code === 'message' && (currentMsg.value = msgData.value.filter(msg => msg.read === readTitle.value).slice((page - 1) * pageSize, page * pageSize))
         }
-
-        onMounted(() => {
+        // 获取所有数据
+        const getAllData = () => {
+            todoData.value = []
+            msgData.value = []
+            currentTodo.value = []
+            currentMsg.value = []
+            pageData.page = 1
+            currentBtn.name = "待办信息"
+            currentBtn.code = "todo"
+            readTitle.value = 0
             let params = {
                 keyStr: "",
                 page: 1,
@@ -226,7 +325,7 @@ export default defineComponent({
                     res.datas.records.forEach(item => {
                         // 待办
                         if (item.message.indexOf('请及时处理') > -1) {
-                            todoData.push({
+                            todoData.value.push({
                                 title: item.message.substring(item.message.indexOf('【') + 1, item.message.indexOf('】')),
                                 opt: item.message,
                                 // status: item.status,
@@ -236,7 +335,7 @@ export default defineComponent({
                         }
                         // 消息
                         else {
-                            msgData.push({
+                            msgData.value.push({
                                 title: item.message.substring(item.message.indexOf('【') + 1, item.message.indexOf('】')),
                                 opt: item.message,
                                 // status: item.status,
@@ -246,12 +345,16 @@ export default defineComponent({
                             })
                         }
                     })
-                    currentTodo.value = todoData.slice(0, 10)
-                    currentMsg.value = msgData.filter(msg => msg.read === readTitle.value).slice(0, 10)
+                    currentTodo.value = todoData.value.slice(0, 10)
+                    currentMsg.value = msgData.value.filter(msg => msg.read === readTitle.value).slice(0, 10)
                     pageData.page = 1;
-                    pageData.total = todoData.length;
+                    pageData.total = todoData.value.length;
                 }
             })
+        }
+
+        onMounted(() => {
+            getAllData()
         })
 
         return {
@@ -272,6 +375,7 @@ export default defineComponent({
             closeTips,
             choseRead,
             readMsg,
+            readAllMsg,
             closeDialog,
             changeSize,
             gotoTodo
@@ -495,7 +599,17 @@ export default defineComponent({
             height: 30px;
             width: 100%;
             display: flex;
-            justify-content: flex-end;
+            justify-content: space-between;
+
+            .read-all {
+                .read-btn {
+                    font-size: 16px;
+                    font-weight: 500;
+                    height: 30px;
+                    line-height: 30px;
+                    color: #0671DD;
+                }
+            }
         }
     }
 }
@@ -514,5 +628,40 @@ export default defineComponent({
             margin-left: 20px;
         }
     }
-}
-</style>
+
+    .audit-list {
+        .audit {
+            padding: 0 10px;
+            border-bottom: 1px solid rgba(182, 173, 173, 0.6);
+            .check {
+                margin-top: 10px;
+                display: flex;
+                height: 30px;
+                // width: 60%;
+                justify-content: space-between;
+
+                .name {
+                    width: 30%;
+                    white-space: nowrap;
+                    overflow: hidden;
+                    text-overflow: ellipsis;
+                    // flex: 1;
+                    // margin-right: 20px;
+                }
+                .time{
+                    // margin-right: 20px;
+                    // flex:1;
+                }
+
+                .ispass{
+                    // flex:1;
+                }
+            }
+
+            .check-info {
+                height: 30px;
+                // width: 60%;
+            }
+        }
+    }
+}</style>