pyt
2025-03-18 679ad9d759af363718c363deabfbd6cf861e50da
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/H5/threeSide
12个文件已修改
5个文件已添加
1245 ■■■■■ 已修改文件
H5/index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/main.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/node_modules/jweixin-module/README.md 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/node_modules/jweixin-module/lib/index.js 732 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/node_modules/jweixin-module/package.json 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/package-lock.json 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/add-progress/index.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/authentication/authentication.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/dispatchWorkOrder/dispatchWorkOrder.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/evaluate/evaluate-detail.vue 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/evaluate/evaluate.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/evaluate/service.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/index/index.vue 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/list/list.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/work-detail/work-detail.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/utils/request.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/index.html
@@ -19,6 +19,6 @@
        <div id="app"><!--app-html--></div>
        <script type="module" src="/main.js"></script>
        <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&type=webgl&ak=5CVivDODPGwsWoqqrDxplq9hkfX5OEzs"></script>
        <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
        <!-- <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script> -->
    </body>
</html>
H5/main.js
@@ -4,8 +4,11 @@
import uView from '@/uni_modules/uview-ui'
import './uni.promisify.adaptor'
import CustomPopup from '@/components/customPopup.vue'
const jweixin = require('jweixin-module')
Vue.config.productionTip = false
Vue.prototype.$store = store
Vue.prototype.$jweixin = jweixin
Vue.use(uView)
Vue.component('CustomPopup', CustomPopup)
H5/node_modules/jweixin-module/README.md
New file
@@ -0,0 +1,30 @@
# jweixin-module
微信JS-SDK
## 安装
### NPM
```shell
npm install jweixin-module --save
```
### UMD
```http
https://unpkg.com/jweixin-module/out/index.js
```
## 使用
```js
var jweixin = require('jweixin-module')
jweixin.ready(function(){
    // TODO
});
```
## 完整API
>[微信JS-SDK说明文档](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115)
H5/node_modules/jweixin-module/lib/index.js
New file
@@ -0,0 +1,732 @@
! function(e, n) {
    "function" == typeof define && (define.amd || define.cmd) ? define(function() {
        return n(e)
    }) : n(e, !0)
}(window, function(o, e) {
    if (!o.jWeixin) {
        var n, c = {
                config: "preVerifyJSAPI",
                onMenuShareTimeline: "menu:share:timeline",
                onMenuShareAppMessage: "menu:share:appmessage",
                onMenuShareQQ: "menu:share:qq",
                onMenuShareWeibo: "menu:share:weiboApp",
                onMenuShareQZone: "menu:share:QZone",
                previewImage: "imagePreview",
                getLocation: "geoLocation",
                openProductSpecificView: "openProductViewWithPid",
                addCard: "batchAddCard",
                openCard: "batchViewCard",
                chooseWXPay: "getBrandWCPayRequest",
                openEnterpriseRedPacket: "getRecevieBizHongBaoRequest",
                startSearchBeacons: "startMonitoringBeacons",
                stopSearchBeacons: "stopMonitoringBeacons",
                onSearchBeacons: "onBeaconsInRange",
                consumeAndShareCard: "consumedShareCard",
                openAddress: "editAddress"
            },
            a = function() {
                var e = {};
                for (var n in c) e[c[n]] = n;
                return e
            }(),
            i = o.document,
            t = i.title,
            r = navigator.userAgent.toLowerCase(),
            s = navigator.platform.toLowerCase(),
            d = !(!s.match("mac") && !s.match("win")),
            u = -1 != r.indexOf("wxdebugger"),
            l = -1 != r.indexOf("micromessenger"),
            p = -1 != r.indexOf("android"),
            f = -1 != r.indexOf("iphone") || -1 != r.indexOf("ipad"),
            m = (n = r.match(/micromessenger\/(\d+\.\d+\.\d+)/) || r.match(/micromessenger\/(\d+\.\d+)/)) ? n[1] :
            "",
            g = {
                initStartTime: L(),
                initEndTime: 0,
                preVerifyStartTime: 0,
                preVerifyEndTime: 0
            },
            h = {
                version: 1,
                appId: "",
                initTime: 0,
                preVerifyTime: 0,
                networkType: "",
                isPreVerifyOk: 1,
                systemType: f ? 1 : p ? 2 : -1,
                clientVersion: m,
                url: encodeURIComponent(location.href)
            },
            v = {},
            S = {
                _completes: []
            },
            y = {
                state: 0,
                data: {}
            };
        O(function() {
            g.initEndTime = L()
        });
        var I = !1,
            _ = [],
            w = {
                config: function(e) {
                    B("config", v = e);
                    var t = !1 !== v.check;
                    O(function() {
                        if (t) M(c.config, {
                            verifyJsApiList: C(v.jsApiList),
                            verifyOpenTagList: C(v.openTagList)
                        }, function() {
                            S._complete = function(e) {
                                g.preVerifyEndTime = L(), y.state = 1, y.data = e
                            }, S.success = function(e) {
                                h.isPreVerifyOk = 0
                            }, S.fail = function(e) {
                                S._fail ? S._fail(e) : y.state = -1
                            };
                            var t = S._completes;
                            return t.push(function() {
                                ! function() {
                                    if (!(d || u || v.debug || m < "6.0.2" || h
                                            .systemType < 0)) {
                                        var i = new Image;
                                        h.appId = v.appId, h.initTime = g.initEndTime -
                                            g.initStartTime, h.preVerifyTime = g
                                            .preVerifyEndTime - g.preVerifyStartTime, w
                                            .getNetworkType({
                                                isInnerInvoke: !0,
                                                success: function(e) {
                                                    h.networkType = e
                                                        .networkType;
                                                    var n =
                                                        "https://open.weixin.qq.com/sdk/report?v=" +
                                                        h.version + "&o=" + h
                                                        .isPreVerifyOk + "&s=" +
                                                        h.systemType + "&c=" + h
                                                        .clientVersion + "&a=" +
                                                        h.appId + "&n=" + h
                                                        .networkType + "&i=" + h
                                                        .initTime + "&p=" + h
                                                        .preVerifyTime + "&u=" +
                                                        h.url;
                                                    i.src = n
                                                }
                                            })
                                    }
                                }()
                            }), S.complete = function(e) {
                                for (var n = 0, i = t.length; n < i; ++n) t[n]();
                                S._completes = []
                            }, S
                        }()), g.preVerifyStartTime = L();
                        else {
                            y.state = 1;
                            for (var e = S._completes, n = 0, i = e.length; n < i; ++n) e[n]();
                            S._completes = []
                        }
                    }), w.invoke || (w.invoke = function(e, n, i) {
                        o.WeixinJSBridge && WeixinJSBridge.invoke(e, x(n), i)
                    }, w.on = function(e, n) {
                        o.WeixinJSBridge && WeixinJSBridge.on(e, n)
                    })
                },
                ready: function(e) {
                    0 != y.state ? e() : (S._completes.push(e), !l && v.debug && e())
                },
                error: function(e) {
                    m < "6.0.2" || (-1 == y.state ? e(y.data) : S._fail = e)
                },
                checkJsApi: function(e) {
                    M("checkJsApi", {
                        jsApiList: C(e.jsApiList)
                    }, (e._complete = function(e) {
                        if (p) {
                            var n = e.checkResult;
                            n && (e.checkResult = JSON.parse(n))
                        }
                        e = function(e) {
                            var n = e.checkResult;
                            for (var i in n) {
                                var t = a[i];
                                t && (n[t] = n[i], delete n[i])
                            }
                            return e
                        }(e)
                    }, e))
                },
                onMenuShareTimeline: function(e) {
                    P(c.onMenuShareTimeline, {
                        complete: function() {
                            M("shareTimeline", {
                                title: e.title || t,
                                desc: e.title || t,
                                img_url: e.imgUrl || "",
                                link: e.link || location.href,
                                type: e.type || "link",
                                data_url: e.dataUrl || ""
                            }, e)
                        }
                    }, e)
                },
                onMenuShareAppMessage: function(n) {
                    P(c.onMenuShareAppMessage, {
                        complete: function(e) {
                            "favorite" === e.scene ? M("sendAppMessage", {
                                title: n.title || t,
                                desc: n.desc || "",
                                link: n.link || location.href,
                                img_url: n.imgUrl || "",
                                type: n.type || "link",
                                data_url: n.dataUrl || ""
                            }) : M("sendAppMessage", {
                                title: n.title || t,
                                desc: n.desc || "",
                                link: n.link || location.href,
                                img_url: n.imgUrl || "",
                                type: n.type || "link",
                                data_url: n.dataUrl || ""
                            }, n)
                        }
                    }, n)
                },
                onMenuShareQQ: function(e) {
                    P(c.onMenuShareQQ, {
                        complete: function() {
                            M("shareQQ", {
                                title: e.title || t,
                                desc: e.desc || "",
                                img_url: e.imgUrl || "",
                                link: e.link || location.href
                            }, e)
                        }
                    }, e)
                },
                onMenuShareWeibo: function(e) {
                    P(c.onMenuShareWeibo, {
                        complete: function() {
                            M("shareWeiboApp", {
                                title: e.title || t,
                                desc: e.desc || "",
                                img_url: e.imgUrl || "",
                                link: e.link || location.href
                            }, e)
                        }
                    }, e)
                },
                onMenuShareQZone: function(e) {
                    P(c.onMenuShareQZone, {
                        complete: function() {
                            M("shareQZone", {
                                title: e.title || t,
                                desc: e.desc || "",
                                img_url: e.imgUrl || "",
                                link: e.link || location.href
                            }, e)
                        }
                    }, e)
                },
                updateTimelineShareData: function(e) {
                    M("updateTimelineShareData", {
                        title: e.title,
                        link: e.link,
                        imgUrl: e.imgUrl
                    }, e)
                },
                updateAppMessageShareData: function(e) {
                    M("updateAppMessageShareData", {
                        title: e.title,
                        desc: e.desc,
                        link: e.link,
                        imgUrl: e.imgUrl
                    }, e)
                },
                startRecord: function(e) {
                    M("startRecord", {}, e)
                },
                stopRecord: function(e) {
                    M("stopRecord", {}, e)
                },
                onVoiceRecordEnd: function(e) {
                    P("onVoiceRecordEnd", e)
                },
                playVoice: function(e) {
                    M("playVoice", {
                        localId: e.localId
                    }, e)
                },
                pauseVoice: function(e) {
                    M("pauseVoice", {
                        localId: e.localId
                    }, e)
                },
                stopVoice: function(e) {
                    M("stopVoice", {
                        localId: e.localId
                    }, e)
                },
                onVoicePlayEnd: function(e) {
                    P("onVoicePlayEnd", e)
                },
                uploadVoice: function(e) {
                    M("uploadVoice", {
                        localId: e.localId,
                        isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
                    }, e)
                },
                downloadVoice: function(e) {
                    M("downloadVoice", {
                        serverId: e.serverId,
                        isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
                    }, e)
                },
                translateVoice: function(e) {
                    M("translateVoice", {
                        localId: e.localId,
                        isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
                    }, e)
                },
                chooseImage: function(e) {
                    M("chooseImage", {
                        scene: "1|2",
                        count: e.count || 9,
                        sizeType: e.sizeType || ["original", "compressed"],
                        sourceType: e.sourceType || ["album", "camera"]
                    }, (e._complete = function(e) {
                        if (p) {
                            var n = e.localIds;
                            try {
                                n && (e.localIds = JSON.parse(n))
                            } catch (e) {}
                        }
                    }, e))
                },
                getLocation: function(e) {},
                previewImage: function(e) {
                    M(c.previewImage, {
                        current: e.current,
                        urls: e.urls
                    }, e)
                },
                uploadImage: function(e) {
                    M("uploadImage", {
                        localId: e.localId,
                        isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
                    }, e)
                },
                downloadImage: function(e) {
                    M("downloadImage", {
                        serverId: e.serverId,
                        isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
                    }, e)
                },
                getLocalImgData: function(e) {
                    !1 === I ? (I = !0, M("getLocalImgData", {
                        localId: e.localId
                    }, (e._complete = function(e) {
                        if (I = !1, 0 < _.length) {
                            var n = _.shift();
                            wx.getLocalImgData(n)
                        }
                    }, e))) : _.push(e)
                },
                getNetworkType: function(e) {
                    M("getNetworkType", {}, (e._complete = function(e) {
                        e = function(e) {
                            var n = e.errMsg;
                            e.errMsg = "getNetworkType:ok";
                            var i = e.subtype;
                            if (delete e.subtype, i) e.networkType = i;
                            else {
                                var t = n.indexOf(":"),
                                    o = n.substring(t + 1);
                                switch (o) {
                                    case "wifi":
                                    case "edge":
                                    case "wwan":
                                        e.networkType = o;
                                        break;
                                    default:
                                        e.errMsg = "getNetworkType:fail"
                                }
                            }
                            return e
                        }(e)
                    }, e))
                },
                openLocation: function(e) {
                    M("openLocation", {
                        latitude: e.latitude,
                        longitude: e.longitude,
                        name: e.name || "",
                        address: e.address || "",
                        scale: e.scale || 28,
                        infoUrl: e.infoUrl || ""
                    }, e)
                },
                getLocation: function(e) {
                    M(c.getLocation, {
                        type: (e = e || {}).type || "wgs84"
                    }, (e._complete = function(e) {
                        delete e.type
                    }, e))
                },
                hideOptionMenu: function(e) {
                    M("hideOptionMenu", {}, e)
                },
                showOptionMenu: function(e) {
                    M("showOptionMenu", {}, e)
                },
                closeWindow: function(e) {
                    M("closeWindow", {}, e = e || {})
                },
                hideMenuItems: function(e) {
                    M("hideMenuItems", {
                        menuList: e.menuList
                    }, e)
                },
                showMenuItems: function(e) {
                    M("showMenuItems", {
                        menuList: e.menuList
                    }, e)
                },
                hideAllNonBaseMenuItem: function(e) {
                    M("hideAllNonBaseMenuItem", {}, e)
                },
                showAllNonBaseMenuItem: function(e) {
                    M("showAllNonBaseMenuItem", {}, e)
                },
                scanQRCode: function(e) {
                    M("scanQRCode", {
                        needResult: (e = e || {}).needResult || 0,
                        scanType: e.scanType || ["qrCode", "barCode"]
                    }, (e._complete = function(e) {
                        if (f) {
                            var n = e.resultStr;
                            if (n) {
                                var i = JSON.parse(n);
                                e.resultStr = i && i.scan_code && i.scan_code.scan_result
                            }
                        }
                    }, e))
                },
                openAddress: function(e) {
                    M(c.openAddress, {}, (e._complete = function(e) {
                        e = function(e) {
                            return e.postalCode = e.addressPostalCode, delete e
                                .addressPostalCode, e.provinceName = e.proviceFirstStageName,
                                delete e.proviceFirstStageName, e.cityName = e
                                .addressCitySecondStageName, delete e
                                .addressCitySecondStageName, e.countryName = e
                                .addressCountiesThirdStageName, delete e
                                .addressCountiesThirdStageName, e.detailInfo = e
                                .addressDetailInfo, delete e.addressDetailInfo, e
                        }(e)
                    }, e))
                },
                openProductSpecificView: function(e) {
                    M(c.openProductSpecificView, {
                        pid: e.productId,
                        view_type: e.viewType || 0,
                        ext_info: e.extInfo
                    }, e)
                },
                addCard: function(e) {
                    for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
                        var r = n[t],
                            a = {
                                card_id: r.cardId,
                                card_ext: r.cardExt
                            };
                        i.push(a)
                    }
                    M(c.addCard, {
                        card_list: i
                    }, (e._complete = function(e) {
                        var n = e.card_list;
                        if (n) {
                            for (var i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {
                                var o = n[i];
                                o.cardId = o.card_id, o.cardExt = o.card_ext, o.isSuccess = !!o
                                    .is_succ, delete o.card_id, delete o.card_ext, delete o.is_succ
                            }
                            e.cardList = n, delete e.card_list
                        }
                    }, e))
                },
                chooseCard: function(e) {
                    M("chooseCard", {
                        app_id: v.appId,
                        location_id: e.shopId || "",
                        sign_type: e.signType || "SHA1",
                        card_id: e.cardId || "",
                        card_type: e.cardType || "",
                        card_sign: e.cardSign,
                        time_stamp: e.timestamp + "",
                        nonce_str: e.nonceStr
                    }, (e._complete = function(e) {
                        e.cardList = e.choose_card_info, delete e.choose_card_info
                    }, e))
                },
                openCard: function(e) {
                    for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
                        var r = n[t],
                            a = {
                                card_id: r.cardId,
                                code: r.code
                            };
                        i.push(a)
                    }
                    M(c.openCard, {
                        card_list: i
                    }, e)
                },
                consumeAndShareCard: function(e) {
                    M(c.consumeAndShareCard, {
                        consumedCardId: e.cardId,
                        consumedCode: e.code
                    }, e)
                },
                chooseWXPay: function(e) {
                    M(c.chooseWXPay, V(e), e)
                },
                openEnterpriseRedPacket: function(e) {
                    M(c.openEnterpriseRedPacket, V(e), e)
                },
                startSearchBeacons: function(e) {
                    M(c.startSearchBeacons, {
                        ticket: e.ticket
                    }, e)
                },
                stopSearchBeacons: function(e) {
                    M(c.stopSearchBeacons, {}, e)
                },
                onSearchBeacons: function(e) {
                    P(c.onSearchBeacons, e)
                },
                openEnterpriseChat: function(e) {
                    M("openEnterpriseChat", {
                        useridlist: e.userIds,
                        chatname: e.groupName
                    }, e)
                },
                launchMiniProgram: function(e) {
                    M("launchMiniProgram", {
                        targetAppId: e.targetAppId,
                        path: function(e) {
                            if ("string" == typeof e && 0 < e.length) {
                                var n = e.split("?")[0],
                                    i = e.split("?")[1];
                                return n += ".html", void 0 !== i ? n + "?" + i : n
                            }
                        }(e.path),
                        envVersion: e.envVersion
                    }, e)
                },
                openBusinessView: function(e) {
                    M("openBusinessView", {
                        businessType: e.businessType,
                        queryString: e.queryString || "",
                        envVersion: e.envVersion
                    }, (e._complete = function(n) {
                        if (p) {
                            var e = n.extraData;
                            if (e) try {
                                n.extraData = JSON.parse(e)
                            } catch (e) {
                                n.extraData = {}
                            }
                        }
                    }, e))
                },
                miniProgram: {
                    navigateBack: function(e) {
                        e = e || {}, O(function() {
                            M("invokeMiniProgramAPI", {
                                name: "navigateBack",
                                arg: {
                                    delta: e.delta || 1
                                }
                            }, e)
                        })
                    },
                    navigateTo: function(e) {
                        O(function() {
                            M("invokeMiniProgramAPI", {
                                name: "navigateTo",
                                arg: {
                                    url: e.url
                                }
                            }, e)
                        })
                    },
                    redirectTo: function(e) {
                        O(function() {
                            M("invokeMiniProgramAPI", {
                                name: "redirectTo",
                                arg: {
                                    url: e.url
                                }
                            }, e)
                        })
                    },
                    switchTab: function(e) {
                        O(function() {
                            M("invokeMiniProgramAPI", {
                                name: "switchTab",
                                arg: {
                                    url: e.url
                                }
                            }, e)
                        })
                    },
                    reLaunch: function(e) {
                        O(function() {
                            M("invokeMiniProgramAPI", {
                                name: "reLaunch",
                                arg: {
                                    url: e.url
                                }
                            }, e)
                        })
                    },
                    postMessage: function(e) {
                        O(function() {
                            M("invokeMiniProgramAPI", {
                                name: "postMessage",
                                arg: e.data || {}
                            }, e)
                        })
                    },
                    getEnv: function(e) {
                        O(function() {
                            e({
                                miniprogram: "miniprogram" === o.__wxjs_environment
                            })
                        })
                    }
                }
            },
            T = 1,
            k = {};
        return i.addEventListener("error", function(e) {
            if (!p) {
                var n = e.target,
                    i = n.tagName,
                    t = n.src;
                if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i)
                    if (-1 != t.indexOf("wxlocalresource://")) {
                        e.preventDefault(), e.stopPropagation();
                        var o = n["wx-id"];
                        if (o || (o = T++, n["wx-id"] = o), k[o]) return;
                        k[o] = !0, wx.ready(function() {
                            wx.getLocalImgData({
                                localId: t,
                                success: function(e) {
                                    n.src = e.localData
                                }
                            })
                        })
                    }
            }
        }, !0), i.addEventListener("load", function(e) {
            if (!p) {
                var n = e.target,
                    i = n.tagName;
                n.src;
                if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) {
                    var t = n["wx-id"];
                    t && (k[t] = !1)
                }
            }
        }, !0), e && (o.wx = o.jWeixin = w), w
    }
    function M(n, e, i) {
        o.WeixinJSBridge ? WeixinJSBridge.invoke(n, x(e), function(e) {
            A(n, e, i)
        }) : B(n, i)
    }
    function P(n, i, t) {
        o.WeixinJSBridge ? WeixinJSBridge.on(n, function(e) {
            t && t.trigger && t.trigger(e), A(n, e, i)
        }) : B(n, t || i)
    }
    function x(e) {
        return (e = e || {}).appId = v.appId, e.verifyAppId = v.appId, e.verifySignType = "sha1", e
            .verifyTimestamp = v.timestamp + "", e.verifyNonceStr = v.nonceStr, e.verifySignature = v.signature, e
    }
    function V(e) {
        return {
            timeStamp: e.timestamp + "",
            nonceStr: e.nonceStr,
            package: e.package,
            paySign: e.paySign,
            signType: e.signType || "SHA1"
        }
    }
    function A(e, n, i) {
        "openEnterpriseChat" != e && "openBusinessView" !== e || (n.errCode = n.err_code), delete n.err_code,
            delete n.err_desc, delete n.err_detail;
        var t = n.errMsg;
        t || (t = n.err_msg, delete n.err_msg, t = function(e, n) {
                var i = e,
                    t = a[i];
                t && (i = t);
                var o = "ok";
                if (n) {
                    var r = n.indexOf(":");
                    "confirm" == (o = n.substring(r + 1)) && (o = "ok"), "failed" == o && (o = "fail"), -1 != o
                        .indexOf("failed_") && (o = o.substring(7)), -1 != o.indexOf("fail_") && (o = o
                            .substring(5)), "access denied" != (o = (o = o.replace(/_/g, " ")).toLowerCase()) &&
                        "no permission to execute" != o || (o = "permission denied"), "config" == i &&
                        "function not exist" == o && (o = "ok"), "" == o && (o = "fail")
                }
                return n = i + ":" + o
            }(e, t), n.errMsg = t), (i = i || {})._complete && (i._complete(n), delete i._complete), t = n.errMsg ||
            "", v.debug && !i.isInnerInvoke && alert(JSON.stringify(n));
        var o = t.indexOf(":");
        switch (t.substring(o + 1)) {
            case "ok":
                i.success && i.success(n);
                break;
            case "cancel":
                i.cancel && i.cancel(n);
                break;
            default:
                i.fail && i.fail(n)
        }
        i.complete && i.complete(n)
    }
    function C(e) {
        if (e) {
            for (var n = 0, i = e.length; n < i; ++n) {
                var t = e[n],
                    o = c[t];
                o && (e[n] = o)
            }
            return e
        }
    }
    function B(e, n) {
        if (!(!v.debug || n && n.isInnerInvoke)) {
            var i = a[e];
            i && (e = i), n && n._complete && delete n._complete, console.log('"' + e + '",', n || "")
        }
    }
    function L() {
        return (new Date).getTime()
    }
    function O(e) {
        l && (o.WeixinJSBridge ? e() : i.addEventListener && i.addEventListener("WeixinJSBridgeReady", e, !1))
    }
});
H5/node_modules/jweixin-module/package.json
New file
@@ -0,0 +1,54 @@
{
  "_from": "jweixin-module",
  "_id": "jweixin-module@1.6.0",
  "_inBundle": false,
  "_integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w==",
  "_location": "/jweixin-module",
  "_phantomChildren": {},
  "_requested": {
    "type": "tag",
    "registry": true,
    "raw": "jweixin-module",
    "name": "jweixin-module",
    "escapedName": "jweixin-module",
    "rawSpec": "",
    "saveSpec": null,
    "fetchSpec": "latest"
  },
  "_requiredBy": [
    "#USER",
    "/"
  ],
  "_resolved": "https://registry.npmmirror.com/jweixin-module/-/jweixin-module-1.6.0.tgz",
  "_shasum": "4a7ea614083e3c9c3f49e2fdc2bb882cfa58dfcd",
  "_spec": "jweixin-module",
  "_where": "G:\\前端\\project\\threeSide\\H5",
  "author": {
    "name": "Shengqiang Guo"
  },
  "bugs": {
    "url": "https://github.com/zhetengbiji/jweixin-module/issues"
  },
  "bundleDependencies": false,
  "deprecated": false,
  "description": "微信JS-SDK",
  "devDependencies": {},
  "homepage": "https://github.com/zhetengbiji/jweixin-module#readme",
  "keywords": [
    "wxjssdk",
    "weixin",
    "jweixin",
    "wechat",
    "jssdk",
    "wx"
  ],
  "license": "ISC",
  "main": "lib/index.js",
  "name": "jweixin-module",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/zhetengbiji/jweixin-module.git"
  },
  "scripts": {},
  "version": "1.6.0"
}
H5/package-lock.json
New file
@@ -0,0 +1,11 @@
{
  "requires": true,
  "lockfileVersion": 1,
  "dependencies": {
    "jweixin-module": {
      "version": "1.6.0",
      "resolved": "https://registry.npmmirror.com/jweixin-module/-/jweixin-module-1.6.0.tgz",
      "integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
    }
  }
}
H5/pages.json
@@ -112,6 +112,12 @@
                "navigationBarTitleText": "诉求评价",
                "navigationStyle": "custom"
            }
        },{
            "path": "pages/evaluate/evaluate-detail",
            "style": {
                "navigationBarTitleText": "评价详情",
                "navigationStyle": "custom"
            }
        },
        {
            "path" : "pages/authentication/authentication",
H5/pages/add-progress/index.vue
@@ -218,6 +218,15 @@
                    uni.chooseVideo({
                        camera: 'back',
                        success: (res) => {
                            const videoExtensions = /\.(mp4|avi|rmvb)$/i;
                            if (!videoExtensions.test(res.name)) {
                                uni.showToast({
                                    title: '请上传mp4, avi, rmvb格式的视频',
                                    icon: 'none',
                                    duration: 3000
                                })
                                return
                            }
                            this.video.push('loading')
                            this.againCklicFlag = true
                            const tempFilePath = res.tempFilePath;
H5/pages/authentication/authentication.vue
@@ -199,6 +199,8 @@
                let userInfo = uni.getStorageSync('userInfo')
                if (userInfo.isAdmin) {
                    uni.navigateBack()
                } else {
                    this.$jweixin.miniProgram.navigateBack()
                }
            },
            // 提交(优化后)
H5/pages/dispatchWorkOrder/dispatchWorkOrder.vue
@@ -130,9 +130,11 @@
                            icon: 'none',
                            title: '下派成功'
                        })
                        setTimeout(() => {
                        uni.navigateBack({
                            delta: 2
                        })
                        }, 1500)
                    }
                })
            }
H5/pages/evaluate/evaluate-detail.vue
New file
@@ -0,0 +1,285 @@
<template>
    <view class="content">
        <view class="topColor">
        </view>
        <view class="allContent">
            <view class="fs-27 lh-38 font-bold">评价打分</view>
            <view class="mt-25 flex j-between">
                <view class="evaluateItem" v-for="(item,index) in list" :key="index"
                    :class="rate==item.value && 'activeBg'">
                    <image :src="item.img" class="statusImg" />
                    <view class="title">{{item.tit}}</view>
                </view>
            </view>
            <view class="mt-38">
                <view class="fs-27 lh-38 font-bold">评价内容</view>
                <textarea disabled v-model="content" class="pt-25 pl-31 mt-27 fs-27 br-8 bgcolor4"
                    style="height: 365rpx;width: calc(100% - 31rpx);" placeholder="" />
                <view class="fs-27 mt-38 lh-38 font-bold">上传图片</view>
                <view v-if="localImageUrls.length != 0" class="flex wrap mt-27">
                    <view class="relative mr-15" v-for="(item, index) in localImageUrls" :key="index">
                        <image v-if="item != 'loading'" :src="item" class="w-140 h-140 shrink0 br-8" />
                        <view v-if="item != 'loading'" class="absolute w-140 h-140 bgcolor5 top0 left0 br-8">
                            <view class="absolute flex a-center j-between px-34"
                                style="top: 50%;left: 50%;transform: translate(-50%,-50%);width: calc(100% - 68rpx);">
                                <image @tap="viewImage(item)" src="@/static/Appeal/amplify.png" class="w-19 h-19" />
                            </view>
                        </view>
                    </view>
                </view>
                <view v-else>无</view>
                <view class="fs-27 mt-37 lh-38 font-bold">上传视频</view>
                <view v-if="video.length != 0" class="flex wrap mt-27">
                    <view class="imgOrVedio" v-for="(ite, ind) in video" :key="ind">
                        <video v-if="ite != 'loading'" id="myVideo" class="videoImg shrink0" disabled :controls="false"
                            :show-center-play-btn="false" :src="ite">
                        </video>
                        <view v-if="ite != 'loading'" class="absolute w-140 h-140 bgcolor5 top0 left0 br-8 zIndex999">
                            <view class="absolute flex a-center j-between"
                                style="top: 50%;left: 50%;transform: translate(-50%,-50%);">
                                <image @tap="openVideo(ite)" src="@/static/detailImg/open.png" class="w-140 h-140" />
                            </view>
                        </view>
                    </view>
                </view>
                <view v-else>无</view>
            </view>
            <view class="safe-box"></view>
        </view>
    </view>
</template>
<script>
    import {
        getDetail,
    } from './service'
    export default {
        data() {
            return {
                content: '', //评价内容
                localImageUrls: [], //本地回显的图片
                video: [],
                rate: null, //评价打分
                list: [{
                    img: '../../static/detailImg/img1.png',
                    tit: '不满意',
                    value: 0
                }, {
                    img: '../../static/detailImg/img2.png',
                    tit: '一般',
                    value: 1
                }, {
                    img: '../../static/detailImg/img3.png',
                    tit: '满意',
                    value: 2
                }, {
                    img: '../../static/detailImg/img4.png',
                    tit: '非常满意',
                    value: 3
                }],
            }
        },
        onLoad(params) {
            getDetail(params.id).then(res => {
                this.content = res.data.content
                this.rate = res.data.rate
                this.localImageUrls = res.data.imgUrl
                this.video = res.data.video
            })
        },
        methods: {
            back() {
                uni.navigateBack({
                    delta: 2
                })
            },
            viewImage(item) {
                uni.previewImage({
                    urls: [item]
                })
            },
            // 去大屏播放视频
            openVideo(url) {
                uni.navigateTo({
                    url: `/pages/work-detail/maxVideo?url=${url}`
                })
            },
        }
    }
</script>
<style>
    page {
        background: linear-gradient(180deg, #FFFFFF 0%, #F9F9F9 6%, #F8F8F8 100%);
    }
</style>
<style lang="scss" scoped>
    .content {
        width: 100%;
        height: 100%;
    }
    .topColor {
        height: 346rpx;
        background: linear-gradient(180deg, #FFDCDB 0%, rgba(255, 255, 255, 0) 100%);
        // padding: 176rpx 27rpx 17rpx 27rpx;
    }
    .allContent {
        margin-top: -203rpx;
        padding: 38rpx 31rpx 0 31rpx;
        background: #FFFFFF;
        box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0, 0, 0, 0.1);
        border-radius: 36rpx 36rpx 0 0;
        height: 100%;
        .evaluateItem {
            flex: 1;
            // height: 175rpx;
            background: rgba(0, 0, 0, 0.03);
            border-radius: 19rpx;
            padding: 25rpx 0 19rpx 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            margin-right: 17rpx;
            .statusImg {
                width: 75rpx;
                height: 75rpx;
            }
            .title {
                font-size: 23rpx;
                color: rgba(0, 0, 0, 0.6);
                line-height: 33rpx;
                margin-top: 23rpx;
            }
        }
        .activeBg {
            background: url('../../static/detailImg/bg.png') no-repeat 100% 100%;
            background-size: 100% 100%;
        }
        .evaluateItem:last-child {
            margin-right: 0;
        }
    }
    .bs-1 {
        box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0, 0, 0, 0.1);
    }
    .color1 {
        color: #FF4948;
    }
    .color2 {
        color: rgba(0, 0, 0, .8);
    }
    .color3 {
        color: #FAAD14;
    }
    .color4 {
        color: #FFFFFF;
    }
    .color99 {
        color: #FB9A0E;
    }
    .bgcolor-border {
        background: rgba(255, 253, 241, 1) !important;
        border: 2rpx solid #FFE58F;
    }
    .bgcolor1 {
        background: linear-gradient(270deg, rgba(255, 241, 0, 0.5) 0%, rgba(255, 249, 172, 0.25) 48%, rgba(255, 255, 255, 0.2) 100%, #FFFFFF 100%);
    }
    .bgcolor2 {
        background: linear-gradient(180deg, #FFDCDB 0%, rgba(255, 255, 255, 0) 25%);
    }
    .bgcolor3 {
        background: #FFFBE6;
    }
    .bgcolor4 {
        background: #F8F8F8;
    }
    .bgcolor5 {
        background: rgba(0, 0, 0, .23);
    }
    .bgcolor6 {
        background: linear-gradient(270deg, #FC8D55 0%, #FF4948 100%);
    }
    .border1 {
        border: 2rpx solid #FFF1B8;
    }
    .border2 {
        border: 2rpx solid #F8F8F8;
    }
    .safe-box {
        height: env(safe-area-inset-bottom);
    }
    .imgOrVedio {
        margin-right: 17rpx;
        position: relative;
        .img {
            width: 140rpx;
            height: 140rpx;
            border-radius: 8rpx;
            margin-top: 19rpx;
        }
        .videoOpen {
            position: absolute;
            top: 10rpx;
            left: 0;
            z-index: 99;
            width: 140rpx;
            height: 140rpx;
            border-radius: 8rpx;
            display: flex;
            align-items: center;
            justify-content: center;
            .video {
                z-index: 999;
                width: 140rpx;
                height: 140rpx;
            }
        }
    }
    .videoImg {
        width: 140.38rpx;
        height: 140.38rpx;
        border-radius: 7.69rpx;
        position: relative;
    }
    #myVideo {
        z-index: 1;
    }
    .zIndex999 {
        z-index: 999;
    }
    .btn-box {
        height: 120rpx;
    }
</style>
H5/pages/evaluate/evaluate.vue
@@ -209,6 +209,15 @@
                    uni.chooseVideo({
                        count: 9 - this.video.length,
                        success: (res) => {
                            const videoExtensions = /\.(mp4|avi|rmvb)$/i;
                        if (!videoExtensions.test(res.name)) {
                            uni.showToast({
                                title: '请上传mp4, avi, rmvb格式的视频',
                                icon: 'none',
                                duration: 3000
                            })
                            return
                        }
                            this.video.push('loading')
                            const tempFilePath = res.tempFilePath;
                            uni.uploadFile({
H5/pages/evaluate/service.js
@@ -5,3 +5,8 @@
export const saveProcess = (params) => {
    return request.post(`/api/huacheng-sangeshenbian/applet/complaint/commentComplaint`, params, )
}
// 评论详情
export const getDetail = (id) => {
    return request.get(`/api/huacheng-sangeshenbian/applet/complaint/getComplaintCommentInfo/${id}`)
}
H5/pages/index/index.vue
@@ -273,6 +273,7 @@
                })
                if (arr.length == 0) {
                    //全部身份被冻结,返回小程序主页
                    this.$jweixin.miniProgram.navigateBack()
                } else {
                    this.changeRolePopup = true
                }
@@ -314,41 +315,39 @@
            },
            // 关闭webview
            closeH5() {
                uni.setClipboardData({
                    data: JSON.stringify(wx)
                })
                if (this.userInfo.isAdmin == 1) {
                    //是上级则不返回小程序
                    return
                }
                getSignature().then(res => {
                    wx.config({
                        debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来
                        appld: 'wx118de8a734d269f0',
                        timestamp: res.data.timestamp, // 必填,生成签名的 时间戳
                        noncestr: res.data.nonceStr, // 必填,生成签名的随机串
                        signature: res.data.signature, // 必填,签名
                        jsApiList: [
                            'miniProgram.navigateBack',
                            'miniProgram.navigateTo',
                            'miniProgram.postMessage',
                        ] // 必填,需要使用的JS接口列表
                    })
                    wx.ready(() => {
                this.$jweixin.miniProgram.navigateBack()
                // getSignature().then(res => {
                // jweixin.config({
                //     debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来
                //     appld: 'wx118de8a734d269f0',
                //     timestamp: res.data.timestamp, // 必填,生成签名的 时间戳
                //     noncestr: res.data.nonceStr, // 必填,生成签名的随机串
                //     signature: res.data.signature, // 必填,签名
                //     jsApiList: [
                //         'miniProgram.navigateBack',
                //         'miniProgram.navigateTo',
                //         'miniProgram.postMessage',
                //     ] // 必填,需要使用的JS接口列表
                // })
                // jweixin.ready(() => {
                        // 在这里调用任何你需要的JS-SDK功能 
                        uni.showToast({
                            title: '配置成功!'
                        })
                        wx.miniProgram.navigateBack()
                    });
                // jweixin.miniProgram.navigateBack()
                // });
                    wx.error((err) => {
                // jweixin.error((err) => {
                        // 处理错误情况
                        uni.showToast({
                            title: '配置失败'
                        });
                        uni.setClipboardData({
                            data: JSON.stringify(err)
                        })
                    })
                })
                // uni.showToast({
                //     title: '配置失败'
                // });
                // })
                // })
            },
            Allread() {
H5/pages/list/list.vue
@@ -1,8 +1,9 @@
<template>
    <view class="content">
        <view class="bgColor2 h-96 flex a-center fs-27  j-between txt-center shadow1 font-w400 color1"
            style="position: sticky;top: 0;">
            <view @click="changeType('')" class="flex1 bgColor2 relative" :class="searchParams.type == '' && 'color2 font-bold'">
            style="position: sticky;top: 0;z-index: 999;">
            <view @click="changeType('')" class="flex1 bgColor2 relative"
                :class="searchParams.type == '' && 'color2 font-bold'">
                <view class="relative zIndex1000">
                    全部
                </view>
@@ -123,7 +124,8 @@
                    <view class="txt-center fs-23 mt-27 color6">
                        创建时间:{{ item.createTime | formatTime }}
                    </view>
                    <view v-if="item.listControlsButtonStatus == 0" class="flex a-center j-center fs-23 mt-29 txt-center">
                    <view v-if="item.listControlsButtonStatus == 0"
                        class="flex a-center j-center fs-23 mt-29 txt-center">
                        <view @click.stop="addProgress(item.id)" class="h-58 lh-58 bgColor5 w-192 br-29 color10">
                            添加办理进度
                        </view>
@@ -132,8 +134,13 @@
                        </view>
                    </view>
                    <view v-if="item.evaluateButtonStatus == 0" class="flex a-center j-center fs-23 mt-29 txt-center">
                        <view @click.stop="toEvaluate(item.id)" class="h-58 lh-58 bgColor6 w-192 br-29 color10">
                        <view @click.stop="toEvaluate(item.id)" class="h-58 lh-58 bgColor6 w-192 br-29 color8">
                            评价
                        </view>
                    </view>
                    <view v-if="item.status == 8" class="flex a-center j-center fs-23 mt-29 txt-center">
                        <view @click.stop="toDetailEvaluate(item.id)" class="h-58 lh-58 bgColor6 w-192 br-29 color8">
                            查看评价
                        </view>
                    </view>
                </view>
@@ -210,6 +217,11 @@
                    url: `/pages/evaluate/evaluate?id=${id}`
                })
            },
            toDetailEvaluate(id) {
                uni.navigateTo({
                    url: `/pages/evaluate/evaluate-detail?id=${id}`
                })
            },
            fetchList(params, callback) {
                if (this.status == 'loading') return
                this.status = 'loading'
H5/pages/work-detail/work-detail.vue
@@ -135,11 +135,11 @@
                <view v-if="!isParty">
                    <view class="flex j-between">
                        <view class="label">录入人</view>
                        <view class="value">{{ orderInfo.nickname || '' }}</view>
                        <view class="value">{{ orderInfo.reportUserName || '' }}</view>
                    </view>
                    <view class="flex j-between">
                        <view class="label">录入人联系方式</view>
                        <view class="value">{{ orderInfo.contactNumber || '' }}</view>
                        <view class="value">{{ orderInfo.reportUserPhone || '' }}</view>
                    </view>
                </view>
@@ -326,6 +326,9 @@
        <!-- v-if="[3].includes(orderInfo.status)" -->
        <view class="btnButtom" v-if="orderInfo.evaluateButtonStatus == 0">
            <view class=" btnAdd evaluate" @click.stop="toEvaluate">评价</view>
        </view>
        <view class="btnButtom" v-if="orderInfo.status == 8">
            <view class=" btnAdd evaluate" @click.stop="toDetailEvaluate">查看评价</view>
        </view>
@@ -561,6 +564,11 @@
                    url: `/pages/evaluate/evaluate?id=${this.id}`
                })
            },
            toDetailEvaluate() {
                uni.navigateTo({
                    url: `/pages/evaluate/evaluate-detail?id=${this.id}`
                })
            },
            addProgress() {
                uni.navigateTo({
                    url: `/pages/progress/progress?id=${this.id}`
H5/utils/request.js
@@ -19,9 +19,9 @@
    return new Promise(function(resolve, reject) {
        let token = uni.getStorageSync('token')
        token =
            'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE2MjAxLCJ0eXBlIjoxLCJleHAiOjE3NDM1NTY2NzYsImNyZWF0ZWQiOjE3NDIyNjA2NzY0MTJ9.GWvz0-m7-R6mz-gEICWywIV_lhc5vKU0_KUJN4MxxY8qa8_1Q_n-tzPSDltiu8cwAEBbsn8QZ4N4MHwzukDzIA'
        uni.setStorageSync('token', token)
        // token =
        //     'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE2MjA0LCJ0eXBlIjoxLCJleHAiOjE3NDM1NTY3NzYsImNyZWF0ZWQiOjE3NDIyNjA3NzY2NTR9.SAmdlprtz_Z1cNSNB4ANYsKJFC7E7Jfxo6XbT9vpbO6zHBpTRfq_oyp9UlDQtHNiYgv-MuyqCBPw1-x88C_-8A'
        // uni.setStorageSync('token', token)
        let header = {
            'content-type': type ? 'application/x-www-form-urlencoded;charset=UTF-8' : 'application/json',
            'Authorization': token,
@@ -63,7 +63,6 @@
                        icon: 'none',
                        mask: true,
                    })
                    reject(res.data);
                    return
                }
                if (res.data.code == 401 || res.data.code == 510 || res.data.code == 504 || res.data
@@ -103,6 +102,7 @@
                    icon: 'none',
                    mask: true,
                })
            },
            fail(err) {
                if (lodingFlag) {