Prechádzať zdrojové kódy

所有页面增加查询操作日志

lxf 1 mesiac pred
rodič
commit
ee53ade14d

+ 1 - 0
jy-ui/src/components/ADialog/index.vue

@@ -39,6 +39,7 @@ function submit() {
 
 <template>
   <el-dialog
+    v-if="computedModelValue"
     :title="title"
     :width="width"
     v-model="computedModelValue"

+ 16 - 13
jy-ui/src/views/business/capital/account/index.vue

@@ -5,14 +5,9 @@ import { ToolbarConfigType } from '@/components/AToolbar/type'
 import { ColumnConfigType } from '@/components/ATable/type'
 import { StrAnyObj, StrAnyObjArr } from '@/typings'
 import { useHandleData } from '@/utils/useHandleData'
-import {
-  getPageApi,
-  getDetailApi,
-  addApi,
-  editApi,
-  deleteApi
-} from '@/api/business/capital/account'
+import { getPageApi, getDetailApi, addApi, editApi, deleteApi } from '@/api/business/capital/account'
 import { getPageApi as getCorporationPageApi } from '@/api/business/corporation/corporation'
+import UserOperation from '@/views/business/log/userOperation/index.vue'
 
 const queryRef = ref<InstanceType<typeof AForm>>()
 const formRef = ref<InstanceType<typeof AForm>>()
@@ -24,6 +19,8 @@ const pageTotal = ref<number>(0)
 const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
 const tableData = ref<StrAnyObjArr>([])
 const formData = ref<StrAnyObj>({ amount: 0 })
+const logData = ref<StrAnyObj>({})
+const operationLog = ref<boolean>(false)
 
 const dialogTitle = ref<string>('')
 const dialogVisible = ref<boolean>(false)
@@ -149,6 +146,13 @@ const columnConfig: ColumnConfigType[] = [
     width: 250,
     handleConfig: [
       {
+        text: '操作日志',
+        click(row) {
+          logData.value = row
+          operationLog.value = true
+        }
+      },
+      {
         common: 'update',
         click(row) {
           dialogVisible.value = true
@@ -295,13 +299,12 @@ function handleRemove(idList: string[]) {
     >
     </a-table>
 
-    <a-dialog
-      v-model="dialogVisible"
-      :title="dialogTitle"
-      @submit="formSubmit"
-      @closed="formClosed"
-    >
+    <a-dialog v-model="dialogVisible" :title="dialogTitle" @submit="formSubmit" @closed="formClosed">
       <a-form ref="formRef" v-model="formData" :config="formConfig" :span="24"> </a-form>
     </a-dialog>
+
+    <a-dialog v-model="operationLog" title="操作日志" width="90%" :footer="false">
+      <UserOperation :logData="logData"></UserOperation>
+    </a-dialog>
   </div>
 </template>

+ 15 - 1
jy-ui/src/views/business/capital/transactions/index.vue

@@ -9,6 +9,7 @@ import { getPageApi, getDetailApi, addApi, editApi, deleteApi, excelExportApi }
 import { getPageApi as getCapitalAccountPageApi } from '@/api/business/capital/account'
 import { getPageApi as getCorporationPageApi } from '@/api/business/corporation/corporation'
 import { getPageApi as getShopApi } from '@/api/business/corporation/shop'
+import UserOperation from '@/views/business/log/userOperation/index.vue'
 
 const queryRef = ref<InstanceType<typeof AForm>>()
 const formRef = ref<InstanceType<typeof AForm>>()
@@ -20,6 +21,8 @@ const pageTotal = ref<number>(0)
 const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
 const tableData = ref<StrAnyObjArr>([])
 const formData = ref<StrAnyObj>({ type: 1, targetType: 99, hasContract: 0 })
+const logData = ref<StrAnyObj>({})
+const operationLog = ref<boolean>(false)
 
 const dialogTitle = ref<string>('')
 const dialogVisible = ref<boolean>(false)
@@ -190,9 +193,16 @@ const columnConfig: ColumnConfigType[] = [
     showOverflowTooltip: true
   },
   {
-    width: 160,
+    width: 180,
     handleConfig: [
       {
+        text: '操作日志',
+        click(row) {
+          logData.value = row
+          operationLog.value = true
+        }
+      },
+      {
         common: 'update',
         click(row) {
           dialogVisible.value = true
@@ -425,5 +435,9 @@ function handleRemove(idList: string[]) {
     <a-dialog v-model="dialogVisible" :title="dialogTitle" @submit="formSubmit" @closed="formClosed">
       <a-form ref="formRef" v-model="formData" :config="formConfig" :span="24"> </a-form>
     </a-dialog>
+
+    <a-dialog v-model="operationLog" title="操作日志" width="90%" :footer="false">
+      <UserOperation :logData="logData"></UserOperation>
+    </a-dialog>
   </div>
 </template>

+ 40 - 42
jy-ui/src/views/business/contract/fundReceived/index.vue

@@ -1,13 +1,14 @@
 <script setup lang="ts">
 import AForm from '@/components/AForm/index.vue'
-import {FormConfigType} from '@/components/AForm/type'
-import {ToolbarConfigType} from '@/components/AToolbar/type'
-import {ColumnConfigType} from '@/components/ATable/type'
-import {StrAnyObj, StrAnyObjArr} from '@/typings'
-import {confirmArrivalAccountApi, getDetailApi, getPageApi} from '@/api/business/contract/fundReceived'
-import {getPageApi as getCapitalAccountPageApi} from '@/api/business/capital/account'
+import { FormConfigType } from '@/components/AForm/type'
+import { ToolbarConfigType } from '@/components/AToolbar/type'
+import { ColumnConfigType } from '@/components/ATable/type'
+import { StrAnyObj, StrAnyObjArr } from '@/typings'
+import { confirmArrivalAccountApi, getDetailApi, getPageApi } from '@/api/business/contract/fundReceived'
+import { getPageApi as getCapitalAccountPageApi } from '@/api/business/capital/account'
 import Detail from '@/views/business/contract/info/detail.vue'
-import {getPageApi as getContractPageApi} from "@/api/business/contract/info";
+import { getPageApi as getContractPageApi } from '@/api/business/contract/info'
+import UserOperation from '@/views/business/log/userOperation/index.vue'
 
 const queryRef = ref<InstanceType<typeof AForm>>()
 const formRef = ref<InstanceType<typeof AForm>>()
@@ -16,9 +17,11 @@ const showQuery = ref<boolean>(true)
 const selectKeys = ref<string[]>([])
 const pageTotal = ref<number>(0)
 
-const queryData = ref<StrAnyObj>({pageNum: 1, pageSize: 10})
+const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
 const tableData = ref<StrAnyObjArr>([])
 const formData = ref<StrAnyObj>({})
+const logData = ref<StrAnyObj>({})
+const operationLog = ref<boolean>(false)
 
 const dialogTitle = ref<string>('')
 const dialogVisible = ref<boolean>(false)
@@ -85,6 +88,13 @@ const columnConfig: ColumnConfigType[] = [
     width: 180,
     handleConfig: [
       {
+        text: '操作日志',
+        click(row) {
+          logData.value = row
+          operationLog.value = true
+        }
+      },
+      {
         if: (row) => {
           return row.hasReceived == 0
         },
@@ -92,7 +102,7 @@ const columnConfig: ColumnConfigType[] = [
         click(row) {
           dialogVisible.value = true
           dialogTitle.value = '到账认领'
-          getDetailApi({id: row.id}).then((resp: StrAnyObj) => {
+          getDetailApi({ id: row.id }).then((resp: StrAnyObj) => {
             formData.value = resp
           })
         }
@@ -107,7 +117,7 @@ const formConfig: FormConfigType[] = [
     label: '合同',
     prop: 'contractId',
     option: () => {
-      return getContractPageApi({searchAll: true}).then((res: StrAnyObjArr) => {
+      return getContractPageApi({ searchAll: true }).then((res: StrAnyObjArr) => {
         if (res.records && res.records.length > 0) {
           return res.records.map((item) => {
             return {
@@ -135,10 +145,10 @@ const formConfig: FormConfigType[] = [
     labelName: 'accountAlias',
     disabled: true,
     async option() {
-      const data = await getCapitalAccountPageApi({searchAll: true})
+      const data = await getCapitalAccountPageApi({ searchAll: true })
       return data.records
     },
-    rule: [{required: true, message: '资金账号不能为空', trigger: 'blur'}]
+    rule: [{ required: true, message: '资金账号不能为空', trigger: 'blur' }]
   },
   {
     type: 'datePicker',
@@ -148,7 +158,7 @@ const formConfig: FormConfigType[] = [
     format: 'YYYY-MM-DD hh:mm:ss',
     valueFormat: 'YYYY-MM-DD hh:mm:ss',
     disabled: true,
-    rule: [{required: true, message: '到账时间不能为空', trigger: 'blur'}]
+    rule: [{ required: true, message: '到账时间不能为空', trigger: 'blur' }]
   },
   {
     type: 'input',
@@ -205,46 +215,34 @@ function clickContract(item: StrAnyObjArr) {
     </el-card>
 
     <a-table
-        :data="tableData"
-        :page-total="pageTotal"
-        :toolbar-config="toolbarConfig"
-        :column-config="columnConfig"
-        v-model:showQuery="showQuery"
-        v-model:page-num="queryData.pageNum"
-        v-model:page-size="queryData.pageSize"
-        @page-num-change="getPage"
-        @page-size-change="getPage"
-        @selection-change="tableSelectionChange"
+      :data="tableData"
+      :page-total="pageTotal"
+      :toolbar-config="toolbarConfig"
+      :column-config="columnConfig"
+      v-model:showQuery="showQuery"
+      v-model:page-num="queryData.pageNum"
+      v-model:page-size="queryData.pageSize"
+      @page-num-change="getPage"
+      @page-size-change="getPage"
+      @selection-change="tableSelectionChange"
     >
       <template #contractNo="{ row }">
         <div>
-          <a
-              style="color: #409eff; cursor: pointer; word-break: break-all"
-              @click="clickContract(row)"
-          >{{ row.contractNo }}</a
-          >
+          <a style="color: #409eff; cursor: pointer; word-break: break-all" @click="clickContract(row)">{{ row.contractNo }}</a>
         </div>
       </template>
     </a-table>
 
-    <a-dialog
-        v-model="dialogVisible"
-        :title="dialogTitle"
-        @submit="formSubmit"
-        @closed="formClosed"
-    >
+    <a-dialog v-model="dialogVisible" :title="dialogTitle" @submit="formSubmit" @closed="formClosed">
       <a-form ref="formRef" v-model="formData" :config="formConfig" :span="24"></a-form>
     </a-dialog>
 
-    <a-dialog
-        v-if="detailDialog"
-        v-model="detailDialog"
-        :title="detailTitle"
-        @closed="formClosed"
-        style="width: 900px"
-        :footer="false"
-    >
+    <a-dialog v-if="detailDialog" v-model="detailDialog" :title="detailTitle" @closed="formClosed" style="width: 900px" :footer="false">
       <Detail :rowData="formData"></Detail>
     </a-dialog>
+
+    <a-dialog v-model="operationLog" title="操作日志" width="90%" :footer="false">
+      <UserOperation :logData="logData"></UserOperation>
+    </a-dialog>
   </div>
 </template>

+ 15 - 1
jy-ui/src/views/business/contract/info/index.vue

@@ -9,6 +9,7 @@ import { getPageApi, getDetailApi, addApi, editApi, deleteApi, getStatistics } f
 import Detail from './detail.vue'
 import TransactionDetail from './transaction-detail.vue'
 import OrderDetail from './order-detail.vue'
+import UserOperation from '@/views/business/log/userOperation/index.vue'
 
 const queryRef = ref<InstanceType<typeof AForm>>()
 const formRef = ref<InstanceType<typeof AForm>>()
@@ -22,6 +23,8 @@ const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
 const tableData = ref<StrAnyObjArr>([])
 const statisticsData = ref<StrAnyObjArr>([])
 const formData = ref<StrAnyObj>({})
+const logData = ref<StrAnyObj>({})
+const operationLog = ref<boolean>(false)
 
 const dialogTitle = ref<string>('')
 const dialogVisible = ref<boolean>(false)
@@ -160,9 +163,16 @@ const columnConfig: ColumnConfigType[] = [
     }
   },
   {
-    width: 120,
+    width: 140,
     handleConfig: [
       {
+        text: '操作日志',
+        click(row) {
+          logData.value = row
+          operationLog.value = true
+        }
+      },
+      {
         common: 'detail',
         click(row) {
           formData.value = row
@@ -597,5 +607,9 @@ function clickCancel(params: type) {
         </el-tab-pane>
       </el-tabs>
     </a-dialog>
+
+    <a-dialog v-model="operationLog" title="操作日志" width="90%" :footer="false">
+      <UserOperation :logData="logData"></UserOperation>
+    </a-dialog>
   </div>
 </template>

+ 16 - 13
jy-ui/src/views/business/corporation/index.vue

@@ -5,13 +5,8 @@ import { ToolbarConfigType } from '@/components/AToolbar/type'
 import { ColumnConfigType } from '@/components/ATable/type'
 import { StrAnyObj, StrAnyObjArr } from '@/typings'
 import { useHandleData } from '@/utils/useHandleData'
-import {
-  getPageApi,
-  getDetailApi,
-  addApi,
-  editApi,
-  deleteApi
-} from '@/api//business/corporation/corporation'
+import { getPageApi, getDetailApi, addApi, editApi, deleteApi } from '@/api//business/corporation/corporation'
+import UserOperation from '@/views/business/log/userOperation/index.vue'
 
 const queryRef = ref<InstanceType<typeof AForm>>()
 const formRef = ref<InstanceType<typeof AForm>>()
@@ -23,6 +18,8 @@ const pageTotal = ref<number>(0)
 const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
 const tableData = ref<StrAnyObjArr>([])
 const formData = ref<StrAnyObj>({})
+const logData = ref<StrAnyObj>({})
+const operationLog = ref<boolean>(false)
 
 const dialogTitle = ref<string>('')
 const dialogVisible = ref<boolean>(false)
@@ -113,6 +110,13 @@ const columnConfig: ColumnConfigType[] = [
     width: 250,
     handleConfig: [
       {
+        text: '操作日志',
+        click(row) {
+          logData.value = row
+          operationLog.value = true
+        }
+      },
+      {
         common: 'update',
         click(row) {
           dialogVisible.value = true
@@ -249,13 +253,12 @@ function handleRemove(idList: string[]) {
     >
     </a-table>
 
-    <a-dialog
-      v-model="dialogVisible"
-      :title="dialogTitle"
-      @submit="formSubmit"
-      @closed="formClosed"
-    >
+    <a-dialog v-model="dialogVisible" :title="dialogTitle" @submit="formSubmit" @closed="formClosed">
       <a-form ref="formRef" v-model="formData" :config="formConfig" :span="24"> </a-form>
     </a-dialog>
+
+    <a-dialog v-model="operationLog" title="操作日志" width="90%" :footer="false">
+      <UserOperation :logData="logData"></UserOperation>
+    </a-dialog>
   </div>
 </template>

+ 14 - 0
jy-ui/src/views/business/corporation/shop/index.vue

@@ -7,6 +7,7 @@ import { StrAnyObj, StrAnyObjArr } from '@/typings'
 import { useHandleData } from '@/utils/useHandleData'
 import { getPageApi, getDetailApi, addApi, editApi, deleteApi } from '@/api/business/corporation/shop'
 import { getPageApi as getCorporationPageApi } from '@/api//business/corporation/corporation'
+import UserOperation from '@/views/business/log/userOperation/index.vue'
 
 const queryRef = ref<InstanceType<typeof AForm>>()
 const formRef = ref<InstanceType<typeof AForm>>()
@@ -18,6 +19,8 @@ const pageTotal = ref<number>(0)
 const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
 const tableData = ref<StrAnyObjArr>([])
 const formData = ref<StrAnyObj>({})
+const logData = ref<StrAnyObj>({})
+const operationLog = ref<boolean>(false)
 
 const dialogTitle = ref<string>('')
 const dialogVisible = ref<boolean>(false)
@@ -95,6 +98,13 @@ const columnConfig: ColumnConfigType[] = [
     width: 220,
     handleConfig: [
       {
+        text: '操作日志',
+        click(row) {
+          logData.value = row
+          operationLog.value = true
+        }
+      },
+      {
         common: 'update',
         click(row) {
           dialogVisible.value = true
@@ -229,5 +239,9 @@ function handleRemove(idList: string[]) {
     <a-dialog v-model="dialogVisible" :title="dialogTitle" @submit="formSubmit" @closed="formClosed">
       <a-form ref="formRef" v-model="formData" :config="formConfig" :span="24"> </a-form>
     </a-dialog>
+
+    <a-dialog v-model="operationLog" title="操作日志" width="90%" :footer="false">
+      <UserOperation :logData="logData"></UserOperation>
+    </a-dialog>
   </div>
 </template>

+ 16 - 4
jy-ui/src/views/business/log/userOperation/index.vue

@@ -7,6 +7,14 @@ import { StrAnyObj, StrAnyObjArr } from '@/typings'
 import { editApi, getDetailApi, getPageApi } from '@/api/business/log/userOperation'
 import { getListApi } from '@/api/system/user'
 
+const props = withDefaults(
+  defineProps<{
+    logData: StrAnyObj
+  }>(),
+  {
+    logData: {}
+  }
+)
 const queryRef = ref<InstanceType<typeof AForm>>()
 const formRef = ref<InstanceType<typeof AForm>>()
 
@@ -96,12 +104,12 @@ const columnConfig: ColumnConfigType[] = [
   {
     prop: 'moduleName',
     label: '模块标题',
-    width: 160
+    width: 140
   },
   {
     prop: 'operatorName',
     label: '操作人姓名',
-    width: 160
+    width: 140
   },
   {
     prop: 'operationType',
@@ -151,7 +159,8 @@ const columnConfig: ColumnConfigType[] = [
   },
   {
     prop: 'remark',
-    label: '审核注释'
+    label: '审核注释',
+    width: 160
   },
   {
     width: 120,
@@ -179,6 +188,9 @@ onMounted(() => {
 })
 
 function getPage() {
+  if (props.logData && props.logData.id) {
+    queryData.value.businessId = props.logData.id
+  }
   getPageApi(queryData.value).then((resp) => {
     tableData.value = resp.records
     pageTotal.value = resp.total
@@ -195,7 +207,7 @@ function formSubmit(status: boolean) {
 </script>
 
 <template>
-  <div>
+  <div :style="props.logData && props.logData.id ? 'max-height: calc(100vh - 140px); overflow: hidden auto' : ''">
     <el-card v-if="showQuery">
       <a-form ref="queryRef" v-model="queryData" :config="queryConfig" :span="6"> </a-form>
     </el-card>

+ 15 - 1
jy-ui/src/views/business/payment/remit/index.vue

@@ -11,6 +11,7 @@ import { getPageApi as getCapitalAccountPageApi } from '@/api/business/capital/a
 import MoneyPDF from '@/components/PDF/moneyPDF.vue'
 import { getPdf } from '@/utils/getPdf.js'
 import { getPageApi as getShopApi } from '@/api/business/corporation/shop'
+import UserOperation from '@/views/business/log/userOperation/index.vue'
 
 const queryRef = ref<InstanceType<typeof AForm>>()
 const formRef = ref<InstanceType<typeof AForm>>()
@@ -23,6 +24,8 @@ const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
 const tableData = ref<StrAnyObjArr>([])
 const detailData = ref<StrAnyObj>({ paymentRequestsDetailList: [{}] })
 const formData = ref<StrAnyObj>({})
+const logData = ref<StrAnyObj>({})
+const operationLog = ref<boolean>(false)
 
 const dialogTitle = ref<string>('')
 const dialogVisible = ref<boolean>(false)
@@ -188,6 +191,13 @@ const columnConfig: ColumnConfigType[] = [
     width: 250,
     handleConfig: [
       {
+        text: '操作日志',
+        click(row) {
+          logData.value = row
+          operationLog.value = true
+        }
+      },
+      {
         text: '打款',
         if: (row) => row.paymentStatus != 2,
         click(row) {
@@ -320,7 +330,7 @@ const formConfig: FormConfigType[] = [
     },
     rule: [{ required: true, message: '付款账户不能为空', trigger: 'blur' }],
     change: (val, options) => {
-      console.log(val, options);
+      console.log(val, options)
       if (val) {
         let list = options.filter((item) => item.id === val)
         if (list && list.length > 0) {
@@ -454,5 +464,9 @@ const clickDownload = () => {
         </div>
       </template>
     </a-dialog>
+
+    <a-dialog v-model="operationLog" title="操作日志" width="90%" :footer="false">
+      <UserOperation :logData="logData"></UserOperation>
+    </a-dialog>
   </div>
 </template>

+ 14 - 0
jy-ui/src/views/business/payment/requests/index.vue

@@ -14,6 +14,7 @@ import MoneyPDF from '@/components/PDF/moneyPDF.vue'
 import { getPdf } from '@/utils/getPdf.js'
 import { getPageApi as getContractPageApi } from '@/api/business/contract/info'
 import { getPageApi as getShopApi } from '@/api/business/corporation/shop'
+import UserOperation from '@/views/business/log/userOperation/index.vue'
 
 const queryRef = ref<InstanceType<typeof AForm>>()
 const formRef = ref<InstanceType<typeof AForm>>()
@@ -26,6 +27,8 @@ const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
 const contractList = ref<StrAnyObjArr>([])
 const tableData = ref<StrAnyObjArr>([])
 const formData = ref<StrAnyObj>({ paymentRequestsDetailList: [{}] })
+const logData = ref<StrAnyObj>({})
+const operationLog = ref<boolean>(false)
 
 const dialogTitle = ref<string>('')
 const dialogVisible = ref<boolean>(false)
@@ -256,6 +259,13 @@ const columnConfig: ColumnConfigType[] = [
     width: 250,
     handleConfig: [
       {
+        text: '操作日志',
+        click(row) {
+          logData.value = row
+          operationLog.value = true
+        }
+      },
+      {
         text: '取回',
         if(row) {
           return row.approvalStatus == 1
@@ -745,5 +755,9 @@ const clickDownload = () => {
         </el-table-column>
       </el-table>
     </a-dialog>
+
+    <a-dialog v-model="operationLog" title="操作日志" width="90%" :footer="false">
+      <UserOperation :logData="logData"></UserOperation>
+    </a-dialog>
   </div>
 </template>