保存进度!
This commit is contained in:
		
							
								
								
									
										38
									
								
								code/web/task_schedule/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										38
									
								
								code/web/task_schedule/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -884,9 +884,9 @@
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@eslint/js": {
 | 
			
		||||
            "version": "8.49.0",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.49.0.tgz",
 | 
			
		||||
            "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==",
 | 
			
		||||
            "version": "8.50.0",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.50.0.tgz",
 | 
			
		||||
            "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "peer": true,
 | 
			
		||||
            "engines": {
 | 
			
		||||
@@ -1449,9 +1449,9 @@
 | 
			
		||||
            "dev": true
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@types/lodash": {
 | 
			
		||||
            "version": "4.14.198",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.198.tgz",
 | 
			
		||||
            "integrity": "sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg=="
 | 
			
		||||
            "version": "4.14.199",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.199.tgz",
 | 
			
		||||
            "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg=="
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@types/lodash-es": {
 | 
			
		||||
            "version": "4.17.9",
 | 
			
		||||
@@ -4759,9 +4759,9 @@
 | 
			
		||||
            "peer": true
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/electron-to-chromium": {
 | 
			
		||||
            "version": "1.4.527",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.527.tgz",
 | 
			
		||||
            "integrity": "sha512-EafxEiEDzk2aLrdbtVczylHflHdHkNrpGNHIgDyA63sUQLQVS2ayj2hPw3RsVB42qkwURH+T2OxV7kGPUuYszA=="
 | 
			
		||||
            "version": "1.4.528",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz",
 | 
			
		||||
            "integrity": "sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA=="
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/element-plus": {
 | 
			
		||||
            "version": "2.3.14",
 | 
			
		||||
@@ -5061,16 +5061,16 @@
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/eslint": {
 | 
			
		||||
            "version": "8.49.0",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.49.0.tgz",
 | 
			
		||||
            "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==",
 | 
			
		||||
            "version": "8.50.0",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.50.0.tgz",
 | 
			
		||||
            "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "peer": true,
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@eslint-community/eslint-utils": "^4.2.0",
 | 
			
		||||
                "@eslint-community/regexpp": "^4.6.1",
 | 
			
		||||
                "@eslint/eslintrc": "^2.1.2",
 | 
			
		||||
                "@eslint/js": "8.49.0",
 | 
			
		||||
                "@eslint/js": "8.50.0",
 | 
			
		||||
                "@humanwhocodes/config-array": "^0.11.11",
 | 
			
		||||
                "@humanwhocodes/module-importer": "^1.0.1",
 | 
			
		||||
                "@nodelib/fs.walk": "^1.2.8",
 | 
			
		||||
@@ -6579,9 +6579,9 @@
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/eslint-config-standard-with-typescript": {
 | 
			
		||||
            "version": "39.0.0",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-39.0.0.tgz",
 | 
			
		||||
            "integrity": "sha512-CiV2LS4NUeeRmDTDf1ocUMpMxitSyW0g+Y/N7ecElwGj188GahbcQgqfBNyVsIXQxHlZVBlOjkbg3oUI0R3KBg==",
 | 
			
		||||
            "version": "39.1.0",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-39.1.0.tgz",
 | 
			
		||||
            "integrity": "sha512-5+SPKis3yr6T1X6wSA7HhDuumTRMrTDMcsTrIWhdZuI+sX3e8SPGZYzuJxVxdc239Yo718dEVEVyJhHI6jUjrQ==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@typescript-eslint/parser": "^6.4.0",
 | 
			
		||||
@@ -7922,9 +7922,9 @@
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/get-tsconfig": {
 | 
			
		||||
            "version": "4.7.1",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/get-tsconfig/-/get-tsconfig-4.7.1.tgz",
 | 
			
		||||
            "integrity": "sha512-sLtd6Bcwbi9IrAow/raCOTE9pmhvo5ksQo5v2lApUGJMzja64MUYhBp0G6X1S+f7IrBPn1HP+XkS2w2meoGcjg==",
 | 
			
		||||
            "version": "4.7.2",
 | 
			
		||||
            "resolved": "https://registry.npmmirror.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz",
 | 
			
		||||
            "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "peer": true,
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@
 | 
			
		||||
        "axios": "^1.5.0",
 | 
			
		||||
        "babel": "^6.23.0",
 | 
			
		||||
        "eslint-config-recommended": "^4.1.0",
 | 
			
		||||
        "eslint-config-standard-with-typescript": "^39.0.0",
 | 
			
		||||
        "eslint-config-standard-with-typescript": "^39.1.0",
 | 
			
		||||
        "eslint-plugin-vue": "^9.17.0",
 | 
			
		||||
        "node-sass": "^9.0.0",
 | 
			
		||||
        "sass": "^1.68.0",
 | 
			
		||||
 
 | 
			
		||||
@@ -71,13 +71,13 @@ const routes = [
 | 
			
		||||
                component: ()=> import( "../views/StaffManagement.vue" ),
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                path:"/archievement_data",
 | 
			
		||||
                name:"ArchievementDataManagement",
 | 
			
		||||
                path:"/reward_management",
 | 
			
		||||
                name:"RewardManagement",
 | 
			
		||||
                meta: {
 | 
			
		||||
                    title:"数据管理",
 | 
			
		||||
                    title:"奖励管理",
 | 
			
		||||
                    icon: "document",
 | 
			
		||||
                },
 | 
			
		||||
                component: ()=> import( "../views/DataManagement.vue" ),
 | 
			
		||||
                component: ()=> import( "../views/RewardManagement.vue" ),
 | 
			
		||||
            },
 | 
			
		||||
        ],
 | 
			
		||||
    },
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,19 @@ interface AddRewardTelsalerResponse
 | 
			
		||||
    message: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface UpdateRewardTelsalerRequest
 | 
			
		||||
{
 | 
			
		||||
    recordID: number,
 | 
			
		||||
    telsalerName: string;
 | 
			
		||||
    rewardIndex: number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface UpdateRewardTelsalerResponse
 | 
			
		||||
{
 | 
			
		||||
    success: boolean;
 | 
			
		||||
    message: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface DeleteRewardTelsalerRequest
 | 
			
		||||
{
 | 
			
		||||
    recordID: number;
 | 
			
		||||
@@ -164,11 +177,62 @@ function addRewardTelsaler( data: AddRewardTelsalerRequest, handler: any ): void
 | 
			
		||||
    })
 | 
			
		||||
        .then(( response: AxiosResponse<any, any> ): void =>
 | 
			
		||||
        {
 | 
			
		||||
            const data: AddRewardTelsalerResponse = response.data ?? {};
 | 
			
		||||
 | 
			
		||||
            addResponse.success = data.success ?? false;
 | 
			
		||||
            addResponse.message = data.message ?? "";
 | 
			
		||||
 | 
			
		||||
            handler( addResponse );
 | 
			
		||||
        })
 | 
			
		||||
        .catch(( error ): void =>
 | 
			
		||||
        {
 | 
			
		||||
            console.log( error );
 | 
			
		||||
 | 
			
		||||
            addResponse.success = false;
 | 
			
		||||
            addResponse.message = "请求添加获奖坐席失败,请查看控制台!";
 | 
			
		||||
 | 
			
		||||
            handler( addResponse, error );
 | 
			
		||||
        });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 请求更新获奖坐席,根据请求结果调用handler函数。
 | 
			
		||||
 * @param data 请求数据
 | 
			
		||||
 * @param handler 处理请求结果数据的回调函数。
 | 
			
		||||
 */
 | 
			
		||||
function updateTelsalerReward( data: UpdateRewardTelsalerRequest, handler: any ): void
 | 
			
		||||
{
 | 
			
		||||
    if ( handler === undefined || handler === null )
 | 
			
		||||
    {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const updateResponse: UpdateRewardTelsalerResponse = {
 | 
			
		||||
        success: false,
 | 
			
		||||
        message: "",
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    instance.request({
 | 
			
		||||
        method: "post",
 | 
			
		||||
        url: API_URL.URL_UPDATE_REWARD_TELSALER,
 | 
			
		||||
        data,
 | 
			
		||||
    })
 | 
			
		||||
        .then(( response: AxiosResponse<any, any> ): any =>
 | 
			
		||||
        {
 | 
			
		||||
            const data: UpdateRewardTelsalerResponse = response.data ?? {};
 | 
			
		||||
 | 
			
		||||
            updateResponse.success = data.success ?? false;
 | 
			
		||||
            updateResponse.message = data.message ?? "";
 | 
			
		||||
 | 
			
		||||
            handler( updateResponse );
 | 
			
		||||
        })
 | 
			
		||||
        .catch(( error: any ): void =>
 | 
			
		||||
        {
 | 
			
		||||
            updateResponse.success = false;
 | 
			
		||||
            updateResponse.message = "请求更新获奖坐席失败,请查看控制台!";
 | 
			
		||||
 | 
			
		||||
            console.log( error );
 | 
			
		||||
            handler( updateResponse, error );
 | 
			
		||||
        });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -210,7 +274,7 @@ function deleteRewardTelsaler( data: DeleteRewardTelsalerRequest, handler: any )
 | 
			
		||||
 | 
			
		||||
            console.log( error );
 | 
			
		||||
 | 
			
		||||
            handler( deleteResponse );
 | 
			
		||||
            handler( deleteResponse, error );
 | 
			
		||||
        });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -272,8 +336,11 @@ export {
 | 
			
		||||
    type DeleteRewardTelsalerResponse,
 | 
			
		||||
    type AddRewardTelsalerRequest,
 | 
			
		||||
    type AddRewardTelsalerResponse,
 | 
			
		||||
    type UpdateRewardTelsalerRequest,
 | 
			
		||||
    type UpdateRewardTelsalerResponse,
 | 
			
		||||
    requestRewardPorjectsList,
 | 
			
		||||
    requestRewardGainers,
 | 
			
		||||
    addRewardTelsaler,
 | 
			
		||||
    updateTelsalerReward,
 | 
			
		||||
    deleteRewardTelsaler
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: Kane
 | 
			
		||||
 * @Date: 2023-03-23 16:05:08
 | 
			
		||||
 * @LastEditors: Kane
 | 
			
		||||
 * @FilePath: /task_schedule/src/views/DataManagement.vue
 | 
			
		||||
 * @FilePath: /task_schedule/src/views/RewardManagement.vue
 | 
			
		||||
 * @Description:
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) ${2022} by Kane, All Rights Reserved.
 | 
			
		||||
@@ -21,6 +21,7 @@
 | 
			
		||||
                    <el-button
 | 
			
		||||
                        type="primary"
 | 
			
		||||
                        icon="documentAdd"
 | 
			
		||||
                        @click="onAddRewardGainer"
 | 
			
		||||
                    >
 | 
			
		||||
                        新增
 | 
			
		||||
                    </el-button>
 | 
			
		||||
@@ -122,7 +123,7 @@ interface UI
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name: "DataManagement",
 | 
			
		||||
    name: "RewardManagement",
 | 
			
		||||
    components: { RewardGainerDialog, },
 | 
			
		||||
    setup()
 | 
			
		||||
    {
 | 
			
		||||
@@ -197,6 +198,16 @@ export default {
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        // 表格编辑相关
 | 
			
		||||
        /**
 | 
			
		||||
         * 添加获奖坐席
 | 
			
		||||
         */
 | 
			
		||||
        const onAddRewardGainer = (): void =>
 | 
			
		||||
        {
 | 
			
		||||
            ui.selectedRecID = -1;
 | 
			
		||||
            ui.selectedRewardProjectCode = 3;
 | 
			
		||||
            ui.selectedTelsalerName = "";
 | 
			
		||||
            ui.showEditRewardGainerDialog = true;
 | 
			
		||||
        };
 | 
			
		||||
        /**
 | 
			
		||||
         * 响应用户在表格中的双击
 | 
			
		||||
         * @param telsalerName 
 | 
			
		||||
@@ -216,6 +227,8 @@ export default {
 | 
			
		||||
        eventBus.on( "onSavedRewardTelsaler", (): void =>
 | 
			
		||||
        {
 | 
			
		||||
            ui.showEditRewardGainerDialog = false;
 | 
			
		||||
 | 
			
		||||
            refresh();
 | 
			
		||||
        });
 | 
			
		||||
        /**
 | 
			
		||||
         * 用于刷新页面
 | 
			
		||||
@@ -238,6 +251,7 @@ export default {
 | 
			
		||||
            onTablePageSizeChange,
 | 
			
		||||
            onEditRewardGainer,
 | 
			
		||||
            refresh,
 | 
			
		||||
            onAddRewardGainer,
 | 
			
		||||
        };
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
@@ -57,8 +57,24 @@
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import { reactive, onBeforeMount } from "vue";
 | 
			
		||||
import { ElMessageBox } from "element-plus";
 | 
			
		||||
import { type RewardProject, type RewardProjectResponse, requestRewardPorjectsList } from "@/utils/reward.js";
 | 
			
		||||
import { ElMessage, ElMessageBox } from "element-plus";
 | 
			
		||||
import {
 | 
			
		||||
    type RewardProject,
 | 
			
		||||
    type RewardGainer,
 | 
			
		||||
    type RewardProjectResponse,
 | 
			
		||||
    type RewardGainerResponse,
 | 
			
		||||
    type DeleteRewardTelsalerRequest,
 | 
			
		||||
    type DeleteRewardTelsalerResponse,
 | 
			
		||||
    type AddRewardTelsalerRequest,
 | 
			
		||||
    type AddRewardTelsalerResponse,
 | 
			
		||||
    type UpdateRewardTelsalerRequest,
 | 
			
		||||
    type UpdateRewardTelsalerResponse,
 | 
			
		||||
    requestRewardPorjectsList,
 | 
			
		||||
    requestRewardGainers,
 | 
			
		||||
    addRewardTelsaler,
 | 
			
		||||
    updateTelsalerReward,
 | 
			
		||||
    deleteRewardTelsaler
 | 
			
		||||
} from "@/utils/reward.js";
 | 
			
		||||
import eventBus from "@/utils/api/EventBus.js";
 | 
			
		||||
 | 
			
		||||
interface RewardGainerUI
 | 
			
		||||
@@ -101,6 +117,11 @@ export default {
 | 
			
		||||
            selectedRecID: 0,
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * 请求奖项清单的回调函数,用于处理请求结果。
 | 
			
		||||
         * @param response 请求奖项清单的响应对象
 | 
			
		||||
         * @param error 请求失败时的错误对象
 | 
			
		||||
         */
 | 
			
		||||
        const applyRewardProjectsData = ( response: RewardProjectResponse, error: any ): void =>
 | 
			
		||||
        {
 | 
			
		||||
            if ( !response.success )
 | 
			
		||||
@@ -140,9 +161,67 @@ export default {
 | 
			
		||||
 | 
			
		||||
        const onSaveRewardTelsaler = (): void =>
 | 
			
		||||
        {
 | 
			
		||||
            if ( props.selectedRecId === -1 )
 | 
			
		||||
            {
 | 
			
		||||
                // 新增
 | 
			
		||||
                const addRequest: AddRewardTelsalerRequest = {
 | 
			
		||||
                    rewardIndex: ui.selectedRewardProjectCode as number,
 | 
			
		||||
                    telsalerName: ui.selectedRewardTelsalerName,
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                addRewardTelsaler( addRequest, addRewardTelsalerHandler );
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                // 更新
 | 
			
		||||
                const updateRequest: UpdateRewardTelsalerRequest = {
 | 
			
		||||
                    recordID: ui.selectedRecID,
 | 
			
		||||
                    telsalerName: ui.selectedRewardTelsalerName,
 | 
			
		||||
                    rewardIndex: ui.selectedRewardProjectCode as number,
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                updateTelsalerReward( updateRequest, updateTelsalerRewardHandler );
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            eventBus.emit( "onSavedRewardTelsaler" );
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        const addRewardTelsalerHandler = ( data: AddRewardTelsalerResponse, error: any ): void =>
 | 
			
		||||
        {
 | 
			
		||||
            if ( data.success )
 | 
			
		||||
            {
 | 
			
		||||
                ElMessage({
 | 
			
		||||
                    message: data.message,
 | 
			
		||||
                    type: "success",
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                ElMessage({
 | 
			
		||||
                    message: data.message,
 | 
			
		||||
                    type: "error",
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        const updateTelsalerRewardHandler = ( data: UpdateRewardTelsalerResponse, error: any ): void =>
 | 
			
		||||
        {
 | 
			
		||||
            if ( data.success )
 | 
			
		||||
            {
 | 
			
		||||
                ElMessage({
 | 
			
		||||
                    message: data.message,
 | 
			
		||||
                    type: "success",
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                ElMessage({
 | 
			
		||||
                    message: data.message,
 | 
			
		||||
                    type: "error",
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        // onBeforeUpdate((): void =>
 | 
			
		||||
        // {
 | 
			
		||||
        //     refresh();
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    "include": [
 | 
			
		||||
        // "src/**/*",
 | 
			
		||||
        "src/**/*.ts",
 | 
			
		||||
        "src/**/*.tsx",
 | 
			
		||||
        "src/**/*.vue",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user