Browse Source

Merge branch 'master' of http://114.55.67.98:8070/Natural_p1/zjugis_OA

zhangjq 1 năm trước cách đây
mục cha
commit
049c4ab4e2

+ 5 - 0
client/src/main.ts

@@ -52,6 +52,9 @@ import VueDOMPurifyHTML from 'vue-dompurify-html' // 解决v-html 的安全隐
 import * as ElementPlusIconsVue from '@element-plus/icons-vue' //导入所有图标并进行全局注册
 
 import LinkRouteMap from './LinkRouteMap'
+
+import DialogConfirm from '@/views/OaSystem/components/DialogConfirm/index.vue'
+
 //监听iframe postMessage发送的信息
 window.addEventListener('message', (evt) => {
   try {
@@ -84,6 +87,8 @@ const setupAll = async () => {
   for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
     app.component(key, component)
   }
+
+  app.component("DialogConfirm", DialogConfirm);
   await setupI18n(app)
 
   setupStore(app)

+ 7 - 0
client/src/router/modules/remaining.ts

@@ -112,6 +112,13 @@ const remainingRouter: AppRouteRecordRaw[] = [
           title: '办件中心'
         }
       },
+      {
+        path: 'processSearch',
+        name: 'ProcessSearch',
+        meta: {
+          title: '流程查询'
+        }
+      },
       // {
       //   path: 'mainOfficeCenter2',
       //   component: () => import('@/views/OaSystem/officeCenter/mainOfficeCenter/index.vue'),

+ 18 - 0
client/src/service/system.ts

@@ -2,6 +2,24 @@ import request from '@/config/axios'
 import { handleTree } from '@/utils/tree'
 import { DictRecord } from '@/interface/dict'
 
+// 获取部门全部用户精简信息列表\
+export const getSimpleDeptUserAllList = async () => {
+  const result = await request.get({
+    url: `/system/dept/list-all-user-simple-all`
+  })
+  return handleTree(
+    result.map((item) => {
+      return {
+        label: item['name'],
+        value: item['id'],
+        parentId: item['parentId'],
+        children: item['children'],
+        type: item['type']
+      }
+    }),
+    'value'
+  )
+}
 /**
  * 获取组织架构
  */

+ 1 - 1
client/src/views/OaSystem/components/DeptTree/index.vue

@@ -27,7 +27,7 @@ const props = withDefaults(
   defineProps<{ modelValue: any; clearable?: boolean; checkStrictly: boolean }>(),
   {
     clearable: true,
-    checkStrictly: false
+    checkStrictly: true
   }
 )
 const emit = defineEmits<{

+ 3 - 2
client/src/views/OaSystem/components/DistrictTree/index.vue

@@ -1,19 +1,20 @@
 <template>
   <div class="treeSelectV2">
-    <TreeSelectV2
+    <tree-select-v2
       :data="areaTree"
       :props="{ label: 'name', value: 'id' }"
       v-model="xzqdm"
       :expend="expend"
       :filter-method="filterNodeMethod"
       :disabled="disabled"
+      :label-all="true"
       :placeholder="placeholder"
     >
       <template #default="{ node }">
         <span class="prefix"> </span>
         <span>{{ node.label }}</span>
       </template>
-    </TreeSelectV2>
+    </tree-select-v2>
   </div>
 </template>
 

+ 13 - 3
client/src/views/OaSystem/components/UserOrgTree/index.vue

@@ -19,7 +19,11 @@
 
 <script setup lang="ts">
 import { useQuery } from '@tanstack/vue-query'
-import { getAllUserSimpleByList, getAllUserSimpleByListByDeptId } from '@/service/system'
+import {
+  getAllUserSimpleByList,
+  getAllUserSimpleByListByDeptId,
+  getSimpleDeptUserAllList
+} from '@/service/system'
 
 defineOptions({ name: 'UserOrgTree' })
 interface PropsType {
@@ -27,11 +31,13 @@ interface PropsType {
   clearable: boolean
   defaultExpandAll: boolean
   deptId: string
+  all: boolean
 }
 const props = withDefaults(defineProps<PropsType>(), {
   defaultExpandAll: true,
   clearable: true,
-  deptId: ''
+  deptId: '',
+  all: false
 })
 const emit = defineEmits<{
   (e: 'update:modelValue', v: string): void
@@ -43,7 +49,11 @@ const receiveUserId = computed({
 })
 async function queryUserSimpleByList() {
   if (!props.deptId) {
-    return await getAllUserSimpleByList()
+    if (props.all) {
+      return await getSimpleDeptUserAllList()
+    } else {
+      return await getAllUserSimpleByList()
+    }
   } else {
     return await getAllUserSimpleByListByDeptId({
       deptId: props.deptId

+ 2 - 2
client/src/views/OaSystem/financialManagement/bzjglPage/index.vue

@@ -168,12 +168,12 @@
 <script setup lang="ts">
 import * as UseMoneyApi from '@/api/oa/useMoney'
 import { dateFormatter2 } from '@/utils/formatTime'
-import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
+import { DICT_TYPE } from '@/utils/dict'
 import TableLayout from '../../oaViews/layout/TableLayout.vue'
 import UserForm from './UserForm.vue'
 import { useRouter } from 'vue-router'
 import * as DeptApi from '@/api/system/dept'
-import { defaultProps, handleTree } from '@/utils/tree'
+import { handleTree } from '@/utils/tree'
 import { arrFlatten } from '../../attendanceCenter/attendAuth'
 import DeptTree from '@/views/OaSystem/components/DeptTree/index.vue'
 import moment from 'moment'

+ 1 - 1
client/src/views/OaSystem/financialManagement/kpglPage/index.vue

@@ -20,7 +20,7 @@
       </div>
       <div class="form">
         <span class="formSpan">销售经理:</span>
-        <UserOrgTree v-model="queryParams['managerId']" placeholder="请选择销售经理" />
+        <UserOrgTree v-model="queryParams['managerId']" :all="true" placeholder="请选择销售经理" />
       </div>
       <div class="form">
         <span class="formSpan">责任部门:</span>

+ 5 - 0
client/src/views/OaSystem/marketCenter/contractSubOut/applyIndex.vue

@@ -17,6 +17,10 @@
           style="width: 160px"
         />
       </div>
+      <div class="form">
+        <span class="formSpan">申请人:</span>
+        <UserOrgTree v-model="queryParams['userId']" placeholder="请选择申请人" />
+      </div>
       <div class="form">
         <span class="formSpan">申请类型:</span>
         <el-select
@@ -165,6 +169,7 @@ import { getAssetURL } from '@/utils/auth'
 import { openFlow, openProcessFlow } from '@/utils/flow'
 import request from '@/config/axios'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
+import UserOrgTree from '@/views/OaSystem/components/UserOrgTree/index.vue'
 
 defineOptions({ name: 'ContractSubOut' })
 

+ 6 - 6
client/src/views/OaSystem/oaLayout/menusActive.vue

@@ -37,15 +37,15 @@ const menuClick = (item: any) => {
     path &&
     (path.toLocaleLowerCase().startsWith('http') || path.toLocaleLowerCase().startsWith('https'))
   ) {
+    console.log(item)
     push({
-      name: 'processCenter',
-      state: {
-        path
+      path: item['componentName'],
+      query: {
+        iframe: '1',
+        url: path,
+        iFrameId: `${item['componentName']}_001`
       }
     })
-    const routeMap = {}
-    routeMap['processCenter'] = path
-    localStorage.setItem('_routeMap', JSON.stringify(routeMap))
     return
   }
   push('/oaSystem/' + pushName.value + '/' + item.path)

+ 16 - 46
client/src/views/OaSystem/officeCenter/gdzccgsqPage/index.vue

@@ -14,17 +14,7 @@
       </div>
       <div class="form">
         <span class="formSpan">申请人:</span>
-        <el-tree-select
-          v-model="qrs.userId"
-          :data="userList"
-          :props="defaultProps"
-          check-strictly
-          clearable
-          filterable
-          default-expand-all
-          node-key="id"
-          placeholder="请选择人员"
-        />
+        <UserOrgTree v-model="qrs.userId" :all="true" placeholder="请选择人员" />
       </div>
       <div class="form">
         <span class="formSpan">项目部门:</span>
@@ -125,38 +115,38 @@
           </el-table-column>
           <el-table-column prop="userNickname" label="申请人" width="80" />
           <el-table-column
-            show-overflow-tooltip="true"
+            :show-overflow-tooltip="true"
             prop="projectName"
             label="项目名称"
             width="180"
           />
           <el-table-column
-            show-overflow-tooltip="true"
+            :show-overflow-tooltip="true"
             prop="projectNo"
             label="项目编号"
             width="120"
           />
-          <el-table-column show-overflow-tooltip="true" prop="projectDept" label="项目部门" />
+          <el-table-column :show-overflow-tooltip="true" prop="projectDept" label="项目部门" />
           <el-table-column
-            show-overflow-tooltip="true"
+            :show-overflow-tooltip="true"
             prop="procureTime"
             label="采购时间"
             width="120"
           />
-          <el-table-column show-overflow-tooltip="true" prop="assetNo" label="资产编号" />
-          <el-table-column show-overflow-tooltip="true" prop="assetName" label="资产名称" />
-          <el-table-column show-overflow-tooltip="true" prop="assetType" label="资产类型" />
-          <el-table-column show-overflow-tooltip="true" prop="assetModel" label="资产型号" />
-          <el-table-column show-overflow-tooltip="true" prop="custodianName" label="保管人" />
+          <el-table-column :show-overflow-tooltip="true" prop="assetNo" label="资产编号" />
+          <el-table-column :show-overflow-tooltip="true" prop="assetName" label="资产名称" />
+          <el-table-column :show-overflow-tooltip="true" prop="assetType" label="资产类型" />
+          <el-table-column :show-overflow-tooltip="true" prop="assetModel" label="资产型号" />
+          <el-table-column :show-overflow-tooltip="true" prop="custodianName" label="保管人" />
           <!-- <el-table-column
-            show-overflow-tooltip="true"
+            :show-overflow-tooltip="true"
             prop="custodianDeptName"
             label="保管人部门"
           /> -->
-          <el-table-column show-overflow-tooltip="true" prop="amount" label="金额" />
-          <!-- <el-table-column show-overflow-tooltip="true" prop="assetSequence" label="序列号" /> -->
-          <!-- <el-table-column show-overflow-tooltip="true" prop="assetConfig" label="资产配置" /> -->
-          <el-table-column show-overflow-tooltip="true" prop="bz1" label="备注" />
+          <el-table-column :show-overflow-tooltip="true" prop="amount" label="金额" />
+          <!-- <el-table-column :show-overflow-tooltip="true" prop="assetSequence" label="序列号" /> -->
+          <!-- <el-table-column :show-overflow-tooltip="true" prop="assetConfig" label="资产配置" /> -->
+          <el-table-column :show-overflow-tooltip="true" prop="bz1" label="备注" />
 
           <el-table-column label="操作" width="80" fixed="right">
             <template #default="scope">
@@ -185,10 +175,10 @@
 import { useRouter } from 'vue-router'
 import request from '@/config/axios'
 import * as DeptApi from '@/api/system/dept'
-import * as AssetApi from '@/api/system/asset'
 import { defaultProps, handleTree } from '@/utils/tree'
 import { arrFlatten } from '../../attendanceCenter/attendAuth'
 import UserForm from './UserForm.vue'
+import UserOrgTree from '@/views/OaSystem/components/UserOrgTree/index.vue'
 
 defineOptions({ name: 'GdzccgsqPage' })
 const xmztMap: any = { 0: '报废', 1: '正常' }
@@ -211,7 +201,6 @@ const qrs: any = ref({
   assetModel: ''
 })
 const deptList = ref<Tree[]>([]) // 树形结构
-const userList = ref<Tree[]>([]) // 树形结构
 const deptSort: any = ref([])
 const initTreeDeps = async () => {
   DeptApi.getSimpleDeptList().then((res) => {
@@ -219,12 +208,6 @@ const initTreeDeps = async () => {
     deptSort.value = arrFlatten(res, 'children')
   })
 }
-/** 用户列表 */
-const initTreeUsers = async () => {
-  DeptApi.getSimpleDeptUserAllList().then((res) => {
-    userList.value = handleTree(res)
-  })
-}
 const stateList: any = ref([
   {
     label: '全部',
@@ -289,15 +272,6 @@ const total = ref<number>()
 const searchHandle: () => void = () => {
   queryProjectListAjax()
 }
-// const queryProjectListAjax = async () => {
-//   let q = JSON.parse(JSON.stringify(qrs.value))
-//   console.log(q)
-
-//   // AssetApi.getAssetPage(q).then((result) => {
-//   //   tableData.value = result['rows']
-//   //   total.value = result['records']
-//   // })
-// }
 const queryProjectListAjax = async () => {
   const urlApi = `/assetProcure/page`
   const sendData = {
@@ -315,9 +289,6 @@ queryProjectListAjax()
  * 获取行政区tree结构数据
  */
 const areaTree = ref<Array<any>>()
-const filterNodeMethod = (value, data) => {
-  return data.name.includes(value)
-}
 const queryAreaTreeAjax = async (): Promise<void> => {
   const urlApi = `/system/area/tree`
   const result = await request.get({ url: urlApi })
@@ -326,7 +297,6 @@ const queryAreaTreeAjax = async (): Promise<void> => {
 queryAreaTreeAjax()
 onMounted(() => {
   initTreeDeps()
-  initTreeUsers()
   tableHeight.value = tableRef.value.clientHeight
 })
 </script>

+ 2 - 2
client/src/views/OaSystem/platformManagement/processCenter/index.vue

@@ -7,8 +7,8 @@
 <script setup lang="ts">
 const iframeSrc = ref<string>('')
 const _routeMap = JSON.parse(localStorage.getItem('_routeMap'))
-if (_routeMap && _routeMap['processCenter']) {
-  iframeSrc.value = _routeMap['processCenter']
+if (_routeMap) {
+  iframeSrc.value = _routeMap
 }
 </script>
 

+ 1 - 1
client/src/views/OaSystem/projectCenter/projectBook/projectBook.vue

@@ -11,7 +11,7 @@
       </div>
       <div class="form">
         <span class="formSpan">项目经理:</span>
-        <UserOrgTree v-model="queryParams['xmjlId']" placeholder="请选择项目经理" />
+        <UserOrgTree v-model="queryParams['xmjlId']" :all="true" placeholder="请选择项目经理" />
       </div>
       <div class="form">
         <span class="formSpan">责任部门:</span>

+ 7 - 2
client/src/views/OaSystem/projectCenter/projectDetail/components/xmht/index.vue

@@ -348,7 +348,7 @@
               <tr class="subtotal">
                 <td> 小计</td>
                 <td>
-                  <el-input v-model="mContractDetail.taxHsjeTotal" :disabled="!editor" />
+                  <el-input v-model="mContractDetail.taxHsjeTotal" :disabled="true" />
                 </td>
               </tr>
             </tbody>
@@ -532,7 +532,12 @@
             <tr>
               <td class="th">分包理由:</td>
               <td colspan="3">
-                <el-input v-model="cContractDetail.reason" :disabled="!editor" />
+                <el-input
+                  type="textarea"
+                  :rows="3"
+                  v-model="cContractDetail.reason"
+                  :disabled="!editor"
+                />
               </td>
             </tr>
             <tr>

+ 1 - 0
client/src/views/OaSystem/projectCenter/projectDetail/components/xmxx/index.vue

@@ -145,6 +145,7 @@
                 <td class="th">归属公司:</td>
                 <td>
                   <TreeSelectV2
+                    class="form-item-disable-style"
                     :data="assigneeTree"
                     :props="{ label: 'name', value: 'id' }"
                     v-model="projectDetail['belongCompanyid']"

+ 0 - 1
client/src/views/OaSystem/projectCenter/projectDetail/projectDetail.vue

@@ -193,7 +193,6 @@ import {
   projectTerminate,
   projectRecover
 } from '@/service/project'
-import DialogConfirm from '@/views/OaSystem/components/DialogConfirm/index.vue'
 import XmxxComp from './components/xmxx/index.vue'
 import XmhtComp from './components/xmht/index.vue'
 import XmcbComp from './components/xmcb/index.vue'

+ 1 - 1
client/src/views/OaSystem/projectCenter/purchaseContract/purchaseContract.vue

@@ -42,7 +42,7 @@
       </div>
       <div class="form">
         <span class="formSpan">销售经理:</span>
-        <UserOrgTree v-model="queryParams['managerId']" placeholder="请选择销售经理" />
+        <UserOrgTree v-model="queryParams['managerId']" :all="true" placeholder="请选择销售经理" />
       </div>
       <div class="form">
         <span class="formSpan">责任部门:</span>