源文件

This commit is contained in:
gyq
2024-05-23 14:39:33 +08:00
commit a1128dd791
2997 changed files with 500069 additions and 0 deletions

View File

@@ -0,0 +1,218 @@
/***
* 公共字典参数
* @param {value} 数组 ['A','B']
* @function filterDcit 过滤 需要的 字典值
* */
export function filterDcit(value) {
if (!value) return [];
let list = dictLists.filter((v) => {
if (value.includes(v.type)) return true;
});
return list;
}
/**
* @param {val} String
* @return {list} Array
* 数组筛选字典数据 模糊查询 components文件下面dict 组件使用方法
* */
export function filterDicts(val) {
if (!val) return [];
if (val.trim() == "全部") return dictLists;
let list = dictLists.filter((v) => {
if (v.type.includes(val) || v.text.includes(val)) return true;
});
return list;
}
/***
* A 商户类型
* B 账户类型
* C 判断类型
* D 结算类型
* E 银行卡类型
* F 收款类型
* G 其他类型
* K 入账标识
* L 超管类型
* M 协议类型
* N 其他类型
* */
const dictLists = [
{
type: "A0",
value: 1,
text: "个人",
},
{
type: "A1",
value: 2,
text: "个体工商户",
},
{
type: "A2",
value: 3,
text: "企业",
},
{
type: "A3",
value: 1,
text: "小微商户",
},
{
type: "A4",
value: 6,
text: "个人卖家",
},
{
type: "A5",
value: 1,
text: "小微个人",
},
{
type: "B0",
value: "B",
text: "对公",
},
{
type: "B1",
value: "C",
text: "对私",
},
{
type: "B2",
value: "D",
text: "对私非法人",
},
{
type: "B3",
value: "1",
text: "对公",
},
{
type: "B4",
value: "2",
text: "对私",
},
{
type: "B5",
value: "3",
text: "授权人账户",
},
{
type: "C0",
value: "1",
text: "开通",
},
{
type: "C1",
value: "0",
text: "不开通",
},
{
type: "C2",
value: "1",
text: "是",
},
{
type: "C3",
value: "0",
text: "否",
},
{
type: "D0",
value: "1",
text: "自动结算T1",
},
{
type: "D1",
value: "2",
text: "手动结算",
},
{
type: "D2",
value: "3",
text: "自动结算D1",
},
{
type: "D3",
value: "4",
text: "定时结算",
},
{
type: "E0",
value: "RYX",
text: "瑞银信",
},
{
type: "E1",
value: "ZF",
text: "中付",
},
{
type: "E2",
value: "COMMONS",
text: "其他",
},
{
type: "F0",
value: "alipayAccount",
text: "支付宝账号",
},
{
type: "F1",
value: "bankCard",
text: "银行卡",
},
{
type: "G0",
value: "1",
text: "实体",
},
{
type: "G1",
value: "2",
text: "虚拟",
},
{
type: "K0",
value: "0",
text: "非法人入账",
},
{
type: "K1",
value: "1",
text: "法人入账",
},
{
type: "L0",
value: "SUPER",
text: "经办人",
},
{
type: "L1",
value: "LEGAL",
text: "经营者/法人",
},
{
type: "M0",
value: "0",
text: "电子协议",
},
{
type: "M1",
value: "1",
text: "纸质协议",
},
{
type: "N0",
value: "1",
text: "市",
},
{
type: "N1",
value: "2",
text: "区",
},
];

View File

@@ -0,0 +1,7 @@
export function formatData(val) {
for (const key in val) {
if (val[key] != 0 && !val[key] && !key.includes("img")) {
val[key] = "---"
}
}
}

View File

@@ -0,0 +1,6 @@
export function branch(val) {
return val * 100
}
export function horn(val) {
return (val / 100).toFixed(2)
}

View File

@@ -0,0 +1,14 @@
/*
* loading 加载页
*/
import { ref } from 'vue'
export let loadingStatus = ref(false)
export function showLoading() {
loadingStatus.value = true
}
export function hideLoading() {
console.log('执行');
loadingStatus.value = false
}

View File

@@ -0,0 +1,64 @@
import { $mapKey } from "@/http/apiManager.js"
import address from "@/components/applyJson/address.json" // 地址
/***
* 使用 Promise 风格对逆地理编码进行封装
* 入参 address 地理位置 type0地区码 1 经纬度
*
* */
export const getMapKey = (address, type) => {
return new Promise((res, rej) => {
$mapKey()
.then(({ bizData }) => {
return bizData.apiMapWebServiceKey
})
.then((key) => {
return new Promise((res, rej) => {
uni.request({
url: "https://restapi.amap.com/v3/geocode/geo", // 调用高德接口
data: {
key,
address,
},
success: ({ data }) => {
switch (type) {
case 0:
if (data.status == 1) return res({ code: data.geocodes[0].adcode, text: data.geocodes[0].district })
break
case 1:
if (data.status == 1)
return res({
lat: data.geocodes[0].location.split(",")[1],
lon: data.geocodes[0].location.split(",")[0],
flag: true,
})
break
}
console.log("res", data)
},
fail: (err) => {
console.log(err, "error")
},
})
})
})
.then((val) => {
if (val.flag) res(val)
res(inverse(val.code, val.text))
})
})
}
const inverse = (code, text) => {
let lastReg = new RegExp(code) // 将要用于正则匹配
let result = address.find((item) => {
// 获取省级信息
return lastReg.test(JSON.stringify(item))
})
let secondContent = result.children.find((item) => {
// 获取市级信息
return lastReg.test(JSON.stringify(item))
})
return { code: [result.value, secondContent.value, code], text: [result.text, secondContent.text, text].join("/") }
}

View File

@@ -0,0 +1,45 @@
import validate from "./validate"
let rulesArray = []
export function addRules(rules) {
let flag = true
rulesArray.forEach((v) => {
if (v.name === rules.name && v.Msg === rules.Msg) {
flag = false
}
})
if (flag) {
rulesArray.push(rules)
}
}
export function clearOneRule(val) {
rulesArray.forEach((v, i) => {
if (v.name === val.name || v.Msg === val.Msg) return rulesArray.splice(i, 1)
})
}
export function clearRulesArray() {
rulesArray = []
}
// 校验函数
export function validateArray(val) {
let flag = true
for (let i = 0; i < rulesArray.length; i++) {
if (!validate[rulesArray[i].rule](val[rulesArray[i].name])) {
uni.showToast({
title:
rulesArray[i].rule == "REG_NotNUll"
? rulesArray[i].Msg.includes("请上传")
? rulesArray[i].Msg
: "请输入" + rulesArray[i].Msg
: "请检查" + rulesArray[i].Msg + "格式",
icon: "none",
})
flag = false
break
} else {
flag = true
}
}
return flag
}

View File

@@ -0,0 +1 @@
import { onShow } from '@dcloudio/uni-app'

View File

@@ -0,0 +1,31 @@
import onceVar from '@/util/onceVar.js'
import { onBackPress } from '@dcloudio/uni-app'
import {nextTick} from 'vue'
/*
本函数用于阻断返回操作当页面开启图片预览与选择框时app上的返回操作会直接返回到上一级页面不符合正常的体验。 所以触发返回事件,优先关闭图片预览与其他弹窗
参数fun 为具体使用页面的关闭弹窗函数,需要在这里执行一次
onceVar 为全局唯一变量,保存在内存中。 可用vuex代替
*/
export default function (fun) {
onBackPress((option) => {
if (onceVar.imgView()) {
nextTick(() => {
fun()
inactive()
})
return true
}
return false
})
const active = () => onceVar.imgView(true)
const inactive = () => onceVar.imgView(false)
return { active, inactive }
}

View File

@@ -0,0 +1,133 @@
import {ref, reactive , toRefs, onMounted, watch} from 'vue'
import { onPullDownRefresh, onShow, onReachBottom,onLoad } from '@dcloudio/uni-app'
// requestFun: 请求函数 dataHandle: 数据处理函数 params 额外的固定的请求数据
export default function (requestFun, dataHandle = data => data, params = {} ,flag=true,onshow=true,pageSize = 10) {
// 该对象会返回给每个页面,用于取值
const useDataResult = reactive({
dataList: [], // 数据列表
listTipText: '加载更多' // 列表底部提示文字 1.加载更多 2.加载中 3.暂无更多
})
const listParams = {} // 页面传参对象 getList方法中传的参数
const queryObj = reactive({
pageNumber: 1, // 默认是1
pageSize: pageSize, // 默认10条可传参修改
isLoad: false, // 是否为上拉加载
titlePage: '', // 总页数
})
const getList = (listParamObj) => {
// 非下拉刷新才显示加载提示
if (queryObj.isLoad) {
uni.showLoading({ title:'加载中'})
}
useDataResult.listTipText = '加载中' // 列表底部提示文字 1.加载更多 2.加载中 3.暂无更多
// listParamObj 父组件在函数中携带的请求参数与页码页数固定参数合并到一起并且当该参数对象在调用时有具体值会将页码重置为1
let paramObj // 参数合并
if(listParamObj) {
queryObj.pageNumber = 1
Object.keys(listParamObj).forEach(item => {
listParams[item] = listParamObj[item]
})
useDataResult.dataList = []
}
paramObj = Object.assign({
pageNumber: queryObj.pageNumber,
pageSize: queryObj.pageSize
}, params, listParams)
requestFun(paramObj).then(({ bizData }) => {
uni.hideLoading()
queryObj.titlePage = Math.ceil(bizData.total / queryObj.pageSize) // 页码总数
if (queryObj.titlePage == queryObj.pageNumber || bizData.records.length == 0) {
useDataResult.listTipText = '暂无更多'
}
uni.stopPullDownRefresh() // 请求成功停止下拉刷新
// dataHandle 函数用于对数据的集中处理,在每个页面可自定义
let data = dataHandle(bizData.records ? bizData.records : bizData)
// 下拉刷新重置数据, 上拉加载新增数据
if (queryObj.isLoad) {
useDataResult.dataList.push(...data)
} else {
useDataResult.dataList = data
}
}).catch(err => uni.hideLoading())
}
// 只在onshow时调用一次 请求方法
const onShowGetList = () => {
if(!flag) return false
uni.showLoading({ title:'加载中'})
queryObj.pageNumber = 1 // 页码固定为1
let paramObj = Object.assign({ // 合并请求参数
pageNumber: 1,
pageSize: queryObj.pageSize
}, params)
requestFun(paramObj).then(({ bizData }) => {
uni.hideLoading()
queryObj.titlePage = Math.ceil(bizData.total / queryObj.pageSize)
if (queryObj.titlePage == queryObj.pageNumber || bizData.records.length == 0) {
useDataResult.listTipText = '暂无更多'
}
// dataHandle 函数用于对数据的集中处理,在每个页面可自定义
let data = dataHandle(bizData.records ? bizData.records : bizData)
useDataResult.dataList = data // 由于只在onShow 中调用一次,所以数据重新赋值
}).catch(err => {uni.hideLoading()})
}
onShow(() => {
if(onshow){
onShowGetList()
}
})
onLoad(()=>{
if(!onshow){
onShowGetList()
}
})
// 下拉刷新
onPullDownRefresh(() => {
queryObj.pageNumber = 1
queryObj.isLoad = false
getList()
})
// 上拉加载
onReachBottom( () => {
queryObj.pageNumber ++
if (queryObj.pageNumber > queryObj.titlePage) {
queryObj.pageNumber = queryObj.pageNumber
return queryObj.isLoad = false
}
queryObj.isLoad = true
getList()
})
return {
useDataResult, // 返回结果对象
getList // 请求函数,每个页面自定义请求参数
}
}

View File

@@ -0,0 +1,136 @@
import { ref, reactive, toRefs, onMounted, watch } from "vue"
import { onPullDownRefresh, onShow, onReachBottom, onLoad } from "@dcloudio/uni-app"
// requestFun: 请求函数 dataHandle: 数据处理函数 params 额外的固定的请求数据
export default function (config) {
const { requestFun, dataHandle = (data) => data, params = {}, flag = true, onshow = true, pageSize = 10 } = config
// 该对象会返回给每个页面,用于取值
const useDataResult = reactive({
dataList: [], // 数据列表
listTipText: "加载更多", // 列表底部提示文字 1.加载更多 2.加载中 3.暂无更多
})
const listParams = {} // 页面传参对象 getList方法中传的参数
const queryObj = reactive({
pageNumber: 1, // 默认是1
pageSize: pageSize, // 默认10条可传参修改
isLoad: false, // 是否为上拉加载
titlePage: "", // 总页数
})
const getList = (listParamObj) => {
// 非下拉刷新才显示加载提示
if (queryObj.isLoad) {
uni.showLoading({ title: "加载中" })
}
useDataResult.listTipText = "加载中" // 列表底部提示文字 1.加载更多 2.加载中 3.暂无更多
// listParamObj 父组件在函数中携带的请求参数与页码页数固定参数合并到一起并且当该参数对象在调用时有具体值会将页码重置为1
let paramObj // 参数合并
if (listParamObj) {
queryObj.pageNumber = 1
Object.keys(listParamObj).forEach((item) => {
listParams[item] = listParamObj[item]
})
useDataResult.dataList = []
}
paramObj = Object.assign(
{
pageNumber: queryObj.pageNumber,
pageSize: queryObj.pageSize,
},
params,
listParams
)
paramObj.pageNumber = queryObj.pageNumber
paramObj.pageSize = queryObj.pageSize
requestFun(paramObj)
.then(({ bizData }) => {
uni.hideLoading()
queryObj.titlePage = Math.ceil(bizData.total / queryObj.pageSize) // 页码总数
if (queryObj.titlePage == queryObj.pageNumber || bizData.records.length == 0) {
useDataResult.listTipText = "暂无更多"
}
uni.stopPullDownRefresh() // 请求成功停止下拉刷新
// dataHandle 函数用于对数据的集中处理,在每个页面可自定义
let data = dataHandle(bizData.records ? bizData.records : bizData)
// 下拉刷新重置数据, 上拉加载新增数据
if (queryObj.isLoad) {
useDataResult.dataList.push(...data)
} else {
useDataResult.dataList = data
}
})
.catch((err) => uni.hideLoading())
}
// 只在onshow时调用一次 请求方法
const onShowGetList = () => {
if (!flag) return false
uni.showLoading({ title: "加载中" })
queryObj.pageNumber = 1 // 页码固定为1
let paramObj = Object.assign(
{
// 合并请求参数
pageNumber: 1,
pageSize: queryObj.pageSize,
},
params
)
Object.assign(paramObj, listParams)
requestFun(paramObj).then(({ bizData }) => {
uni.hideLoading()
queryObj.titlePage = Math.ceil(bizData.total / queryObj.pageSize)
if (queryObj.titlePage == queryObj.pageNumber || bizData.records.length == 0) {
useDataResult.listTipText = "暂无更多"
}
// dataHandle 函数用于对数据的集中处理,在每个页面可自定义
let data = dataHandle(bizData.records ? bizData.records : bizData)
useDataResult.dataList = data // 由于只在onShow 中调用一次,所以数据重新赋值
})
}
onShow(() => {
if (onshow) {
onShowGetList()
}
})
onLoad(() => {
if (!onshow) {
onShowGetList()
}
})
// 下拉刷新
onPullDownRefresh(() => {
queryObj.pageNumber = 1
queryObj.isLoad = false
getList()
})
// 上拉加载
onReachBottom(() => {
queryObj.pageNumber++
if (queryObj.pageNumber > queryObj.titlePage) {
queryObj.pageNumber = queryObj.pageNumber
return (queryObj.isLoad = false)
}
queryObj.isLoad = true
getList()
})
return {
useDataResult, // 返回结果对象
getList, // 请求函数,每个页面自定义请求参数
}
}

View File

@@ -0,0 +1,29 @@
import { reactive } from "vue"
const store = reactive({
mchInfo: {}, // 商户信息
storeInfo: {}, // 门店信息
appInfo: {}, // 应用信息
bindMch: {}, // 商户绑定信息
team: {}, //团队信息
teamInfo: {}, //团队详情
createINfo: {}, //创建辅助终端设备需要信息
userState: {}, //注册状态
})
export default function () {
const getStore = (key) => {
return store[key]
}
const setStore = (key, value) => {
store[key] = value
}
const clearItem = (key) => {
store[key] = {}
}
return {
getStore,
setStore,
clearItem,
}
}

View File

@@ -0,0 +1,32 @@
import appConfig from '@/config/appConfig.js'
import storageManage from '@/util/storageManage.js';
import { $userInfo, $logout } from '@/http/apiManager.js'
let USER_INFO = null
const user = {
// 退出登录清空token
logout() {
// 退出登录接口
$logout()
// 清空用户信息
USER_INFO = null
// 清空token
storageManage.token('', true)
uni.reLaunch({
url: '/pages/login/login'
})
}
}
function reqUserInfo() {
return $userInfo()
}
export default user

View File

@@ -0,0 +1,37 @@
// 校验手机号
function REG_Phone(arg) {
const reg = /^1\d{10}$/
return reg.test(arg)
}
// 校验邮箱
function REG_Email(arg) {
const reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/
return reg.test(arg)
}
// 校验登录名
function REG_LoginName(arg) {
const reg = /^[a-zA-Z][a-zA-Z0-9]{5,19}$/
return !!arg && reg.test(arg)
}
// 非空校验
function REG_NotNUll(arg) {
return !!arg
}
// 校验货币金额 真能是正数包含小数点
function takeMoney(arg) {
const reg = /(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0)$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/
return reg.test(arg)
}
// 检验网址链接
function httpOrHttps(arg) {
const reg = /^(http|https)/
return reg.test(arg)
}
export default {
REG_Phone,
REG_Email,
REG_LoginName,
REG_NotNUll,
takeMoney,
httpOrHttps,
}