#
whycq
2023-12-02 c2d3a6e9aaedcda8efbba97773749be5275f3ff3
#
1个文件已添加
12个文件已修改
634 ■■■■■ 已修改文件
pages.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/business/cstmr/csmtr.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/business/cstmrInfo/cstmrInfo.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/business/goBusiness/businessTripOther.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/business/goBusiness/goBusiness.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/business/goBusiness/reimburseOnline.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/business/plan/plan.vue 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/business/plan/planDetails.vue 151 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/business/pricing/contract.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/business/pricing/priOnline.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/business/pricing/priQuote.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/business/saleManage/saleManage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/login/login2.vue 392 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json
@@ -1,6 +1,12 @@
{
    "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
        {
            "path": "pages/login/login2",
            "style": {
                "navigationBarTitleText": "登录2"
            }
        },
        {
            "path": "pages/login/login",
            "style": {
                "navigationBarTitleText": "登录"
pages/business/cstmr/csmtr.vue
@@ -61,7 +61,7 @@
                user: {
                    username: '',
                    id: 0,
                    type: 'user_id'
                    type: ''
                },
                userid: 0,
                reload: false,
pages/business/cstmrInfo/cstmrInfo.vue
@@ -97,7 +97,7 @@
                user: {
                    username: '',
                    id: 0,
                    type: 'user_id'
                    type: ''
                },
                falg: true,
                csmtrList: [],
pages/business/goBusiness/businessTripOther.vue
@@ -53,7 +53,7 @@
                user: {
                    username: '',
                    id: 0,
                    type: 'user_id'
                    type: ''
                },
                falg: true,
                list:[],
pages/business/goBusiness/goBusiness.vue
@@ -54,7 +54,7 @@
                user: {
                    username: '',
                    id: 0,
                    type: 'user_id'
                    type: ''
                },
                falg: true,
                list: [{
pages/business/goBusiness/reimburseOnline.vue
@@ -51,7 +51,7 @@
                user: {
                    username: '',
                    id: 0,
                    type: 'user_id'
                    type: ''
                },
                falg: true,
                list: [],
pages/business/plan/plan.vue
@@ -101,6 +101,7 @@
        <view class="fxbtn">
            <uni-icons type="plusempty" color="#fff" @click="gotoggle()" ></uni-icons>
        </view>
        <uni-load-more :status="status" :icon-size="16" :content-text="contentText" />
    </view>
</template>
@@ -113,7 +114,7 @@
                user: {
                    username: '',
                    id: 0,
                    type: 'user_id'
                    type: ''
                },
                falg: true,
                csmtrList: [],
@@ -157,7 +158,8 @@
                        name:'其他',
                        value: 7
                    },
                ]
                ],
                param: {curr:1,limit:4}
            }
        },
        onLoad() {
@@ -175,7 +177,7 @@
                this.getDetail()
            }
            setTimeout(()=> {
                this.getCsmtr1()
                this.getList()
            },50)
        },
        onReachBottom() {
@@ -214,10 +216,60 @@
                // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
                this.$refs.popup.open(type)
            },
            getList() {
                let that = this
                that.csmtrList = []
                uni.showLoading()
                if (this.user.type == 'user_id') {
                    that.param = {curr:1,limit:4,user_id: that.user.id}
                } else if(this.user.type == 'dept_id') {
                    that.param = {curr:1,limit:4,dept_id: that.user.id}
                }
                uni.request({
                    url: that.baseUrl + '/plan/page/auth',
                    header: {'token' : uni.getStorageSync('token'),},
                    data: that.param,
                    method:'GET',
                    success(result) {
                        if (result.statusCode ===  404) {
                            uni.showToast({title: '请重新登录', icon: "none", position: 'top'})
                            return
                        }
                        var res = result.data
                        if (res.code === 200) {
                            let list = res.data.records
                            that.csmtrList = that.reload ? list : that.csmtrList.concat(list);
                            if (res.data.records.length == 0) {
                                that.status = 'noMore'
                            }
                        } else if (res.code === 403) {
                            uni.showToast({title: res.msg, icon: "none", position: 'top'})
                            setTimeout(() => {
                                uni.reLaunch({
                                    url: '../../login/login'
                                });
                            }, 1000);
                        } else {
                            uni.showToast({title: res.msg, icon: "none",position: 'top'})
                        }
                    },
                    fail(result) {
                        uni.showToast({title: '请求失败'})
                        setTimeout(() => {
                            uni.reLaunch({
                                url: '../../login/login'
                            });
                        }, 1000);
                    },
                    complete() {
                        uni.hideLoading()
                    }
                })
            },
            getCsmtr1(e) {
                let that = this
                that.csmtrList = []
                uni.showLoading({})
                uni.showLoading()
                let param = {curr:1,limit:4,dept_id: 0,user_id: 67}
                if (this.user.type == 'user_id') {
                    param = {curr:1,limit:4,user_id: that.user.id}
@@ -226,6 +278,7 @@
                } else {
                    param = {curr:1,limit:4}
                }
                param = {curr:1,limit:4}
                uni.request({
                    url: that.baseUrl + '/plan/page/auth',
                    header: {'token' : uni.getStorageSync('token'),},
@@ -292,7 +345,10 @@
                        if (res.code === 200) {
                            let list = res.data.records
                            that.csmtrList = that.reload ? list : that.csmtrList.concat(list);
                            that.curr = that.curr + 1
                            console.log(list);
                            if (list.length > 0) {
                                that.curr = that.curr + 1
                            }
                            if (res.data.records.length == 0) {
                                that.status = 'noMore'
                            }
pages/business/plan/planDetails.vue
@@ -63,25 +63,43 @@
        <view>
            <!-- 输入框示例 -->
            <uni-popup ref="inputDialog" type="dialog">
                <uni-popup-dialog ref="inputClose" mode="input" title="添加跟进人" value="对话框预置提示内容!"
                <uni-popup-dialog ref="inputClose" mode="input" title="选择规划员"
                    placeholder="请输入内容" @confirm="confirm">
                        <uni-combox :candidates="addFollower.followers" placeholder="请选择"
                        v-model="addFollower.follower" @input="autoLoad('follower',addFollower.follower)"></uni-combox>
                        <uni-combox :candidates="planners" placeholder="请选择"
                        v-model="planner" @input="autoLoad('planner',planner)"></uni-combox>
                </uni-popup-dialog>
            </uni-popup>
        </view>
        
        <view class="foot">
            <button  size="mini" type="primary" @click="edite(id)">修改</button>
            <button v-show="((((detl.settle == 2 || detl.settle == 3) && detl.settleSize==4) || detl.settle == 1) && user.id == detl.director)"
                size="mini" type="primary" @click="approval(id)">审批</button>
            <button v-show="(((detl.settle == 2 || detl.settle == 3)&& detl.settleSize==4) && user.id == detl.director)"
                size="mini" type="primary" @click="approvalEnd(id)">回退审批</button>
            <button  v-show="(detl.settle == 1 && user.id == detl.userId)"
                size="mini" type="primary" @click="edite(id)">修改</button>
            <!-- <button  size="mini" type="warn" @click="del(id)">删除</button> -->
        </view>
    </view>
</template>
<script>
    import user from '@/pages/api/user/user.js'
    export default {
        data() {
            return {
                planner: '',
                plannerId: '',
                planners: [],
                plannerList: [],
                nowUserId: '', // 当前登录人员 user.userId
                director: '',  // 当前节点审核  dire
                userId: '', // 当前任务业务员 userid
                user: {
                    username: '',
                    id: 0,
                    type: ''
                },
                current: 1,
                id: 0,
                detl: {
@@ -120,7 +138,7 @@
            }
        },
        onLoad(option) { 
            console.log(option);
            this.current = 1
            if (JSON.stringify(option) != "{}") {
                this.id = option.id
                this.init()
@@ -128,13 +146,26 @@
                let _this = this
                const eventChannel = this.getOpenerEventChannel();
                eventChannel.on('saleManage', function(data) {
                    console.log(data);
                    _this.id = data.data
                    _this.init()
                })
            }
        },
        onShow() {
            this.getDetail()
        },
        methods: {
            // 获取用户信息
            async getDetail() {
                let res = await user.getDetail()
                if (res.code === 200) {
                    this.user.username = res.data.username
                    this.user.id = res.data.id
                } else if (res.code === 403) {
                    this.backLogin(res)
                }
            },
            // 初始化
            init() {
                let that = this
                that.info = []
@@ -228,6 +259,7 @@
                    }
                })
            },
            // 删除
            del(e) {
                let that = this
                e = Number(e)
@@ -256,52 +288,26 @@
            addPerson() {
                this.$refs.inputDialog.open()
            },
            // 确认选择工作人
            confirm() {
                let that = this
                var followerId
                var followerList = that.addFollower.followerList
                for (var i = 0;i < followerList.length; i++) {
                    if (followerList[i].name == this.addFollower.follower) {
                        followerId =followerList[i].value
                    }
                }
                uni.request({
                    url: that.baseUrl + '/detl/followers/add/json',
                    header:{'token':uni.getStorageSync('token'),
                        // 'content-type':'application/x-www-form-urlencoded',
                        },
                    data: {
                        cstmrId: that.cstmrId,
                        followerIds:followerId},
                    method: 'POST',
                    success(result) {
                        var res = result.data
                        that.getFollowers()
                    }
                })
                this.addFollower.follower = ''
            },
            // 工作人列表
            autoLoad(type,condition) {
                let that = this
                that.addFollower.followers = []
                that.addFollower.followerList = []
                uni.request({
                    url: that.baseUrl + '/user/all/get/kv',
                    header:{'token':uni.getStorageSync('token')},
                    data: {condition:condition},
                    url: that.baseUrl + '/plan/planner/list/auth',
                    header:{
                        'token':uni.getStorageSync('token'),
                        'content-type': 'application/x-www-form-urlencoded;charset=UTF-8'
                    },
                    sslVerify: false,
                    data: {planId:condition},
                    method: 'POST',
                    success(result) {
                        var res = result.data
                        if (res.code === 200) {
                            var element;
                            if (type == 'follower') {
                                for(element of res.data) {
                                    that.addFollower.followers.push(element.name)
                                    that.addFollower.followerList.push(element)
                            if (res.data) {
                                for (let k of res.data) {
                                    that.planners.push(k.name)
                                    that.plannerList.push(k)
                                }
                                return
                            }
                        }
                    }
@@ -337,6 +343,65 @@
                    url: url
                })
            },
            // 审批
            approval() {
                let _this = this
                this.$refs.inputDialog.open()
                this.autoLoad("type",this.detl.id)
            },
            // 规划员审批
            confirm() {
                for (let element of this.plannerList) {
                    if(element.value == this.planner) {
                        this.plannerId = element.value
                    }
                }
                let _this = this
                uni.request({
                    url: `${_this.baseUrl}/plan/approval/auth`,
                    header: {
                        'token':uni.getStorageSync('token'),
                        'content-type': 'application/x-www-form-urlencoded;charset=UTF-8'
                    },
                    sslVerify: false,
                    data: {
                        planId: _this.detl.id,
                        plannerId: _this.plannerId
                    },
                    method: 'POST',
                    success(res) {
                        res = res.data
                        uni.showToast({title: res.msg, icon: "none", position: 'top'})
                        uni.navigateBack()
                    }
                })
            },
            approvalEnd() {
                let _this = this
                uni.request({
                    url: `${_this.baseUrl}/plan/approvalEnd/auth`,
                    header: {
                        'token':uni.getStorageSync('token'),
                        'content-type': 'application/x-www-form-urlencoded;charset=UTF-8'
                    },
                    sslVerify: false,
                    data: { planId: _this.detl.id },
                    method: 'POST',
                    success(res) {
                        res = res.data
                        uni.showToast({title: res.msg, icon: "none", position: 'top'})
                        uni.navigateBack()
                    }
                })
            },
            backLogin(res) {
                uni.showToast({title: res.msg, icon: "none", position: 'top'})
                setTimeout(() => {
                    uni.reLaunch({
                        url: '../../login/login'
                    });
                }, 1000);
            },
        }
    }
</script>
pages/business/pricing/contract.vue
@@ -48,7 +48,7 @@
                user: {
                    username: '',
                    id: 0,
                    type: 'user_id'
                    type: ''
                },
                falg: true,
                list: [],
pages/business/pricing/priOnline.vue
@@ -50,7 +50,7 @@
                user: {
                    username: '',
                    id: 0,
                    type: 'user_id'
                    type: ''
                },
                falg: true,
                list: [],
@@ -62,7 +62,6 @@
        onShow() {
            let that = this
            uni.$on('isRefresh',function(data){
                // console.log(data);
                that.user.username = data.title
                that.user.id = data.id
                that.user.type = data.key
pages/business/pricing/priQuote.vue
@@ -50,7 +50,7 @@
                user: {
                    username: '',
                    id: 0,
                    type: 'user_id'
                    type: ''
                },
                falg: true,
                list: [],
pages/business/saleManage/saleManage.vue
@@ -92,7 +92,7 @@
                user: {
                    username: '',
                    id: 0,
                    type: 'user_id'
                    type: ''
                },
                falg: true,
                csmtrList: [],
pages/login/login2.vue
New file
@@ -0,0 +1,392 @@
<template>
    <view class="container">
        <image class="logo" src="/static/image/logo.png"></image>
        <!-- 登录信息 -->
        <view class="user-info">
            <view class="user-info-item shadow-warp">
                <view class="icons">
                    <uni-icons type="person" size="20"></uni-icons>
                </view>
                <text>账号:</text>
                <input type="text" placeholder="请输入账号!" v-model="user.userName"
                    placeholder-style="font-size:14px;color:#ccc;">
            </view>
            <view class="user-info-item shadow-warp">
                <view class="icons">
                    <uni-icons type="locked" size="20"></uni-icons>
                </view>
                <text>密码:</text>
                <input :password="!showPassword" v-model="user.password" placeholder="请输入密码!"
                    placeholder-style="font-size:14px;color:#ccc;">
                <view class="showPassword" v-if="showPassword" @click="changePassword">
                    <uni-icons type="eye" size="20"></uni-icons>
                </view>
                <view class="showPassword" v-if="!showPassword" @click="changePassword">
                    <uni-icons type="eye-slash" size="20"></uni-icons>
                </view>
            </view>
        </view>
        <!-- 登录按钮 -->
        <view class="loging">
            <button class="button" @click="onLogin()" :loading="load.loading">{{load.btnText}}</button>
        </view>
        <view>
            <!-- 提示窗示例 -->
            <uni-popup ref="upVersion" type="dialog">
                <uni-popup-dialog :type="msgType" title="通知" :content="dialogContent" @confirm="dialogConfirm"
                    @close="dialogClose"></uni-popup-dialog>
            </uni-popup>
        </view>
        <!-- #ifdef APP-PLUS -->
        <view class="version">
            当前版本: {{version}}
        </view>
        <!-- #endif -->
    </view>
</template>
<script>
    import md5 from '../../common/md5.js'
    export default {
        data() {
            return {
                version: '',
                showPassword: false,
                user: {
                    userName: '',
                    password: '',
                },
                load: {
                    loading: false,
                    btnText: '登录'
                },
                msgType: 'success',
                filename: '',
                dialogContent: ''
            }
        },
        onLoad: function() {
            this.user.userName = uni.getStorageSync('userName')
            this.user.password = uni.getStorageSync('password')
            // #ifdef APP-PLUS
            var that = this
            plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
                that.version = wgtinfo.version
            });
            // #endif
        },
        onShow() {
            this.getVersion()
        },
        methods: {
            changePassword: function() {
                this.showPassword = !this.showPassword;
            },
            //检测当前平台,如果是安卓则启动安卓更新
            getVersion() {
                let that = this;
                uni.getSystemInfo({
                    success: (res) => {
                        if (res.platform == "android") {
                            that.AndroidCheckUpdate();
                        }
                    }
                })
            },
            // 获取当前版本号
            AndroidCheckUpdate() {
                let that = this;
                plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
                    that.version = wgtinfo.version //客户端版本号
                })
                setTimeout(()=>{
                    that.getUpdateVersion()
                },100)
            },
            // 校验版本
            getUpdateVersion() {
                let that = this
                let type = 0
                if (that.baseUrl == 'http://undefined:undefined/undefined') {
                    return
                }
                let url = that.baseUrl + '/appVersion/checkUpdate/' + that.version + '/' + type
                uni.request({
                    url: url,
                    method: 'GET',
                    success(res) {
                        console.log(res);
                        var res = res.data
                        if (res.data) {
                            that.filename = res.data.path
                            that.dialogContent = '发现新版本:' + res.data.version + ', 是否立即更新'
                            that.$refs.upVersion.open()
                        } else {
                            uni.showToast({
                                title: res.msg,
                                icon: "none",
                                position: 'top'
                            })
                        }
                    }
                })
            },
            dialogConfirm() {
                this.$refs.upVersion.close()
                this.downWgt()
            },
            dialogClose() {
                this.$refs.upVersion.close()
            },
            downWgt() {
                let that = this;
                const downloadUrl = that.baseUrl + "/appVersion/downloadApp/" + that.filename
                uni.showLoading({
                    title: '更新中……'
                })
                const downloadTask = uni.downloadFile({ //执行下载
                    url: downloadUrl, //下载地址
                    timeout: 1000 * 30, //30秒超时时间
                    success: downloadResult => { //下载成功
                        console.log(downloadResult);
                        that.showdownLine = false
                        uni.hideLoading();
                        if (downloadResult.statusCode == 200) {
                            uni.showModal({
                                title: '',
                                content: '更新成功,确定现在重启吗?',
                                confirmText: '重启',
                                confirmColor: '#EE8F57',
                                success: function(res) {
                                    if (res.confirm == true) {
                                        plus.runtime.install( //安装
                                            downloadResult.tempFilePath, {
                                                force: true
                                            },
                                            function(res) {
                                                utils.showToast('更新成功,重启中');
                                                plus.runtime.restart();
                                            }
                                        );
                                    }
                                }
                            });
                        } else {
                            uni.hideLoading();
                            that.showdownLine = false
                            uni.showToast({
                                title:'请先上传安装包',
                                icon: 'error'
                            })
                        }
                    },
                    fail: err => {
                        uni.hideLoading();
                        that.showdownLine = false
                        that.$u.toast(downloadResult.errMsg)
                    },
                    complete: com => {
                        console.log(com)
                    }
                });
                // 下载进度
                downloadTask.onProgressUpdate(res => {
                    that.downloadNum = res.progress
                    console.log('下载进度' + that.downloadNum);
                });
            },
            onLogin() {
                let that = this
                uni.request({
                    url: that.baseUrl + '/login.action',
                    fail(result) {
                        uni.showToast({
                            icon: 'error',
                            title: '请求失败'
                        })
                    },
                    data: {
                        username: that.user.userName,
                        password: md5.hex_md5(that.user.password)
                    },
                    header: {
                        "content-type": "application/json"
                    },
                    success(result) {
                        if (result.statusCode === 404) {
                            uni.showToast({
                                title: '登录失败',
                                icon: "error"
                            })
                            return
                        }
                        let res = result.data
                        if (res.code === 200) {
                            that.load.loading = true;
                            that.load.btnText = '登录中';
                            uni.setStorageSync('token', res.data.token);
                            uni.setStorageSync('userName', that.user.userName);
                            uni.setStorageSync('password', that.user.password);
                            setTimeout(() => {
                                uni.showToast({
                                    title: '登录成功'
                                })
                                setTimeout(() => {
                                    uni.reLaunch({
                                        url: '../index/index'
                                    });
                                }, 300)
                            }, 700)
                        } else {
                            uni.showToast({
                                title: res.msg
                            })
                        }
                    },
                })
            },
        }
    }
</script>
<style>
    .container {
        display: flex;
        flex-direction: column; // 表示垂直方向,由上到下
        width: 100%;
        min-height: 93.4vh;
    }
    .logo {
        width: 300px;
        height: 163px;
        margin-top: 100rpx;
        margin-left: auto;
        margin-right: auto;
        margin-bottom: 50rpx;
    }
    .user-info {
        display: flex;
        align-items: center;
        flex-direction: column;
        width: 100%;
        height: 400rpx;
        font-size: 14px;
        letter-spacing: 1px;
    }
    .user-info-item {
        display: flex;
        width: 650rpx;
        height: 100rpx;
        line-height: 100rpx;
        align-items: center;
        background-color: #fff;
        margin-bottom: 30rpx;
        font-size: 28rpx;
        font-weight: 500;
    }
    .user-info-item>input {
        width: 400rpx;
        color: #606266;
        font-weight: 500;
        caret-color: #606266; // 光标颜色
    }
    .icons {
        margin-left: 20rpx;
        margin-right: 18rpx;
    }
    .showPassword {
        position: absolute;
        right: 10rpx;
    }
    .shadow-warp {
        position: relative;
        box-shadow: 0 0 10upx rgba(0, 0, 0, 0.1);
    }
    .shadow-warp:before,
    .shadow-warp:after {
        position: absolute;
        content: "";
        top: 20upx;
        bottom: 30upx;
        left: 20upx;
        width: 50%;
        box-shadow: 0 30upx 20upx rgba(0, 0, 0, 0.2);
        transform: rotate(-3deg);
        z-index: -1;
    }
    .shadow-warp:after {
        right: 20upx;
        left: auto;
        transform: rotate(3deg);
    }
    .loging {
        position: fixed;
        bottom: 100rpx;
        left: 0;
        right: 0;
        margin-left: auto;
        margin-right: auto;
    }
    .button {
        color: #fff;
        background-color: #409EFF;
        width: 150px;
        height: 40px;
        line-height: 40px;
    }
    button::after {
        border: initial;
    }
    .button-hover {
        color: #fff;
        background-color: #6fc1ff;
    }
    .version {
        width: 100%;
        position: fixed;
        bottom: 30rpx;
        left: 0;
        right: 0;
        margin-left: auto;
        margin-right: auto;
        text-align: center;
        font-size: 10px;
        color: #C0C4CC;
    }
    .input {
        display: block;
        font-size: 14px;
    }
    .uni-input {
        height: 50rpx;
        padding: 15rpx 25rpx;
        line-height: 50rpx;
        font-size: 28rpx;
        background: #FFF;
        flex: 1;
    }
</style>