123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469 |
- import log from '../config/js/log';
- import { getSendData, getAsyncDataFc } from '../config/js/picker';
- import interfaces from '../config/js/interfaces';
- import { inputCustomTapFc, inputCustomTapCatchFc, filterTypeObj, verifyTypeObj } from '../config/js/input';
- import { UpLoadFile, pics_splice } from '../config/js/pics';
- import sendSMS from '../config/js/sms';
- import { errObj } from './Msg.js';
- const Sys = uni.getSystemInfoSync();
- const getPickerAsyncData = async function(obj) { // picker-custom与picker-custom2的逐级获取数据函数
- let _this = this;
- _this.waiting = true; // 在获取数据时不许用户点确定
- obj.linkageNum = Number(obj.linkageNum);
- const {
- value, // picker的value值
- index, // picker改变的列的下标
- launch, // 是否是初始化
- datas, // 所有picker数据
- oldValue, // 旧的picker的value值
- customId, // 自定义标识
- linkageNum // 联动级数
- } = obj; // picker的value值, 需改变数据的变量名, 是否初始化时使用该函数,页面当前数据: {data_0: 第一列数据, data_1: 第二列数据, data_2: 第三列数据}, 旧的picker的value值, 逐级获取数据时决定携带数据的变量名
- const {
- data_0, // 第一列数据
- data_1 // 第二列数据
- } = datas; // 页面当前数据: {data_0: 第一列数据, data_1: 第二列数据, data_2: 第三列数据}
- // 使用sendData访问接口获取数据, 最终需要给async_1、async_2赋值
- let sendData = {};
- try {
- switch (linkageNum) {
- case 2: // 二级联动
- if (!!_this.memoryData_1[value[0]]) { // 查询记忆数据
- _this.async_1 = [..._this.memoryData_1[value[0]]]; // 直接赋值记忆数据
- } else {
- sendData = getSendData(obj); // 访问接口携带参数
- const newData_1 = await getAsyncDataFc(sendData); // 从接口获取第二列的数据
- _this.async_1 = [...newData_1]; // 赋值
- _this.memoryData_1[value[0]] = [...newData_1]; // 记忆数据
- }
- if (launch) { // 首次初始化 value为传进来的defaultValue
- _this.value[1] = value[1]; // 初始化可以赋值初始化的值
- } else {
- _this.value[1] = 0; // 第二列value重置为0
- }
- break;
- case 3: // 三级联动
- if (launch) { // 首次初始化 value为传进来的defaultValue
- // 获取第二列数据
- sendData = getSendData({ ...obj,
- column: 0
- }); // 访问接口携带参数
- const newData_1 = await getAsyncDataFc(sendData); // 从接口获取第二列的数据
- _this.async_1 = [...newData_1]; // 给第二列赋值
- _this.memoryData_1[value[0]] = [...newData_1]; // 记忆数据
- _this.value[1] = value[1]; // 初始化可以赋值初始化的值
- // 获取第三列数据
- sendData = getSendData({ ...obj,
- datas: { ...datas,
- data_1: [...newData_1]
- },
- column: 1
- }); // 访问接口携带参数
- const newData_2 = await getAsyncDataFc(sendData);
- _this.async_2 = [...newData_2]; // 给第三列赋值
- if (!_this.memoryData_2[value[0]])
- _this.memoryData_2[value[0]] = [];
- _this.memoryData_2[value[0]][value[1]] = [...newData_2]; // 记忆数据
- _this.value[2] = value[2]; // 初始化可以赋值初始化的值
- } else { // picker滑动
- let newData_1;
- let newData_2;
- switch (index) {
- case 0: // 第一列更改
- // 获取第二列数据
- if (!!_this.memoryData_1[value[0]]) { // 查询记忆数据
- newData_1 = [..._this.memoryData_1[value[0]]]; // 直接赋值记忆数据
- } else {
- sendData = getSendData({ ...obj,
- column: 0
- }); // 访问接口携带参数
- newData_1 = await getAsyncDataFc(sendData);
- _this.memoryData_1[value[0]] = [...newData_1]; // 记忆数据
- }
- _this.async_1 = [...newData_1]; // 给第二列赋值
- _this.value[1] = 0; // 初始化可以赋值初始化的值
- // 获取第三列数据
- if (!_this.memoryData_2[value[0]])
- _this.memoryData_2[value[0]] = [];
- if (!!_this.memoryData_2[value[0]][value[1]]) { // 查询记忆数据
- newData_2 = [..._this.memoryData_2[value[0]][value[1]]]; // 直接赋值记忆数据
- } else {
- sendData = getSendData({ ...obj,
- datas: { ...datas,
- data_1: [...newData_1]
- },
- column: 1
- }); // 访问接口携带参数
- newData_2 = await getAsyncDataFc(sendData);
- _this.memoryData_2[value[0]][value[1]] = [...newData_2]; // 记忆数据
- }
- _this.async_2 = [...newData_2] // 给第三列赋值
- _this.value[2] = 0; // 初始化可以赋值初始化的值
- break;
- case 1: // 第二列更改
- log('第二列更改')
- if (!_this.memoryData_2[value[0]])
- _this.memoryData_2[value[0]] = [];
- if (!!_this.memoryData_2[value[0]][value[1]]) { // 查询记忆数据
- log('有记忆数据');
- newData_2 = [..._this.memoryData_2[value[0]][value[1]]]; // 直接赋值记忆数据
- } else {
- log('没有记忆数据');
- sendData = getSendData(obj); // 访问接口携带参数
- newData_2 = await getAsyncDataFc(sendData);
- _this.memoryData_2[value[0]][value[1]] = [...newData_2]; // 记忆数据
- }
- _this.async_2 = [...newData_2]; // 给第三列赋值
- _this.value[2] = 0; // 初始化可以赋值初始化的值
- break;
- default:
- break;
- }
- }
- break;
- }
- _this.oldValue = [...this.value];
- _this.waiting = false;
- } catch (e) {
- //TODO handle the exception
- log(`picker async 异常: ${JSON.stringify(e)}`);
- _this.oldValue = [...this.value];
- _this.waiting = false;
- }
- }
- const isArray = function (data) {
- return data instanceof Array;
- }
- const isArrayAndHasLength = function (data) {
- return data instanceof Array && data.length > 0;
- }
- const typeObj = {
- input: 'input',
- radio: 'radio',
- checkbox: 'checkbox',
- textarea: 'textarea',
- picker_date: 'picker_date',
- picker_city: 'picker_city',
- picker_custom: 'picker_custom',
- picker_custom2: 'picker_custom2',
- pics: 'pics',
- infinitePics: 'infinitePics',
- ['switch']: 'switch'
- }
- import QSFormObj from './QSForm.js'; // 勿动
- const _app = {
- log, //打印管理
- typeObj,
- UpLoadFile,
- pics_splice,
- sendSMS,
- verifyTypeObj, // 内置正则验证
- filterTypeObj, // 内置过滤函数
- inputCustomTapFc,
- inputCustomTapCatchFc,
- Sys,
- getPickerAsyncData, // picker-custom与picker-custom2的逐级获取数据函数
- isArray,
- isArrayAndHasLength,
- showToast(msg, type) {
- uni.showToast({
- title: msg,
- icon: type || 'none'
- })
- },
- regTest(name, val) {
- return verifyTypeObj[name].reg.test(val);
- },
- isNumber(param) {
- return typeof(param) === 'number';
- },
- countDays(Y, M, val, mode) {
- let days = [];
- if (mode >= 6) {
- days = new Date(Y, M + 1, 0).getDate();
- if (val) {
- val[2] = val[2] < days - 1 ? val[2] : days - 1;
- }
- }
- return {
- days,
- val
- };
- },
- countYears(sy, ey) {
- let _this = this;
- let y = [];
- let c = ey - sy;
- for (let i = 0; i <= c; i++) {
- y.push(sy + i);
- }
- return y;
- },
- hideLoading() {
- uni.hideLoading();
- },
- showLoading(msg, ifmask) {
- uni.showLoading({
- title: msg,
- mask: ifmask || false
- })
- },
- previewImage(imgPath, currentIndex) {
- if (!(imgPath instanceof Array))
- imgPath = [imgPath];
- uni.previewImage({
- urls: imgPath,
- current: currentIndex || 0
- })
- },
- filterParams(params, type, checkOneVariableName) {
- if (params.length === 0)
- return {};
- const arr = getParamsArray(type);
- if (params.length > 1) {
- const o = {};
- Object.keys(params).forEach((item, index) => {
- o[arr[index]] = params[index];
- })
- return o;
- } else {
- if(params[0] instanceof Object){
-
- if(checkOneVariableName) {
- const ps = Object.keys(params[0]);
- for(let i = 0; i < ps.length; i++) {
- if(arr.includes(ps[i])) {
- return params[0];
- }
- }
- return { [arr[0]]: params[0] };
- }else{
- return params[0];
- }
- }else{
- return { [arr[0]]: params[0] };
- }
- }
- },
- formatNum(num) {
- return num<10?('0' + num):num;
- },
- getUpLoadPromiseArray({itemArray, customId, upLoadData, required}) {
- if(itemArray.length === 0 && required) {
- return Promise.reject({...errObj['102'], errMsg: '上传图片长度为零'});
- }else{
- const promiseArr = [];
- for(let i = 0; i < itemArray.length; i++) {
- const item = itemArray[i];
- if(item.path) {
- promiseArr.push(UpLoadFile(customId, item.path, upLoadData));
- }else{
- if(item.required) {
- const errMsg = `${item.title||`第${i}张图片`}不能为空`;
- uni.showToast({title: errMsg, icon: 'none'});
- return Promise.reject({...errObj['102'], errMsg});
- }else{
- promiseArr.push(Promise.resolve(''));
- }
- }
- }
- return new Promise((resolve, reject)=>{
- const newArr = [...itemArray];
- uni.showLoading({
- title: '上传文件中'
- })
- Promise.all(promiseArr).then(res=>{
- uni.hideLoading();
- for(let i = 0; i < newArr.length; i++) {
- newArr[i].upLoadResult = res[i];
- }
- resolve(newArr);
- }).catch(err=>{
- uni.hideLoading();
- reject(err);
- })
- });
- }
- },
- delForm(obj) {
- QSFormObj.del(obj);
- },
- setForm(obj) {
- QSFormObj.set(obj);
- },
- getForm(name) {
- const {
- status,
- result
- } = QSFormObj.get({
- name
- });
- if (status === 'success') {
- // log('getForm数据成功:' + JSON.stringify(res));
- return new Promise(async (resolve, reject) => {
- try{
- const {
- data
- } = result;
- const returnObj ={
- name,
- ...(await getValue(data))
- };
- resolve(returnObj);
- }catch(e){
- //TODO handle the exception
- reject(e);
- }
- });
- } else {
- console.log(3)
- // log('getForm数据失败:' + JSON.stringify(res));
- return Promise.reject(result);
- }
- }
- }
- export default _app;
- function renderUrlData(u, d) {
- let c = '';
- let n = 0;
- if (d) {
- for (let i in d) {
- let itemd = d[i];
- if(itemd instanceof Object || itemd instanceof Array) {
- itemd = JSON.stringify(itemd);
- }
- if (n > 0)
- c += '&' + i + '=' + itemd;
- else
- c += '?' + i + '=' + itemd;
- ++n;
- }
- }
- return u + c;
- }
- const errTypeObj = {
- required: 'required',
- verifyFc: 'verifyFc',
- verifyType: 'verifyType'
- }
- function getValue(obj) {
- const returnObj = {
- data: {},
- verifyErr: []
- };
- return new Promise(async (resolve, reject) => {
- try{
- for (const o in obj) {
- const {
- title,
- name,
- variableName,
- value,
- type,
- required,
- verifyFc,
- verifyType,
- customId,
- upLoadData
- } = obj[o];
- const verifyItem = {result: true, checkErrType: [], title, name, variableName, type, errItemArray:[] };
- returnObj.data[o] = value;
- switch (type){
- case typeObj.input: //input
- if(required && isEmpty(value)) {
- verifyItem.result = false;
- verifyItem.checkErrType.push(errTypeObj.required);
- }
-
- if(verifyFc&&!verifyFc(value)) {
- if(verifyItem.result) verifyItem.result = false;
- verifyItem.checkErrType.push(errTypeObj.verifyFc);
- }
-
- if(verifyType&&verifyTypeObj[verifyType]!==undefined&&verifyTypeObj[verifyType].reg&&!verifyTypeObj[verifyType].reg.test(value)) {
- if(verifyItem.result) verifyItem.result = false;
- verifyItem.checkErrType.push(errTypeObj.verifyType);
- }
- break;
- case typeObj.textarea: //textarea
- if(required && isEmpty(value)) {
- verifyItem.result = false;
- verifyItem.checkErrType.push(errTypeObj.required);
- }
-
- if(verifyFc&&!verifyFc(value)) {
- if(verifyItem.result) verifyItem.result = false;
- verifyItem.checkErrType.push(errTypeObj.verifyFc);
- }
-
- if(verifyType&&verifyTypeObj[verifyType]!==undefined&&verifyTypeObj[verifyType].reg&&!verifyTypeObj[verifyType].reg.test(value)) {
- if(verifyItem.result) verifyItem.result = false;
- verifyItem.checkErrType.push(errTypeObj.verifyType);
- }
- break;
- case typeObj.pics: //pics
- if(isArrayAndHasLength(value)) {
- const notPathArr = value.filter(item=>!item.path && item.required);
- if(notPathArr.length > 0) {
- if(verifyItem.result) verifyItem.result = false;
- verifyItem.checkErrType.push(errTypeObj.required);
- verifyItem.errItemArray = notPathArr;
- }else{
- returnObj.data[o] = await (await _app.getUpLoadPromiseArray({itemArray: value, customId, upLoadData}));
- }
- }else{
- returnObj.data[o] = [];
- }
- break;
- case typeObj.infinitePics: //infinitePics
- if(isArrayAndHasLength(value)) {
- returnObj.data[o] = await (await _app.getUpLoadPromiseArray({itemArray: value, customId, upLoadData}));
- }else{
- if(required) {
- if(verifyItem.result) verifyItem.result = false;
- }else{
- returnObj.data[o] = [];
- }
- }
- break;
- default: //default
- if(required && isEmpty(value)) {
- verifyItem.result = false;
- verifyItem.checkErrType.push(errTypeObj.required);
- }
- break;
- }
- if(!verifyItem.result) returnObj.verifyErr.push(verifyItem);
- }
- resolve(returnObj);
- }catch(e){
- //TODO handle the exception
- reject(e);
- }
- })
- }
- function isEmpty(val) {
- let bl;
- switch (typeof val){
- case 'object':
- if(val instanceof Array) {
- bl = val.length === 0;
- }
- break;
- default:
- bl = val === '';
- break;
- }
-
- return val === undefined || val === null || bl;
- }
|