陶杰
2024-09-23 d23c25ffba52e073fbf120c45b511fc8ab683b0f
1.合伙人-个人资料修改
已修改2个文件
已添加1个文件
372 ■■■■■ 文件已修改
pages/home/supplier-home.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/user/supplier-user.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/partner/partner-info/partner-info-personal.vue 328 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/supplier-home.vue
@@ -13,11 +13,28 @@
            </view>
            <view class="flex user-info" v-if="currentInfo&&(currentInfo.id)">
                <!-- 头像 -->
                <image class="user-icon" v-if="!currentInfo.picture"
                <image class="user-icon" v-if="
                    (currentInfo.customerDTO&&currentInfo.customerDTO.cover)
                    ||(currentInfo.supplierDTO&&currentInfo.supplierDTO.cover)
                    ||(currentInfo.partnerDTO&&currentInfo.partnerDTO.cover)
                    || currentInfo.picture
                    " :src="
                    (currentInfo.customerDTO&&currentInfo.customerDTO.cover)
                    ||(currentInfo.supplierDTO&&currentInfo.supplierDTO.cover)
                    ||(currentInfo.partnerDTO&&currentInfo.partnerDTO.cover)
                    || currentInfo.picture
                    " mode="aspectFit"></image>
                <image class="user-icon" v-else
                    src='https://youzhen123.oss-cn-huhehaote.aliyuncs.com/WechatOwnerProperty/images/mrtx.png'
                    mode="aspectFit"></image>
                <image class="user-icon" v-if="currentInfo.picture" :src="currentInfo.picture" mode="aspectFit"></image>
                <!-- 头像 -->
            <!--     <image class="user-icon" v-if="!currentInfo.picture"
                    src='https://youzhen123.oss-cn-huhehaote.aliyuncs.com/WechatOwnerProperty/images/mrtx.png'
                    mode="aspectFit"></image>
                <image class="user-icon" v-if="currentInfo.picture" :src="currentInfo.picture" mode="aspectFit"></image> -->
                <view class="name">
                    <view class="t1">
pages/user/supplier-user.vue
@@ -16,16 +16,20 @@
            <!-- v-if="currentInfo&&(currentInfo.id)" -->
            <view class="flex user-info">
                <!-- 头像 -->
                <image class="user-icon" v-if="
                    currentInfo.customerDTO&&currentInfo.customerDTO.cover
                    ||currentInfo.supplierDTO&&currentInfo.supplierDTO.cover
                    (currentInfo.customerDTO&&currentInfo.customerDTO.cover)
                    ||(currentInfo.supplierDTO&&currentInfo.supplierDTO.cover)
                    ||(currentInfo.partnerDTO&&currentInfo.partnerDTO.cover)
                    || currentInfo.picture
                    " :src="
                    currentInfo.customerDTO&&currentInfo.customerDTO.cover
                    ||currentInfo.supplierDTO&&currentInfo.supplierDTO.cover
                    (currentInfo.customerDTO&&currentInfo.customerDTO.cover)
                    ||(currentInfo.supplierDTO&&currentInfo.supplierDTO.cover)
                    ||(currentInfo.partnerDTO&&currentInfo.partnerDTO.cover)
                    || currentInfo.picture
                    " mode="scaleToFill"></image>
                <image class="user-icon" v-else
                    src='https://youzhen123.oss-cn-huhehaote.aliyuncs.com/WechatOwnerProperty/images/mrtx.png'
                    mode="scaleToFill"></image>
@@ -275,6 +279,13 @@
                    <uni-icons type="right"></uni-icons>
                </view>
            </view>
            <view class="user-util m-t-12 flex" v-if="selftype==='partner'||!selftype"
                @click="goto('/sub_pages/partner/partner-info/partner-info-personal',true)">
                <view class="title">个人资料</view>
                <view class="right-icon">
                    <uni-icons type="right"></uni-icons>
                </view>
            </view>
            <view class="user-util m-t-12 flex" v-if="selftype==='partner'"
                @click="goto('/sub_pages/partner/partner-info/partner-info',true)">
                <view class="title">合伙人信息</view>
sub_pages/partner/partner-info/partner-info-personal.vue
对比新文件
@@ -0,0 +1,328 @@
<template>
    <view class="container-page" style="padding: 0rpx;">
        <view v-if="source==='step'" style="padding: 20rpx 0rpx;color: red;;background-color: #e6e6e6;">
            <view style="padding: 20rpx;text-align: center;background-color: #fff;">仅限花满芫合伙人入驻</view>
        </view>
        <view v-if="source==='step'" class="m-t-20">
            <u-steps current="0">
                <u-steps-item title="信息填写" class="u-steps-item" style="font-size: 28rpx;">
                </u-steps-item>
                <u-steps-item title="提交申请" class="u-steps-item"></u-steps-item>
            </u-steps>
        </view>
        <view class="p20">
            <view class="form-item before-line m-t-20" @click="uploadIcon('cover')">
                <view class="label ">头像</view>
                <view class="m-l-a m-r-0 flex m-b-12">
                    <view class="component-button-upload"></view>
                </view>
            </view>
            <view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx" v-if="dto.cover">
                <view class="m-t-12 m-r-10">
                    <image class="banner-img" :src="dto.cover" @click.stop="previewImg(dto.cover)"></image>
                    <view class="t-red text-center" @click.stop="dto.cover=''">删除</view>
                </view>
            </view>
            <view class="form-item before-line">
                <view class="label required">联系人姓名</view>
                <view class="m-l-a m-r-0 flex">
                    <input v-model="dto.name" placeholder="请输入联系人姓名"
                        style="margin-top: 16px;text-align: right;"></input>
                </view>
            </view>
            <view class="form-item before-line">
                <view class="label required">联系方式</view>
                <view class="m-l-a m-r-0 flex">
                    <input v-model="dto.contactTel" placeholder="请输入联系方式"
                        style="margin-top: 16px;text-align: right;"></input>
                </view>
            </view>
            <view class="button-green-1 m-t-20 button-fixed-bottom before-line " @click="submit">更新</view>
        </view>
    </view>
</template>
<script>
    import environments from '@/environments'
    import {
        mapState
    } from 'vuex'
    export default {
        data() {
            return {
                id: '',
                refresh: false,
                source: '',
                api: '',
                dto: {
                    idCards: [],
                    address: '',
                    id: '',
                    userId: '',
                    name: '',
                    contactTel: '',
                    province: '',
                    city: '',
                    region: '',
                    cover: '',
                },
                requireFields: [
                    {
                        name: '联系人姓名',
                        key: 'name'
                    },
                    {
                        name: '联系方式',
                        key: 'contactTel'
                    },
                ],
                regionDataPlus: [],
                show_select_station: false,
                columns_station: [],
            }
        },
        onLoad(options) {
            if (options.id) {
                this.id = options.id
                this.getDetail()
            } else {
                //判断是不是来自登录步骤,是等话需要从缓存里面拿信息
                if (this.source === 'step') {
                    var tjson = this.$storage.getItem('cache_partner_info')
                    if (tjson) {
                        this.dto = {
                            ...this.dto,
                            ...JSON.parse(tjson)
                        }
                    }
                } else {
                    this.getCurrentInfo()
                }
            }
        },
        methods: {
            async getCurrentInfo() {
                this.$message.showLoading()
                const {
                    code,
                    data
                } = await this.$http.request('get', "/api/current/partner", {})
                if (code == 0) {
                    this.dto = {
                        ...data,
                    }
                    if (!this.dto.idCards) {
                        this.dto.idCards = []
                    } else if (typeof this.dto.idCards == 'string') {
                        this.dto.idCards = JSON.parse(this.dto.idCards)
                    }
                    this.dto.userId = this.currentInfo.id
                }
                this.$message.hideLoading()
            },
            async submit() {
                for (var field of this.requireFields) {
                    if (!this.dto[field.key]) {
                        this.$message.showToast(`${field.name}信息未填写`)
                        return
                    }
                }
                const phoneRegex = /^[1][3-9][0-9]{9}$/;
                if (!phoneRegex.test(this.dto.contactTel)) {
                    this.$message.showToast('请填写正确联系方式')
                    return
                }
                await this.$message.confirm(`是否确定提交/修改信息`)
                var dto = {
                    ...this.dto,
                }
                this.$message.showLoading()
                const re = await this.$http.request('post', '/api/partner/base/update', {
                    data: dto
                })
                this.$message.hideLoading()
                if (re.code == 2000 || re.code == 0) {
                    this.$message.showToast('操作成功')
                    this.$store.dispatch('getCurrentInfo')
                    this.backpage()
                } else {
                    console.log('error re', re)
                    if (re.code === 30000 && Array.isArray(re.msg)) {
                        this.$message.showToast('字段未填写完整')
                    }
                }
            },
            async deleteImg(key, index) {
                await this.$message.confirm('是否确认删除此图片')
                if (Array.isArray(this.dto[key])) {
                    this.dto[key].splice(index, 1)
                } else {
                    this.dto[key] = ''
                }
                this.$forceUpdate()
            },
            uploadIcon(key) {
                const that = this
                uni.chooseImage({
                    count: 1, // 最多可以选择的图片张数,默认9
                    sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有
                    sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
                    success: function({
                        errMsg,
                        tempFiles
                    }) {
                        if (errMsg === 'chooseImage:ok') {
                            // console.log(tempFiles[0])
                            if (tempFiles[0].size > 1024 * 1024 * 5) {
                                that.$message.confirm('图片最多支持5M大小,超出大小限制')
                                return
                            }
                            that.$message.showLoading()
                            that.$http.upload(tempFiles[0].path).then(async res => {
                                var pic = res.data && res.data.length > 0 && res.data[
                                    0] || {}
                                that.$message.hideLoading()
                                if (Array.isArray(that.dto[key])) {
                                    that.dto[key].push(pic || '')
                                } else {
                                    that.dto[key] = (pic || {}).url || ''
                                }
                                console.log("that.dto")
                                console.log(that.dto)
                                that.$forceUpdate()
                            }).catch(res => {
                                that.$message.hideLoading()
                            })
                        }
                    }
                })
            },
        },
        computed: {
            ...mapState(['currentInfo'])
        },
        components: {}
    }
</script>
<style lang="scss" scoped>
    .banner-img {
        width: 96rpx;
        height: 96rpx;
        border-radius: 4rpx;
        border: 2rpx dashed #CECECE;
    }
    .form-item {
        // padding: 40rpx;
        border-bottom: 2rpx solid #F3F3F3;
        display: flex;
        // height: 100px;
        .label {
            width: 300rpx;
            line-height: 60px;
        }
        .flex {
            line-height: 60px;
            .flex1 {
                flex: 1;
                text-align: center;
                color: var(--selfblue)
            }
        }
    }
    .form-item.bottom-border-no {
        border-bottom: none;
    }
    .container-page {
        padding: 40rpx;
        background-color: #FFFFFF;
        // min-height: calc(100vh - 80rpx);
        min-height: 100vh;
    }
    .style {
        width: fit-content;
        margin: 0 auto;
        line-height: 64rpx;
        border-radius: 8rpx;
        padding-left: 20rpx;
        padding-right: 20rpx;
        // padding-top: 5rpx;
        // padding-bottom: 5rpx;
        border: 2rpx solid var(--selfblue);
        background-color: var(--selfbluebg);
        min-width: 100rpx;
    }
    .style-1 {
        border: 1px solid rgb(122, 187, 255);
        border: 1px solid #409EFF;
        color: #409EFF;
        background-color: rgb(240, 247, 255);
    }
    .style-2 {
        border: 1px solid rgb(255, 184, 78);
        border: 1px solid #FE9044;
        color: #FE9044;
        background-color: rgb(255, 247, 235);
    }
    .style-3 {
        border: 1px solid #19be6b;
        color: #19be6b;
        background-color: rgb(231, 244, 238);
    }
    .style-4 {
        border: 1px solid #F56c6c;
        color: #F56c6c;
        background-color: rgb(254, 243, 243);
    }
    .reject-reason {
        word-wrap: break-word;
        /* 遇到长单词时强制换行 */
        word-break: break-all;
        /* 长单词会在任意位置换行 */
        white-space: normal;
        /* 允许换行 */
    }
</style>