李林
2024-01-08 310ebbbc42e94e947484ec7f4014ddbe9a5612f2
修订版本1.0
已修改13个文件
299 ■■■■ 文件已修改
src/assets/api/controller.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/tool/value-table.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/custom-enum.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/data-reporting.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/fans-submit.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/finance-submit.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/index-index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/person-manage.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/product-count.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/product-enum.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/registrant-count.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/view/enter.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -35,6 +35,8 @@
    downDataReportingFile: "/dataReporting/downDataReportingFile", //导出数据上报
    downProductCountFile: "/dataReporting/downProductCountFile", //导出项目数据统计
    downRegistrantCountFile: "/dataReporting/downRegistrantCountFile", //导出员工数据统计
    downFansSubmitFile: "/dataReporting/downFansSubmitFile", //导出进粉上报
    inputFansSubmitCsv: "/dataReporting/inputFansSubmitCsv", //导入进粉上报
    
    selectFansSubmitList: "/dataReporting/selectFansSubmitList", //获取进粉上报列表
    delFansSubmit: "/dataReporting/delFansSubmit", //删除进粉上报信息
src/components/tool/value-table.vue
@@ -31,6 +31,15 @@
        justify-content: center;
    }
</style>
<style>
    .value-table .el-upload {
        width: 100%;
    }
    .value-table .el-upload-dragger {
        width: 100%;
    }
</style>
<template>
    <div class="value-table">
@@ -43,7 +52,7 @@
                <el-table-column align="center" type="index" label="序号" width="70" v-if="data.isIndex">
                </el-table-column>
                <el-table-column :prop="a.label" :label="a.value" sortable="custom" v-for="(a, ai) in tableHead" :key="ai"
                    show-overflow-tooltip min-width="145">
                    show-overflow-tooltip min-width="160">
                    <template slot-scope="scope">
                        <div v-if="showType(a.label, data.tagField) != null">
                            <el-tag v-for="(b, bi) in data.tagField[a.label].select" :key="bi" v-if="b.value == scope.row[a.label]"
@@ -70,12 +79,14 @@
        <el-dialog title="编辑" :visible.sync="upDia" width="500px">
            <div class="body" v-if="upDia">
                <el-row v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;">
                    <el-col :span="5" style="text-align: right;">{{a.value}}:</el-col>
                    <el-col :span="17" :offset="1">
                        <el-input v-model="upData[a.label]" size="small" clearable
                            v-if="showType(a.label, data.selectField) == null"></el-input>
                    <el-col :span="6" style="text-align: right;">
                        <span class="required-span" v-if="showUpReq(a.label)">* </span>{{a.value}}:
                    </el-col>
                    <el-col :span="16" :offset="1">
                        <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`请输入${a.value}`"
                            v-if="showType(a.label, data.selectField) == null" :disabled="isDisabled(a.label)"></el-input>
                        <el-select v-model="upData[a.label]" size="small" v-if="showType(a.label, data.selectField) != null"
                            style="width: 100%;">
                            style="width: 100%;" :disabled="isDisabled(a.label)">
                            <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value"
                                :label="b.label"></el-option>
                        </el-select>
@@ -88,9 +99,9 @@
            </span>
        </el-dialog>
        <el-dialog title="新增" :visible.sync="addDia" width="500px">
            <div class="body" v-if="addDia" style="max-height: 600px;overflow-y: auto;">
            <div class="body" v-if="addDia" style="max-height: 600px;overflow-y: auto;padding: 5px 0;">
                <el-row v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;">
                    <el-col :span="6" style="text-align: right;">{{a.value}}:</el-col>
                    <el-col :span="6" style="text-align: right;"><span class="required-span" v-if="showAddReq(a.label)">* </span>{{a.value}}:</el-col>
                    <el-col :span="16" :offset="1">
                        <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`请输入${a.value}`"
                            v-if="showType(a.label, data.selectField) == null"></el-input>
@@ -117,6 +128,20 @@
                </div>
            </div>
        </el-dialog>
        <el-dialog title="数据导入" :visible.sync="uploadDia" width="500px">
            <div style="margin: 0 auto;">
                <el-upload ref="upload" drag :action="javaApi + inputUrl" :headers="token"
                    :file-list="fileList" name="file" :auto-upload="false" accept=".csv" :limit="1" :on-change="beforeUpload"
                    :on-success="onSuccess" :on-error="onError">
                    <i class="el-icon-upload"></i>
                    <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
                </el-upload>
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button @click="uploadDia = false">取 消</el-button>
                <el-button type="primary" @click="submitUpload()">上 传</el-button>
            </span>
        </el-dialog>
    </div>
</template>
@@ -139,6 +164,10 @@
                default: () => null
            },
            downUrl: {
                type: String,
                default: () => null
            },
            inputUrl: {
                type: String,
                default: () => null
            },
@@ -219,7 +248,10 @@
                addUrl: null,
                addLoad: false,
                dataCopy: {},
                downDia: false
                downDia: false,
                uploadDia: false,
                token: null,
                fileList: [],
            }
        },
        watch: {
@@ -236,6 +268,9 @@
            this.data = this.componentData
            this.dataCopy = this.HaveJson(this.componentData)
            this.selectList()
            this.token = {
                'token': sessionStorage.getItem('token')
            }
        },
        methods: {
            selectChange(val) {
@@ -308,12 +343,34 @@
                var str = ob[val]
                return str == undefined ? null : ob[val].select
            },
            showAddReq(label){
                if(this.data.requiredAdd==undefined){
                    return
                }
                for (var i = 0; i < this.data.requiredAdd.length; i++) {
                    if(label == this.data.requiredAdd[i]){
                        return true
                    }
                }
                return false
            },
            showUpReq(label){
                if(this.data.requiredUp==undefined){
                    return
                }
                for (var i = 0; i < this.data.requiredUp.length; i++) {
                    if(label == this.data.requiredUp[i]){
                        return true
                    }
                }
                return false
            },
            main(row, val) {
                if (val.method == undefined) return
                else if (val.method == 'doDiy') {
                    if (val.id == 'update') {
                        this.upDia = true,
                            this.upData = this.HaveJson(row)
                        this.upData = this.HaveJson(row)
                        this.upHead = this.HaveJson(this.tableHead)
                        this.upHead = this.upHead.filter(a => a.label != 'createTime' && a.label != 'updateTime')
                        delete this.upData.orderBy
@@ -370,6 +427,16 @@
                if (this.upUrl == null) {
                    this.$message.error('请给修改请求地址')
                    return
                }
                for (var i = 0; i < this.data.requiredUp.length; i++) {
                    if(this.upData[this.data.requiredUp[i]]==null||this.upData[this.data.requiredUp[i]]==''){
                        var list = this.upHead.filter(a=>{
                            if(a.label == this.data.requiredUp[i]) return a
                        })
                        if(list[0].value == undefined) continue
                        this.$message.error(list[0].value + '是必填项')
                        return
                    }
                }
                this.upLoad = true
                this.$axios.post(this.upUrl, this.upData, {
@@ -432,6 +499,16 @@
                    this.$message.error('请给添加请求地址')
                    return
                }
                for (var i = 0; i < this.data.requiredAdd.length; i++) {
                    if(this.upData[this.data.requiredAdd[i]]==null||this.upData[this.data.requiredAdd[i]]==''){
                        var list = this.upHead.filter(a=>{
                            if(a.label == this.data.requiredAdd[i]) return a
                        })
                        if(list[0].value == undefined) continue
                        this.$message.error(list[0].value + '是必填项')
                        return
                    }
                }
                this.addLoad = true
                this.$axios.post(this.addUrl, this.upData, {
                    headers: {
@@ -492,6 +569,55 @@
                    this.loading = false
                    this.$message.error('请刷新页面再尝试')
                })
            },
            openUpload() {
                if (this.inputUrl == null) {
                    this.$message.error('请给导入请求地址')
                    return
                }
                this.uploadDia = true
            },
            beforeUpload(file, fileList) {
                if (file.raw.type != 'text/csv') {
                    this.$message.error('上传文件格式不正确');
                    this.$refs.upload.clearFiles()
                    return false;
                }
            },
            submitUpload() {
                if (this.$refs.upload.uploadFiles.length == 0) {
                    this.$message.error('未选择文件')
                    return
                }
                this.uploading = true
                this.$refs.upload.submit();
            },
            onSuccess(response, file, fileList) {
                this.$refs.upload.clearFiles()
                this.uploadDia = false
                this.uploading = false
                if(response.code==201){
                    this.$message.error(response.message)
                    return
                }
                this.$message.success('上传成功')
                this.selectList()
            },
            onError(err, file, fileList) {
                this.$message.error('上传失败')
                this.$refs.upload.clearFiles()
                this.uploading = false
            },
            isDisabled(label){
                if(this.data.disabledUp==undefined){
                    return
                }
                for (var i = 0; i < this.data.disabledUp.length; i++) {
                    if(label == this.data.disabledUp[i]){
                        return true
                    }
                }
                return false
            }
        }
    }
src/components/view/custom-enum.vue
@@ -100,7 +100,10 @@
                        type: 'text',
                        method: 'doDiy'
                    }],
                    tagField: {}
                    tagField: {},
                    selectField: {},
                    requiredAdd:['company','name'],
                    requiredUp:['company','name']
                },
                entityCopy: {},
                upIndex: 0,
src/components/view/data-reporting.vue
@@ -71,7 +71,7 @@
            <div class="search_thing">
                <div class="search_label">系统日期:</div>
                <div class="search_input">
                    <el-date-picker size="small" v-model="componentData.entity.updateTime" type="date" placeholder="选择日期"
                    <el-date-picker size="small" v-model="componentData.entity.createTime" type="date" placeholder="选择日期"
                        value-format="yyyy-MM-dd HH:mm:ss" clearable></el-date-picker>
                </div>
            </div>
@@ -133,6 +133,16 @@
                    </el-col>
                </el-row>
                <el-row style="line-height: 50px;">
                    <el-col :span="4" style="text-align: right;padding-right: 8px;">姓名</el-col>
                    <el-col :span="7">
                        <el-input v-model="upData.name2" size="small" disabled></el-input>
                    </el-col>
                    <el-col :span="4" style="text-align: right;padding-right: 8px;">代理</el-col>
                    <el-col :span="7">
                        <el-input v-model="upData.agent" size="small" disabled></el-input>
                    </el-col>
                </el-row>
                <el-row style="line-height: 50px;">
                    <el-col :span="4" style="text-align: right;padding-right: 8px;">展现量</el-col>
                    <el-col :span="7">
                        <el-input v-model="upData.showNum" size="small" disabled></el-input>
@@ -177,7 +187,7 @@
                    <el-col :span="7">
                        <el-input v-model="upData.profit" size="small" disabled></el-input>
                    </el-col>
                    <el-col :span="4" style="text-align: right;padding-right: 8px;">代理返点</el-col>
                    <el-col :span="4" style="text-align: right;padding-right: 8px;">员工代理返点</el-col>
                    <el-col :span="7">
                        <el-input v-model="upData.agentRebate" size="small" disabled></el-input>
                    </el-col>
@@ -235,7 +245,7 @@
            return {
                componentData: {
                    entity: {
                        updateTime: null,
                        createTime: null,
                        registrant: null,
                        product: null,
                        orderBy: {
@@ -252,7 +262,7 @@
                        type: 'text',
                        method: 'upRole',
                        field: ['createUserName', 'updateUserName', 'registrant', 'department', 'consumption',
                            'rebateConsumption', 'discountedConsumption', 'profit', 'remark', 'actualCost'
                            'rebateConsumption', 'discountedConsumption', 'profit', 'remark', 'actualCost', 'fansAdd', 'agentRebate'
                        ]
                    }, {
                        id: 'delete',
@@ -261,7 +271,8 @@
                        method: 'doDiy'
                    }],
                    tagField: {},
                    selectField: {}
                    selectField: {},
                    requiredAdd:['name2','agent','channel','product','showNum','click','accountConsumption'],
                },
                entityCopy: {},
                upIndex: 0,
@@ -279,6 +290,21 @@
                outPower: true
            }
        },
        created() {
            var today = new Date();
            var yesterday = new Date(today);
            yesterday.setDate(today.getDate() - 1);
            var yyyy = yesterday.getFullYear();
            var mm = yesterday.getMonth() + 1;
            var dd = yesterday.getDate()
            if (dd < 10) {
                dd = "0" + dd;
            }
            if (mm < 10) {
                mm = "0" + mm;
            }
            this.componentData.entity.createTime = this.HaveJson(`${yyyy}-${mm}-${dd} 00:00:00`)
        },
        mounted() {
            this.entityCopy = this.HaveJson(this.componentData.entity)
            this.selectProductEnumList()
src/components/view/fans-submit.vue
@@ -42,6 +42,14 @@
            <el-row class="title">
                <el-col :span="12" style="padding-left: 20px;">进粉上报</el-col>
                <el-col :span="12" style="text-align: right;">
                    <el-button size="medium" @click="$refs.ValueTable.openUpload()" v-if="inPower">
                        <i class="el-icon-upload2" style="color: #3A7BFA;"></i>
                        <span style="color: #3A7BFA;">导入</span>
                    </el-button>
                    <el-button size="medium" @click="$refs.ValueTable.openDownDia()" v-if="outPower">
                        <i class="el-icon-download" style="color: #3A7BFA;"></i>
                        <span style="color: #3A7BFA;">导出</span>
                    </el-button>
                    <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">新增</el-button>
                </el-col>
            </el-row>
@@ -50,7 +58,8 @@
            <div class="search_thing">
                <div class="search_label">系统日期:</div>
                <div class="search_input">
                    <el-date-picker size="small" v-model="componentData.entity.createTime" type="date" placeholder="选择日期" value-format="yyyy-MM-dd HH:mm:ss" clearable></el-date-picker>
                    <el-date-picker size="small" v-model="componentData.entity.createTime" type="date" placeholder="选择日期"
                        value-format="yyyy-MM-dd HH:mm:ss" clearable></el-date-picker>
                </div>
            </div>
            <div class="search_thing">
@@ -74,7 +83,8 @@
            <div class="search_thing">
                <div class="search_label">登记人:</div>
                <div class="search_input">
                    <el-input size="small" v-model="componentData.entity.createUserName" clearable placeholder="登记人" @keyup.enter.native="refreshTable()"></el-input>
                    <el-input size="small" v-model="componentData.entity.createUserName" clearable placeholder="登记人"
                        @keyup.enter.native="refreshTable()"></el-input>
                </div>
            </div>
            <div class="search_thing" style="padding-left: 30px;">
@@ -83,7 +93,9 @@
            </div>
        </div>
        <div class="table">
            <ValueTable ref="ValueTable" :url="$api.dataReporting.selectFansSubmitList" :upUrl="$api.dataReporting.updateFansSubmit" :delUrl="$api.dataReporting.delFansSubmit" :componentData="componentData" :key="upIndex"/>
            <ValueTable ref="ValueTable" :url="$api.dataReporting.selectFansSubmitList"
                :upUrl="$api.dataReporting.updateFansSubmit" :delUrl="$api.dataReporting.delFansSubmit"
                :componentData="componentData" :key="upIndex" :downUrl="$api.dataReporting.downFansSubmitFile" :inputUrl="$api.dataReporting.inputFansSubmitCsv"/>
        </div>
    </div>
</template>
@@ -115,8 +127,8 @@
                        font: '编辑',
                        type: 'text',
                        method: 'doDiy',
                        field:['createUserName']
                    },{
                        field: ['createUserName']
                    }, {
                        id: 'delete',
                        font: '删除',
                        type: 'text',
@@ -127,14 +139,21 @@
                        product: {
                            select: []
                        },
                        custom: {select: []}
                        custom: {
                            select: []
                        }
                    },
                    requiredAdd: ['custom', 'product', 'fansAdd'],
                    requiredUp: ['custom', 'product', 'fansAdd'],
                    disabledUp: ['custom','product']
                },
                entityCopy: {},
                upIndex: 0,
                product: [],
                custom: [],
                addPower: true
                addPower: true,
                inPower: true,
                outPower: true
            }
        },
        mounted() {
@@ -151,14 +170,14 @@
                this.componentData.entity = this.HaveJson(this.entityCopy)
                this.upIndex++
            },
            openAdd(){
            openAdd() {
                this.$refs.ValueTable.openAddDia(this.$api.dataReporting.addFansSubmit);
            },
            selectProductEnumList(){
                this.$axios.get(this.$api.enums.selectProductEnumList).then(res=>{
            selectProductEnumList() {
                this.$axios.get(this.$api.enums.selectProductEnumList).then(res => {
                    this.product = res.data
                    var str = []
                    res.data.forEach(a=>{
                    res.data.forEach(a => {
                        str.push({
                            label: a.product,
                            value: a.product
@@ -167,11 +186,11 @@
                    this.componentData.selectField.product.select = str
                })
            },
            selectCustomEnumList(){
                this.$axios.get(this.$api.enums.selectCustomEnumList).then(res=>{
            selectCustomEnumList() {
                this.$axios.get(this.$api.enums.selectCustomEnumList).then(res => {
                    this.custom = res.data
                    var str = []
                    res.data.forEach(a=>{
                    res.data.forEach(a => {
                        str.push({
                            label: a.name,
                            value: a.name
@@ -181,29 +200,32 @@
                })
            },
            // 权限分配
            getPower(){
            getPower() {
                let power = JSON.parse(sessionStorage.getItem('power'))
                let up = false
                let del = false
                let add = false
                for (var i = 0; i < power.length; i++) {
                    if(power[i].menuMethod=='upDataReporting'){
                    if (power[i].menuMethod == 'upDataReporting') {
                        up = true
                    }
                    if(power[i].menuMethod=='delFansSubmit'){
                    if (power[i].menuMethod == 'delFansSubmit') {
                        del = true
                    }
                    if(power[i].menuMethod=='addFansSubmit'){
                    if (power[i].menuMethod == 'addFansSubmit') {
                        add = true
                    }
                }
                if(!del){
                if (!del) {
                    this.componentData.do.splice(1, 1)
                }
                if(!up){
                if (!up) {
                    this.componentData.do.splice(0, 1)
                }
                this.addPower = add
            },
            openUpload() {
            }
        }
    }
src/components/view/finance-submit.vue
@@ -102,6 +102,8 @@
                        },
                        custom: {select: []}
                    },
                    requiredAdd: ['company', 'name', 'employeeRebate'],
                    requiredUp: ['company', 'name', 'employeeRebate']
                },
                entityCopy: {},
                upIndex: 0,
src/components/view/index-index.vue
@@ -325,7 +325,7 @@
            }, 1000)
            setInterval(() => {
                this.getDataList()
            }, 30000)
            }, 60 * 1000)
        },
        methods: {
            nowTime() {
src/components/view/person-manage.vue
@@ -135,7 +135,9 @@
                        roleId: {
                            select: []
                        }
                    }
                    },
                    requiredAdd:['account','name','state','roleId','password'],
                    requiredUp:['account','name','state','roleId']
                },
                entityCopy: {},
                upIndex: 0,
src/components/view/product-count.vue
@@ -113,6 +113,21 @@
                outPower: true
            }
        },
        created() {
            var today = new Date();
            var yesterday = new Date(today);
            yesterday.setDate(today.getDate() - 1);
            var yyyy = yesterday.getFullYear();
            var mm = yesterday.getMonth() + 1;
            var dd = yesterday.getDate()
            if (dd < 10) {
                dd = "0" + dd;
            }
            if (mm < 10) {
                mm = "0" + mm;
            }
            this.componentData.entity.createTime = `${yyyy}-${mm}-${dd} 00:00:00`
        },
        mounted() {
            this.entityCopy = this.HaveJson(this.componentData.entity)
            this.selectProductEnumList()
src/components/view/product-enum.vue
@@ -94,7 +94,10 @@
                        type: 'text',
                        method: 'doDiy'
                    }],
                    tagField: {}
                    tagField: {},
                    selectField: {},
                    requiredAdd:['product'],
                    requiredUp:['product']
                },
                entityCopy: {},
                upIndex: 0,
src/components/view/registrant-count.vue
@@ -98,7 +98,7 @@
                        product: null,
                        orderBy: {
                            field: 'update_time',
                            order: 'asc'
                            order: 'desc'
                        }
                    },
                    isIndex: false,
src/main.js
@@ -12,11 +12,11 @@
import swal from 'sweetalert'
//本地
// Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80";
// const javaApi = 'http://localhost:8001';
Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80";
const javaApi = 'http://localhost:8001';
//胜云服务器
Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn";
const javaApi = 'http://122.114.52.69:8001';
// Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn";
// const javaApi = 'http://122.114.52.69:8001';
Vue.prototype.HaveJson = (val) => {
    return JSON.parse(JSON.stringify(val))
}
src/view/enter.vue
@@ -180,11 +180,11 @@
              }
              localStorage.setItem('rememberme', this.ruleForm.remumberme)
              localStorage.setItem('autoenter', this.ruleForm.autoenter)
              if (this.ruleForm.remumberme==true||this.ruleForm.autoenter==true) localStorage.setItem('user', JSON.stringify({
                account: this.ruleForm.account,
                password: this.ruleForm.pwd,
                name: res.data.name
              }))
                            localStorage.setItem('user', JSON.stringify({
                              account: this.ruleForm.account,
                              password: this.ruleForm.pwd,
                              name: res.data.name
                            }))
              sessionStorage.setItem('token', res.data.token)
              sessionStorage.setItem('reToken', res.data.reToken)
                            sessionStorage.setItem('power', JSON.stringify(res.data.power))