Merge branch 'minJeecg' into 'master'
1.新增非常规模块 See merge request cxcxt/jeecguniapp!13
This commit is contained in:
commit
fc18a672b0
2
env/.env.development
vendored
2
env/.env.development
vendored
@ -4,6 +4,6 @@ NODE_ENV = 'development'
|
|||||||
VITE_DELETE_CONSOLE = false
|
VITE_DELETE_CONSOLE = false
|
||||||
# 是否开启sourcemap
|
# 是否开启sourcemap
|
||||||
VITE_SHOW_SOURCEMAP = true
|
VITE_SHOW_SOURCEMAP = true
|
||||||
VITE_SERVER_BASEURL = 'http://10.75.15.249:8080/jeecg-boot'
|
VITE_SERVER_BASEURL = 'http://10.75.15.247:8080/jeecg-boot'
|
||||||
#VITE_SERVER_BASEURL = 'https://36.112.48.190/jeecg-boot'
|
#VITE_SERVER_BASEURL = 'https://36.112.48.190/jeecg-boot'
|
||||||
#VITE_SERVER_BASEURL = 'https://szcx.zyyt.sinopec.com/jeecg-boot'
|
#VITE_SERVER_BASEURL = 'https://szcx.zyyt.sinopec.com/jeecg-boot'
|
@ -26,9 +26,20 @@ export default defineManifestConfig({
|
|||||||
usingComponents: true,
|
usingComponents: true,
|
||||||
nvueStyleCompiler: 'uni-app',
|
nvueStyleCompiler: 'uni-app',
|
||||||
compilerVersion: 3,
|
compilerVersion: 3,
|
||||||
|
android: {
|
||||||
|
webView: {
|
||||||
|
domStorageEnabled: true,
|
||||||
|
databaseEnabled: true,
|
||||||
|
allowFileAccess: true
|
||||||
|
}
|
||||||
|
},
|
||||||
compatible: {
|
compatible: {
|
||||||
ignoreVersion: true,
|
ignoreVersion: true,
|
||||||
},
|
},
|
||||||
|
webview: {
|
||||||
|
debug: true,
|
||||||
|
crossDomain: true // 允许跨域通信
|
||||||
|
},
|
||||||
splashscreen: {
|
splashscreen: {
|
||||||
alwaysShowBeforeRender: true,
|
alwaysShowBeforeRender: true,
|
||||||
waiting: true,
|
waiting: true,
|
||||||
|
26
src/api/bpm/sign.ts
Normal file
26
src/api/bpm/sign.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import { http } from '@/utils/http';
|
||||||
|
|
||||||
|
/*通过id查询数据*/
|
||||||
|
export function checkSign(ldhth : string) {
|
||||||
|
return http({
|
||||||
|
url: '/cxcesign/cxcEsign/getUserCo',
|
||||||
|
method: 'GET',
|
||||||
|
data: { ldhth }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getCompleteNum(procInsId : string) {
|
||||||
|
return http({
|
||||||
|
url: '/cxcesign/cxcEsign/getCompleteNum',
|
||||||
|
method: 'GET',
|
||||||
|
data: { procInsId }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function processHistoryList(processInstanceId : string) {
|
||||||
|
return http({
|
||||||
|
url: '/act/task/processHistoryList',
|
||||||
|
method: 'GET',
|
||||||
|
data: { processInstanceId }
|
||||||
|
})
|
||||||
|
}
|
10
src/api/integrated/unconventional.ts
Normal file
10
src/api/integrated/unconventional.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { http } from '@/utils/http';
|
||||||
|
|
||||||
|
// 健康数据提交API
|
||||||
|
export function queryUnData(data : Object) {
|
||||||
|
return http({
|
||||||
|
url: '/cxcfcggzsq/cxcFcggzsq/queryByIdDict',
|
||||||
|
method: 'get',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
78
src/components/Esign/SinopecEsignPage.vue
Normal file
78
src/components/Esign/SinopecEsignPage.vue
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
<!-- component标签可以变换组件 -->
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<view v-if="ifH5">
|
||||||
|
<SinopecEsignPageH5 :valiData="props.valiData" :procInsId="props.procInsId" :path="props.path" ref="signH5" :fileName="props.fileName" @stampSuccess="getStampSuccess"></SinopecEsignPageH5>
|
||||||
|
</view>
|
||||||
|
<view v-else>
|
||||||
|
<SinopecEsignPageAPP :valiData="props.valiData" :procInsId="props.procInsId" :path="props.path" ref="signAPP" :fileName="props.fileName" @stampSuccess="getStampSuccess"></SinopecEsignPageAPP>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import {
|
||||||
|
ref
|
||||||
|
} from 'vue'
|
||||||
|
import {
|
||||||
|
onLoad,
|
||||||
|
} from '@dcloudio/uni-app';
|
||||||
|
import SinopecEsignPageH5 from '@/components/Esign/SinopecEsignPageH5.vue'
|
||||||
|
import SinopecEsignPageAPP from '@/components/Esign/SinopecEsignPageAPP.vue'
|
||||||
|
const emit = defineEmits(['stampSuccess'])
|
||||||
|
const ifH5 = ref(null);
|
||||||
|
const signH5 = ref(null);
|
||||||
|
const signAPP = ref(null);
|
||||||
|
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
fileName: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
valiData: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
procInsId: { //签章验证
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
path: {//签章验证
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
//判断是否h5 by 闵
|
||||||
|
var ifH = false;
|
||||||
|
|
||||||
|
onLoad(() => {
|
||||||
|
//#ifdef H5 || MP-WEIXIN
|
||||||
|
ifH5.value = true;
|
||||||
|
//#endif
|
||||||
|
})
|
||||||
|
|
||||||
|
//获取印章成功事件,并将信号传给确认提交按钮。
|
||||||
|
const getStampSuccess=(val)=> {
|
||||||
|
emit('stampSuccess', val)
|
||||||
|
}
|
||||||
|
|
||||||
|
const signValidator = ()=>{
|
||||||
|
//这里进行电子签章验证
|
||||||
|
if(ifH5.value){
|
||||||
|
return signH5.value.signValidator();
|
||||||
|
}else{
|
||||||
|
console.log(3435)
|
||||||
|
return signAPP.value.signValidator()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({ //暴露方法
|
||||||
|
signValidator
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
250
src/components/Esign/SinopecEsignPageAPP.vue
Normal file
250
src/components/Esign/SinopecEsignPageAPP.vue
Normal file
@ -0,0 +1,250 @@
|
|||||||
|
<!-- component标签可以变换组件 -->
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<view v-if="errorMsg" style="color: red;padding-left: 13px;">{{errorMsg}}</view>
|
||||||
|
<iframe id="jingeIframe" style="width: 100%;height: 600px;border: none;" ref="iframe" title="金格云阅读"
|
||||||
|
src="./static/CloudSign/viewer.html" :transmissionData="transmissionData"
|
||||||
|
:change:transmissionData="renderjs.postMessageToIframe" @load="setConfig"></iframe>
|
||||||
|
<wd-toast></wd-toast>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
getCompleteNum
|
||||||
|
} from '@/api/bpm/sign'
|
||||||
|
import { ref, reactive, onMounted, computed, watch, nextTick } from 'vue';
|
||||||
|
import {
|
||||||
|
onLoad,
|
||||||
|
onShow,
|
||||||
|
onReachBottom,
|
||||||
|
onPullDownRefresh
|
||||||
|
} from '@dcloudio/uni-app';
|
||||||
|
import {
|
||||||
|
useUserStore
|
||||||
|
} from '@/store/user'
|
||||||
|
import { checkSign } from '@/api/bpm/sign'
|
||||||
|
import { useToast, useMessage } from 'wot-design-uni'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SinopecEsignPageAPP',
|
||||||
|
options: {
|
||||||
|
styleIsolation: 'shared',
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
fileName: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
valiData: {
|
||||||
|
type: Object
|
||||||
|
},
|
||||||
|
procInsId: { //签章验证
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
path: {//签章验证
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
emits: ['message'],
|
||||||
|
setup(props, { emit }) {
|
||||||
|
const toast = useToast()
|
||||||
|
const store = useUserStore();
|
||||||
|
const iframe = ref(null);
|
||||||
|
const compName = ref('');
|
||||||
|
const asyncComponent = ref(null);
|
||||||
|
const sealArrayTemp = ref([]);
|
||||||
|
const signNum = ref(0);
|
||||||
|
const sign = ref(false);
|
||||||
|
const ldhth = ref('');
|
||||||
|
const username = ref('');
|
||||||
|
const iframeWin = ref(null);
|
||||||
|
const baseUrl = import.meta.env.VITE_SERVER_BASEURL
|
||||||
|
const filterArrNum = ref(0);
|
||||||
|
const transmissionData = ref({});
|
||||||
|
const errorMsg = ref('');
|
||||||
|
|
||||||
|
const setConfig = () => {
|
||||||
|
transmissionData.value = {
|
||||||
|
filename: props.fileName,
|
||||||
|
apiUrl: baseUrl,
|
||||||
|
userid: username.value,
|
||||||
|
}
|
||||||
|
console.log(transmissionData.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
const signValidator = async () => { //签章验证 by 闵
|
||||||
|
errorMsg.value = '';
|
||||||
|
let flag = false;
|
||||||
|
if (props.path == 'unconventional/stamp') {
|
||||||
|
if (props.valiData.flag) { //先判断数量验证
|
||||||
|
if (props.valiData && props.valiData.flag) {//有flag需要正常验证
|
||||||
|
let nowTime = new Date(props.valiData.time).getTime();
|
||||||
|
let filterArr = []
|
||||||
|
filterArr = sealArrayTemp.value.filter(item => {
|
||||||
|
let sealTime = new Date(item.createTime).getTime();
|
||||||
|
if (sealTime >= nowTime && item.userName == props.valiData.name) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
filterArrNum.value = filterArr.length;
|
||||||
|
if (props.valiData.num <= filterArrNum.value) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
errorMsg.value = "您需要签章(签字或盖章)" + props.valiData.num + "次,目前只签章了" + filterArrNum.value + "次。";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//2024.3.22张祥瑞
|
||||||
|
//如果签章路径是非常规盖章则走这里,验证机制为跳过签章个数验证,只要没签章则不能提交流程
|
||||||
|
// let flag = false;
|
||||||
|
if (sign.value) {
|
||||||
|
return flag = true; //只要执行了签章成功操作就返回成功,否则加载个数验证
|
||||||
|
} else {
|
||||||
|
return flag = false;
|
||||||
|
}
|
||||||
|
} else if (props.path == 'modules/gwjdspd/modules/CxcGwjdSpdFromByProcess') { //判断公务接待模块
|
||||||
|
//2024.5.16张祥瑞
|
||||||
|
//如果签章路径是非常规盖章则走这里,验证机制为跳过签章个数验证,只要没签章则不能提交流程
|
||||||
|
// let flag = false;
|
||||||
|
if (sign.value) {
|
||||||
|
return flag = true; //只要执行了签章成功操作就返回成功,否则加载个数验证
|
||||||
|
} else {
|
||||||
|
return flag = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sign.value) {
|
||||||
|
return true; //只要执行了签章成功操作就返回成功,否则加载个数验证
|
||||||
|
} else {
|
||||||
|
// let flag = false;
|
||||||
|
await getCompleteNum(props.procInsId).then(res => {
|
||||||
|
console.log("res--------132------", res);
|
||||||
|
// console.log("flag--132------",flag);
|
||||||
|
if (res) {
|
||||||
|
if (signNum.value >= (Number(res.result.nrOfCompletedInstances) + 1)) {
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log("flag--142------", flag);
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
const stampingCompleted = (data) => {
|
||||||
|
console.log(JSON.stringify(data))
|
||||||
|
let sealArray = data.data.sealArray;
|
||||||
|
sealArrayTemp.value = sealArray;
|
||||||
|
console.log(sealArrayTemp.value);
|
||||||
|
|
||||||
|
let sealNumMap = {}
|
||||||
|
sealArray.forEach(item => {
|
||||||
|
if (sealNumMap[item.keySN]) {
|
||||||
|
sealNumMap[item.keySN] += 1;
|
||||||
|
if (sealNumMap[item.keySN] > 2) {
|
||||||
|
let remainder = Math.ceil(sealNumMap[item.keySN] / 2) - 1
|
||||||
|
sealNumMap[item.keySN + remainder] = sealNumMap[item.keySN] - remainder * 2;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sealNumMap[item.keySN] = 1;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
signNum.value = Object.keys(sealNumMap).length;
|
||||||
|
console.log(sealNumMap)
|
||||||
|
console.log("ev.data----", data)
|
||||||
|
if (data.type === 'successMessage') {
|
||||||
|
console.log("ev------------", ev)
|
||||||
|
sign.value = true;
|
||||||
|
console.log("改变状态后-------this.sign-----", sign.value)
|
||||||
|
let wjurl = ev.currentTarget[0].data.filename;
|
||||||
|
if (wjurl.split('/')[0].includes("非常规盖章")) {
|
||||||
|
let wjdata = ev.currentTarget[0].data;
|
||||||
|
emit('message', wjdata);
|
||||||
|
}
|
||||||
|
} else if (data.type === 'sealArray') {
|
||||||
|
sign.value = false;
|
||||||
|
console.log("删除盖章后的参数--this.sign--", sign.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onShow(() => {
|
||||||
|
setTimeout(()=>{
|
||||||
|
setConfig()
|
||||||
|
},500)
|
||||||
|
})
|
||||||
|
|
||||||
|
onLoad(() => {
|
||||||
|
let userInfo = store.userInfo;
|
||||||
|
ldhth.value = userInfo.workNo;
|
||||||
|
checkSign(ldhth.value).then((res) => {
|
||||||
|
if (res) {
|
||||||
|
username.value = res
|
||||||
|
} else {
|
||||||
|
toast.error("您没有申请电子签章服务!请移步到系统管理-电子签章管理中注册,并联系信息化支持中心进行otp绑定。联系电话:4874260")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// defineExpose({ //暴露方法
|
||||||
|
// signValidator
|
||||||
|
// })
|
||||||
|
|
||||||
|
return {
|
||||||
|
iframe,
|
||||||
|
compName,
|
||||||
|
asyncComponent,
|
||||||
|
sealArrayTemp,
|
||||||
|
signNum,
|
||||||
|
sign,
|
||||||
|
ldhth,
|
||||||
|
username,
|
||||||
|
iframeWin,
|
||||||
|
baseUrl,
|
||||||
|
filterArrNum,
|
||||||
|
transmissionData,
|
||||||
|
signValidator,
|
||||||
|
stampingCompleted,
|
||||||
|
errorMsg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script module="renderjs" lang="renderjs">
|
||||||
|
export default {
|
||||||
|
mounted() {
|
||||||
|
this.setupMessageListener()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
postMessageToIframe(data) {
|
||||||
|
console.log(data)
|
||||||
|
const iframe = document.getElementById('jingeIframe')
|
||||||
|
if (iframe && iframe.contentWindow) {
|
||||||
|
iframe.contentWindow.postMessage(data, '*')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
setupMessageListener() {
|
||||||
|
let that = this;
|
||||||
|
window.addEventListener('message', (ev,ev2) => {
|
||||||
|
console.log(ev.data)
|
||||||
|
if (ev) {
|
||||||
|
try {
|
||||||
|
that.$ownerInstance.callMethod('stampingCompleted', ev.data)
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Call method error:', error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
230
src/components/Esign/SinopecEsignPageH5.vue
Normal file
230
src/components/Esign/SinopecEsignPageH5.vue
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
<!-- component标签可以变换组件 -->
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<view v-if="errorMsg" style="color: red;padding-left: 13px;">{{errorMsg}}</view>
|
||||||
|
<iframe id="jingeIframe" class="App-iframe" width="100%" ref="iframe" title="金格云阅读"
|
||||||
|
src="./static/CloudSign/viewer.html" @load="setConfig"></iframe>
|
||||||
|
<wd-toast></wd-toast>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import {
|
||||||
|
getCompleteNum
|
||||||
|
} from '@/api/bpm/sign'
|
||||||
|
import { ref, reactive, onMounted, computed, watch, nextTick } from 'vue';
|
||||||
|
import {
|
||||||
|
onLoad,
|
||||||
|
onShow,
|
||||||
|
onReachBottom,
|
||||||
|
onPullDownRefresh
|
||||||
|
} from '@dcloudio/uni-app';
|
||||||
|
import {
|
||||||
|
useUserStore
|
||||||
|
} from '@/store/user'
|
||||||
|
import { checkSign } from '@/api/bpm/sign'
|
||||||
|
import { useToast, useMessage, useNotify, dayjs } from 'wot-design-uni'
|
||||||
|
const emit = defineEmits(['message'])
|
||||||
|
const iframe = ref(null); //ref
|
||||||
|
const toast = useToast()
|
||||||
|
const store = useUserStore();
|
||||||
|
const compName = ref('');
|
||||||
|
const asyncComponent = ref(null);
|
||||||
|
const sealArrayTemp = ref([]); //签章数据
|
||||||
|
const signNum = ref(0);
|
||||||
|
const sign = ref(false);
|
||||||
|
const ldhth = ref('');
|
||||||
|
const username = ref('');
|
||||||
|
const iframeWin = ref(null);
|
||||||
|
const baseUrl = import.meta.env.VITE_SERVER_BASEURL
|
||||||
|
const filterArrNum = ref(0); //过滤后的数据
|
||||||
|
const errorMsg = ref('');
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: 'SinopecEsignPage',
|
||||||
|
options: {
|
||||||
|
styleIsolation: 'shared',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const props = defineProps({
|
||||||
|
fileName: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
valiData: {
|
||||||
|
type: Object
|
||||||
|
},
|
||||||
|
procInsId: { //签章验证
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
path: {//签章验证
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
onShow(() => {
|
||||||
|
setTimeout(()=>{
|
||||||
|
setConfig()
|
||||||
|
},500)
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const setConfig = () => {
|
||||||
|
// //给html传值
|
||||||
|
iframeWin.value = iframe.value.contentWindow
|
||||||
|
console.log(iframe.value)
|
||||||
|
console.log(iframe.value.contentWindow)
|
||||||
|
try {
|
||||||
|
iframeWin.value.postMessage({
|
||||||
|
filename: props.fileName,
|
||||||
|
apiUrl: baseUrl,
|
||||||
|
userid: username.value,
|
||||||
|
}, '*')
|
||||||
|
} catch (error) {
|
||||||
|
console.error('PostMessage error:', error);
|
||||||
|
// 可以在这里添加备用通信方式
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const signValidator = async () => { //签章验证 by 闵
|
||||||
|
|
||||||
|
console.log(props.valiData)
|
||||||
|
errorMsg.value = '';
|
||||||
|
let flag = false;
|
||||||
|
if (props.path == 'unconventional/stamp') { //非常规验证
|
||||||
|
if (props.valiData.flag) { //先判断数量验证
|
||||||
|
if (props.valiData && props.valiData.flag) {//有flag需要正常验证
|
||||||
|
let nowTime = new Date(props.valiData.time).getTime();
|
||||||
|
let filterArr = []
|
||||||
|
console.log(sealArrayTemp.value)
|
||||||
|
filterArr = sealArrayTemp.value.filter(item => {
|
||||||
|
let sealTime = new Date(item.createTime).getTime();
|
||||||
|
if (sealTime >= nowTime && item.userName == props.valiData.name) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
console.log(filterArr)
|
||||||
|
filterArrNum.value = filterArr.length;
|
||||||
|
if (props.valiData.num <= filterArrNum.value) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
console.log(324325)
|
||||||
|
errorMsg.value = "您需要签章(签字或盖章)" + props.valiData.num + "次,目前只签章了" + filterArrNum.value + "次。";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//2024.3.22张祥瑞
|
||||||
|
//如果签章路径是非常规盖章则走这里,验证机制为跳过签章个数验证,只要没签章则不能提交流程
|
||||||
|
// let flag = false;
|
||||||
|
if (sign.value) {
|
||||||
|
return flag = true; //只要执行了签章成功操作就返回成功,否则加载个数验证
|
||||||
|
} else {
|
||||||
|
return flag = false;
|
||||||
|
}
|
||||||
|
} else if (props.path == 'modules/gwjdspd/modules/CxcGwjdSpdFromByProcess') { //判断公务接待模块
|
||||||
|
//2024.5.16张祥瑞
|
||||||
|
//如果签章路径是非常规盖章则走这里,验证机制为跳过签章个数验证,只要没签章则不能提交流程
|
||||||
|
// let flag = false;
|
||||||
|
if (sign.value) {
|
||||||
|
return flag = true; //只要执行了签章成功操作就返回成功,否则加载个数验证
|
||||||
|
} else {
|
||||||
|
return flag = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sign.value) {
|
||||||
|
return true; //只要执行了签章成功操作就返回成功,否则加载个数验证
|
||||||
|
} else {
|
||||||
|
// let flag = false;
|
||||||
|
await getCompleteNum(props.procInsId).then(res => {
|
||||||
|
console.log("res--------132------", res);
|
||||||
|
// console.log("flag--132------",flag);
|
||||||
|
if (res) {
|
||||||
|
if (signNum.value >= (Number(res.result.nrOfCompletedInstances) + 1)) {
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log("flag--142------", flag);
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
onLoad(() => {
|
||||||
|
//获取当前登录人所属部门
|
||||||
|
//这里是要去esign表中使用劳动合同号查询当前使用人的userid
|
||||||
|
let userInfo = store.userInfo;
|
||||||
|
ldhth.value = userInfo.workNo;
|
||||||
|
checkSign(ldhth.value).then((res) => {
|
||||||
|
if (res) {
|
||||||
|
username.value = res
|
||||||
|
} else {
|
||||||
|
toast.error("您没有申请电子签章服务!请移步到系统管理-电子签章管理中注册,并联系信息化支持中心进行otp绑定。联系电话:4874260")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
|
||||||
|
//接收html盖完章后传过来的值
|
||||||
|
window.addEventListener("message", (ev) => {
|
||||||
|
console.log(ev)
|
||||||
|
//1.获取签章信息
|
||||||
|
let sealArray = ev.data.data.sealArray;
|
||||||
|
sealArrayTemp.value = sealArray;
|
||||||
|
console.log(sealArrayTemp.value);
|
||||||
|
//2.循环数组,转换为正确个数(以keySn为比对核心,相同的keySn为个数1)
|
||||||
|
let sealNumMap = {}
|
||||||
|
sealArray.forEach(item => {
|
||||||
|
if (sealNumMap[item.keySN]) {
|
||||||
|
sealNumMap[item.keySN] += 1;
|
||||||
|
//个数为2为一组
|
||||||
|
if (sealNumMap[item.keySN] > 2) {
|
||||||
|
let remainder = Math.ceil(sealNumMap[item.keySN] / 2) - 1
|
||||||
|
sealNumMap[item.keySN + remainder] = sealNumMap[item.keySN] - remainder * 2;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sealNumMap[item.keySN] = 1;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
signNum.value = Object.keys(sealNumMap).length;
|
||||||
|
console.log(sealNumMap)
|
||||||
|
console.log("ev.data----", ev.data)
|
||||||
|
if (ev.data.type === 'successMessage') {
|
||||||
|
console.log("ev------------", ev)
|
||||||
|
sign.value = true;
|
||||||
|
console.log("改变状态后-------this.sign-----", sign.value)
|
||||||
|
let wjurl = ev.currentTarget[0].data.filename;
|
||||||
|
//切割盖章文件,用来判断是否是非常规盖章--张祥瑞2024.1.11
|
||||||
|
// let wjurl1=wjurl.split('/');
|
||||||
|
if (wjurl.split('/')[0].includes("非常规盖章")) {
|
||||||
|
let wjdata = ev.currentTarget[0].data;
|
||||||
|
emit('message', wjdata);
|
||||||
|
}
|
||||||
|
} else if (ev.data.type === 'sealArray') { //添加删除盖章后签章,改为false --张祥瑞 2024.3.22
|
||||||
|
sign.value = false;
|
||||||
|
console.log("删除盖章后的参数--this.sign--", sign.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
defineExpose({ //暴露方法
|
||||||
|
signValidator
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.App-iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 700px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
</style>
|
@ -89,8 +89,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"android": {
|
||||||
|
"webView": {
|
||||||
|
"domStorageEnabled": true,
|
||||||
|
"databaseEnabled": true,
|
||||||
|
"allowFileAccess": true
|
||||||
|
}
|
||||||
|
},
|
||||||
"compatible": {
|
"compatible": {
|
||||||
"ignoreVersion": true
|
"ignoreVersion": true
|
||||||
|
},
|
||||||
|
"webview": {
|
||||||
|
"debug": true,
|
||||||
|
"crossDomain": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"quickapp": {},
|
"quickapp": {},
|
||||||
|
52
src/pages-bpm/unconventional/index.vue
Normal file
52
src/pages-bpm/unconventional/index.vue
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
<template>
|
||||||
|
<wd-cell-group title="申请信息">
|
||||||
|
<wd-cell title="申请人" :value="info.sqr" />
|
||||||
|
<wd-cell title="业务类别" :value="info.ywlb" />
|
||||||
|
<wd-cell title="申请事由" :value="info.sqsy" />
|
||||||
|
<wd-cell title="部门审批领导" :value="info.bmspld_dictText" />
|
||||||
|
<wd-cell title="申请部门" :value="info.sqbm" />
|
||||||
|
<wd-cell title="申请时间" :value="info.sqsj" />
|
||||||
|
<wd-cell title="申请盖章领导" :value="info.gzld" />
|
||||||
|
<wd-cell title="申请盖章厂领导" :value="info.gzcld" />
|
||||||
|
<wd-cell title="盖章位置" :value="info.gzwz" />
|
||||||
|
<wd-cell title="盖章文件" >
|
||||||
|
<view style="color: #4d80f0;" @click="onlinePreView(info.wj)" plain>{{info.wj.match(/([^\/]+)(?=\.\w+$)/)[0]}}</view>
|
||||||
|
</wd-cell>
|
||||||
|
</wd-cell-group>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
queryUnData
|
||||||
|
} from '@/api/integrated/unconventional'
|
||||||
|
import {
|
||||||
|
imgUrl
|
||||||
|
} from '@/utils/index'
|
||||||
|
|
||||||
|
const info = ref({})
|
||||||
|
const image = ref([])
|
||||||
|
const props = defineProps({
|
||||||
|
formData: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const queryData = ()=>{
|
||||||
|
queryUnData({id:props.formData.dataId}).then(res=>{
|
||||||
|
console.log(res)
|
||||||
|
info.value = res.result.records[0]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const onlinePreView = (fileUrl) => {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/onlinePreview/detail?data=${fileUrl}`
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
queryData();
|
||||||
|
})
|
||||||
|
</script>
|
123
src/pages-bpm/unconventional/stamp.vue
Normal file
123
src/pages-bpm/unconventional/stamp.vue
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
<template>
|
||||||
|
<wd-collapse v-model="value">
|
||||||
|
<wd-collapse-item title="表单数据" name="item1">
|
||||||
|
<wd-cell title="申请人" :value="info.sqr" />
|
||||||
|
<wd-cell title="业务类别" :value="info.ywlb" />
|
||||||
|
<wd-cell title="申请事由" :value="info.sqsy" />
|
||||||
|
<wd-cell title="部门审批领导" :value="info.bmspld_dictText" />
|
||||||
|
<wd-cell title="申请部门" :value="info.sqbm" />
|
||||||
|
<wd-cell title="申请时间" :value="info.sqsj" />
|
||||||
|
<wd-cell title="申请盖章领导" :value="info.gzld" />
|
||||||
|
<wd-cell title="申请盖章厂领导" :value="info.gzcld" />
|
||||||
|
<wd-cell title="盖章位置" :value="info.gzwz" />
|
||||||
|
</wd-collapse-item>
|
||||||
|
<wd-collapse-item custom-body-style="padding:0;" title="盖章文件" name="item2">
|
||||||
|
<SinopecEsignPage :valiData="valiData" ref="sign" :procInsId="props.formData.procInsId" :path="props.formData.path" :fileName="info.wjdict" @stampSuccess="getStampSuccess"></SinopecEsignPage>
|
||||||
|
</wd-collapse-item>
|
||||||
|
</wd-collapse>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
queryUnData
|
||||||
|
} from '@/api/integrated/unconventional'
|
||||||
|
import {
|
||||||
|
processHistoryList
|
||||||
|
} from '@/api/bpm/sign'
|
||||||
|
import {
|
||||||
|
imgUrl
|
||||||
|
} from '@/utils/index'
|
||||||
|
import SinopecEsignPage from '@/components/Esign/SinopecEsignPage.vue'
|
||||||
|
import { useUserStore } from '@/store/user'
|
||||||
|
const userStore = useUserStore()
|
||||||
|
|
||||||
|
const emit = defineEmits(['getStampSuc'])
|
||||||
|
|
||||||
|
const sign = ref(null);
|
||||||
|
const value = ref([]);
|
||||||
|
const info = ref({});
|
||||||
|
const valiData = ref({});
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
formData: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
fileName: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const queryData = ()=>{
|
||||||
|
queryUnData({id:props.formData.dataId}).then(res=>{
|
||||||
|
console.log(res)
|
||||||
|
info.value = res.result.records[0]
|
||||||
|
initValiData(info.value); //处理验证data by 闵
|
||||||
|
let lj = info.value.wj.split("/");
|
||||||
|
let ljurl = lj[2] + '/' + lj[3];
|
||||||
|
info.value.wjdict = ljurl;
|
||||||
|
console.log(info.value)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const initValiData = (data)=>{
|
||||||
|
//处理验证data by 闵
|
||||||
|
let name = userStore.userInfo.realname;
|
||||||
|
console.log(name)
|
||||||
|
// name = '王飞'
|
||||||
|
let num = null;
|
||||||
|
if(data.lds){
|
||||||
|
let ldsMap = JSON.parse(data.lds);
|
||||||
|
if(ldsMap[name]) num = ldsMap[name]
|
||||||
|
}
|
||||||
|
console.log(data)
|
||||||
|
if(data.clds){
|
||||||
|
let cldsMap = JSON.parse(data.clds);
|
||||||
|
if(cldsMap[name]) num = cldsMap[name]
|
||||||
|
}
|
||||||
|
console.log(name)
|
||||||
|
console.log(num)
|
||||||
|
if(num){
|
||||||
|
valiData.value.flag = true;
|
||||||
|
valiData.value.num = num;
|
||||||
|
valiData.value.name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const initValtime = ()=>{
|
||||||
|
processHistoryList(props.formData.procInsId).then(res=>{
|
||||||
|
console.log(res)
|
||||||
|
if (res.success) {
|
||||||
|
console.log(res.result.records)
|
||||||
|
valiData.value.time = res.result.records[0].startTime
|
||||||
|
} else {
|
||||||
|
console.log("加载失败")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取印章成功事件,并将信号传给确认提交按钮。
|
||||||
|
const getStampSuccess=(val)=> {
|
||||||
|
emit('getStampSuc', val)
|
||||||
|
}
|
||||||
|
|
||||||
|
const signValidator = (procInsId,path)=>{
|
||||||
|
//这里进行电子签章验证
|
||||||
|
return sign.value.signValidator();
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
queryData();
|
||||||
|
initValtime();
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({ //暴露方法
|
||||||
|
signValidator
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
@ -1,16 +1,17 @@
|
|||||||
<!-- component标签可以变换组件 -->
|
<!-- component标签可以变换组件 -->
|
||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<component :is="asyncComponent" :formData="formData" :history="history" :activeKey="activeKey" v-if="asyncComponent"
|
<component ref="comptRef" :is="asyncComponent" :formData="formData" :history="history" :activeKey="activeKey" v-if="asyncComponent"
|
||||||
@getStampSuc="getStampSuccess"></component>
|
@getStampSuc="getStampSuccess"></component>
|
||||||
<view v-else>该模块暂未建立审批页面!</view>
|
<view v-else>该模块暂未建立审批页面!</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup>
|
||||||
import { ref, reactive, onMounted, computed, watch, nextTick } from 'vue';
|
import { ref, reactive, onMounted, computed, watch, nextTick } from 'vue';
|
||||||
const compName = ref('');
|
const compName = ref('');
|
||||||
const asyncComponent = ref(null);
|
const asyncComponent = ref(null);
|
||||||
const modules = import.meta.glob('/src/pages-bpm/**/*.vue');
|
const modules = import.meta.glob('/src/pages-bpm/**/*.vue');
|
||||||
|
const comptRef = ref();
|
||||||
|
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
@ -42,12 +43,15 @@
|
|||||||
watch(() => props.path, (newVal) => {
|
watch(() => props.path, (newVal) => {
|
||||||
if (newVal){
|
if (newVal){
|
||||||
compName.value = newVal;
|
compName.value = newVal;
|
||||||
if(newVal.indexOf('index')==-1){
|
|
||||||
compName.value = newVal+'/index'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//动态加载页面
|
//动态加载页面
|
||||||
const comp = modules[`/src/pages-bpm/${compName.value}.vue`]
|
const comp = modules[`/src/pages-bpm/${compName.value}.vue`]
|
||||||
|
if(!comp){
|
||||||
|
if(newVal.indexOf('index')==-1){
|
||||||
|
compName.value = newVal+'/index'
|
||||||
|
comp = modules[`/src/pages-bpm/${compName.value}.vue`]
|
||||||
|
}
|
||||||
|
}
|
||||||
comp().then((myModule) => {
|
comp().then((myModule) => {
|
||||||
asyncComponent.value = myModule.default
|
asyncComponent.value = myModule.default
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
@ -60,7 +64,11 @@
|
|||||||
// #endif
|
// #endif
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const signValidator = ()=>{
|
||||||
|
//这里进行电子签章验证
|
||||||
|
return comptRef.value.signValidator()
|
||||||
|
}
|
||||||
|
|
||||||
const getStampSuccess = (val) => {
|
const getStampSuccess = (val) => {
|
||||||
// this.$emit('getStampSuc', val)
|
// this.$emit('getStampSuc', val)
|
||||||
// //在<component>标签动态组件使用vuex,没有保存成功。
|
// //在<component>标签动态组件使用vuex,没有保存成功。
|
||||||
@ -69,6 +77,10 @@
|
|||||||
// esignTag: val
|
// esignTag: val
|
||||||
// });
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defineExpose({ //暴露方法
|
||||||
|
signValidator
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
@ -196,6 +196,8 @@
|
|||||||
import Mupload from '@/components/Mupload/Mupload.vue'
|
import Mupload from '@/components/Mupload/Mupload.vue'
|
||||||
import { getProcessTaskTransInfo, processComplete, taskEntrust, callBackProcessApi, sendMessageApi } from '@/api/process'
|
import { getProcessTaskTransInfo, processComplete, taskEntrust, callBackProcessApi, sendMessageApi } from '@/api/process'
|
||||||
import { useToast, useMessage, useNotify, dayjs } from 'wot-design-uni'
|
import { useToast, useMessage, useNotify, dayjs } from 'wot-design-uni'
|
||||||
|
const emit = defineEmits(['dataSubmit'])
|
||||||
|
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'taskDeal',
|
name: 'taskDeal',
|
||||||
@ -368,81 +370,103 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
const handleProcessComplete = (nextNode) => {
|
const handleProcessComplete = (nextNode) => {
|
||||||
if (model.value.processModel == 4) { //4: 取回流程
|
emit('dataSubmit', val=>{
|
||||||
message
|
console.log(val)
|
||||||
.confirm({
|
let valiData = val
|
||||||
msg: '确认取回流程吗?',
|
if (model.value.processModel == 3) {
|
||||||
title: '提示',
|
valiData.flag = true;
|
||||||
})
|
}
|
||||||
.then(() => {
|
console.log(valiData)
|
||||||
let param = {
|
if (!valiData.flag) { //不通过验证 点击提交流程前加了一个表单验证 by 闵
|
||||||
reason: model.value.reason,
|
switch (valiData.type) {
|
||||||
bpmBizTitle: props.useData.bpmBizTitle,
|
case 0:
|
||||||
processApplyUser: props.useData.processApplyUserId,
|
toast.error("请确认是否填写完表单或验证是否正确!")
|
||||||
processApplyUserName: props.useData.processApplyUserName,
|
break;
|
||||||
taskAssigneeName: props.useData.taskAssigneeName,
|
case 1:
|
||||||
taskName: props.useData.taskName,
|
toast.error("请确认是否盖章!")
|
||||||
taskBeginTime: props.useData.taskBeginTime
|
break;
|
||||||
}
|
}
|
||||||
callBackProcessApi({
|
return
|
||||||
processInstanceId: props.formData.procInsId
|
}
|
||||||
}).then((res) => {
|
|
||||||
if (res.success) {
|
if (model.value.processModel == 4) { //4: 取回流程
|
||||||
sendMessageApi(param) //给发起人发送信息
|
message
|
||||||
toast.success(res.message)
|
.confirm({
|
||||||
setTimeout(() => { //延迟2s
|
msg: '确认取回流程吗?',
|
||||||
uni.navigateBack()
|
title: '提示',
|
||||||
}, 2000)
|
|
||||||
} else {
|
|
||||||
toast.warning(res.message)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
})
|
.then(() => {
|
||||||
} else {
|
let param = {
|
||||||
if (!model.value.reason || model.value.reason.length == 0) {
|
reason: model.value.reason,
|
||||||
toast.error("请填写处理意见!")
|
bpmBizTitle: props.useData.bpmBizTitle,
|
||||||
return
|
processApplyUser: props.useData.processApplyUserId,
|
||||||
}
|
processApplyUserName: props.useData.processApplyUserName,
|
||||||
if (nextNode) { // true
|
taskAssigneeName: props.useData.taskAssigneeName,
|
||||||
model.value.nextnode = nextNode;
|
taskName: props.useData.taskName,
|
||||||
}
|
taskBeginTime: props.useData.taskBeginTime
|
||||||
|
}
|
||||||
if (model.value.entrust) { //如果有委托,不办理流程
|
callBackProcessApi({
|
||||||
var params = {
|
processInstanceId: props.formData.procInsId
|
||||||
taskId: model.value.taskId,
|
}).then((res) => {
|
||||||
taskAssignee: model.value.entrust
|
if (res.success) {
|
||||||
};//查询条件
|
sendMessageApi(param) //给发起人发送信息
|
||||||
taskEntrust(params).then(res => {
|
toast.success(res.message)
|
||||||
if (res.success) {
|
setTimeout(() => { //延迟2s
|
||||||
toast.success(res.message)
|
uni.navigateBack()
|
||||||
setTimeout(() => { //延迟0.5s
|
}, 2000)
|
||||||
uni.navigateBack()
|
} else {
|
||||||
}, 2000)
|
toast.warning(res.message)
|
||||||
} else {
|
}
|
||||||
toast.error(res.message)
|
})
|
||||||
}
|
})
|
||||||
})
|
} else {
|
||||||
return;
|
if (!model.value.reason || model.value.reason.length == 0) {
|
||||||
}
|
toast.error("请填写处理意见!")
|
||||||
message
|
return
|
||||||
.confirm({
|
}
|
||||||
msg: '确认提交审批吗?',
|
if (nextNode) { // true
|
||||||
title: '提示',
|
model.value.nextnode = nextNode;
|
||||||
})
|
}
|
||||||
.then(() => {
|
|
||||||
model.fileList = JSON.stringify(fileListTemp.value)
|
if (model.value.entrust) { //如果有委托,不办理流程
|
||||||
processComplete(model.value).then(res => {
|
var params = {
|
||||||
if (res.success) {//跳转页面或加载下一个任务
|
taskId: model.value.taskId,
|
||||||
|
taskAssignee: model.value.entrust
|
||||||
|
};//查询条件
|
||||||
|
taskEntrust(params).then(res => {
|
||||||
|
if (res.success) {
|
||||||
toast.success(res.message)
|
toast.success(res.message)
|
||||||
setTimeout(() => { //延迟0.5s
|
setTimeout(() => { //延迟0.5s
|
||||||
uni.navigateBack()
|
uni.navigateBack()
|
||||||
}, 1000)
|
}, 2000)
|
||||||
} else {
|
} else {
|
||||||
toast.error(res.message)
|
toast.error(res.message)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
return;
|
||||||
}
|
}
|
||||||
|
message
|
||||||
|
.confirm({
|
||||||
|
msg: '确认提交审批吗?',
|
||||||
|
title: '提示',
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
model.fileList = JSON.stringify(fileListTemp.value)
|
||||||
|
processComplete(model.value).then(res => {
|
||||||
|
if (res.success) {//跳转页面或加载下一个任务
|
||||||
|
toast.success(res.message)
|
||||||
|
setTimeout(() => { //延迟0.5s
|
||||||
|
uni.navigateBack()
|
||||||
|
}, 1000)
|
||||||
|
} else {
|
||||||
|
toast.error(res.message)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleManyProcessComplete = () => { //驳回任务提交
|
const handleManyProcessComplete = () => { //驳回任务提交
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
<DynamicLink ref="linkRef" :path="path" :formData="formData"></DynamicLink>
|
<DynamicLink ref="linkRef" :path="path" :formData="formData"></DynamicLink>
|
||||||
</wd-tab>
|
</wd-tab>
|
||||||
<wd-tab title="任务处理" v-if="type!='history'">
|
<wd-tab title="任务处理" v-if="type!='history'">
|
||||||
<taskDeal :formData="formData" :useData="useData"></taskDeal>
|
<taskDeal :formData="formData" :useData="useData" @dataSubmit="dataSubmit"></taskDeal>
|
||||||
</wd-tab>
|
</wd-tab>
|
||||||
<wd-tab title="流程图">
|
<wd-tab title="流程图">
|
||||||
<view class="container">
|
<view class="container">
|
||||||
@ -93,6 +93,9 @@
|
|||||||
const tab = ref(0)
|
const tab = ref(0)
|
||||||
const completedNum = ref(0);
|
const completedNum = ref(0);
|
||||||
const popup = ref(false)
|
const popup = ref(false)
|
||||||
|
const linkRef = ref();
|
||||||
|
|
||||||
|
|
||||||
const showFullScreen = () => {
|
const showFullScreen = () => {
|
||||||
popup.value = true
|
popup.value = true
|
||||||
};
|
};
|
||||||
@ -123,6 +126,7 @@
|
|||||||
formData.value = data;//流程信息
|
formData.value = data;//流程信息
|
||||||
let tempFormUrl = res.result.formUrlMobile;
|
let tempFormUrl = res.result.formUrlMobile;
|
||||||
path.value = tempFormUrl; //url路径
|
path.value = tempFormUrl; //url路径
|
||||||
|
formData.value.path = tempFormUrl; //加载path属性
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@ -164,6 +168,26 @@
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const dataSubmit = async (callback)=> { //触发表单的保存数据 by 闵
|
||||||
|
//1.先验证是否有form,如果有form则需要验证
|
||||||
|
//2.如果没有form,则不需要验证
|
||||||
|
let callData = {
|
||||||
|
flag: false,
|
||||||
|
type: 0,
|
||||||
|
}
|
||||||
|
console.log(linkRef.value)
|
||||||
|
let data = await linkRef.value.signValidator()
|
||||||
|
if(data==false||data==true){
|
||||||
|
callData.flag = data;
|
||||||
|
callData.type = 1;
|
||||||
|
}else{
|
||||||
|
callData.flag = true;
|
||||||
|
}
|
||||||
|
console.log(callData)
|
||||||
|
callback(callData);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const imgPath = computed(() => {
|
const imgPath = computed(() => {
|
||||||
var params = qs.stringify({
|
var params = qs.stringify({
|
||||||
'processInstanceId': formData.value.procInsId
|
'processInstanceId': formData.value.procInsId
|
||||||
|
@ -524,6 +524,14 @@
|
|||||||
{
|
{
|
||||||
"path": "leaveApplication/index",
|
"path": "leaveApplication/index",
|
||||||
"type": "page"
|
"type": "page"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "unconventional/index",
|
||||||
|
"type": "page"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "unconventional/stamp",
|
||||||
|
"type": "page"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
BIN
src/static/CloudSign/cmaps/78-EUC-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/78-EUC-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/78-EUC-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/78-EUC-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/78-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/78-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/78-RKSJ-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/78-RKSJ-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/78-RKSJ-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/78-RKSJ-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/78-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/78-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/78ms-RKSJ-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/78ms-RKSJ-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/78ms-RKSJ-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/78ms-RKSJ-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/83pv-RKSJ-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/83pv-RKSJ-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/90ms-RKSJ-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/90ms-RKSJ-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/90ms-RKSJ-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/90ms-RKSJ-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/90msp-RKSJ-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/90msp-RKSJ-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/90msp-RKSJ-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/90msp-RKSJ-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/90pv-RKSJ-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/90pv-RKSJ-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/90pv-RKSJ-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/90pv-RKSJ-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Add-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Add-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Add-RKSJ-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Add-RKSJ-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Add-RKSJ-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Add-RKSJ-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Add-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Add-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-0.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-0.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-1.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-1.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-2.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-2.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-3.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-3.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-4.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-4.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-5.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-5.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-6.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-6.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-UCS2.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-CNS1-UCS2.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-GB1-0.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-GB1-0.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-GB1-1.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-GB1-1.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-GB1-2.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-GB1-2.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-GB1-3.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-GB1-3.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-GB1-4.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-GB1-4.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-GB1-5.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-GB1-5.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-GB1-UCS2.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-GB1-UCS2.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-0.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-0.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-1.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-1.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-2.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-2.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-3.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-3.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-4.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-4.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-5.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-5.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-6.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-6.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-UCS2.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Japan1-UCS2.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Korea1-0.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Korea1-0.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Korea1-1.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Korea1-1.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Korea1-2.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Korea1-2.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Adobe-Korea1-UCS2.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Adobe-Korea1-UCS2.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/B5-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/B5-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/B5-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/B5-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/B5pc-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/B5pc-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/B5pc-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/B5pc-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/CNS-EUC-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/CNS-EUC-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/CNS-EUC-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/CNS-EUC-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/CNS1-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/CNS1-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/CNS1-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/CNS1-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/CNS2-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/CNS2-H.bcmap
Normal file
Binary file not shown.
3
src/static/CloudSign/cmaps/CNS2-V.bcmap
Normal file
3
src/static/CloudSign/cmaps/CNS2-V.bcmap
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
àRCopyright 1990-2009 Adobe Systems Incorporated.
|
||||||
|
All rights reserved.
|
||||||
|
See ./LICENSEáCNS2-H
|
BIN
src/static/CloudSign/cmaps/ETHK-B5-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/ETHK-B5-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/ETHK-B5-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/ETHK-B5-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/ETen-B5-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/ETen-B5-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/ETen-B5-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/ETen-B5-V.bcmap
Normal file
Binary file not shown.
3
src/static/CloudSign/cmaps/ETenms-B5-H.bcmap
Normal file
3
src/static/CloudSign/cmaps/ETenms-B5-H.bcmap
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
àRCopyright 1990-2009 Adobe Systems Incorporated.
|
||||||
|
All rights reserved.
|
||||||
|
See ./LICENSEá ETen-B5-H` ^
|
BIN
src/static/CloudSign/cmaps/ETenms-B5-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/ETenms-B5-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/EUC-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/EUC-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/EUC-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/EUC-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Ext-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Ext-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Ext-RKSJ-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Ext-RKSJ-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Ext-RKSJ-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Ext-RKSJ-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/Ext-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/Ext-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GB-EUC-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GB-EUC-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GB-EUC-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GB-EUC-V.bcmap
Normal file
Binary file not shown.
4
src/static/CloudSign/cmaps/GB-H.bcmap
Normal file
4
src/static/CloudSign/cmaps/GB-H.bcmap
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
àRCopyright 1990-2009 Adobe Systems Incorporated.
|
||||||
|
All rights reserved.
|
||||||
|
See ./LICENSE!!<21>º]aX!!]`<60>21<32>> <09>p<0B>z<EFBFBD>$]‚<06>"R‚d<E2809A>-Uƒ7<C692>*„
4„%<25>+ „Z „{<7B>/…%…<<3C>9K…b<E280A6>1]†.<2E>"‡‰`]‡,<2C>"]ˆ
|
||||||
|
<EFBFBD>"]ˆh<CB86>"]‰F<E280B0>"]Š$<24>"]‹<02>"]‹`<60>"]Œ><3E>"]<5D><1C>"]<5D>z<EFBFBD>"]ŽX<C5BD>"]<5D>6<EFBFBD>"]<5D><14>"]<5D>r<EFBFBD>"]‘P<E28098>"]’.<2E>"]“<0C>"]“j<E2809C>"]”H<E2809D>"]•&<26>"]–<04>"]–b<E28093>"]—@<40>"]˜<1E>"]˜|<7C>"]™Z<E284A2>"]š8<C5A1>"]›<16>"]›t<E280BA>"]œR<C593>"]<5D>0<EFBFBD>"]ž<0E>"]žl<C5BE>"]ŸJ<C5B8>"] (<28>"]¡<06>"]¡d<C2A1>"]¢B<C2A2>"]£ <20>"X£~<7E>']¤W<C2A4>"]¥5<C2A5>"]¦<13>"]¦q<C2A6>"]§O<C2A7>"]¨-<2D>"]©<0B>"]©i<C2A9>"]ªG<C2AA>"]«%<25>"]¬<03>"]¬a<C2AC>"]?<3F>"]®<1D>"]®{<7B>"]¯Y<C2AF>"]°7<C2B0>"]±<15>"]±s<C2B1>"]²Q<C2B2>"]³/<2F>"]´
<0A>"]´k<C2B4>"]µI<C2B5>"]¶'<27>"]·<05>"]·c<C2B7>"]¸A<C2B8>"]¹<1F>"]¹}<7D>"]º[<5B>"]»9
|
BIN
src/static/CloudSign/cmaps/GB-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GB-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBK-EUC-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBK-EUC-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBK-EUC-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBK-EUC-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBK2K-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBK2K-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBK2K-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBK2K-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBKp-EUC-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBKp-EUC-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBKp-EUC-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBKp-EUC-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBT-EUC-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBT-EUC-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBT-EUC-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBT-EUC-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBT-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBT-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBT-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBT-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBTpc-EUC-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBTpc-EUC-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBTpc-EUC-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBTpc-EUC-V.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBpc-EUC-H.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBpc-EUC-H.bcmap
Normal file
Binary file not shown.
BIN
src/static/CloudSign/cmaps/GBpc-EUC-V.bcmap
Normal file
BIN
src/static/CloudSign/cmaps/GBpc-EUC-V.bcmap
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user