chenjj 3 days ago
parent
commit
2ab5a98d1d

+ 7 - 9
src/layout/components/Navbar.vue

@@ -30,7 +30,8 @@
         </el-tooltip>
       </template> -->
       <div class="right-menu-box">
-        欢迎您,<span class="right-menu-nickName">{{ userStore.user.nickName }}</span> <span class="right-menu-areaName">({{ areaName }})</span>
+        欢迎您,<span class="right-menu-nickName">{{ userStore.user.nickName }}</span> 
+        ( <dict-tag :options="jlzj_area_type" :value="userStore.user.dept.status" /> )
       </div>
       <div class="avatar-container">
         <el-dropdown @command="handleCommand" class="right-menu-item hover-effect" trigger="click">
@@ -71,20 +72,14 @@ import useAppStore from '@/store/modules/app'
 import useUserStore from '@/store/modules/user'
 import useSettingsStore from '@/store/modules/settings'
 import { computed } from 'vue'
+const { proxy } = getCurrentInstance();
+const { jlzj_area_type } = proxy.useDict("jlzj_area_type");
 
 const appStore = useAppStore()
 const userStore = useUserStore()
 console.log("TCL: userStore", userStore.user)
 const settingsStore = useSettingsStore()
 
-const areaE = {
-  "0":"平台",
-  "1":"区域",
-  "2":"服务中心",
-}
-const areaName = computed(()=>{
-    return areaE[userStore.user.dept.areaType]
-})
 
 function toggleSideBar() {
   appStore.toggleSideBar()
@@ -227,6 +222,9 @@ function toggleTheme() {
   }
 }
 
+.right-menu-box {
+  display: flex;
+}
 .right-menu-nickName {
 color: #409EFF;
   .right-menu-areaName {

+ 30 - 27
src/views/components/ListPage/Search.vue

@@ -22,17 +22,17 @@
                 </el-form-item>
                 <el-form-item :label="item.label" v-if="item.type === 'dict'" :prop="item.prop">
                     <el-select v-model="formInline[item.prop]" :placeholder="'请选择' + item.label" clearable>
-                        <el-option v-for="dict in item.dict" :key="dict.value"
-                            :label="dict.label" :value="dict.value"></el-option>
+                        <el-option v-for="dict in item.dict" :key="dict.value" :label="dict.label"
+                            :value="dict.value"></el-option>
                     </el-select>
                 </el-form-item>
                 <!-- 联动选择框 -->
-                <el-form-item :label="item.label" v-if="item.type === 'cascader' " :prop="item.prop">
+                <el-form-item :label="item.label" v-if="item.type === 'cascader'" :prop="item.prop">
                     <el-cascader v-model="formInline[item.prop]" :options="item.options || []" style="width: 100%;"
                         :props="item.props" />
                 </el-form-item>
 
-               
+
             </template>
             <el-form-item>
                 <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
@@ -41,9 +41,8 @@
         </el-form>
         <el-row :gutter="10" class="mb8">
             <el-col :span="1.5" v-for="item in searchBtns" :key="item.key">
-                <el-button :type="item.type || 'primary'" plain :icon="item.icon" @click="()=>item.func(formInline)"
-                    v-if="item.show?item.show() :true"
-                    >{{ item.label }}</el-button>
+                <el-button :type="item.type || 'primary'" plain :icon="item.icon" @click="() => item.func(formInline)"
+                    v-if="item.show ? item.show() : true">{{ item.label }}</el-button>
             </el-col>
         </el-row>
     </div>
@@ -78,28 +77,33 @@ const searchRef = ref(null);
 const dictionaryOptions = reactive({})
 
 const handlerFormData = () => {
-    const array = props.column;
-    const parmas = {}
-    for (let i = 0; i < array.length; i++) {
-        const element = array[i];
-        if (element.type === 'date' && formInline[element.prop].length>0) {
-            parmas[element.keys[0]] = formInline[element.prop][0];
-            parmas[element.keys[1]] = formInline[element.prop][1];
-        } else if (formInline[element.prop]) {
-            if(element.prop === 'businessManagementId'){
-                console.log('formInline[element.prop]',formInline[element.prop]);
-                parmas[element.prop] = formInline[element.prop][formInline[element.prop].length-1];
-            }else{
-            parmas[element.prop] = formInline[element.prop];
-         }
+    try {
+        const array = props.column;
+        const parmas = {}
+        for (let i = 0; i < array.length; i++) {
+            const element = array[i];
+            if (element.type === 'date' && formInline[element.prop].length > 0) {
+                parmas[element.keys[0]] = formInline[element.prop][0];
+                parmas[element.keys[1]] = formInline[element.prop][1];
+            } else if (formInline[element.prop]) {
+                if (element.prop === 'businessManagementId') {
+                    console.log('formInline[element.prop]', formInline[element.prop]);
+                    parmas[element.prop] = formInline[element.prop][formInline[element.prop].length - 1];
+                } else {
+                    parmas[element.prop] = formInline[element.prop];
+                }
 
+            }
         }
+        return parmas
+    } catch (error) {
+        console.log("TCL: handlerFormData -> error", error)
+
     }
-    return parmas
 }
 const handleQuery = () => {
     const parmas = handlerFormData();
-    console.log('parmas',parmas);    
+    console.log('parmas', parmas);
     emit('submit', parmas)
 }
 const resetForm = () => {
@@ -116,9 +120,9 @@ const handleInit = () => {
                 return item.dictionary;
             }
         }).filter(Boolean);
-        
-        
-        if(keys && keys.length > 0){
+
+
+        if (keys && keys.length > 0) {
             const res = proxy.useDict(keys);
             Object.assign(dictionaryOptions, res)
         }
@@ -147,5 +151,4 @@ onMounted(() => {
 .demo-form-inline .el-select {
     --el-select-width: 220px;
 }
-
 </style>

+ 15 - 1
src/views/components/ListPage/Table.vue

@@ -34,7 +34,21 @@
                 <template #default="scope">
                     <el-space wrap>
                         <div v-for="item in scopeBtns" :key="item.key">
-                           <template v-if="item.show?item.show(scope.row) :true">
+                           <template v-if="item.show">
+                                <template v-if="item.hasPermi">
+                                    <el-button  link :type="item.type"
+                                    @click="item.func(scope.row)" v-if="item.show(scope.row)"> {{ item.label }}</el-button>
+                                </template>
+                                <template v-else>
+                                    <el-button  link :type="item.type"
+                                    @click="item.func(scope.row)" v-if="item.show(scope.row)"> {{ item.label }}</el-button>
+                                </template>
+                           </template>
+                           <template v-else-if="item.hasPermi">
+                                <el-button  link :type="item.type"
+                                @click="item.func(scope.row)" v-hasPermi="item.hasPermi"> {{ item.label }}</el-button>
+                           </template>
+                           <template v-else>
                                 <el-button  link :type="item.type"
                                 @click="item.func(scope.row)" > {{ item.label }}</el-button>
                            </template>

+ 4 - 4
src/views/finance/settlement/index.vue

@@ -21,19 +21,19 @@ import useRegional from './useRegional';
 import useService from './useService';
 const { proxy } = getCurrentInstance();
 const userStore = useUserStore();
-const jlzj_area_type = ref(userStore.areaType);// 0: 平台 10:区域公司 20:服务中心
+const jlzj_area_type = ref(userStore.user.dept.status);// 0: 平台 3:区域公司 4:服务中心
 const useFun ={
     "0":usePlatform,
-    "10":useRegional,
-    "20":useService,
+    "3":useRegional,
+    "4":useService,
 }
 const {
     tableColumn,
     dialogData,
     tabList,
     tabKey,
-    
 } = useFun[jlzj_area_type.value](proxy);
+
 const {
     dialogFormRef,
     userTableRef,

+ 25 - 14
src/views/finance/settlement/useData.js

@@ -1,5 +1,13 @@
 import { ref, computed } from "vue";
-import { applyOrderSettlement, serviceSettlement } from "@/api/finance/settlement.js";
+import { 
+    applyOrderSettlement,
+    serviceSettlement,regionalsettlement
+ } from "@/api/finance/settlement.js";
+
+ const PING_TAI = '0'; //平台
+ const QU_YU = '3'; //区域
+ const FU_WU_ZHONG_XIN = '4'; //服务中心
+
 
 //功能
 export default ({ proxy, jlzj_area_type }) => {
@@ -18,7 +26,6 @@ export default ({ proxy, jlzj_area_type }) => {
             let disabledData = {};
 
             if (type === 'applyfor') {
-
                 params = { mainOrderIds: data }
             }
             if (type === 'settlement') {
@@ -85,15 +92,15 @@ export default ({ proxy, jlzj_area_type }) => {
             }
             let res = null;
             //平台结算区域的申请
-            if (jlzj_area_type.value === '0') {
-                res = await applyforSubmit(parmas)
+            if (jlzj_area_type.value === QU_YU) {
+                res = await regionalsettlement(parmas)
             }
-            //区域结算平台的申请
 
-            if (jlzj_area_type.value === '10') {
+            //区域结算服务中心
+            if (jlzj_area_type.value === FU_WU_ZHONG_XIN) {
                 res = await serviceSettlement(parmas)
             }
-
+            
             if (up_res.code === 200) {
                 proxy.$modal.msgSuccess("审核成功");
                 resolve()
@@ -140,10 +147,11 @@ export default ({ proxy, jlzj_area_type }) => {
                     ids.length > 0 && openDialog(ids, 'applyfor')
                 },
                 key: 'applicant',
-                type: 'primary'
+                type: 'primary',
+                hasPermi:["finance:apply"] 
             },
             {
-                label: '批量结算',
+                label: '批量费用结算',
                 func: () => {
                     const ids = userTableRef.value.ids;
                     console.log('批量删除', ids)
@@ -151,7 +159,7 @@ export default ({ proxy, jlzj_area_type }) => {
                 },
                 key: 'settlement',
                 type: 'primary',
-                show: () => jlzj_area_type.value === '10',//区域公司才可以结算
+                hasPermi:["finance:settlement"] 
             },
             {
                 label: '导出',
@@ -171,8 +179,10 @@ export default ({ proxy, jlzj_area_type }) => {
                     console.log(row)
                     openDialog([row.orderId], 'applyfor')
                 },
-                // show: (row) => {
-                //     return jlzj_area_type.value === '20'
+                hasPermi:["finance:apply"],
+                // show:(row)=>{
+				// 	console.log("TCL: exportFile -> row", row.orderStatus === '4')
+                //     return row.orderStatus === '4'
                 // }
             },
             {
@@ -183,7 +193,7 @@ export default ({ proxy, jlzj_area_type }) => {
                     console.log(row)
                     openDialog([row.orderId], 'settlement')
                 },
-                show: () => jlzj_area_type.value === '10',//区域公司才可以结算
+                hasPermi:["finance:settlement"] 
             },
             {
                 label: '查看详情',
@@ -195,7 +205,8 @@ export default ({ proxy, jlzj_area_type }) => {
                         path: "/order-details",
                         query: { id: row.orderId }
                     });
-                }
+                },
+                hasPermi:["finance:details"] 
             },
         ]
 

+ 2 - 1
src/views/finance/settlement/usePlatform.js

@@ -25,7 +25,8 @@ export default (proxy) => {
                     label: '订单号',
                     prop: 'outTradeNo',
                     type: 'input',
-                    isSearch: true
+                    isSearch: true,
+                    width:'200px',
                 },
                 {
                     label: '订单开始时间',

+ 30 - 6
src/views/finance/settlement/useRegional.js

@@ -4,8 +4,9 @@ export default (proxy) => {
 
     const { 
         lrr_service_status,
-        area_settlement_status
-     } = proxy.useDict("lrr_service_status","area_settlement_status");
+        area_settlement_status,
+        service_centre_settlement_stauts
+     } = proxy.useDict("lrr_service_status","area_settlement_status","service_centre_settlement_stauts");
 
      const tabList =computed(() => {
         let data = []
@@ -24,38 +25,55 @@ export default (proxy) => {
                 label: '订单号',
                 prop: 'outTradeNo',
                 type: 'input',
-                isSearch: true
+                isSearch: true,
+                width:'200px',
             },
             {
                 label: '订单开始时间',
                 prop: 'orderTime',
+                width:'160px',
+                isSearch: true,
+                type: 'date',
+                keys: ['orderTimeStart', 'orderTimeEnd'],
             },
             {
                 label: '订单完成时间',
                 prop: 'serviceEndTime',
+                width:'160px',
+                isSearch: true,
+                type: 'date',
+                keys: ['serviceEndTimeStart', 'serviceEndTimeEnd'],
             },
             {
                 label: '用户名称',
                 prop: 'userName',
+                width:'140px',
+                type: 'input',
+                isSearch: true
             },
             {
                 label: '志愿者名称',
                 prop: 'volunteerName',
+                width:'140px',
+                type: 'input',
+                isSearch: true
             },
             {
                 label: '服务项目',
-                prop: 'businessDescribe',
+                prop: 'businessTierName',
+                width:'170px'
             },
             {
                 label: '订单总金额(元)',
                 prop: 'orderTotalPrice',
+                width:'140px'
             },
             {
                 label: '订单状态',
                 prop: 'orderStatus',
                 type: 'dict',
-                dict: lrr_service_status
-        
+                dict: lrr_service_status,
+                isSearch: true
             },
             {
                 label: '服务中心',
@@ -70,6 +88,9 @@ export default (proxy) => {
             {
                 label: '结算状态',
                 prop: 'areaSettlementStatus',
+                type: 'dict',
+                dict: area_settlement_status,
+                width:'150px',
             },
             {
                 label: '结算时间',
@@ -78,6 +99,9 @@ export default (proxy) => {
             {
                 label: '服务中心抽成金额',
                 prop: 'serviceCentreDistributionAmount',
+                type: 'dict',
+                dict: service_centre_settlement_stauts,
+                width:'150px',
             },
             {
                 label: '服务中心结算状态',

+ 27 - 4
src/views/finance/settlement/useService.js

@@ -24,49 +24,72 @@ export default (proxy) => {
                 label: '订单号',
                 prop: 'outTradeNo',
                 type: 'input',
-                isSearch: true
+                isSearch: true,
+                width:'180px',
             },
             {
                 label: '订单开始时间',
                 prop: 'orderTime',
+                width:'160px',
+                isSearch: true,
+                type: 'date',
+                keys: ['orderTimeStart', 'orderTimeEnd'],
             },
             {
                 label: '订单完成时间',
                 prop: 'serviceEndTime',
+                width:'160px',
+                isSearch: true,
+                type: 'date',
+                keys: ['serviceEndTimeStart', 'serviceEndTimeEnd'],
             },
             {
                 label: '用户名称',
                 prop: 'userName',
+                width:'140px',
+                type: 'input',
+                isSearch: true
             },
             {
                 label: '志愿者名称',
                 prop: 'volunteerName',
+                width:'140px',
+                type: 'input',
+                isSearch: true
             },
             {
                 label: '服务项目',
-                prop: 'businessDescribe',
+                prop: 'businessTierName',
+                width:'170px'
             },
             {
                 label: '订单总金额(元)',
                 prop: 'orderTotalPrice',
+                width:'140px'
             },
             {
                 label: '订单状态',
                 prop: 'orderStatus',
                 type: 'dict',
-                dict: lrr_service_status
+                dict: lrr_service_status,
+                isSearch: true
             },
             {
                 label: '抽成金额',
                 prop: 'serviceCentreDistributionAmount',
+                width:'150px'
             },
             {
                 label: '结算状态',
                 prop: 'serviceCentreSettlementStatus',
+                type: 'dict',
+                dict: service_centre_settlement_stauts,
+                width:'150px',
             },
             {
                 label: '结算时间',
                 prop: 'serviceCentreSettlementTime',
+                 width:'150px'
             },
         ]),
         dialogData: {
@@ -115,6 +138,6 @@ export default (proxy) => {
             ]
         },
         tabList,
-      
+        tabKey:''
     }
 }

+ 2 - 2
vite.config.js

@@ -39,8 +39,8 @@ export default defineConfig(({ mode, command }) => {
         '/dev-api': {
           // target: 'http://192.168.100.95:9527',
           // target: 'https://zybooks.tech/prod-api', 
-          target: 'http://192.168.100.101:9527',
-          // target: 'http://192.168.100.122:9527',
+          // target: 'http://192.168.100.101:9527',
+          target: 'http://192.168.100.122:9527',
           changeOrigin: true,
           rewrite: (p) => p.replace(/^\/dev-api/, '')
         },