| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500 |
- /*******************************************************************************
- * Copyright(c) 2020 dongke All rights reserved. / Confidential
- * 类的信息:
- * 1.程序名称:
- * 2.功能描述:共同类
- * 编辑履历:
- * 作者 日期 版本 修改内容
- * admin 2021-03-31 1.00 新建
- *******************************************************************************/
- var QQMapWX = require('./qqmap-wx-jssdk.min');
- const config = require('../config/config.js');
- const Constants = require('../utils/Constants.js');
- const util = require('./util');
- const app = getApp();
- var qqmapsdk;
- /**
- * 小程序地图调用
- */
- function onClickWxchartAddress() {
- const key = config.key; //使用在腾讯位置服务申请的key
- const referer = 'wx76a9a06e5b4e693e'; //调用插件的app的名称
- const category = '小区';
- wx.navigateTo({
- url: 'plugin://chooseLocation/index?key=' + key + '&referer=' + referer + '&category=' + category
- });
- }
- /**
- * 判断是否有按钮权限
- * @param {*} functionCode
- */
- function hasRight(functionCode) {
- let rights = app.globalData.user.rights
- let value = false
- if (rights != null && rights.length > 0) {
- rights.forEach(item => {
- if (item.FunctionCode == functionCode) {
- value = true
- return
- }
- })
- }
- return value
- }
- /**
- * 跳转到固定节点的位置
- * @param {*} selectid
- * @param {*} minus
- */
- function navigatePosition(selectid, minus) {
- //1、返回一个查询实例
- const query = wx.createSelectorQuery();
- //2、选择要跳转的节点id
- query.select('#' + selectid).boundingClientRect();
- //3、获取显示区域的尺寸、滚动等位置等信息,然后添加节点的滚动位置查询
- query.selectViewport().scrollOffset();
- //4、执行跳转
- query.exec((res) => {
- //5、res[0]是步骤2中的数据,res[1]是步骤3中的数据
- if (res[0] && res[1]) {
- //6、将页面滚动到目标位置 减300不是固定的 根据自己的要求调
- wx.pageScrollTo({
- //7、计算滚动到目标的位置
- scrollTop: res[0].top + res[1].scrollTop - minus,
- duration: 300
- })
- }
- });
- }
- /**
- * @desc : 前台实现千分位
- * @date : 2022/6/30 16:49
- * @author : 周兴
- */
- function toThousandCents(num) {
- if (num == undefined) {
- return 0;
- }
- var num = num + '';
- var d = '';
- if (num.slice(0, 1) == '-') {
- d = num.slice(0, 1);
- num = num.slice(1);
- }
- var len = num.length;
- var index = num.indexOf('.');
- if (index == -1) {
- num = num + '.00';
- } else if ((index + 2) == len) {
- num = num + '0';
- }
- var index = num.indexOf('.'); // 字符出现的位置
- var num2 = num.slice(-3);
- num = num.slice(0, index)
- var result = '';
- while (num.length > 3) {
- result = ',' + num.slice(-3) + result;
- num = num.slice(0, num.length - 3);
- }
- if (num) {
- result = num + result;
- }
- return d + (result + num2)
- }
- /**
- * 导航
- */
- function navigate(address) {
- qqmapsdk.geocoder({
- //获取表单传入地址
- address: address,
- //地址参数,例:固定地址,address: '北京市海淀区彩和坊路海淀西大街74号'
- success: function (res) {//成功后的回调
- var res = res.result;
- var latitude = res.location.lat;
- var longitude = res.location.lng;
- wx.openLocation({
- latitude,
- longitude,
- scale: 18
- })
- },
- fail: function (error) {
- wx.showToast({
- title: '地址无法导航',
- image: '/static/image/warning.png',
- duration: 2000
- })
- },
- complete: function (res) {
- }
- })
- }
- /**
- * @desc : 设置图片路径
- * @date : 2022/7/5 16:49
- * @author : 周兴
- */
- function setSkuIcon(skuData) {
- if (skuData && skuData.length > 0) {
- let imagePath = config.server_img_http;
- let imageHgPath = config.server_hg_img_http;
- if (skuData != null && skuData.length > 0) {
- skuData.forEach(it => {
- if (it.pathType === 1) { //业务中台 2 本系统 1 2 需要加密
- // 对行数据进行图标路径的处理
- setImagePath(it, imagePath, imageHgPath);
- // 如果有子级,需要对子级进行处理
- if (it.goodsSkuList != null && it.goodsSkuList.length > 0) {
- it.goodsSkuList.forEach(row => {
- // 对子数据行数据进行图标路径的处理
- setImagePath(row, imagePath, imageHgPath);
- })
- }
- }
- })
- }
- }
- }
- /**
- * @desc : 设置行的图标路径
- * @date : 2022/7/5 16:49
- * @author : 周兴
- */
- function setImagePath(it, imagePath, imageHgPath) {
- // 根据图标来源设置绝对路径
- if (it.pathType == Constants.PATH_TYPE.HG) {
- if (it.iconPath && it.iconPath.indexOf(imageHgPath) < 0) {
- it.iconPath = imageHgPath + it.iconPath
- }
- if (it.iconThumPath && it.iconThumPath.indexOf(imageHgPath) < 0) {
- it.iconThumPath = imageHgPath + it.iconThumPath
- }
- } else {
- if (it.iconPath && it.iconPath.indexOf(imagePath) < 0) {
- it.iconPath = imagePath + it.iconPath
- }
- if (it.iconThumPath && it.iconThumPath.indexOf(imagePath) < 0) {
- it.iconThumPath = imagePath + it.iconThumPath
- }
- }
- }
- function setImagePathForm(it, imagePath, imageHgPath) {
- // 根据图标来源设置绝对路径
- if (it.path_type == Constants.PATH_TYPE.HG) {
- if (it.icon_path && it.icon_path.indexOf(imageHgPath) < 0) {
- it.icon_path = imageHgPath + it.icon_path
- }
- if (it.icon_thum_path && it.icon_thum_path.indexOf(imageHgPath) < 0) {
- it.icon_thum_path = imageHgPath + it.icon_thum_path
- }
- } else {
- if (it.icon_path && it.icon_path.indexOf(imagePath) < 0) {
- it.icon_path = imagePath + it.icon_path
- }
- if (it.icon_thum_path && it.icon_thum_path.indexOf(imagePath) < 0) {
- it.icon_thum_path = imagePath + it.icon_thum_path
- }
- }
- }
- /**
- * @desc : 设置行的图标路径
- * @date : 2022/7/5 16:49
- * @author : 周兴
- */
- function setRowImagePath(it) {
- let imagePath = config.server_img_http;
- let imageHgPath = config.server_hg_img_http;
- // 根据图标来源设置绝对路径
- setImagePath(it, imagePath, imageHgPath);
- }
- /**
- * 本接口提供由坐标到坐标所在位置的文字描述的转换,输入坐标返回地理位置信息和附近poi列表。
- * @param {*} loc
- */
- function reverseGeocoder(loc) {
- return new Promise(resolve => {
- qqmapsdk.reverseGeocoder({
- location: {
- latitude: loc.latitude,
- longitude: loc.longitude
- } || '',
- //get_poi: 1, //是否返回周边POI列表:1.返回;0不返回(默认),非必须参数
- success: function (res) {//成功后的回调
- resolve(res)
- },
- fail: function (error) {
- resolve('')
- },
- complete: function (res) {
- }
- })
- });
- }
- /**
- * 调用距离计算接口
- * @param {*} fromloc
- * @param {*} toloc
- */
- function calculateDistance(fromloc, toloc) {
- return new Promise(resolve => {
- //调用距离计算接口
- qqmapsdk.calculateDistance({
- //mode: 'straight',//可选值:'driving'(驾车)、'walking'(步行),不填默认:'walking',可不填 新增直线距离计算,‘straight’(直线)
- //from参数不填默认当前地址
- //获取表单提交的经纬度并设置from和to参数(示例为string格式)
- from: fromloc, //若起点有数据则采用起点坐标,若为空默认当前地址
- to: toloc, //终点坐标
- success: function (res) {//成功后的回调
- var destinationDistance = res.result.elements[0].distance;
- resolve(destinationDistance)
- },
- fail: function (error) {
- resolve(0)
- },
- complete: function (res) {
- }
- });
- });
- }
- /**
- * 百度转腾讯
- * @param {*} lat
- * @param {*} lng
- */
- function bdMap_to_wxMap(lat, lng) {
- let pi = 3.14159265358979324 * 3000.0 / 180.0;
- let x = lng - 0.0065;
- let y = lat - 0.006;
- var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * pi);
- var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * pi);
- let lngv = z * Math.cos(theta);
- let latv = z * Math.sin(theta);
- return { 'longitude': lngv, 'latitude': latv };
- }
- /**
- * 腾讯转百度
- * @param {*} lat
- * @param {*} lng
- */
- function wxMap_to_bdMap(lat, lng) {
- let pi = 3.14159265358979324 * 3000.0 / 180.0;
- let x = lng;
- let y = lat;
- var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * pi);
- var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * pi);
- let lngv = z * Math.cos(theta) + 0.0065;
- let latv = z * Math.sin(theta) + 0.006;
- return { 'longitude': lngv, 'latitude': latv };
- }
- /**
- * 在onload时间中新建qq地址对象
- */
- function openQQMap() {
- if (qqmapsdk === undefined || qqmapsdk === null) {
- qqmapsdk = new QQMapWX({
- key: '7I3BZ-VADCX-TJQ4C-TN5O4-F4BZE-RDFCK'
- });
- }
- }
- /**
- * @desc : 计算品类数
- * @date : 2022/7/11 16:49
- * @author : 周兴
- */
- function getCategoryQuantity(goodsList) {
- let categoryQuantityList = [] // 品类数
- goodsList.forEach(res => {
- // 如果有子级,计算子级的数量
- if (res.goodsSkuList && res.goodsSkuList.length > 0) {
- res.goodsSkuList.forEach(it => {
- if (it.skuSpecs == null) {
- it.skuSpecs = " "
- }
- if (it.skuSpecs && !categoryQuantityList.includes(it.skuSpecs) && !it.flgBomCombined) {
- categoryQuantityList.push(it.skuSpecs)
- }
- })
- } else {
- if (res.skuSpecs == null) {
- res.skuSpecs = " "
- }
- // 如果没有子级,就加上即可
- if (res.skuSpecs && !categoryQuantityList.includes(res.skuSpecs) && !res.flgBomCombined) {
- categoryQuantityList.push(res.skuSpecs)
- }
- }
- })
- return categoryQuantityList.length;
- }
- /**
- * @desc : 重新计算最后一条金额(用父级去减去其他的金额,计算最后一条)
- * @date : 2022/7/7 16:49
- * @author : 周兴
- */
- function countLastAmount(choosedGoodsList, followFlag) {
- if (choosedGoodsList && choosedGoodsList.length > 0) {
- let pRows = choosedGoodsList.filter(it => !it.parentId || it.parentId == null);
- if (pRows && pRows.length > 0) {
- pRows.forEach(it => {
- if (it.goodsSkuList != null && it.goodsSkuList.length > 0) {
- // 获取子级
- let childRows = it.goodsSkuList.filter(row => row.parentId == it.id && row.hasChild == 0);
- let amount = Number(it.itemAmount); // 父级的金额
- if (childRows && childRows.length > 0) {
- // 只到倒数第二条
- for (let i = 0; i < childRows.length - 1; i++) {
- amount = util.SubNumber(amount, Number(childRows[i].itemAmount))
- }
- // 如果是退换补,还需要给实际赋值 //于继渤 添加else分支 不然 退还补 选完bom 价格出现NAN 报错 2022/07/21
- childRows[childRows.length - 1].itemAmount = amount;
- childRows[childRows.length - 1].priceSale = Number(childRows[childRows.length - 1].itemAmount / childRows[childRows.length - 1].itemQuantity).toFixed(2)
- if (followFlag) {
- childRows[childRows.length - 1].tItemAmount = amount;
- childRows[childRows.length - 1].priceSale = Number(childRows[childRows.length - 1].tItemAmount / childRows[childRows.length - 1].tItemQuantity).toFixed(2)
- }
- }
- }
- })
- }
- }
- }
- /**
- * 判断是否有按钮权限
- * @param {*} functionCode
- */
- function hasButtonRight(functionCode) {
- let buttonRights = app.globalData.buttonRights
- let orderAuditVisible = buttonRights.indexOf(functionCode)
- return orderAuditVisible == -1 ? false : true
- }
- /**
- * 判断必填项
- * @param {*} functionCode
- */
- function hasInputPageItemMust(functionCode) {
- let pageItemMusts = app.globalData.pageItemMusts
- let orderAuditVisible = false
- pageItemMusts.forEach(res => {
- if (res.itemCodeTag['WX-CODE'] && res.itemCodeTag['WX-CODE'].indexOf(functionCode) != -1 && res.flgMustItem) {
- orderAuditVisible = true
- }
- })
- return orderAuditVisible
- }
- /**
- * 判断是否有画面的uuid权限
- * @param {*} functionCode
- */
- function hasPageRight(objectCode) {
- if (objectCode) {
- let hasRightFlag = false
- let menuList = app.globalData.menus
- if (menuList && menuList.length > 0) {
- // 查看该功能是否有权限
- let filters = menuList.filter(it => it.objectCode == objectCode);
- if (filters && filters.length > 0) {
- hasRightFlag = true;
- }
- }
- return hasRightFlag
- } else {
- return false
- }
- }
- /**
- * 判断是否有画面的uuid权限
- * @param {*} functionCode
- */
- function hasPageUUidRight(uuid) {
- if (uuid) {
- let pageRights = app.globalData.pageRights
- let pageVisible = pageRights.indexOf(uuid)
- return pageVisible == -1 ? false : true
- } else {
- return
- }
- }
- function isUserSensitive() {
- //敏感信息控制
- if (app.globalData.user.userSensitive && app.globalData.user.userSensitive.length > 0) {
- let userSensitive = app.globalData.user.userSensitive
- let purchasePriceFlag = true
- userSensitive.forEach(res => {
- if (res.isCheck) {
- if (res.docCode == '分销采购订单' && res.itemName == '采购价格' && res.isCheck) {
- // purchasePriceFlag = false
- purchasePriceFlag = true
- }
- } else {
- purchasePriceFlag = false
- }
- })
- return purchasePriceFlag
- } else {
- return false
- }
- }
- /**
- * 导出函数
- */
- module.exports = {
- openQQMap,
- navigate,
- toThousandCents,
- reverseGeocoder,
- calculateDistance,
- hasButtonRight,
- hasRight,
- wxMap_to_bdMap,
- bdMap_to_wxMap,
- setSkuIcon,
- setRowImagePath,
- onClickWxchartAddress,
- countLastAmount,
- getCategoryQuantity,
- setImagePath,
- hasPageUUidRight,
- setImagePathForm,
- hasInputPageItemMust,
- isUserSensitive,
- hasPageRight
- }
|