Bläddra i källkod

middle merge work 财务结算的代码

jiayufei 3 år sedan
förälder
incheckning
499a4f0faa

+ 0 - 2
src/utils/request.js

@@ -21,8 +21,6 @@ else if (process.env.NODE_ENV === 'production') {
 	// axios.defaults.baseURL = 'http://apipre.tjyourong.com.cn/jeecg-boot'; // 预生产
     // axios.defaults.baseURL = 'http://gateway.tjyourong.com.cn/jeecg-boot';//测试
 	axios.defaults.baseURL = 'http://api.tjyourong.com.cn/jeecg-boot'; // 生产环境
-	// axios.defaults.baseURL = 'http://gateway.tjyourong.com.cn/jeecg-boot'; // 生产环境
-	
 }
 const service = axios.create({
 	// baseURL: '/jeecg-boot', // api base_url

+ 10 - 2
src/views/modules/Statistics/newHome.vue

@@ -680,9 +680,17 @@ export default {
               total.cp=(total.cost/total.click).toFixed(2)
               total.cpm=(total.cost/total.showNum*1000).toFixed(2)
               if(afterData.length>0){
-                this.tableData=[total,...afterData]
+                const defaultAfterData = afterData;
+                defaultAfterData.forEach(item => {
+                  item.clickRate = Number(item.clickRate) + '%';
+                });
+                this.tableData = [total,...defaultAfterData]
               }else{
-                this.tableData=[total,...res.result.list]
+                const defaultData = res.result.list;
+                defaultData.forEach(item => {
+                  item.clickRate = Number(item.clickRate) + '%';
+                });
+                this.tableData = [total,...defaultData]
               }
               
             }

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 873 - 897
src/views/modules/Statistics/newPlanStatic/newPlanStatic.vue


+ 11 - 0
src/views/modules/policy-management/policy-management-server.js

@@ -0,0 +1,11 @@
+/**
+ * @file 政策管理模块配置API
+ * @author jiayufei
+ */
+
+ export const urlAcount = 'http://118.24.244.213:8808'; // 线上
+//  export const urlAcount = 'http://gateway.tjyourong.com.cn'; // 测试
+ // export const urlAcount = 'http://192.168.1.43:8808'; // 子安
+//  export const urlAcount = 'http://gateway.tjyourong.com.cn'; // 测试
+//  export const urlAcount = 'http://192.168.1.8:9999'; // 学超
+ 

+ 243 - 0
src/views/modules/policy-management/policy-management.less

@@ -0,0 +1,243 @@
+.policy-management-content {
+    background: #fff;
+    height: calc(100vh - 137px);
+    padding: 20px;
+    overflow-y: auto;
+
+    .control-con-title {
+        height: 50px;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+
+        .add-acount-policy-btn {
+            margin-left: 15px;
+        }
+
+        .policy-export-btn {
+            font-size: 18px;
+            font-weight: bold;
+        }
+
+    }
+    .control-con-header {
+        margin-bottom: 20px;
+        position: relative;
+
+        .grid-form-options {
+            margin-bottom: 10px;
+        }
+
+        .acount-search-class {
+            width: 450px;
+        }
+
+        .reset-class {
+            margin-right: 10px !important;
+        }
+
+        .upload-person {
+            position: absolute;
+            right: 10px;
+            top: 0;
+        }
+
+    }
+
+    // .control-con-table {
+    //     /* 设置滚动条的样式 */
+    //     ::-webkit-scrollbar {
+    //         width:12px;
+    //         background: #fff !important;
+    //     }
+    //     /* 滚动槽 */
+    //     ::-webkit-scrollbar-track {
+    //         background: #fff !important;
+    //     }
+    //     /* 滚动条滑块 */
+    //     ::-webkit-scrollbar-thumb {
+    //         border-radius:10px;
+    //         background:#000;
+    //     }
+    //     ::-webkit-scrollbar-thumb:window-inactive {
+    //         background:#ccc;
+    //     }
+    //     ::-webkit-scrollbar-button:hover {  
+    //         /*当鼠标在水平滚动条下面的按钮上的状态*/ 
+    //         background:#f00 
+    //     }  
+    // }
+
+    .pagin-table-class {
+        display: flex;
+        justify-content: flex-end;
+        margin-top: 20px;
+    }
+
+}
+/deep/ .rejection-reason-class {
+    width: 600px !important;
+
+    .audit-policy-icon {
+        position: absolute;
+        right: 22px;
+        top: 20px;
+        font-size: 15px;
+        cursor: pointer;
+    }
+
+    .audit-policy-footer {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        border-top: 1px solid #e8e8e8;
+
+        .cancel-btn {
+            margin-right: 12px;
+            margin-top: 12px;
+        }
+
+    }
+
+    .reason-class-header {
+        margin-bottom: 18px;
+        font-size: 16px;
+        font-weight: bold;
+    }
+
+    .reason-class-content {
+        height: 100px;
+    }
+
+    .rejection-textarea-msg {
+        height: 150px;
+    }
+
+}
+/deep/ .audit-policy-class {
+    width: 930px !important;
+
+    .audit-policy-footer {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        border-top: 1px solid #e8e8e8;
+
+        .cancel-btn {
+            margin-right: 12px;
+            margin-top: 12px;
+        }
+
+    }
+
+    .ant-modal-body {
+        height: 440px;
+        overflow-y: auto;
+    }
+
+    .audit-policy-icon {
+        position: absolute;
+        right: 22px;
+        top: 20px;
+        font-size: 15px;
+        cursor: pointer;
+    }
+
+    .policy-line-quen {
+        display: flex;
+        height: 345px;
+        overflow-y: auto;
+
+        .line-quen-left,
+        .line-quen-right {
+            flex: 1;
+
+            .policy-line-left,
+            .policy-line-right {
+                display: flex;
+                margin-bottom: 16px;
+
+                .line-left-spn {
+                    display: inline-block;
+                    width: 120px;
+                    text-align: right;
+                }
+
+                .line-right-spn {
+                    display: inline-block;
+                    width: 220px;
+                    overflow: hidden;
+                    white-space: nowrap;
+                    text-overflow: ellipsis;
+                }
+
+            }
+
+        }
+
+    }
+}
+/deep/ .policy-operation-class {
+    width: 1000px !important;
+    .ant-modal-body {
+        height: 600px;
+        overflow-y: auto;
+    }
+    .policy-operation-form {
+        display: flex;
+        .group-abbreviation-class {
+            display: flex;
+            .settlement-header-icon {
+                margin-left: 47px;
+                margin-top: 12px;
+            }
+        }
+        .promotion-type-class {
+            position: relative;
+            .settlement-header-icon {
+                position: absolute;
+                left: -90px;
+                top: 3px;
+            }
+        }
+        .policy-operation-form-left,
+        .policy-operation-form-right {
+            flex: 1;
+        }
+        .input-common-short {
+            width: 210px;
+        }
+        .adver-position-radio {
+            margin-left: 140px;
+            margin-bottom: 15px;
+        }
+        .especial-label {
+            position: absolute;
+            left: -80px;
+            color: #f00;
+        }
+        .product-name-class {
+            position: relative;
+            .circle-icon-class {
+                font-size: 18px;
+                cursor: pointer;
+                position: absolute;
+                right: 0;
+                top: 0;
+                color: #1890ff;
+            }
+            .circle-icon-plus {
+                right: -30px;
+            }
+            .circle-icon-minus {
+                right: -60px;
+            }
+            .isActive {
+                padding-left: 139px;
+            }
+            /deep/ .ant-col-14 {
+                width: 100%;
+            }
+        }
+    }
+}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1390 - 0
src/views/modules/policy-management/policy-management.vue


+ 11 - 0
src/views/modules/settlement-account/settlement-account-server.js

@@ -0,0 +1,11 @@
+/**
+ * @file 账户配置API
+ * @author jiayufei
+ */
+
+ export const urlAcount = 'http://118.24.244.213:8808'; // 线上
+//  export const urlAcount = 'http://gateway.tjyourong.com.cn'; // 测试
+// export const urlAcount = 'http://192.168.1.43:9999'; // 子安
+//  export const urlAcount = 'http://gateway.tjyourong.com.cn'; // 测试
+// export const urlAcount = 'http://192.168.1.8:9999'; // 学超
+ 

+ 56 - 0
src/views/modules/settlement-account/settlement-account.less

@@ -0,0 +1,56 @@
+.settlement-account-content {
+    background: #fff;
+    height: calc(100vh - 137px);
+    padding: 20px;
+    overflow-y: auto;
+    .control-con-title {
+        height: 50px;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        .add-acount-policy-btn {
+            margin-left: 15px;
+        }
+        .policy-export-btn {
+            font-size: 18px;
+            font-weight: bold;
+        }
+        .settlement-header-icon {
+            margin-left: 10px;
+            margin-right: 10px;
+        }
+    }
+    .control-con-header {
+        margin-bottom: 20px;
+        position: relative;
+        .grid-form-options {
+            margin-top: 20px;
+            margin-bottom: 10px;
+        }
+        .acount-search-class {
+            width: 450px;
+        }
+        .reset-class {
+            margin-right: 10px !important;
+        }
+        .upload-person {
+            position: absolute;
+            right: 10px;
+            top: 0;
+        }
+    }
+    .pagin-table-class {
+        display: flex;
+        justify-content: flex-end;
+        margin-top: 20px;
+    }
+}
+/deep/ .settlement-modal-class {
+    width: 700px !important;
+    .file-down-title {
+        margin-left: 12px;
+        position: absolute;
+        top: -10px;
+        right: -100px;
+    }
+}

+ 676 - 0
src/views/modules/settlement-account/settlement-account.vue

@@ -0,0 +1,676 @@
+<template>
+    <div class="settlement-account-content">
+        <div class="control-con-title">
+            <div>
+                <span class="policy-export-btn">账户列表</span>
+                <span>
+                    <a-tooltip>
+                        <template slot="title">由销售人员上传需要进行结算的客户自运营的账户信息,需要注意开户主体需要是我司</template>
+                        <a-icon class="settlement-header-icon" type="question-circle"/>
+                    </a-tooltip>
+                    客户自运营账户列表,需要销售/媒介人员进行上传
+                </span>
+            </div>
+            <div>
+                <span v-if="userSaleList.includes(userInfo().roleName)" class="add-acount-policy-btn">
+                    <a-button type="primary" @click="handleUploadAccount">上传账户数据</a-button>
+                </span>
+            </div>
+        </div>
+        <div class="control-con-header">
+            <a-form
+                class="grid-form"
+                layout="inline"
+                :form="searchForm"
+                hide-required-mark
+            >
+                <a-row class="grid-form-options">
+                    <a-form-item
+                        class="grid-form-item"
+                        label="广告主名称:"
+                        :colon="false"
+                    >
+                        <a-input v-model="configForm.advertiserName" placeholder="请输入广告主名称" allow-clear/>
+                    </a-form-item>
+                    <a-form-item
+                        class="grid-form-item"
+                        label="产品名称:"
+                        :colon="false"
+                    >
+                        <a-input v-model="configForm.productName" placeholder="请输入产品名称" allow-clear/>
+                    </a-form-item>
+                    <a-form-item
+                        class="grid-form-item"
+                        label="项目名称:"
+                        :colon="false"
+                    >
+                        <a-input v-model="configForm.projectName" placeholder="请输入项目名称" allow-clear/>
+                    </a-form-item>
+                    <a-form-item
+                        class="grid-form-item"
+                        label="账户名称:"
+                        :colon="false"
+                    >
+                        <a-input v-model="configForm.accountName" placeholder="请输入账户名称" allow-clear/>
+                    </a-form-item>
+                </a-row>
+                <a-row>
+                    <a-form-item label="负责人:">
+                        <a-select
+                            v-model="configForm.createUserName"
+                            style="width: 100px"
+                            :filter-option="handleFilterOption"
+                            show-search
+                            allow-clear
+                        >
+                            <a-select-option
+                                v-for="item in allSaleListOption"
+                                :key="item.id"
+                                :value="item.realname"
+                            >
+                                {{ item.realname }}
+                            </a-select-option>
+                        </a-select>
+                    </a-form-item>
+                    <a-form-item label="媒体类型:">
+                        <a-select v-model="configForm.mediaId" style="width: 100px">
+                            <a-select-option value="no">不限</a-select-option>
+                            <a-select-option :value="1">头条</a-select-option>
+                            <a-select-option :value="2">快手</a-select-option>
+                        </a-select>
+                    </a-form-item>
+                    <a-form-item
+                        class="grid-form-item"
+                        label="时间:"
+                        :colon="false"
+                    >
+                        <a-range-picker
+                            v-model="configForm.time"
+                            format="YYYY-MM-DD"
+                            @change="handleAddTimesChange"
+                        />
+                    </a-form-item>
+                    <a-form-item class="form-handle-btn">
+                        <a-button type="default" class="reset-class" @click="handleResetList">重置</a-button>
+                        <a-button type="primary" @click="handleQueryList">搜索</a-button>
+                    </a-form-item>
+                </a-row>
+            </a-form>
+        </div>
+        <div class="control-con-table">
+            <a-table
+                ref="table"
+                size="middle"
+                bordered
+                :columns="settlementColumns"
+                :dataSource="dataSource"
+                :pagination="false"
+                :scroll="{x: 1800}"
+                :loading="controlLoading"
+            >
+                <span slot="advertiserName" slot-scope="text">
+                    <a-tooltip placement="top">
+                        <template slot="title">
+                            <span>{{ text }}</span>
+                        </template>
+                        <span>{{ text }}</span>
+                    </a-tooltip>
+                </span>
+                <span slot="productName" slot-scope="text">
+                    <a-tooltip placement="top">
+                        <template slot="title">
+                            <span>{{ text }}</span>
+                        </template>
+                        <span>{{ text }}</span>
+                    </a-tooltip>
+                </span>
+                <span slot="accountName" slot-scope="text">
+                    <a-tooltip placement="top">
+                        <template slot="title">
+                            <span>{{ text }}</span>
+                        </template>
+                        <span>{{ text }}</span>
+                    </a-tooltip>
+                </span>
+                <span slot="mediaId" slot-scope="text">
+                    <span>{{ text === 1 ? '头条' : '快手' }}</span>
+                </span>
+                <span slot="operateType" slot-scope="text">
+                    <span>{{ text === 1 ? '自运营' : '代运营' }}</span>
+                </span>
+                <span slot="status" slot-scope="text, record">
+                    <a-switch :checked="text === 0" @change="handleSwitchChang($event, record)"/>
+                </span>
+                <span slot="action" slot-scope="text, record">
+                    <a @click="handleSettleDel(record)">删除</a>
+                    <a-divider type="vertical"/>
+                    <a disabled>更多</a>
+                </span>
+            </a-table>
+            <a-pagination
+                class="pagin-table-class"
+                :total="totalAll"
+                :show-total="total => `共 ${totalAll} 条`"
+                size="small"
+                show-size-changer
+                show-quick-jumper
+                @change="onShowSizeChange"
+                @showSizeChange="onShowSizeChange"
+            />
+        </div>
+        <!-- 上传账户数据 -->
+        <a-modal
+            v-if="policyOperationStatus"
+            title="账户上传"
+            :visible="policyOperationStatus"
+            dialog-class="settlement-modal-class"
+            :confirmLoading="confirmLoading"
+            @ok="handlePolicyOperationSure"
+            @cancel="handlePolicyOperationCancel"
+        >
+            <div>
+                <a-form-model
+                    class="policy-operation-form"
+                    ref="policyOperationForm"
+                    :model="policyOperationForm"
+                    :rules="policyOperationRules"
+                    :label-col="labelCol"
+                    :wrapper-col="wrapperCol"
+                >
+                    <a-form-model-item label="选择媒体">
+                        <a-radio-group v-model="policyOperationForm.mediaId" button-style="solid" @change="handleMediaIdChange">
+                            <a-radio-button :value="1">头条</a-radio-button>
+                            <a-radio-button :value="2">快手</a-radio-button>
+                        </a-radio-group>
+                    </a-form-model-item>
+                    <a-form-model-item label="选择广告主公司名称" prop="advertiserId">
+                        <a-select
+                            v-model="policyOperationForm.advertiserId"
+                            placeholder="请选择广告主名称"
+                            :filter-option="handleFilterOption"
+                            show-search
+                            @change="handleAdverOptionChange"
+                        >
+                            <a-select-option
+                                v-for="item in allAdverListOption"
+                                :key="item.advertiserId"
+                                :value="item.advertiserId"
+                            >
+                                {{ item.advertiserName }}
+                            </a-select-option>
+                        </a-select>
+                    </a-form-model-item>
+                    <a-form-model-item label="选择产品名称" prop="productId">
+                        <a-select
+                            v-model="policyOperationForm.productId"
+                            placeholder="请选择产品名称"
+                            :filter-option="handleFilterOption"
+                            show-search
+                            @change="handleProductOptionChange"
+                        >
+                            <a-select-option
+                                v-for="item in allProductListOption"
+                                :key="item.id"
+                                :value="item.id"
+                            >
+                                {{ item.productName }}
+                            </a-select-option>
+                        </a-select>
+                    </a-form-model-item>
+                    <a-form-model-item label="选择项目名称" prop="projectId">
+                        <a-select
+                            v-model="policyOperationForm.projectId"
+                            placeholder="请选择产品名称"
+                            :filter-option="handleFilterOption"
+                            show-search
+                        >
+                            <a-select-option
+                                v-for="item in allProjectListOption"
+                                :key="item.id"
+                                :value="item.id"
+                            >
+                                {{ item.projectName }}
+                            </a-select-option>
+                        </a-select>
+                    </a-form-model-item>
+                    <a-form-model-item label="运营方式">
+                        <a-radio-group v-model="policyOperationForm.operateType" button-style="solid">
+                            <a-radio-button :value="1">自运营</a-radio-button>
+                            <a-radio-button :value="2">代运营</a-radio-button>
+                        </a-radio-group>
+                    </a-form-model-item>
+                    <a-form-model-item label="附件上传">
+                        <a-upload
+                            name="file"
+                            :file-list="policyOperationForm.fileList"
+                            :customRequest="handleCustomRequest"
+                            :remove="handleRemoveUpload"
+                        >
+                            <a-button><a-icon type="upload"/>文件上传</a-button>
+                        </a-upload>
+                        <a class="file-down-title" @click="handleFileDownTitle">文件格式下载</a>
+                        <p class="upload-txt-rules">支持扩展名:.xlsx、.xls</p>
+                    </a-form-model-item>
+                </a-form-model>
+            </div>
+        </a-modal>
+    </div>
+</template>
+<script>
+import {mapGetters} from 'vuex';
+import moment from 'moment';
+import {getAction, postFileAction} from '@/api/manage';
+import {urlAcount} from './settlement-account-server.js';
+
+export default {
+    name: 'settlement-account',
+    data() {
+        return {
+            userSaleList: ['外部销售', '销售总监', '销售', '销售助理', '销售支持经理', '销售AM', '媒介', '管理员'],
+            confirmLoading: false,
+            allProjectListOption: [],
+            allAdverListOption: [],
+            allProductListOption: [],
+            controlLoading: false,
+            allSaleListOption: [],
+            labelCol: {span: 7},
+            wrapperCol: {span: 14},
+            policyOperationForm: {
+                advertiserId: undefined,
+                productId: undefined,
+                projectId: undefined,
+                mediaId: 1,
+                operateType: 1,
+                fileList: []
+            },
+            policyOperationRules: {
+                advertiserId: [{required: true, message: '请选择广告主公司名称', trigger: 'change'}],
+                productId: [{required: true, message: '请选择产品名称', trigger: 'change'}],
+                projectId: [{required: true, message: '请选择项目名称', trigger: 'change'}]
+            },
+            policyOperationStatus: false,
+            totalAll: 0,
+            dataSource: [],
+            settlementColumns: [
+                {
+                    title: '广告主主体名称',
+                    align: 'center',
+                    dataIndex: 'advertiserName',
+                    width: 240,
+                    ellipsis: true,
+                    scopedSlots: {customRender: 'advertiserName'}
+                },
+                {
+                    title: '产品名称',
+                    align: 'center',
+                    dataIndex: 'productName',
+                    ellipsis: true,
+                    width: 200,
+                    scopedSlots: {customRender: 'productName'}
+                },
+                {
+                    title: '项目名称',
+                    align: 'center',
+                    dataIndex: 'projectName',
+                    width: 180
+                },
+                {
+                    title: '账户ID',
+                    align: 'center',
+                    dataIndex: 'accountId',
+                    width: 150
+                },
+                {
+                    title: '账户名称',
+                    dataIndex: 'accountName',
+                    align: 'center',
+                    width: 160,
+                    ellipsis: true,
+                    scopedSlots: {customRender: 'accountName'}
+                },
+                {
+                    title: '媒体',
+                    dataIndex: 'mediaId',
+                    align: 'center',
+                    width: 150,
+                    scopedSlots: {customRender: 'mediaId'}
+                },
+                {
+                    title: '负责人',
+                    dataIndex: 'createUserName',
+                    width: 180,
+                    align: 'center'
+                },
+                {
+                    title: '运营方式',
+                    dataIndex: 'operateType',
+                    align: 'center',
+                    width: 150,
+                    scopedSlots: {customRender: 'operateType'}
+                },
+                {
+                    title: '账户状态',
+                    align: 'center',
+                    dataIndex: 'status',
+                    width: 150,
+                    scopedSlots: {customRender: 'status'}
+                },
+                {
+                    title: '操作',
+                    dataIndex: 'action',
+                    align: 'center',
+                    width: 250,
+                    fixed: 'right',
+                    scopedSlots: {customRender: 'action'}
+                },
+            ],
+            configForm: {
+                advertiserName: '',
+                productName: '',
+                projectName: '',
+                accountName: '',
+                creativeSale: 2,
+                mediaId: 'no',
+                time: [moment().subtract(7, 'days').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]
+            },
+            tablePag: {
+                page: 1,
+                siz: 10
+            }
+        };
+    },
+    created() {
+        this.searchForm = this.$form.createForm(this);
+    },
+    mounted() {
+        this.handleInitTable();
+        this.handleGetAllSaleList();
+        this.handleGetAllAdverList(1);
+    },
+    methods: {
+        ...mapGetters(['userInfo']),
+        moment,
+        handleMediaIdChange(e) {
+            this.policyOperationForm.advertiserId = undefined;
+            this.policyOperationForm.productId = undefined;
+            this.policyOperationForm.projectId = undefined;
+            this.policyOperationForm.operateType = 1;
+            this.policyOperationForm.fileList = [];
+            this.handleGetAllAdverList(e.target.value)
+        },
+        handleAddTimesChange(date, dateString) {
+            this.configForm.time = dateString;
+        },
+        handleProductOptionChange(e) {
+            this.policyOperationForm.projectId = undefined;
+            const paramsData = {
+                pageNo: 1,
+                pageSize: 1000,
+                mediaId: this.policyOperationForm.mediaId === 1 ? '1,3' : '2,4',
+                advertiserId: this.policyOperationForm.advertiserId,
+                productId: e
+            };
+            getAction('/ctop/project/list', paramsData).then(result => {
+                if (result.success) {
+                    this.allProjectListOption = result.result.records || [];
+                }
+                else {
+                    this.$message.error(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
+        handleAdverOptionChange(e) {
+            this.policyOperationForm.productId = undefined;
+            this.policyOperationForm.projectId = undefined;
+            const paramsData = {
+                pageNo: 1,
+                pageSize: 1000,
+                advertiserId: e
+            };
+            getAction('/ctop/product/list', paramsData).then(result => {
+                if (result.success) {
+                    this.allProductListOption = result.result.records || [];
+                }
+                else {
+                    this.$message.error(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
+        handleFilterOption(input, option) {
+            return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0;
+        },
+        // 获取所有的广告主列表
+        handleGetAllAdverList(type) {
+            const paramsData = {
+                userId: this.userInfo().id,
+                mediaId: type,
+                pageNo: 1,
+                pageSize: 1000
+            };
+            getAction('/ctop/projectMember/participateListV3', paramsData).then(result => {
+                if (result.success) {
+                    this.allAdverListOption = result.result || [];
+                }
+                else {
+                    this.$message.error(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
+        // 获取所有的媒体 枚举值
+        handleGetAllSaleList() {
+            const paramsData = {
+                userId: this.userInfo().id
+            };
+            getAction(urlAcount + '/finance/settLementController/getResponsibleUserByIds', paramsData).then(result => {
+                if (result.code === 0) {
+                    this.allSaleListOption = result.result || [];
+                }
+                else {
+                    this.$message.error(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
+        // 获取默认的列表数据
+        handleInitTable() {
+            this.controlLoading = true;
+            const paramsData = {
+                createUserId: this.userInfo().id,
+                advertiserName: this.configForm.advertiserName,
+                productName: this.configForm.productName,
+                projectName: this.configForm.projectName,
+                accountName: this.configForm.accountName,
+                createUserName: this.configForm.createUserName,
+                mediaId: this.configForm.mediaId === 'no' ? '' : this.configForm.mediaId,
+                startTime: this.configForm.time[0],
+                endTime: this.configForm.time[1],
+                pageNo: this.tablePag.page,
+                pageSize: this.tablePag.size
+            };
+            getAction(urlAcount + '/finance/settLementController/getSettlementList', paramsData).then(result => {
+                if (result.code === 0) {
+                    let defaultList = result.result.list;
+                    this.dataSource = defaultList;
+                    this.totalAll = result.result.total;
+                }
+                else {
+                    this.dataSource = [];
+                    this.totalAll = 0;
+                    this.$message.error(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            }).finally(() => {
+                this.controlLoading = false;
+            });
+        },
+        // 文件格式下载
+        handleFileDownTitle() {
+            const {mediaId} = this.policyOperationForm;
+            if (mediaId === 1) {
+                window.location.href = 'http://media-1301855440.cos.ap-chongqing.myqcloud.com/undefined/2021-08-17/%E5%A4%B4%E6%9D%A1%E8%B4%A6%E6%88%B7%E4%B8%8A%E4%BC%A0%E6%A8%A1%E6%9D%BF-1629185054420.xlsx';
+            }
+            else if (mediaId === 2) {
+                window.location.href = 'http://media-1301855440.cos.ap-chongqing.myqcloud.com/undefined/2021-08-17/%E5%BF%AB%E6%89%8B%E8%B4%A6%E6%88%B7%E4%B8%8A%E4%BC%A0%E6%A8%A1%E6%9D%BF-1629185318124.xlsx';
+            }
+        },
+        handleCustomRequest(info) {
+            const isZip = info.file.name.indexOf('xlsx') !== -1 || info.file.name.indexOf('xls') !== -1;
+            if (!isZip) {
+                this.$message.error('上传模板只能是 xls、xlsx格式!');
+                return;
+            }
+            this.policyOperationForm.fileList = [];
+            this.$nextTick(() => {
+                this.policyOperationForm.fileList.push(info.file);
+            });
+        },
+        handleRemoveUpload(data) {
+            let index = this.policyOperationForm.fileList.indexOf(data);
+            let newUploadFile = this.policyOperationForm.fileList;
+            newUploadFile.splice(index, 1);
+            this.policyOperationForm.fileList = newUploadFile;
+        },
+        // 上传确定按钮操作
+        handlePolicyOperationSure() {
+            const {advertiserId, productId, projectId, mediaId, operateType, fileList} = this.policyOperationForm;
+            this.$refs.policyOperationForm.validate(valid => {
+                if (valid) {
+                    if (!fileList.length) {
+                        this.$message.error('请上传文件');
+                        return;
+                    }
+                    let paramsData = new FormData();
+                    paramsData.append('advertiserId', advertiserId);
+                    paramsData.append('productId', productId);
+                    paramsData.append('projectId', projectId);
+                    paramsData.append('mediaId', mediaId);
+                    paramsData.append('operateType', operateType);
+                    paramsData.append('file', fileList[0]);
+                    paramsData.append('createUserId', this.userInfo().id);
+                    this.confirmLoading = true;
+                    postFileAction(urlAcount + '/finance/settLementController/settlementAccountImport', paramsData, {
+                        headers: {
+                            'Content-Type': 'multipart/form-data'
+                        }
+                    }).then(result => {
+                        if (result.code === 0) {
+                            this.$message.success(result.message);
+                            this.handlePolicyOperationCancel();
+                            this.handleInitTable();
+                        }
+                        else {
+                            this.$message.error(result.message);
+                        }
+                    }).catch(error => {
+                        console.log(error, 'eeee');
+                    }).finally(() => {
+                        this.confirmLoading = false;
+                    });
+                }
+                else {
+                    return false;
+                }
+            });
+        },
+        // 上传取消按钮操作
+        handlePolicyOperationCancel() {
+            this.policyOperationForm = {
+                advertiserId: undefined,
+                productId: undefined,
+                projectId: undefined,
+                mediaId: 1,
+                operateType: 1,
+                fileList: []
+            };
+            this.policyOperationStatus = false;
+        },
+        // 删除操作
+        handleSettleDel(list) {
+            let that = this;
+            this.$confirm({
+                title: '提示',
+                content: '是否确认删除该条数据',
+                onOk() {
+                    getAction(urlAcount + '/finance/settLementController/deleteSettlementById', {id: list.id}).then(result => {
+                        if (result.code === 0) {
+                            that.handleInitTable();
+                            that.$message.success('删除成功');
+                        }
+                        else {
+                            that.$message.error(result.message);
+                        }
+                    }).catch(error => {
+                        console.log(error, 'eeee');
+                    });
+                }
+            });
+        },
+        // 分页操作按钮
+        onShowSizeChange(current, pageSize) {
+            this.tablePag = {
+                page: current,
+                size: pageSize
+            };
+            this.handleInitTable();
+        },
+        // table 开关 操作按钮
+        handleSwitchChang(checked, data) {
+            const paramsData = {
+                id: data.id,
+                status: checked ? 0 : 1
+            };
+            getAction(urlAcount + '/finance/settLementController/updSettlementStatusById', paramsData).then(result => {
+                if (result.code === 0) {
+                    this.$message.success(result.message);
+                    this.handleInitTable();
+                }
+                else {
+                    this.$message.error(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
+        // 账户上传按钮
+        handleUploadAccount() {
+            this.policyOperationStatus = true;
+        },
+        // 查询的按钮
+        handleQueryList() {
+            this.tablePag = {
+                page: 1,
+                size: 10
+            };
+            this.handleInitTable();
+        },
+        // 重置的按钮
+        handleResetList() {
+            this.configForm = {
+                advertiserName: '',
+                productName: '',
+                projectName: '',
+                accountName: '',
+                creativeSale: 2,
+                mediaId: 'no',
+                time: [moment().subtract(7, 'days').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]
+            };
+            this.tablePag = {
+                page: 1,
+                size: 10
+            };
+            this.handleInitTable();
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+    @import "settlement-account";
+</style>

+ 11 - 0
src/views/modules/settlement-information/settlement-information-server.js

@@ -0,0 +1,11 @@
+/**
+ * @file 账户配置API
+ * @author jiayufei
+ */
+
+ export const urlAcount = 'http://118.24.244.213:8808'; // 线上
+//  export const urlAcount = 'http://gateway.tjyourong.com.cn'; // 测试
+//  export const urlAcount = 'http://192.168.1.43:9999'; // 子安
+//  export const urlAcount = 'http://gateway.tjyourong.com.cn'; // 测试
+// export const urlAcount = 'http://192.168.1.8:9999'; // 学超
+ 

+ 53 - 0
src/views/modules/settlement-information/settlement-information.less

@@ -0,0 +1,53 @@
+.settlement-information-content {
+    background: #fff;
+    height: calc(100vh - 137px);
+    padding: 20px;
+    overflow-y: auto;
+    .control-con-title {
+        height: 50px;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        .add-acount-policy-btn {
+            margin-left: 15px;
+        }
+        .policy-export-btn {
+            font-size: 18px;
+            font-weight: bold;
+        }
+        .settlement-header-icon {
+            margin-left: 10px;
+            margin-right: 10px;
+        }
+    }
+    .control-con-header {
+        margin-bottom: 20px;
+        position: relative;
+        .grid-form-options {
+            margin-top: 20px;
+            margin-bottom: 10px;
+        }
+        .acount-search-class {
+            width: 450px;
+        }
+        .reset-class {
+            margin-right: 10px !important;
+        }
+        .upload-person {
+            position: absolute;
+            right: 10px;
+            top: 0;
+        }
+    }
+    .pagin-table-class {
+        display: flex;
+        justify-content: flex-end;
+        margin-top: 20px;
+    }
+}
+/deep/ .information-modal-class {
+    width: 750px !important;
+    .upload-txt-rules {
+        margin: 0;
+    }
+}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1005 - 0
src/views/modules/settlement-information/settlement-information.vue


+ 2 - 2
src/views/modules/user-manage-operation/user-manage-operation-server.js

@@ -5,6 +5,6 @@
 
  export const urlAcount = 'http://118.24.244.213:8808'; // 线上
  // export const urlAcount = 'http://apipre.tjyourong.com.cn'; // 预生产
-//  export const urlAcount = 'http://192.168.1.43:8080'; // 子安
+//  export const urlAcount = 'http://192.168.1.43:'; // 子安
 //  export const urlAcount = 'http://139.186.165.84:8808'; // 测试
-//  export const urlAcount = 'http://192.168.1.8:8080'; // 学超
+//  export const urlAcount = 'http://192.168.1.8:9999'; // 学超

+ 2 - 2
vue.config.js

@@ -108,7 +108,7 @@ module.exports = {
         // target: 'http://192.168.1.219:8081', //请求本地 需要jeecg-boot后台项目  赵西安
         // target: 'http://192.168.1.193:8080', //请求本地 需要jeecg-boot后台项目  李煜一
         // target: 'http://192.168.1.193:31012', //请求本地 需要jeecg-boot后台项目  李煜一
-        target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
+        // target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
         // target: 'https://trac.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
         // target: 'http://39.106.184.70:8088/', //请求本地 需要jeecg-boot后台项目
         //  target: 'http://adsp.tjyourong.com.cn/', //请求本地 需要jeecg-boot后台项目
@@ -116,7 +116,7 @@ module.exports = {
         // target:'http://118.24.244.213:8804',
         // target: 'http://192.168.1.43:9090', // 子安
         // target: 'http://192.168.1.8:8806', // 学超
-        // target:'http://139.186.165.84:8806', //测试
+        target:'http://gateway.tjyourong.com.cn', //测试
         // target:'http://apipre.tjyourong.com.cn', //预生产
         // target: 'http://192.168.1.134:8080', //请求本地 需要jeecg-boot后台项目  周泽宇