flx:新增头部返回指定路由
This commit is contained in:
parent
7cdec9c568
commit
11a9766ad6
13
App.vue
13
App.vue
@ -20,9 +20,16 @@ export default {
|
||||
|
||||
// console.log(JSON.stringify(arg), "登录用户");
|
||||
if (arg.data.page) {
|
||||
uni.reLaunch({
|
||||
url: arg.data.page + "?current=" + arg.data.current,
|
||||
});
|
||||
if(arg.data.current) {
|
||||
uni.reLaunch({
|
||||
url: arg.data.page + "?current=" + arg.data.current,
|
||||
});
|
||||
} else {
|
||||
uni.reLaunch({
|
||||
url: arg.data.page,
|
||||
});
|
||||
}
|
||||
|
||||
} else {
|
||||
uni.reLaunch({
|
||||
url: "/pages/submit/submit",
|
||||
|
||||
@ -5,7 +5,10 @@
|
||||
<text class="w-click-input-value">{{_value}}</text>
|
||||
</slot>
|
||||
<text v-else style="color: #999;" class="w-click-input-value">{{props.placeholder}}</text>
|
||||
<uni-icons v-show="!disabled" v-if="!props.readonly" type="right" :size="20" color="#999"></uni-icons>
|
||||
<label v-if="isColse && !props.readonly" @click.stop="onClose">
|
||||
<uni-icons v-show="!disabled" type="close" :size="20" color="#999"></uni-icons>
|
||||
</label>
|
||||
<uni-icons v-show="!disabled" v-if="!props.readonly && !isColse" type="right" :size="20" color="#999"></uni-icons>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@ -29,7 +32,11 @@
|
||||
//自定义取名函数
|
||||
valueFunc: Function,
|
||||
placeholder: String,
|
||||
disabled: Boolean
|
||||
disabled: Boolean,
|
||||
isColse: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
})
|
||||
|
||||
const showVal = computed(() => {
|
||||
@ -54,7 +61,9 @@
|
||||
})
|
||||
|
||||
const emits = defineEmits(['update:modelValue'])
|
||||
|
||||
const onClose = () => {
|
||||
emits('customEvent')
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
<uni-search-bar v-if="isSearch" bgColor="#fff" v-model="searchValue" class="search" radius="5"
|
||||
placeholder="请输入" clearButton="auto" cancelButton="none" @input="searchChange" />
|
||||
|
||||
<click-input @click="isSearchFn()" :value="(modelValue || []).length > 0 ? dataOptions[index]:null"
|
||||
<click-input :isColse="true" @click="isSearchFn()" @customEvent="customEventClear" :value="(modelValue || []).length > 0 ? dataOptions[index]:null"
|
||||
index="name" :placeholder="formProps.placeholder || '请选择'" />
|
||||
<!-- <van-pagination v-model="pageInfo.pageNo" :total-items="Number(pageInfo.total)" :items-per-page="pageInfo.pageSize" @change="pagechange" /> -->
|
||||
</picker>
|
||||
@ -191,6 +191,11 @@
|
||||
const onCancel = () => {
|
||||
isSearch.value = false;
|
||||
}
|
||||
const customEventClear = (e) => {
|
||||
console.log('关闭',e)
|
||||
index.value = "";
|
||||
__value.value = "";
|
||||
}
|
||||
const isSearchFn = () => {
|
||||
//.box获取class为box的元素,如果使用的id= 'box' 则使用'#box'
|
||||
// uni.createSelectorQuery().in(this).select('.picker').boundingClientRect(data => {
|
||||
|
||||
@ -86,28 +86,35 @@
|
||||
const arrListCode = [{
|
||||
code: 'wf66f6451c48b718d0aaf27522',
|
||||
name: '安全检查',
|
||||
path: '/pages/projectEnd/safeSame/index'
|
||||
path: '/pages/projectEnd/safeSame/index',
|
||||
routePath: '/pages/projectEnd/safeSame/list'
|
||||
}, {
|
||||
code: "wf67072b923afc947a1a819313",
|
||||
name: '质量检查',
|
||||
path: '/pages/projectEnd/qualityManage/index'
|
||||
path: '/pages/projectEnd/qualityManage/index',
|
||||
routePath: '/pages/projectEnd/qualityManage/list'
|
||||
},{
|
||||
code: "wf670a4a6c2384bf3e58f62681",
|
||||
name: '质量监督',
|
||||
path: '/pages/projectEnd/qualitySurveillance/index'
|
||||
path: '/pages/projectEnd/qualitySurveillance/index',
|
||||
routePath: '/pages/projectEnd/qualitySurveillance/list'
|
||||
},{
|
||||
code: "wf670735f73afc947a1a819314",
|
||||
name: '文明施工',
|
||||
path: '/pages/projectEnd/civilConstruction/constructionProblemRecord/index'
|
||||
path: '/pages/projectEnd/civilConstruction/constructionProblemRecord/index',
|
||||
routePath: '/pages/projectEnd/civilConstruction/constructionProblemRecord/list'
|
||||
}]
|
||||
let pathUrl = "/pages/projectEnd/projectIndex/projectIndex";
|
||||
console.log('pages', pages)
|
||||
|
||||
const find = arrListCode.find(item => pages[0].options.code && pages[0].options.code.includes(item.code));
|
||||
// console.log('prevPage',pages, pages[0].options.code)
|
||||
console.log('prevPage',pages, pages[0].options.code)
|
||||
// routeName
|
||||
|
||||
const find = arrListCode.find(item => pages[0].options.code && pages[0].options.code.includes(item.code) || pages[0].options.routeName && pages[0].options.routeName.includes(item.name));
|
||||
if(find) {
|
||||
pathUrl = find.path;
|
||||
pathUrl = pages[0].options.code ? find.path : find.routePath;
|
||||
}
|
||||
|
||||
console.log('pathUrl', pathUrl)
|
||||
if(window.plus) {
|
||||
webUni.webView.postMessage({
|
||||
|
||||
288
utils/tool.js
288
utils/tool.js
@ -1,15 +1,15 @@
|
||||
import {
|
||||
BASE_URL
|
||||
BASE_URL
|
||||
} from '@/api/request.js'
|
||||
|
||||
//获取文件访问路径
|
||||
export function getRes(url) {
|
||||
if (url) {
|
||||
const reg = /^(http:|https:).*/gi
|
||||
return reg.test(url) ? url : BASE_URL + '/image/' + url
|
||||
} else {
|
||||
return url
|
||||
}
|
||||
if (url) {
|
||||
const reg = /^(http:|https:).*/gi
|
||||
return reg.test(url) ? url : BASE_URL + '/image/' + url
|
||||
} else {
|
||||
return url
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -19,194 +19,194 @@ export function getRes(url) {
|
||||
* @returns {(function(): void)|*}
|
||||
*/
|
||||
export function debounce(call, cycle = 800) {
|
||||
var timer = null; // 创建一个用来存放定时器的变量
|
||||
let func = call
|
||||
return function(...args) {
|
||||
clearTimeout(timer); //只要触发就清除
|
||||
timer = setTimeout(() => {
|
||||
func.apply(this, args);
|
||||
}, cycle);
|
||||
};
|
||||
var timer = null; // 创建一个用来存放定时器的变量
|
||||
let func = call
|
||||
return function(...args) {
|
||||
clearTimeout(timer); //只要触发就清除
|
||||
timer = setTimeout(() => {
|
||||
func.apply(this, args);
|
||||
}, cycle);
|
||||
};
|
||||
}
|
||||
|
||||
export function getFileSize(size) {
|
||||
if (size > 1048576) {
|
||||
return (size / 1048576).toFixed(1) + 'MB'
|
||||
} else if (size > 1024) {
|
||||
return (size / 1024).toFixed(1) + 'KB'
|
||||
} else {
|
||||
return size + 'B'
|
||||
}
|
||||
if (size > 1048576) {
|
||||
return (size / 1048576).toFixed(1) + 'MB'
|
||||
} else if (size > 1024) {
|
||||
return (size / 1024).toFixed(1) + 'KB'
|
||||
} else {
|
||||
return size + 'B'
|
||||
}
|
||||
}
|
||||
|
||||
export function $deepCopy(obj) {
|
||||
return JSON.parse(JSON.stringify(obj))
|
||||
return JSON.parse(JSON.stringify(obj))
|
||||
}
|
||||
|
||||
export function $nEmpty(obj) {
|
||||
return obj && (obj || '') !== ''
|
||||
return obj && (obj || '') !== ''
|
||||
}
|
||||
|
||||
export function parseNumber(val, precision) {
|
||||
if (typeof(val) === 'string') {
|
||||
return precision > 0 ? parseFloat(parseFloat(val).toFixed(precision)) : parseInt(val)
|
||||
}
|
||||
return val
|
||||
if (typeof(val) === 'string') {
|
||||
return precision > 0 ? parseFloat(parseFloat(val).toFixed(precision)) : parseInt(val)
|
||||
}
|
||||
return val
|
||||
}
|
||||
|
||||
//常用文件格式
|
||||
const fileTypes = {
|
||||
pdf: ['pdf'],
|
||||
img: ['bmp', 'jpg', 'png', 'tif', 'gif', 'svg', 'psd', 'webp', 'apng'],
|
||||
video: ['mp4', 'avi', 'mpeg', 'mkv', 'mov', 'rmvb', 'flv', '3gp', 'wav'],
|
||||
word: ['doc', 'docx'],
|
||||
excel: ['xls', 'xlsx'],
|
||||
ppt: ['ppt', 'pptx'],
|
||||
txt: ['txt'],
|
||||
zip: ['zip', 'rar', '7z', 'iso'],
|
||||
pdf: ['pdf'],
|
||||
img: ['bmp', 'jpg', 'png', 'tif', 'gif', 'svg', 'psd', 'webp', 'apng'],
|
||||
video: ['mp4', 'avi', 'mpeg', 'mkv', 'mov', 'rmvb', 'flv', '3gp', 'wav'],
|
||||
word: ['doc', 'docx'],
|
||||
excel: ['xls', 'xlsx'],
|
||||
ppt: ['ppt', 'pptx'],
|
||||
txt: ['txt'],
|
||||
zip: ['zip', 'rar', '7z', 'iso'],
|
||||
}
|
||||
const fileTypeMap = new Map()
|
||||
for (const key of Object.keys(fileTypes)) {
|
||||
fileTypes[key].forEach(v => fileTypeMap.set(v, key))
|
||||
fileTypes[key].forEach(v => fileTypeMap.set(v, key))
|
||||
}
|
||||
/**
|
||||
* 从文件名获取文件对应图标
|
||||
* @param {Object} fileName 文件名
|
||||
*/
|
||||
export function getFileImgByType(fileName) {
|
||||
const type = fileTypeMap.get(fileName.split('.').pop())
|
||||
return `/static/image/filetype/${(type || '') === '' ? 'file': type}.png`
|
||||
const type = fileTypeMap.get(fileName.split('.').pop())
|
||||
return `/static/image/filetype/${(type || '') === '' ? 'file': type}.png`
|
||||
}
|
||||
|
||||
//记录下本地文件,方便打开的时候直接取本地
|
||||
export function saveFileTemp(file) {
|
||||
// #ifndef H5
|
||||
let fileObj = uni.getStorageSync('localFile')
|
||||
if (!fileObj) {
|
||||
fileObj = {}
|
||||
}
|
||||
fileObj[file.name] = file
|
||||
uni.setStorageSync('localFile', fileObj)
|
||||
// #endif
|
||||
// #ifndef H5
|
||||
let fileObj = uni.getStorageSync('localFile')
|
||||
if (!fileObj) {
|
||||
fileObj = {}
|
||||
}
|
||||
fileObj[file.name] = file
|
||||
uni.setStorageSync('localFile', fileObj)
|
||||
// #endif
|
||||
}
|
||||
|
||||
//记录下本地文件,方便打开的时候直接取本地
|
||||
export function removeFileTemp(name) {
|
||||
// #ifndef H5
|
||||
let fileObj = uni.getStorageSync('localFile')
|
||||
delete fileObj[name]
|
||||
uni.setStorageSync('localFile', fileObj)
|
||||
// #endif
|
||||
// #ifndef H5
|
||||
let fileObj = uni.getStorageSync('localFile')
|
||||
delete fileObj[name]
|
||||
uni.setStorageSync('localFile', fileObj)
|
||||
// #endif
|
||||
}
|
||||
//下载并打开文件
|
||||
export function openLocalFile(name, path) {
|
||||
//除h5外其他端先看本地有没有,没有就下载到本地再打开,有就直接打开
|
||||
// #ifdef H5
|
||||
window.open(path)
|
||||
// #endif
|
||||
// #ifndef H5
|
||||
let fileObj = uni.getStorageSync('localFile')
|
||||
if (fileObj && fileObj[name]) {
|
||||
uni.openDocument({
|
||||
filePath: fileObj.path,
|
||||
showMenu: true,
|
||||
fileType: getFileImgByType(name),
|
||||
success: function(res) {
|
||||
console.log('打开文档成功');
|
||||
}
|
||||
});
|
||||
return
|
||||
}
|
||||
uni.downloadFile({
|
||||
url: path,
|
||||
header: {
|
||||
//大家在这里传自定义的token,这里默认wflow的
|
||||
Authorization: "Bearer " + uni.getStorageSync('wflow-token'),
|
||||
TenantId: JSON.parse(uni.getStorageSync("loginUser")).sn
|
||||
},
|
||||
success: function(res) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '文件下载成功'
|
||||
});
|
||||
//ios中文文件名会报错,需要编码下
|
||||
let filePath = uni.getSystemInfoSync().platform === 'ios' ? res.tempFilePath : escape(res
|
||||
.tempFilePath)
|
||||
uni.saveFile({
|
||||
tempFilePath: filePath, //临时路径
|
||||
success: function(res) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
mask: true,
|
||||
title: '保存在:' + res.savedFilePath, //保存路径
|
||||
duration: 2000,
|
||||
});
|
||||
// 保存好再打开文件
|
||||
setTimeout(() => {
|
||||
uni.openDocument({
|
||||
filePath: res.savedFilePath,
|
||||
showMenu: true,
|
||||
fileType: getFileImgByType(name),
|
||||
success: function(res) {
|
||||
console.log('打开文档成功');
|
||||
}
|
||||
});
|
||||
}, 1000)
|
||||
}
|
||||
})
|
||||
uni.openDocument({
|
||||
filePath: filePath,
|
||||
showMenu: true,
|
||||
fileType: getFileImgByType(name),
|
||||
success: function(res) {
|
||||
console.log('打开文档成功');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
//除h5外其他端先看本地有没有,没有就下载到本地再打开,有就直接打开
|
||||
// #ifdef H5
|
||||
window.open(path)
|
||||
// #endif
|
||||
// #ifndef H5
|
||||
let fileObj = uni.getStorageSync('localFile')
|
||||
if (fileObj && fileObj[name]) {
|
||||
uni.openDocument({
|
||||
filePath: fileObj.path,
|
||||
showMenu: true,
|
||||
fileType: getFileImgByType(name),
|
||||
success: function(res) {
|
||||
console.log('打开文档成功');
|
||||
}
|
||||
});
|
||||
return
|
||||
}
|
||||
uni.downloadFile({
|
||||
url: path,
|
||||
header: {
|
||||
//大家在这里传自定义的token,这里默认wflow的
|
||||
Authorization: "Bearer " + uni.getStorageSync('wflow-token'),
|
||||
TenantId: JSON.parse(uni.getStorageSync("loginUser")).sn
|
||||
},
|
||||
success: function(res) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '文件下载成功'
|
||||
});
|
||||
//ios中文文件名会报错,需要编码下
|
||||
let filePath = uni.getSystemInfoSync().platform === 'ios' ? res.tempFilePath : escape(res
|
||||
.tempFilePath)
|
||||
uni.saveFile({
|
||||
tempFilePath: filePath, //临时路径
|
||||
success: function(res) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
mask: true,
|
||||
title: '保存在:' + res.savedFilePath, //保存路径
|
||||
duration: 2000,
|
||||
});
|
||||
// 保存好再打开文件
|
||||
setTimeout(() => {
|
||||
uni.openDocument({
|
||||
filePath: res.savedFilePath,
|
||||
showMenu: true,
|
||||
fileType: getFileImgByType(name),
|
||||
success: function(res) {
|
||||
console.log('打开文档成功');
|
||||
}
|
||||
});
|
||||
}, 1000)
|
||||
}
|
||||
})
|
||||
uni.openDocument({
|
||||
filePath: filePath,
|
||||
showMenu: true,
|
||||
fileType: getFileImgByType(name),
|
||||
success: function(res) {
|
||||
console.log('打开文档成功');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// #endif
|
||||
// #endif
|
||||
}
|
||||
|
||||
//获取表单组件文本值
|
||||
export function getFormValText(obj) {
|
||||
switch (obj.type) {
|
||||
case 'DeptPicker':
|
||||
case 'GroupPicker':
|
||||
case 'UserPicker':
|
||||
case 'FileUpload':
|
||||
case 'ImageUpload':
|
||||
return (obj.value || []).map(v => v.name).join('、');
|
||||
case 'TimeRangePicker':
|
||||
case 'DateTimeRange':
|
||||
case 'SelectPlus':
|
||||
case 'MultipleSelect':
|
||||
return (obj.value || []).join('、');
|
||||
case 'ProcessIndex':
|
||||
return (obj.value || []).map(v => v.startUser.name + '-' + v.name).join('、');
|
||||
default:
|
||||
return obj.value;
|
||||
}
|
||||
switch (obj.type) {
|
||||
case 'DeptPicker':
|
||||
case 'GroupPicker':
|
||||
case 'UserPicker':
|
||||
case 'FileUpload':
|
||||
case 'ImageUpload':
|
||||
return (obj.value || []).map(v => v.name).join('、');
|
||||
case 'TimeRangePicker':
|
||||
case 'DateTimeRange':
|
||||
case 'SelectPlus':
|
||||
case 'MultipleSelect':
|
||||
return (obj.value || []).join('、');
|
||||
case 'ProcessIndex':
|
||||
return (obj.value || []).map(v => v.startUser.name + '-' + v.name).join('、');
|
||||
default:
|
||||
return obj.value;
|
||||
}
|
||||
}
|
||||
|
||||
export function showItem(item, val) {
|
||||
return !(item.perm === 'R' && isEm(val)) || item.perm === 'H'
|
||||
return !(item.perm === 'R' && isEm(val)) && item.perm !== 'H'
|
||||
}
|
||||
|
||||
function isEm(val) {
|
||||
return !$nEmpty(val) ||
|
||||
((val instanceof String) && val.trim() === '') ||
|
||||
(Array.isArray(val) && val.length === 0)
|
||||
return !$nEmpty(val) ||
|
||||
((val instanceof String) && val.trim() === '') ||
|
||||
(Array.isArray(val) && val.length === 0)
|
||||
}
|
||||
|
||||
export function isVideoLink(url) {
|
||||
const videoExtensions = ['mp4', 'webm', 'ogg', 'mov', 'avi', 'flv', 'wmv'];
|
||||
const extension = url.split('.').pop().toLowerCase();
|
||||
return videoExtensions.includes(extension);
|
||||
const videoExtensions = ['mp4', 'webm', 'ogg', 'mov', 'avi', 'flv', 'wmv'];
|
||||
const extension = url.split('.').pop().toLowerCase();
|
||||
return videoExtensions.includes(extension);
|
||||
}
|
||||
|
||||
export function isImageLink(url) {
|
||||
// 正则表达式匹配常见的图片文件扩展名
|
||||
const imageExtensionsRegex = /\.(jpg|jpeg|png|gif|webp)$/i;
|
||||
return imageExtensionsRegex.test(url);
|
||||
// 正则表达式匹配常见的图片文件扩展名
|
||||
const imageExtensionsRegex = /\.(jpg|jpeg|png|gif|webp)$/i;
|
||||
return imageExtensionsRegex.test(url);
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user