flx:新增头部返回指定路由

This commit is contained in:
Rain_ 2025-04-11 14:22:37 +08:00
parent 7cdec9c568
commit 11a9766ad6
5 changed files with 186 additions and 158 deletions

13
App.vue
View File

@ -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",

View File

@ -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>

View File

@ -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 = () => {
//.boxclassbox使id= 'box' 使'#box'
// uni.createSelectorQuery().in(this).select('.picker').boundingClientRect(data => {

View File

@ -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({

View File

@ -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);
}