jiangping
2025-07-16 8ee015485bfd69afcc276e84a2998c64b0256458
前端
已添加2个文件
已修改4个文件
198 ■■■■■ 文件已修改
small-program/pages/index/index.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/pages/login/login.vue 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/store/index.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/login/login.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/utils/http.api.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/utils/http.interceptor.js 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/pages/index/index.vue
@@ -418,10 +418,20 @@
    export default {
        components: { sunuiMverify },
        computed: {
            ...mapState(['navHeight', 'statusbarHeight'])
            ...mapState(['navHeight', 'statusbarHeight','userInfo','token','openid'])
        },
        onShow(options){
            this.type = 0
            if(this.token &&this.token!='' && this.userInfo && JSON.stringify(this.userInfo) != '{}'){
                this.isLogin=true
            }
            if (this.userInfo && this.userInfo.useIdentity == 1) {
                this.type =1
            }
        },
        data() {
            return {
                isLogin: false,
                typeId: 1,
                typeWorkId: 1,
                carId: 1,
@@ -440,7 +450,7 @@
                    { name: '小货车', id: 2 }
                ],
                btn: require('@/static/image/btn.png'),
                type: 1
                type: 0
            }
        },
        methods: {
@@ -454,6 +464,12 @@
                this.carId = e
            },
            jump() {
                console.log(this.userInfo,this.token,this.openid)
                if(!this.userInfo  ||!this.token  ){
                    uni.navigateTo({
                        url: '/pages/login/login'
                    })
                }
                if (this.typeId === 1) {
                    uni.navigateTo({
                        url: '/pages/using-workers/using-workers'
small-program/pages/login/login.vue
@@ -2,21 +2,56 @@
    <view class="box">
        <view class="box-title">欢迎使用近快</view>
        <view class="box-tips">请登录</view>
        <view class="box-btn">手机号一键登录</view>
        <view class="box-btn" >
            <button  class="box-btn"  v-if="agree" open-type="getPhoneNumber" @getphonenumber="getPhone" >手机号一键登录</button>
            <button  class="box-btn"  v-if="!agree" @click="tipAgree">手机号一键登录</button>
        </view>
        <view class="box-footer">
            <image src="/static/icon/ic_notagree@2x.png" mode="widthFix"></image>
            <!-- <image src="/static/icon/ic_agree@2x.png" mode="widthFix"></image> -->
            <text>我已阅读并同意《用户协议》,《隐私协议政策》</text>
            <image src="/static/icon/ic_notagree@2x.png" mode="widthFix" v-if="!agree" @click="agreeDo"></image>
            <image src="/static/icon/ic_agree@2x.png" mode="widthFix" v-if="agree" @click="agreeDo"></image>
            <text @click="agreeDo">我已阅读并同意《用户协议》,《隐私协议政策》</text>
        </view>
    </view>
</template>
<script>
import { mapState } from 'vuex'
    export default {
        computed: {
            ...mapState(['userInfo','openid'])
        },
        data() {
            return {
            };
                agree:false
            }
        },
        methods: {
            agreeDo(){
                this.agree = !this.agree
            },
            tipAgree(){
                uni.showToast({ title: '请先已阅读并同意《用户协议》,《隐私协议政策》', icon: 'error', duration: 2000 });
            },
            getPhone(e) {
                console.log(e)
                if(!this.agree ){
                    return
                }
                if (e.detail.errMsg !== 'getPhoneNumber:ok') {
                    uni.showToast({ title: '获取授权手机号失败', icon: 'error', duration: 2000 });
                    return
                }
                var that = this;
                that.$u.api.wxAuthPhone({
                    code: e.detail.code,
                    openid: that.openid||''
                }).then(result => {
                    if (result.code === 200) {
                        that.$store.commit('setUserInfo', result.data.member)
                        that.$store.commit('setToken', result.data.token)
                        uni.navigateBack({ delta: 1 });
                    }
                })
            }
        }
    }
</script>
small-program/store/index.js
@@ -5,12 +5,18 @@
const navHeight = uni.getStorageSync('navHeight');
const statusbarHeight = uni.getStorageSync('statusbarHeight');
const userInfo = uni.getStorageSync('userInfo');
const token = uni.getStorageSync('token');
const openid = uni.getStorageSync('openid');
const store = new Vuex.Store({
    
    state: {
        navHeight: navHeight || '',
        statusbarHeight: statusbarHeight || ''
        statusbarHeight: statusbarHeight || '',
        userInfo: userInfo || {},
        token: token || '',
        openid:token || ''
    },
    mutations: {
        // è®¾ç½®å¯¼èˆªæ é«˜åº¦
@@ -19,6 +25,28 @@
            state.statusbarHeight = val.statusbarHeight
            uni.setStorageSync('navHeight', val.navHeight);
            uni.setStorageSync('statusbarHeight', val.statusbarHeight);
        },
        // è®¾ç½®token
        setToken(state, val) {
            state.token = val
            uni.setStorageSync('token', val);
        },
        // è®¾ç½®token
        setOpenid(state, val) {
            state.openid = val
            uni.setStorageSync('openid', val);
        },
        // è®¾ç½®ç”¨æˆ·ä¿¡æ¯
        setUserInfo(state, val) {
            state.userInfo = val
            uni.setStorageSync('userInfo', val);
        },
        // æ¸…除缓存数据
        empty(state) {
            state.userInfo = ''
            state.token = ''
            uni.removeStorageSync('token');
            uni.removeStorageSync('userInfo');
        }
    },
    
small-program/unpackage/dist/dev/mp-weixin/pages/login/login.wxml
@@ -1 +1 @@
<view class="box data-v-b237504c"><view class="box-title data-v-b237504c">欢迎使用近快</view><view class="box-tips data-v-b237504c">请登录</view><view class="box-btn data-v-b237504c">手机号一键登录</view><view class="box-footer data-v-b237504c"><image src="/static/icon/ic_notagree@2x.png" mode="widthFix" class="data-v-b237504c"></image><text class="data-v-b237504c">我已阅读并同意《用户协议》,《隐私协议政策》</text></view></view>
<view class="box data-v-b237504c"><view class="box-title data-v-b237504c">欢迎使用近快</view><view class="box-tips data-v-b237504c">请登录</view><view class="box-btn data-v-b237504c"><block wx:if="{{agree}}"><button class="box-btn data-v-b237504c" open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getPhone',['$event']]]]]}}" bindgetphonenumber="__e">手机号一键登录</button></block><block wx:if="{{!agree}}"><button data-event-opts="{{[['tap',[['tipAgree',['$event']]]]]}}" class="box-btn data-v-b237504c" bindtap="__e">手机号一键登录</button></block></view><view class="box-footer data-v-b237504c"><block wx:if="{{!agree}}"><image src="/static/icon/ic_notagree@2x.png" mode="widthFix" data-event-opts="{{[['tap',[['agreeDo',['$event']]]]]}}" bindtap="__e" class="data-v-b237504c"></image></block><block wx:if="{{agree}}"><image src="/static/icon/ic_agree@2x.png" mode="widthFix" data-event-opts="{{[['tap',[['agreeDo',['$event']]]]]}}" bindtap="__e" class="data-v-b237504c"></image></block><text data-event-opts="{{[['tap',[['agreeDo',['$event']]]]]}}" bindtap="__e" class="data-v-b237504c">我已阅读并同意《用户协议》,《隐私协议政策》</text></view></view>
small-program/utils/http.api.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
const install = (Vue, vm) => {
    uni.$u.http.setConfig((config) => {
        config.baseURL = vm.$baseUrl;
        config.timeout = 60000;
        return config;
    })
    let wxLogin = (params = {}) => vm.$u.http.get('web/account/wxLogin',{ params });    // ç™»å½•
    let wxAuthPhone = (data = {}) => vm.$u.http.post('web/account/wxAuthPhone', data);    // ç™»å½•
    let applyForIdentity = (data = {}) => uni.$u.http.post('web/user/applyForIdentity', data)    // ç”³è¯·èº«ä»½ä¿¡æ¯
    let editMemberInfo = (data = {}) => uni.$u.http.post('web/user/editMemberInfo',data)    // ç¼–辑个人信息
    let editUseIdentity = (data = {}) => vm.$u.http.post('web/user/editUseIdentity', data);    // åˆ‡æ¢ç”¨å·¥èº«ä»½
    let getIdentityInfo = (params = {}) => vm.$u.http.get('web/user/getIdentityInfo', { params });    // èŽ·å–èº«ä»½è®¤è¯ä¿¡æ¯
    let getMemberInfo = (params = {}) => vm.$u.http.get('web/user/getMemberInfo', { params });    // èŽ·å–ä¸ªäººä¿¡æ¯
    let revenuePage = (data = {}) => vm.$u.http.post('web/user/revenuePage',data);    // ä½™é¢æ˜Žç»†
    let updateIdentity = (data = {}) => vm.$u.http.post('web/user/updateIdentity', data);    // ä¿®æ”¹èº«ä»½ä¿¡æ¯ï¼ˆè®¤è¯å¤±è´¥åŽä½¿ç”¨ï¼‰
    let updateLocation = (data = {}) => vm.$u.http.post('web/user/updateLocation', data);    // ä¿®æ”¹èº«ä»½ä¿¡æ¯ä½ç½®ï¼ˆè®¤è¯æˆåŠŸåŽä½¿ç”¨ï¼‰
    let accept = (params = {}) => vm.$u.http.get('web/orders/accept', { params });    // æ‰‹åŠ¨æŽ¥å• - æŽ¥å•æ–¹
    let begin = (params = {}) => vm.$u.http.get('web/orders/begin', { params });    // å¼€å§‹ä½œä¸š - å‘单方
    let comment = (data = {}) => vm.$u.http.post('web/orders/comment', data);    // è®¢å•评价 - å‘单方
    let confirmUpd = (data = {}) => vm.$u.http.post('web/orders/confirmUpd',data);    // ç¡®è®¤è®¢å•修改 - æŽ¥å•æ–¹
    let doneOrder = (data = {}) => vm.$u.http.post('web/orders/doneOrder', data);    // å®Œæˆè®¢å• - å‘单方
    let getDetail = (params = {}) => vm.$u.http.get('web/orders/getDetail', { params });    // è®¢å•详情
    let orderPage = (data) => vm.$u.http.post('web/orders/page', data);    // åˆ†é¡µæŸ¥è¯¢
    let receiveCancelOrder = (params = {}) => vm.$u.http.get('web/orders/receiveCancelOrder', { params });    // å–消接单 - æŽ¥å•æ–¹
    let releaseCancelOrder = (params = {}) => vm.$u.http.get('web/orders/releaseCancelOrder', { params });    // å–消接单 - æŽ¥å•æ–¹
    let release = (data = {}) => vm.$u.http.post('web/orders/release', { params });    // å‘布订单 - å‘单方
    let updOrderData = (data = {}) => vm.$u.http.post('web/orders/updOrderData', data);    // ä¿®æ”¹è®¢å•日期 - å‘单方
    let updateOrder = (data = {}) => vm.$u.http.post('web/orders/updateOrder', data);    // ä¿®æ”¹è®¢å• - å‘单方
    let getCategoryList = (params = {}) => vm.$u.http.get('web/orders/getCategoryList', { params });    // èŽ·å–åˆ†ç±»åˆ—è¡¨
    let upload = (data = {}) => vm.$u.http.post('web/public/upload', data);    // ä¸Šä¼ 
    vm.$u.api = {
        wxLogin,
        wxAuthPhone,
        applyForIdentity,
        editMemberInfo,
        editUseIdentity,
        getIdentityInfo,
        getMemberInfo,
        revenuePage,
        updateIdentity,
        updateLocation,
        accept,
        begin,
        comment,
        confirmUpd,
        doneOrder,
        getDetail,
        orderPage,
        receiveCancelOrder,
        releaseCancelOrder,
        release,
        updOrderData,
        updateOrder,
        getCategoryList,
        upload
    };
}
export default { install }
small-program/utils/http.interceptor.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
const install = (Vue, vm) => {
    // è¯·æ±‚拦截器
    uni.$u.http.interceptors.request.use((config) => {
        const Headtoken = vm.$store.state.token
        // åˆ¤æ–­æœ‰æ— token,有则加入请求头中
        if (Headtoken) {
            config.header['token'] = Headtoken;
        }
        return config;
    }, config => {
        return Promise.reject(config)
    })
    // å“åº”拦截器
    uni.$u.http.interceptors.response.use((response) => {
        if (response.data.code === 5113) {
            uni.navigateTo({
                url: '/pages/index/index'
            });
            return
        }
        if (response.data.code !== 200) {
            uni.showToast({
                title: response.data.message,
                icon: "none",
                duration: 2000
            });
        }
        return response.data
    }, (response) => {
        return Promise.reject(response)
    })
}
export default { install }