初始提交
This commit is contained in:
988
pages/workFlow/flowBefore/emoji.js
Normal file
988
pages/workFlow/flowBefore/emoji.js
Normal file
@@ -0,0 +1,988 @@
|
||||
const emojiTree = [
|
||||
[{
|
||||
"url": "100.gif",
|
||||
"alt": "[微笑]"
|
||||
},
|
||||
{
|
||||
"url": "101.gif",
|
||||
"alt": "[伤心]"
|
||||
},
|
||||
{
|
||||
"url": "102.gif",
|
||||
"alt": "[美女]"
|
||||
},
|
||||
{
|
||||
"url": "103.gif",
|
||||
"alt": "[发呆]"
|
||||
},
|
||||
{
|
||||
"url": "104.gif",
|
||||
"alt": "[墨镜]"
|
||||
},
|
||||
{
|
||||
"url": "105.gif",
|
||||
"alt": "[哭]"
|
||||
},
|
||||
{
|
||||
"url": "106.gif",
|
||||
"alt": "[羞]"
|
||||
},
|
||||
{
|
||||
"url": "107.gif",
|
||||
"alt": "[哑]"
|
||||
},
|
||||
{
|
||||
"url": "108.gif",
|
||||
"alt": "[睡]"
|
||||
},
|
||||
{
|
||||
"url": "109.gif",
|
||||
"alt": "[大哭]"
|
||||
},
|
||||
{
|
||||
"url": "110.gif",
|
||||
"alt": "[囧]"
|
||||
},
|
||||
{
|
||||
"url": "111.gif",
|
||||
"alt": "[怒]"
|
||||
},
|
||||
{
|
||||
"url": "112.gif",
|
||||
"alt": "[调皮]"
|
||||
},
|
||||
{
|
||||
"url": "113.gif",
|
||||
"alt": "[呲牙]"
|
||||
},
|
||||
{
|
||||
"url": "114.gif",
|
||||
"alt": "[惊讶]"
|
||||
},
|
||||
{
|
||||
"url": "115.gif",
|
||||
"alt": "[难过]"
|
||||
},
|
||||
{
|
||||
"url": "116.gif",
|
||||
"alt": "[酷]"
|
||||
},
|
||||
{
|
||||
"url": "117.gif",
|
||||
"alt": "[汗]"
|
||||
},
|
||||
{
|
||||
"url": "118.gif",
|
||||
"alt": "[抓狂]"
|
||||
},
|
||||
{
|
||||
"url": "119.gif",
|
||||
"alt": "[吐]"
|
||||
},
|
||||
{
|
||||
"url": "120.gif",
|
||||
"alt": "[笑]"
|
||||
},
|
||||
{
|
||||
"url": "121.gif",
|
||||
"alt": "[快乐]"
|
||||
},
|
||||
{
|
||||
"url": "122.gif",
|
||||
"alt": "[疑惑]"
|
||||
},
|
||||
{
|
||||
"url": "123.gif",
|
||||
"alt": "[傲]"
|
||||
}
|
||||
],
|
||||
[{
|
||||
"url": "124.gif",
|
||||
"alt": "[饿]"
|
||||
},
|
||||
{
|
||||
"url": "125.gif",
|
||||
"alt": "[累]"
|
||||
},
|
||||
{
|
||||
"url": "126.gif",
|
||||
"alt": "[惊恐]"
|
||||
},
|
||||
{
|
||||
"url": "127.gif",
|
||||
"alt": "[汗1]"
|
||||
},
|
||||
{
|
||||
"url": "128.gif",
|
||||
"alt": "[高兴]"
|
||||
},
|
||||
{
|
||||
"url": "129.gif",
|
||||
"alt": "[闲]"
|
||||
},
|
||||
{
|
||||
"url": "130.gif",
|
||||
"alt": "[努力]"
|
||||
},
|
||||
{
|
||||
"url": "131.gif",
|
||||
"alt": "[骂]"
|
||||
},
|
||||
{
|
||||
"url": "132.gif",
|
||||
"alt": "[疑问]"
|
||||
},
|
||||
{
|
||||
"url": "133.gif",
|
||||
"alt": "[秘密]"
|
||||
},
|
||||
{
|
||||
"url": "134.gif",
|
||||
"alt": "[乱]"
|
||||
},
|
||||
{
|
||||
"url": "135.gif",
|
||||
"alt": "[疯]"
|
||||
},
|
||||
{
|
||||
"url": "136.gif",
|
||||
"alt": "[哀]"
|
||||
},
|
||||
{
|
||||
"url": "137.gif",
|
||||
"alt": "[鬼]"
|
||||
},
|
||||
{
|
||||
"url": "138.gif",
|
||||
"alt": "[打击]"
|
||||
},
|
||||
{
|
||||
"url": "139.gif",
|
||||
"alt": "[bye]"
|
||||
},
|
||||
{
|
||||
"url": "140.gif",
|
||||
"alt": "[擦汗]"
|
||||
},
|
||||
{
|
||||
"url": "141.gif",
|
||||
"alt": "[抠]"
|
||||
},
|
||||
{
|
||||
"url": "142.gif",
|
||||
"alt": "[鼓掌]"
|
||||
},
|
||||
{
|
||||
"url": "143.gif",
|
||||
"alt": "[糟糕]"
|
||||
},
|
||||
{
|
||||
"url": "144.gif",
|
||||
"alt": "[恶搞]"
|
||||
},
|
||||
{
|
||||
"url": "145.gif",
|
||||
"alt": "[左哼哼]"
|
||||
},
|
||||
{
|
||||
"url": "146.gif",
|
||||
"alt": "[右哼哼]"
|
||||
},
|
||||
{
|
||||
"url": "147.gif",
|
||||
"alt": "[哈欠]"
|
||||
}
|
||||
],
|
||||
[{
|
||||
"url": "148.gif",
|
||||
"alt": "[看]"
|
||||
},
|
||||
{
|
||||
"url": "149.gif",
|
||||
"alt": "[委屈]"
|
||||
},
|
||||
{
|
||||
"url": "150.gif",
|
||||
"alt": "[难过1]"
|
||||
},
|
||||
{
|
||||
"url": "151.gif",
|
||||
"alt": "[坏]"
|
||||
},
|
||||
{
|
||||
"url": "152.gif",
|
||||
"alt": "[亲]"
|
||||
},
|
||||
{
|
||||
"url": "153.gif",
|
||||
"alt": "[吓]"
|
||||
},
|
||||
{
|
||||
"url": "154.gif",
|
||||
"alt": "[可怜]"
|
||||
},
|
||||
{
|
||||
"url": "155.gif",
|
||||
"alt": "[刀]"
|
||||
},
|
||||
{
|
||||
"url": "156.gif",
|
||||
"alt": "[水果]"
|
||||
},
|
||||
{
|
||||
"url": "157.gif",
|
||||
"alt": "[酒]"
|
||||
},
|
||||
{
|
||||
"url": "158.gif",
|
||||
"alt": "[篮球]"
|
||||
},
|
||||
{
|
||||
"url": "159.gif",
|
||||
"alt": "[乒乓]"
|
||||
},
|
||||
{
|
||||
"url": "160.gif",
|
||||
"alt": "[咖啡]"
|
||||
},
|
||||
{
|
||||
"url": "161.gif",
|
||||
"alt": "[美食]"
|
||||
},
|
||||
{
|
||||
"url": "162.gif",
|
||||
"alt": "[动物]"
|
||||
},
|
||||
{
|
||||
"url": "163.gif",
|
||||
"alt": "[鲜花]"
|
||||
},
|
||||
{
|
||||
"url": "164.gif",
|
||||
"alt": "[枯]"
|
||||
},
|
||||
{
|
||||
"url": "165.gif",
|
||||
"alt": "[唇]"
|
||||
},
|
||||
{
|
||||
"url": "166.gif",
|
||||
"alt": "[爱]"
|
||||
},
|
||||
{
|
||||
"url": "167.gif",
|
||||
"alt": "[分手]"
|
||||
},
|
||||
{
|
||||
"url": "168.gif",
|
||||
"alt": "[生日]"
|
||||
},
|
||||
{
|
||||
"url": "169.gif",
|
||||
"alt": "[电]"
|
||||
},
|
||||
{
|
||||
"url": "170.gif",
|
||||
"alt": "[炸弹]"
|
||||
},
|
||||
{
|
||||
"url": "171.gif",
|
||||
"alt": "[刀子]"
|
||||
}
|
||||
],
|
||||
[{
|
||||
"url": "172.gif",
|
||||
"alt": "[足球]"
|
||||
},
|
||||
{
|
||||
"url": "173.gif",
|
||||
"alt": "[瓢虫]"
|
||||
},
|
||||
{
|
||||
"url": "174.gif",
|
||||
"alt": "[翔]"
|
||||
},
|
||||
{
|
||||
"url": "175.gif",
|
||||
"alt": "[月亮]"
|
||||
},
|
||||
{
|
||||
"url": "176.gif",
|
||||
"alt": "[太阳]"
|
||||
},
|
||||
{
|
||||
"url": "177.gif",
|
||||
"alt": "[礼物]"
|
||||
},
|
||||
{
|
||||
"url": "178.gif",
|
||||
"alt": "[抱抱]"
|
||||
},
|
||||
{
|
||||
"url": "179.gif",
|
||||
"alt": "[拇指]"
|
||||
},
|
||||
{
|
||||
"url": "180.gif",
|
||||
"alt": "[贬低]"
|
||||
},
|
||||
{
|
||||
"url": "181.gif",
|
||||
"alt": "[握手]"
|
||||
},
|
||||
{
|
||||
"url": "182.gif",
|
||||
"alt": "[剪刀手]"
|
||||
},
|
||||
{
|
||||
"url": "183.gif",
|
||||
"alt": "[抱拳]"
|
||||
},
|
||||
{
|
||||
"url": "184.gif",
|
||||
"alt": "[勾引]"
|
||||
},
|
||||
{
|
||||
"url": "185.gif",
|
||||
"alt": "[拳头]"
|
||||
},
|
||||
{
|
||||
"url": "186.gif",
|
||||
"alt": "[小拇指]"
|
||||
},
|
||||
{
|
||||
"url": "187.gif",
|
||||
"alt": "[拇指八]"
|
||||
},
|
||||
{
|
||||
"url": "188.gif",
|
||||
"alt": "[食指]"
|
||||
},
|
||||
{
|
||||
"url": "189.gif",
|
||||
"alt": "[ok]"
|
||||
},
|
||||
{
|
||||
"url": "190.gif",
|
||||
"alt": "[情侣]"
|
||||
},
|
||||
{
|
||||
"url": "191.gif",
|
||||
"alt": "[爱心]"
|
||||
},
|
||||
{
|
||||
"url": "192.gif",
|
||||
"alt": "[蹦哒]"
|
||||
},
|
||||
{
|
||||
"url": "193.gif",
|
||||
"alt": "[颤抖]"
|
||||
},
|
||||
{
|
||||
"url": "194.gif",
|
||||
"alt": "[怄气]"
|
||||
},
|
||||
{
|
||||
"url": "195.gif",
|
||||
"alt": "[跳舞]"
|
||||
}
|
||||
],
|
||||
[{
|
||||
"url": "196.gif",
|
||||
"alt": "[拜]"
|
||||
},
|
||||
{
|
||||
"url": "197.gif",
|
||||
"alt": "[背着]"
|
||||
},
|
||||
{
|
||||
"url": "198.gif",
|
||||
"alt": "[伸手]"
|
||||
},
|
||||
{
|
||||
"url": "199.gif",
|
||||
"alt": "[耍帅]"
|
||||
},
|
||||
{
|
||||
"url": "200.png",
|
||||
"alt": "[微笑1]"
|
||||
},
|
||||
{
|
||||
"url": "201.png",
|
||||
"alt": "[生病]"
|
||||
},
|
||||
{
|
||||
"url": "202.png",
|
||||
"alt": "[哭泣]"
|
||||
},
|
||||
{
|
||||
"url": "203.png",
|
||||
"alt": "[吐舌]"
|
||||
},
|
||||
{
|
||||
"url": "204.png",
|
||||
"alt": "[迷糊]"
|
||||
},
|
||||
{
|
||||
"url": "205.png",
|
||||
"alt": "[瞪眼]"
|
||||
},
|
||||
{
|
||||
"url": "206.png",
|
||||
"alt": "[恐怖]"
|
||||
},
|
||||
{
|
||||
"url": "207.png",
|
||||
"alt": "[忧愁]"
|
||||
},
|
||||
{
|
||||
"url": "208.png",
|
||||
"alt": "[眨眉]"
|
||||
},
|
||||
{
|
||||
"url": "209.png",
|
||||
"alt": "[闭眼]"
|
||||
},
|
||||
{
|
||||
"url": "210.png",
|
||||
"alt": "[鄙视]"
|
||||
},
|
||||
{
|
||||
"url": "211.png",
|
||||
"alt": "[阴暗]"
|
||||
},
|
||||
{
|
||||
"url": "212.png",
|
||||
"alt": "[小鬼]"
|
||||
},
|
||||
{
|
||||
"url": "213.png",
|
||||
"alt": "[爱心1]"
|
||||
},
|
||||
{
|
||||
"url": "214.png",
|
||||
"alt": "[拜佛]"
|
||||
},
|
||||
{
|
||||
"url": "215.png",
|
||||
"alt": "[力量]"
|
||||
},
|
||||
{
|
||||
"url": "216.png",
|
||||
"alt": "[金钱]"
|
||||
},
|
||||
{
|
||||
"url": "217.png",
|
||||
"alt": "[蛋糕]"
|
||||
},
|
||||
{
|
||||
"url": "218.png",
|
||||
"alt": "[彩带]"
|
||||
},
|
||||
{
|
||||
"url": "219.png",
|
||||
"alt": "[礼物1]"
|
||||
}
|
||||
]
|
||||
]
|
||||
const emojiList = [{
|
||||
"url": "100.gif",
|
||||
"alt": "[微笑]"
|
||||
},
|
||||
{
|
||||
"url": "101.gif",
|
||||
"alt": "[伤心]"
|
||||
},
|
||||
{
|
||||
"url": "102.gif",
|
||||
"alt": "[美女]"
|
||||
},
|
||||
{
|
||||
"url": "103.gif",
|
||||
"alt": "[发呆]"
|
||||
},
|
||||
{
|
||||
"url": "104.gif",
|
||||
"alt": "[墨镜]"
|
||||
},
|
||||
{
|
||||
"url": "105.gif",
|
||||
"alt": "[哭]"
|
||||
},
|
||||
{
|
||||
"url": "106.gif",
|
||||
"alt": "[羞]"
|
||||
},
|
||||
{
|
||||
"url": "107.gif",
|
||||
"alt": "[哑]"
|
||||
},
|
||||
{
|
||||
"url": "108.gif",
|
||||
"alt": "[睡]"
|
||||
},
|
||||
{
|
||||
"url": "109.gif",
|
||||
"alt": "[大哭]"
|
||||
},
|
||||
{
|
||||
"url": "110.gif",
|
||||
"alt": "[囧]"
|
||||
},
|
||||
{
|
||||
"url": "111.gif",
|
||||
"alt": "[怒]"
|
||||
},
|
||||
{
|
||||
"url": "112.gif",
|
||||
"alt": "[调皮]"
|
||||
},
|
||||
{
|
||||
"url": "113.gif",
|
||||
"alt": "[呲牙]"
|
||||
},
|
||||
{
|
||||
"url": "114.gif",
|
||||
"alt": "[惊讶]"
|
||||
},
|
||||
{
|
||||
"url": "115.gif",
|
||||
"alt": "[难过]"
|
||||
},
|
||||
{
|
||||
"url": "116.gif",
|
||||
"alt": "[酷]"
|
||||
},
|
||||
{
|
||||
"url": "117.gif",
|
||||
"alt": "[汗]"
|
||||
},
|
||||
{
|
||||
"url": "118.gif",
|
||||
"alt": "[抓狂]"
|
||||
},
|
||||
{
|
||||
"url": "119.gif",
|
||||
"alt": "[吐]"
|
||||
},
|
||||
{
|
||||
"url": "120.gif",
|
||||
"alt": "[笑]"
|
||||
},
|
||||
{
|
||||
"url": "121.gif",
|
||||
"alt": "[快乐]"
|
||||
},
|
||||
{
|
||||
"url": "122.gif",
|
||||
"alt": "[疑惑]"
|
||||
},
|
||||
{
|
||||
"url": "123.gif",
|
||||
"alt": "[傲]"
|
||||
},
|
||||
{
|
||||
"url": "124.gif",
|
||||
"alt": "[饿]"
|
||||
},
|
||||
{
|
||||
"url": "125.gif",
|
||||
"alt": "[累]"
|
||||
},
|
||||
{
|
||||
"url": "126.gif",
|
||||
"alt": "[惊恐]"
|
||||
},
|
||||
{
|
||||
"url": "127.gif",
|
||||
"alt": "[汗1]"
|
||||
},
|
||||
{
|
||||
"url": "128.gif",
|
||||
"alt": "[高兴]"
|
||||
},
|
||||
{
|
||||
"url": "129.gif",
|
||||
"alt": "[闲]"
|
||||
},
|
||||
{
|
||||
"url": "130.gif",
|
||||
"alt": "[努力]"
|
||||
},
|
||||
{
|
||||
"url": "131.gif",
|
||||
"alt": "[骂]"
|
||||
},
|
||||
{
|
||||
"url": "132.gif",
|
||||
"alt": "[疑问]"
|
||||
},
|
||||
{
|
||||
"url": "133.gif",
|
||||
"alt": "[秘密]"
|
||||
},
|
||||
{
|
||||
"url": "134.gif",
|
||||
"alt": "[乱]"
|
||||
},
|
||||
{
|
||||
"url": "135.gif",
|
||||
"alt": "[疯]"
|
||||
},
|
||||
{
|
||||
"url": "136.gif",
|
||||
"alt": "[哀]"
|
||||
},
|
||||
{
|
||||
"url": "137.gif",
|
||||
"alt": "[鬼]"
|
||||
},
|
||||
{
|
||||
"url": "138.gif",
|
||||
"alt": "[打击]"
|
||||
},
|
||||
{
|
||||
"url": "139.gif",
|
||||
"alt": "[bye]"
|
||||
},
|
||||
{
|
||||
"url": "140.gif",
|
||||
"alt": "[擦汗]"
|
||||
},
|
||||
{
|
||||
"url": "141.gif",
|
||||
"alt": "[抠]"
|
||||
},
|
||||
{
|
||||
"url": "142.gif",
|
||||
"alt": "[鼓掌]"
|
||||
},
|
||||
{
|
||||
"url": "143.gif",
|
||||
"alt": "[糟糕]"
|
||||
},
|
||||
{
|
||||
"url": "144.gif",
|
||||
"alt": "[恶搞]"
|
||||
},
|
||||
{
|
||||
"url": "145.gif",
|
||||
"alt": "[左哼哼]"
|
||||
},
|
||||
{
|
||||
"url": "146.gif",
|
||||
"alt": "[右哼哼]"
|
||||
},
|
||||
{
|
||||
"url": "147.gif",
|
||||
"alt": "[哈欠]"
|
||||
},
|
||||
{
|
||||
"url": "148.gif",
|
||||
"alt": "[看]"
|
||||
},
|
||||
{
|
||||
"url": "149.gif",
|
||||
"alt": "[委屈]"
|
||||
},
|
||||
{
|
||||
"url": "150.gif",
|
||||
"alt": "[难过1]"
|
||||
},
|
||||
{
|
||||
"url": "151.gif",
|
||||
"alt": "[坏]"
|
||||
},
|
||||
{
|
||||
"url": "152.gif",
|
||||
"alt": "[亲]"
|
||||
},
|
||||
{
|
||||
"url": "153.gif",
|
||||
"alt": "[吓]"
|
||||
},
|
||||
{
|
||||
"url": "154.gif",
|
||||
"alt": "[可怜]"
|
||||
},
|
||||
{
|
||||
"url": "155.gif",
|
||||
"alt": "[刀]"
|
||||
},
|
||||
{
|
||||
"url": "156.gif",
|
||||
"alt": "[水果]"
|
||||
},
|
||||
{
|
||||
"url": "157.gif",
|
||||
"alt": "[酒]"
|
||||
},
|
||||
{
|
||||
"url": "158.gif",
|
||||
"alt": "[篮球]"
|
||||
},
|
||||
{
|
||||
"url": "159.gif",
|
||||
"alt": "[乒乓]"
|
||||
},
|
||||
{
|
||||
"url": "160.gif",
|
||||
"alt": "[咖啡]"
|
||||
},
|
||||
{
|
||||
"url": "161.gif",
|
||||
"alt": "[美食]"
|
||||
},
|
||||
{
|
||||
"url": "162.gif",
|
||||
"alt": "[动物]"
|
||||
},
|
||||
{
|
||||
"url": "163.gif",
|
||||
"alt": "[鲜花]"
|
||||
},
|
||||
{
|
||||
"url": "164.gif",
|
||||
"alt": "[枯]"
|
||||
},
|
||||
{
|
||||
"url": "165.gif",
|
||||
"alt": "[唇]"
|
||||
},
|
||||
{
|
||||
"url": "166.gif",
|
||||
"alt": "[爱]"
|
||||
},
|
||||
{
|
||||
"url": "167.gif",
|
||||
"alt": "[分手]"
|
||||
},
|
||||
{
|
||||
"url": "168.gif",
|
||||
"alt": "[生日]"
|
||||
},
|
||||
{
|
||||
"url": "169.gif",
|
||||
"alt": "[电]"
|
||||
},
|
||||
{
|
||||
"url": "170.gif",
|
||||
"alt": "[炸弹]"
|
||||
},
|
||||
{
|
||||
"url": "171.gif",
|
||||
"alt": "[刀子]"
|
||||
},
|
||||
{
|
||||
"url": "172.gif",
|
||||
"alt": "[足球]"
|
||||
},
|
||||
{
|
||||
"url": "173.gif",
|
||||
"alt": "[瓢虫]"
|
||||
},
|
||||
{
|
||||
"url": "174.gif",
|
||||
"alt": "[翔]"
|
||||
},
|
||||
{
|
||||
"url": "175.gif",
|
||||
"alt": "[月亮]"
|
||||
},
|
||||
{
|
||||
"url": "176.gif",
|
||||
"alt": "[太阳]"
|
||||
},
|
||||
{
|
||||
"url": "177.gif",
|
||||
"alt": "[礼物]"
|
||||
},
|
||||
{
|
||||
"url": "178.gif",
|
||||
"alt": "[抱抱]"
|
||||
},
|
||||
{
|
||||
"url": "179.gif",
|
||||
"alt": "[拇指]"
|
||||
},
|
||||
{
|
||||
"url": "180.gif",
|
||||
"alt": "[贬低]"
|
||||
},
|
||||
{
|
||||
"url": "181.gif",
|
||||
"alt": "[握手]"
|
||||
},
|
||||
{
|
||||
"url": "182.gif",
|
||||
"alt": "[剪刀手]"
|
||||
},
|
||||
{
|
||||
"url": "183.gif",
|
||||
"alt": "[抱拳]"
|
||||
},
|
||||
{
|
||||
"url": "184.gif",
|
||||
"alt": "[勾引]"
|
||||
},
|
||||
{
|
||||
"url": "185.gif",
|
||||
"alt": "[拳头]"
|
||||
},
|
||||
{
|
||||
"url": "186.gif",
|
||||
"alt": "[小拇指]"
|
||||
},
|
||||
{
|
||||
"url": "187.gif",
|
||||
"alt": "[拇指八]"
|
||||
},
|
||||
{
|
||||
"url": "188.gif",
|
||||
"alt": "[食指]"
|
||||
},
|
||||
{
|
||||
"url": "189.gif",
|
||||
"alt": "[ok]"
|
||||
},
|
||||
{
|
||||
"url": "190.gif",
|
||||
"alt": "[情侣]"
|
||||
},
|
||||
{
|
||||
"url": "191.gif",
|
||||
"alt": "[爱心]"
|
||||
},
|
||||
{
|
||||
"url": "192.gif",
|
||||
"alt": "[蹦哒]"
|
||||
},
|
||||
{
|
||||
"url": "193.gif",
|
||||
"alt": "[颤抖]"
|
||||
},
|
||||
{
|
||||
"url": "194.gif",
|
||||
"alt": "[怄气]"
|
||||
},
|
||||
{
|
||||
"url": "195.gif",
|
||||
"alt": "[跳舞]"
|
||||
},
|
||||
{
|
||||
"url": "196.gif",
|
||||
"alt": "[拜]"
|
||||
},
|
||||
{
|
||||
"url": "197.gif",
|
||||
"alt": "[背着]"
|
||||
},
|
||||
{
|
||||
"url": "198.gif",
|
||||
"alt": "[伸手]"
|
||||
},
|
||||
{
|
||||
"url": "199.gif",
|
||||
"alt": "[耍帅]"
|
||||
},
|
||||
{
|
||||
"url": "200.png",
|
||||
"alt": "[微笑1]"
|
||||
},
|
||||
{
|
||||
"url": "201.png",
|
||||
"alt": "[生病]"
|
||||
},
|
||||
{
|
||||
"url": "202.png",
|
||||
"alt": "[哭泣]"
|
||||
},
|
||||
{
|
||||
"url": "203.png",
|
||||
"alt": "[吐舌]"
|
||||
},
|
||||
{
|
||||
"url": "204.png",
|
||||
"alt": "[迷糊]"
|
||||
},
|
||||
{
|
||||
"url": "205.png",
|
||||
"alt": "[瞪眼]"
|
||||
},
|
||||
{
|
||||
"url": "206.png",
|
||||
"alt": "[恐怖]"
|
||||
},
|
||||
{
|
||||
"url": "207.png",
|
||||
"alt": "[忧愁]"
|
||||
},
|
||||
{
|
||||
"url": "208.png",
|
||||
"alt": "[眨眉]"
|
||||
},
|
||||
{
|
||||
"url": "209.png",
|
||||
"alt": "[闭眼]"
|
||||
},
|
||||
{
|
||||
"url": "210.png",
|
||||
"alt": "[鄙视]"
|
||||
},
|
||||
{
|
||||
"url": "211.png",
|
||||
"alt": "[阴暗]"
|
||||
},
|
||||
{
|
||||
"url": "212.png",
|
||||
"alt": "[小鬼]"
|
||||
},
|
||||
{
|
||||
"url": "213.png",
|
||||
"alt": "[爱心1]"
|
||||
},
|
||||
{
|
||||
"url": "214.png",
|
||||
"alt": "[拜佛]"
|
||||
},
|
||||
{
|
||||
"url": "215.png",
|
||||
"alt": "[力量]"
|
||||
},
|
||||
{
|
||||
"url": "216.png",
|
||||
"alt": "[金钱]"
|
||||
},
|
||||
{
|
||||
"url": "217.png",
|
||||
"alt": "[蛋糕]"
|
||||
},
|
||||
{
|
||||
"url": "218.png",
|
||||
"alt": "[彩带]"
|
||||
},
|
||||
{
|
||||
"url": "219.png",
|
||||
"alt": "[礼物1]"
|
||||
}
|
||||
]
|
||||
|
||||
const req = import.meta.glob('../static/emoji/*.*', {
|
||||
eager: true
|
||||
})
|
||||
|
||||
const imagesMap = {}
|
||||
|
||||
// 循环所有图片,将图片名设置成键,值为导入该图片的地址
|
||||
for (const key in req) {
|
||||
// let name = key.split('/').slice(-1)[0].split('.')[0]
|
||||
let name = key.split('/').slice(-1)[0].replace('.', '')
|
||||
// 抛出图片大对象后,文件页面直接引入后将图片的具体名称作为属性就能导入该图片
|
||||
imagesMap[name] = req[key].default
|
||||
}
|
||||
|
||||
export {
|
||||
emojiList,
|
||||
emojiTree,
|
||||
imagesMap
|
||||
}
|
||||
525
pages/workFlow/flowBefore/flowForm.vue
Normal file
525
pages/workFlow/flowBefore/flowForm.vue
Normal file
@@ -0,0 +1,525 @@
|
||||
<template>
|
||||
<view class="flowBefore-v">
|
||||
<div class="flow-urgent-value" :style="{'background-color':flowUrgentList[selectflowUrgent.extra].bgColor}"
|
||||
@click="handleShowSelect">
|
||||
<span :style="{'color':flowUrgentList[selectflowUrgent.extra].color}">{{selectflowUrgent.label}}</span>
|
||||
</div>
|
||||
<view class="flowBefore-box">
|
||||
<view class="scroll-v" scroll-y>
|
||||
<childForm ref="child" :config="config" @eventReceiver="eventReceiver" v-if="!loading"
|
||||
@setBtnLoad="setBtnLoad" :key="childFormKey" />
|
||||
<ErrorForm @submitErrorForm="submitErrorForm" ref="ErrorForm" />
|
||||
<RecordTimeList :progressList="progressList" :taskInfo="taskInfo" v-if="getShowExtraPanel"
|
||||
:commentList="commentList" :taskId="config.opType==0 ? config.id:config.taskId" ref="RecordTimeList"
|
||||
:hasComment="hasComment">
|
||||
</RecordTimeList>
|
||||
</view>
|
||||
</view>
|
||||
<u-select :list="flowUrgentList" v-model="showFlowUrgent" @confirm="seltConfirm"
|
||||
:default-value="defaultValue" />
|
||||
<uni-popup mode="bottom" ref="reduceApprover" background-color='#fff'>
|
||||
<view class="approverContent">
|
||||
<view class="notice-warp">
|
||||
<view class="u-flex close-icon">
|
||||
<u-icon name="close" size="32" @click="hideReduceApprover" color="#93969c"></u-icon>
|
||||
</view>
|
||||
<view class="search-box">
|
||||
<u-search :placeholder="$t('app.apply.pleaseKeyword')" v-model="keyword" height="72"
|
||||
:show-action="false" @change="getAddSignUserList" bg-color="#f0f2f6" shape="square" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="popup">
|
||||
<view v-for="(item, index) in signUserIdList" :key="index" v-if="signUserIdList.length"
|
||||
class="list-box">
|
||||
<view class="u-flex item">
|
||||
<view class="u-flex" style="flex: 1;">
|
||||
<u-avatar :src="define.baseURL+item.headIcon"></u-avatar>
|
||||
<view class="u-m-l-10">
|
||||
<view>{{item.fullName}}</view>
|
||||
<view>{{item.organize}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="" @click="deleteReduce(item.id)">
|
||||
<u-icon name="trash" size="32" color="#93969c"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<JnpfEmpty v-else />
|
||||
</view>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
Create,
|
||||
Update
|
||||
} from '@/api/workFlow/workFlowForm'
|
||||
import {
|
||||
FlowTask,
|
||||
Audit,
|
||||
Reject,
|
||||
Transfer,
|
||||
saveAudit,
|
||||
saveAssist,
|
||||
AddSignUserIdList,
|
||||
ReduceApprover,
|
||||
Candidates,
|
||||
RejectList,
|
||||
FreeApprover,
|
||||
launchRecall,
|
||||
auditRecall,
|
||||
cancel,
|
||||
SignFor,
|
||||
Transact,
|
||||
sendBack,
|
||||
back,
|
||||
Assist
|
||||
} from '@/api/workFlow/flowBefore'
|
||||
import {
|
||||
Revoke,
|
||||
Press
|
||||
} from '@/api/workFlow/flowLaunch'
|
||||
import {
|
||||
createModel,
|
||||
updateModel
|
||||
} from '@/api/apply/visualDev'
|
||||
import {
|
||||
createComment
|
||||
} from '@/api/workFlow/flowEngine'
|
||||
import {
|
||||
checkInfo
|
||||
} from '@/api/message.js'
|
||||
import resources from '@/libs/resources.js'
|
||||
import childForm from './form.vue'
|
||||
import RecordTimeList from '../components/RecordTimeList'
|
||||
import ErrorForm from '../components/ErrorForm'
|
||||
import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
|
||||
import {
|
||||
useUserStore
|
||||
} from '@/store/modules/user'
|
||||
export default {
|
||||
mixins: [MescrollMixin],
|
||||
components: {
|
||||
childForm,
|
||||
ErrorForm,
|
||||
RecordTimeList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
childFormKey: +new Date(),
|
||||
signUserIdList: [],
|
||||
keyword: '',
|
||||
formLoding: false,
|
||||
loading: false,
|
||||
taskInfo: {},
|
||||
btnInfo: [],
|
||||
nodeList: [],
|
||||
show: false,
|
||||
config: {},
|
||||
formData: {},
|
||||
recordList: [],
|
||||
properties: {},
|
||||
flowStatus: '',
|
||||
commentList: [],
|
||||
processId: "",
|
||||
title: '',
|
||||
selectflowUrgent: {
|
||||
extra: '0',
|
||||
label: '普通',
|
||||
value: 1,
|
||||
},
|
||||
showFlowUrgent: false,
|
||||
defaultValue: [0],
|
||||
flowUrgent: 1,
|
||||
flowUrgentList: [{
|
||||
label: '普通',
|
||||
color: '#409EFF',
|
||||
bgColor: '#e5f3fe',
|
||||
value: 1,
|
||||
extra: '0'
|
||||
},
|
||||
{
|
||||
label: '重要',
|
||||
color: '#E6A23C',
|
||||
bgColor: '#fef6e5',
|
||||
value: 2,
|
||||
extra: '1'
|
||||
},
|
||||
{
|
||||
label: '紧急',
|
||||
color: '#F56C6C',
|
||||
bgColor: '#fee5e5',
|
||||
value: 3,
|
||||
extra: '2'
|
||||
},
|
||||
],
|
||||
hasComment: false,
|
||||
progressList: []
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
baseURL() {
|
||||
return this.define.baseURL
|
||||
},
|
||||
getShowExtraPanel() {
|
||||
return this.config.opType != '-1' && !this.loading
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(data) {
|
||||
this.config = data
|
||||
this.config.origin = 'scan'
|
||||
this.processId = this.config.id
|
||||
/**
|
||||
* opType
|
||||
* -1 - 我发起的新建/编辑
|
||||
* 0 - 我发起的详情
|
||||
* 1 - 待办事宜
|
||||
* 2 - 已办事宜
|
||||
* 3 - 抄送事宜
|
||||
*/
|
||||
this.getBeforeInfo(this.config)
|
||||
},
|
||||
handlePreviewImage(url) {
|
||||
// #ifdef H5
|
||||
uni.previewImage({
|
||||
urls: [url],
|
||||
current: url,
|
||||
success: () => {},
|
||||
fail: () => {
|
||||
uni.showToast({
|
||||
title: '预览图片失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
// #endif
|
||||
},
|
||||
getBeforeInfo() {
|
||||
let config = this.config;
|
||||
this.formData.flowId = config.flowId;
|
||||
this.loading = true;
|
||||
const query = {
|
||||
flowId: config.flowId, // 流程大Id
|
||||
opType: config.opType == 2 ? 3 : config.opType, //特殊:待办点击开始办理需要跳到在办页面
|
||||
};
|
||||
if (config.opType != "-1" && config.opType != '0') query.operatorId = config.operatorId;
|
||||
FlowTask(config?.taskId || config?.id || 0, query).then((res) => {
|
||||
this.flowInfo = res.data.flowInfo || {};
|
||||
this.formInfo = res.data.formInfo || {};
|
||||
this.taskInfo = res.data.taskInfo || {};
|
||||
this.btnInfo = res.data.btnInfo || [];
|
||||
this.progressList = res.data.progressList || [];
|
||||
config.formOperates = res.data.formOperates || [];
|
||||
config.formType = this.formInfo.type
|
||||
const fullName =
|
||||
config.opType == "-1" ?
|
||||
this.flowInfo.fullName :
|
||||
this.taskInfo.fullName;
|
||||
config.fullName = fullName;
|
||||
this.title = this.flowInfo.fullName;
|
||||
this.thisStep = this.taskInfo.thisStep || "";
|
||||
if (config.status !== 0 && config.status !== 3) {
|
||||
this.title = this.thisStep ?
|
||||
config.fullName + "/" + this.thisStep :
|
||||
config.fullName;
|
||||
}
|
||||
config.type = this.flowInfo.type;
|
||||
config.draftData = res.data.draftData || null;
|
||||
config.formData = res.data.formData || {};
|
||||
config.formEnCode = this.formInfo.enCode;
|
||||
this.nodeList = res.data.nodeList || [];
|
||||
this.properties = res.data.nodeProperties || {};
|
||||
this.recordList = (res.data.recordList || []).reverse();
|
||||
config.formConf = this.formInfo.formData;
|
||||
this.hasComment = this.flowInfo.flowNodes.global.hasComment;
|
||||
this.loading = false;
|
||||
this.formLoding = true;
|
||||
uni.setNavigationBarTitle({
|
||||
title: this.flowInfo.fullName,
|
||||
});
|
||||
if (config.formRecords && config.title) {
|
||||
uni.setNavigationBarTitle({
|
||||
title: config.title,
|
||||
});
|
||||
}
|
||||
this.flowUrgent = this.taskInfo.flowUrgent || 1;
|
||||
const getSelectInfo = () => {
|
||||
var obj = {
|
||||
value: this.flowUrgent,
|
||||
extra: "0",
|
||||
label: "普通",
|
||||
};
|
||||
this.flowUrgentList.forEach((e, i) => {
|
||||
if (e.value == this.flowUrgent) {
|
||||
obj.extra = i;
|
||||
obj.label = e.label;
|
||||
}
|
||||
});
|
||||
return obj;
|
||||
};
|
||||
this.selectflowUrgent = getSelectInfo();
|
||||
|
||||
if (config.opType != "-1" && config.opType != "3") config.readonly =
|
||||
true;
|
||||
config.formOperates = [];
|
||||
if (config.opType == 0) {
|
||||
if (this.properties && this.properties && this.properties.formOperates) config
|
||||
.formOperates = this.properties.formOperates || [];
|
||||
} else {
|
||||
config.formOperates = res.data.formOperates || [];
|
||||
}
|
||||
setTimeout(() => {
|
||||
this.$nextTick(() => {
|
||||
if (!this.$refs.child || !this.$refs.child.$refs.form) {
|
||||
uni.showToast({
|
||||
title: "暂无此流程表单",
|
||||
icon: "none",
|
||||
complete: () => {
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 1500);
|
||||
},
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.$refs.child.$refs.form.init(config)
|
||||
});
|
||||
}, 100);
|
||||
this.config = config;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background-color: #f0f2f6;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.flow-urgent-value {
|
||||
position: fixed;
|
||||
top: var(--window-top);
|
||||
width: 100%;
|
||||
z-index: 99;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 60rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.flowBefore-v {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-top: 60rpx;
|
||||
|
||||
|
||||
|
||||
.workFlowTitle {
|
||||
width: 100%;
|
||||
padding: 0 32rpx 32rpx 32rpx;
|
||||
background-color: #FFFFFF;
|
||||
font-size: 32rpx;
|
||||
font-weight: 700;
|
||||
white-space: pre-wrap;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.flowBefore-box {
|
||||
height: 100%;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
padding-bottom: 3.3rem;
|
||||
|
||||
.sticky-box {
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.swiper-box {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.swiper-item {
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.scroll-v {
|
||||
flex: 1;
|
||||
/* #ifndef MP-ALIPAY */
|
||||
flex-direction: column;
|
||||
/* #endif */
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.flowStatus {
|
||||
position: absolute;
|
||||
top: 90rpx;
|
||||
right: 0;
|
||||
border: 0;
|
||||
margin: 20rpx;
|
||||
opacity: 0.7;
|
||||
z-index: 999;
|
||||
|
||||
image {
|
||||
width: 200rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.discuss_btn {
|
||||
background-color: #fff;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
// height: 88rpx;
|
||||
// box-shadow: 0 -2rpx 8rpx #e1e5ec;
|
||||
z-index: 20;
|
||||
|
||||
.custom-style {
|
||||
background-color: #2979ff;
|
||||
color: #FFFFFF;
|
||||
width: 100%;
|
||||
border-radius: 0 !important;
|
||||
|
||||
&::after {
|
||||
border: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 24rpx;
|
||||
text-align: center;
|
||||
|
||||
.confrim-btn {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
.send {
|
||||
flex: 1;
|
||||
background-color: #2979ff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.cancel {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.approverContent {
|
||||
height: 1000rpx;
|
||||
overflow-y: scroll;
|
||||
padding: 0 20rpx;
|
||||
|
||||
.notice-warp {
|
||||
top: 0;
|
||||
height: 5.6rem;
|
||||
|
||||
.close-icon {
|
||||
height: 60rpx;
|
||||
padding: 10rpx 20rpx;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
}
|
||||
|
||||
.popup {
|
||||
margin-top: 5.65rem;
|
||||
|
||||
.list-box {
|
||||
.item {
|
||||
border-bottom: 1rpx solid #f0f0f0;
|
||||
padding: 20rpx 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nodeList-v {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.record-v {
|
||||
padding: 32rpx 32rpx 10rpx;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
|
||||
.discuss_box {
|
||||
.discuss_list {
|
||||
|
||||
.time_button {
|
||||
padding-left: 110rpx;
|
||||
margin-top: 20rpx;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
|
||||
.discuss_txt {
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
|
||||
.discuss_txt_left {
|
||||
.uName {
|
||||
margin-left: 8px;
|
||||
font-size: 14px;
|
||||
font-family: PingFang SC;
|
||||
line-height: 17rpx;
|
||||
|
||||
.replyText {
|
||||
margin-left: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.del {
|
||||
color: red;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.reply {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.discuss_content {
|
||||
font-size: 12px;
|
||||
padding-left: 70rpx;
|
||||
|
||||
.img_box {
|
||||
margin: 40rpx 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.comment-creator-time {
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
font-family: PingFang SC;
|
||||
line-height: 17rpx;
|
||||
}
|
||||
|
||||
.comment-content-color {
|
||||
color: #606266;
|
||||
}
|
||||
|
||||
.comment-header-color {
|
||||
color: #303133;
|
||||
}
|
||||
</style>
|
||||
48
pages/workFlow/flowBefore/form.vue
Normal file
48
pages/workFlow/flowBefore/form.vue
Normal file
@@ -0,0 +1,48 @@
|
||||
<template>
|
||||
<view>
|
||||
<template v-if="config.formType == 1">
|
||||
<dynamicForm ref="form" @eventReceiver="eventReceiver" @setBtnLoad="setBtnLoad" :config="config" />
|
||||
</template>
|
||||
<template v-if="config.formType == 2">
|
||||
<crmOrder ref="form" @eventReceiver="eventReceiver" v-if="config.formEnCode==='crmOrder'"
|
||||
:config="config" />
|
||||
<leaveApply ref="form" @eventReceiver="eventReceiver" v-if="config.formEnCode==='leaveApply'"
|
||||
:config="config" />
|
||||
<salesOrder ref="form" @eventReceiver="eventReceiver" v-if="config.formEnCode==='salesOrder'"
|
||||
:config="config" />
|
||||
<revokeApply ref="form" @eventReceiver="eventReceiver" v-if="config.formEnCode==='revoke'"
|
||||
:config="config" />
|
||||
</template>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import dynamicForm from '@/pages/workFlow/workFlowForm/dynamicForm'
|
||||
import salesOrder from '@/pages/workFlow/workFlowForm/salesOrder'
|
||||
import leaveApply from '@/pages/workFlow/workFlowForm/leaveApply'
|
||||
import crmOrder from '@/pages/workFlow/workFlowForm/crmOrder'
|
||||
import revokeApply from '@/pages/workFlow/workFlowForm/revokeApply'
|
||||
export default {
|
||||
components: {
|
||||
crmOrder,
|
||||
dynamicForm,
|
||||
leaveApply,
|
||||
salesOrder,
|
||||
revokeApply
|
||||
},
|
||||
props: {
|
||||
config: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
eventReceiver(formData, eventType) {
|
||||
this.$emit('eventReceiver', formData, eventType)
|
||||
},
|
||||
setBtnLoad(val) {
|
||||
this.$emit('setBtnLoad', val)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
1538
pages/workFlow/flowBefore/index.vue
Normal file
1538
pages/workFlow/flowBefore/index.vue
Normal file
File diff suppressed because it is too large
Load Diff
58
pages/workFlow/flowBefore/logError.vue
Normal file
58
pages/workFlow/flowBefore/logError.vue
Normal file
@@ -0,0 +1,58 @@
|
||||
<template>
|
||||
<view class="logError-v u-flex-col">
|
||||
<view class="error-prompt">
|
||||
<view class="error-prompt-title u-p-l-20 u-p-r-20">
|
||||
错误提示:
|
||||
</view>
|
||||
<view class="u-p-20 error-content">
|
||||
{{config.errorTip}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="error-prompt">
|
||||
<view class="error-prompt-title u-p-l-20 u-p-r-20">
|
||||
错误内容:
|
||||
</view>
|
||||
<view class="u-p-20 error-content">
|
||||
{{config.errorData}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
config: {},
|
||||
errorData: [],
|
||||
errorTip: {}
|
||||
}
|
||||
},
|
||||
onLoad(e) {
|
||||
this.config = JSON.parse(this.jnpf.base64.decode(e.data))
|
||||
this.errorData = JSON.parse(this.config.errorData)
|
||||
this.errorTip = JSON.parse(this.config.errorTip)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.logError-v {
|
||||
width: 100vw;
|
||||
|
||||
.error-prompt {
|
||||
.error-prompt-title {
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
background-color: #edeff6;
|
||||
line-height: 80rpx;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.error-content {
|
||||
word-break: break-word;
|
||||
line-height: 50rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
519
pages/workFlow/flowBefore/revokeForm.vue
Normal file
519
pages/workFlow/flowBefore/revokeForm.vue
Normal file
@@ -0,0 +1,519 @@
|
||||
<template>
|
||||
<view class="flowBefore-v">
|
||||
<div class="flow-urgent-value" :style="{'background-color':flowUrgentList[selectflowUrgent.extra].bgColor}"
|
||||
@click="handleShowSelect">
|
||||
<span :style="{'color':flowUrgentList[selectflowUrgent.extra].color}">{{selectflowUrgent.label}}</span>
|
||||
</div>
|
||||
<view class="flowBefore-box">
|
||||
<view class="scroll-v" scroll-y>
|
||||
<childForm ref="child" :config="config" v-if="!loading" :key="childFormKey" />
|
||||
<RecordTimeList :progressList="progressList" :taskInfo="taskInfo" v-if="!loading"
|
||||
:commentList="commentList" :taskId="config.id" ref="RecordTimeList" @handleReply="goWriteComment"
|
||||
:hasComment="hasComment" :dataLog="dataLog" :opType="config.opType" :formID="config?.formData?.id"
|
||||
:dataLogList="dataLogList">
|
||||
</RecordTimeList>
|
||||
</view>
|
||||
</view>
|
||||
<flowBtn :actionList="actionList" :btnInfo="btnInfo" :opType="config.opType" :hideSaveBtn="config.hideSaveBtn"
|
||||
@handleBtn="handleBtn" :btnLoading="btnLoading" v-if="formLoding" :rightBtnList="rightBtnList"
|
||||
:saveBtnText="properties.saveBtnText" :hasComment="hasComment"
|
||||
:hasSignFor="flowInfo?.flowNodes?.global?.hasSignFor">
|
||||
</flowBtn>
|
||||
<u-select :list="flowUrgentList" v-model="showFlowUrgent" @confirm="seltConfirm"
|
||||
:default-value="defaultValue" />
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
getDelegateUser
|
||||
} from '@/api/workFlow/entrust.js'
|
||||
import {
|
||||
Create,
|
||||
Update
|
||||
} from '@/api/workFlow/workFlowForm'
|
||||
import {
|
||||
FlowTask,
|
||||
} from '@/api/workFlow/flowBefore'
|
||||
import {
|
||||
Revoke,
|
||||
Press
|
||||
} from '@/api/workFlow/flowLaunch'
|
||||
import {
|
||||
getOnlineLog
|
||||
} from '@/api/apply/visualDev'
|
||||
import {
|
||||
createComment
|
||||
} from '@/api/workFlow/flowEngine'
|
||||
import resources from '@/libs/resources.js'
|
||||
import childForm from './form.vue'
|
||||
import flowBtn from '../components/flowBtn'
|
||||
import RecordTimeList from '../components/RecordTimeList'
|
||||
import {
|
||||
useUserStore
|
||||
} from '@/store/modules/user'
|
||||
const sysConfigInfo = uni.getStorageSync('sysConfigInfo')
|
||||
export default {
|
||||
components: {
|
||||
childForm,
|
||||
flowBtn,
|
||||
RecordTimeList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dataLogList: [],
|
||||
dataLog: false,
|
||||
childFormKey: +new Date(),
|
||||
formLoding: false,
|
||||
loading: false,
|
||||
taskInfo: {},
|
||||
btnInfo: [],
|
||||
show: false,
|
||||
config: {},
|
||||
formData: {},
|
||||
properties: {},
|
||||
btnLoading: false,
|
||||
commentList: [],
|
||||
title: '',
|
||||
selectflowUrgent: {
|
||||
extra: '0',
|
||||
label: '普通',
|
||||
value: 1,
|
||||
},
|
||||
showFlowUrgent: false,
|
||||
defaultValue: [0],
|
||||
flowUrgent: 1,
|
||||
flowUrgentList: [{
|
||||
label: '普通',
|
||||
color: '#409EFF',
|
||||
bgColor: '#e5f3fe',
|
||||
value: 1,
|
||||
extra: '0'
|
||||
},
|
||||
{
|
||||
label: '重要',
|
||||
color: '#E6A23C',
|
||||
bgColor: '#fef6e5',
|
||||
value: 2,
|
||||
extra: '1'
|
||||
},
|
||||
{
|
||||
label: '紧急',
|
||||
color: '#F56C6C',
|
||||
bgColor: '#fee5e5',
|
||||
value: 3,
|
||||
extra: '2'
|
||||
},
|
||||
],
|
||||
actionList: [],
|
||||
hasComment: false,
|
||||
progressList: [],
|
||||
rightBtnList: [],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
baseURL() {
|
||||
return this.define.baseURL
|
||||
},
|
||||
getShowExtraPanel() {
|
||||
return this.dataLog && this.config?.formData?.id || (this.config.opType != '-1' && !this.loading)
|
||||
}
|
||||
},
|
||||
onUnload() {
|
||||
uni.$off('comment')
|
||||
},
|
||||
onShow() {
|
||||
uni.$on('comment', data => {
|
||||
this.commentList = [];
|
||||
this.current = 0;
|
||||
this.addComment(data)
|
||||
})
|
||||
},
|
||||
onLoad(e) {
|
||||
this.config = JSON.parse(this.jnpf.base64.decode(e.config))
|
||||
this.$nextTick(() => {
|
||||
this.getBeforeInfo(this.config)
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
addComment(query) {
|
||||
query.taskId = this.config.id
|
||||
createComment(query).then(res => {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.RecordTimeList.change(1)
|
||||
})
|
||||
})
|
||||
},
|
||||
//流程按钮事件
|
||||
handleBtn(type, dataForm = {}) {
|
||||
if ('comment'.includes(type)) this.goWriteComment();
|
||||
},
|
||||
goWriteComment(replyId) {
|
||||
let data = {
|
||||
taskId: this.config.id
|
||||
};
|
||||
if (replyId) data.replyId = replyId;
|
||||
data = encodeURIComponent(JSON.stringify(data));
|
||||
uni.navigateTo({
|
||||
url: '/pages/workFlow/comment/index?data=' + data
|
||||
})
|
||||
},
|
||||
getBeforeInfo() {
|
||||
let config = this.config;
|
||||
this.formData.flowId = config.flowId;
|
||||
this.loading = true;
|
||||
const query = {
|
||||
flowId: config.flowId, // 流程大Id
|
||||
opType: config.opType == 2 ? 3 : config.opType, //特殊:待办点击开始办理需要跳到在办页面
|
||||
};
|
||||
if (config.opType != "-1" && config.opType != '0') query.operatorId = config.operatorId;
|
||||
FlowTask(config?.taskId || config?.id || 0, query).then((res) => {
|
||||
this.flowInfo = res.data.flowInfo || {};
|
||||
this.properties = res.data.nodeProperties || {};
|
||||
this.formInfo = res.data.formInfo || {};
|
||||
this.taskInfo = res.data.taskInfo || {};
|
||||
this.btnInfo = res.data.btnInfo || [];
|
||||
this.progressList = res.data.progressList || [];
|
||||
config.formOperates = res.data.formOperates || [];
|
||||
config.formType = this.formInfo.type
|
||||
const fullName =
|
||||
config.opType == "-1" ?
|
||||
this.flowInfo.fullName :
|
||||
this.taskInfo.fullName;
|
||||
config.fullName = fullName;
|
||||
this.title = this.flowInfo.fullName;
|
||||
this.thisStep = this.taskInfo.thisStep || "";
|
||||
if (config.status !== 0 && config.status !== 3) {
|
||||
this.title = this.thisStep ?
|
||||
config.fullName + "/" + this.thisStep :
|
||||
config.fullName;
|
||||
}
|
||||
config.type = this.flowInfo.type;
|
||||
config.draftData = res.data.draftData || null;
|
||||
config.formData = res.data.formData || {};
|
||||
let dataId = config.formData.id
|
||||
config.formEnCode = this.formInfo.enCode;
|
||||
this.recordList = (res.data.recordList || []).reverse();
|
||||
config.formConf = this.formInfo.formData;
|
||||
if (config.formConf) {
|
||||
this.dataLog = JSON.parse(config.formConf).dataLog
|
||||
if (this.dataLog) this.getOnlineLog(dataId)
|
||||
}
|
||||
this.hasComment = this.flowInfo.flowNodes.global.hasComment;
|
||||
this.formLoding = true;
|
||||
// 设置表单标题
|
||||
uni.setNavigationBarTitle({
|
||||
title: this.config.formEnCode === "revoke" ? `${this.flowInfo.fullName}撤销申请` : this
|
||||
.flowInfo.fullName,
|
||||
});
|
||||
if (config.formRecords && config.title) {
|
||||
uni.setNavigationBarTitle({
|
||||
title: config.title,
|
||||
});
|
||||
}
|
||||
this.flowUrgent = this.taskInfo.flowUrgent || 1;
|
||||
const getSelectInfo = () => {
|
||||
var obj = {
|
||||
value: this.flowUrgent,
|
||||
extra: "0",
|
||||
label: "普通",
|
||||
};
|
||||
this.flowUrgentList.forEach((e, i) => {
|
||||
if (e.value == this.flowUrgent) {
|
||||
obj.extra = i;
|
||||
obj.label = e.label;
|
||||
}
|
||||
});
|
||||
return obj;
|
||||
};
|
||||
this.selectflowUrgent = getSelectInfo();
|
||||
if (config.opType != "-1" && config.opType != "3") config.readonly =
|
||||
true;
|
||||
config.formOperates = [];
|
||||
if (config.opType == 0) {
|
||||
if (this.properties && this.properties && this.properties.formOperates) config
|
||||
.formOperates = this.properties.formOperates || [];
|
||||
} else {
|
||||
config.formOperates = res.data.formOperates || [];
|
||||
}
|
||||
setTimeout(() => {
|
||||
this.$nextTick(() => {
|
||||
if (!this.$refs.child || !this.$refs.child.$refs.form) {
|
||||
uni.showToast({
|
||||
title: "暂无此流程表单",
|
||||
icon: "none",
|
||||
complete: () => {
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 1500);
|
||||
},
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.$refs.child.$refs.form.init(config)
|
||||
});
|
||||
}, 100);
|
||||
this.loading = false;
|
||||
this.config = config;
|
||||
});
|
||||
},
|
||||
//获取修改记录
|
||||
getOnlineLog(dataId) {
|
||||
let modelId = this.formInfo.id
|
||||
getOnlineLog(modelId, dataId).then(res => {
|
||||
let list = res.data.list || []
|
||||
//倒序转正
|
||||
this.dataLogList = [...list].reverse()
|
||||
})
|
||||
},
|
||||
initBtnList() {
|
||||
const list = [];
|
||||
const properties = this.properties;
|
||||
const btnInfo = this.btnInfo;
|
||||
// 流程审批
|
||||
if (this.hasComment && this.config.opType != '-1' && this.rightBtnList.length) list.push({
|
||||
id: 'comment',
|
||||
text: '评论'
|
||||
});
|
||||
this.actionList = list;
|
||||
},
|
||||
// 撤销操作
|
||||
|
||||
handleShowSelect() {
|
||||
if (this.config.opType == '-1') this.showFlowUrgent = true
|
||||
},
|
||||
seltConfirm(e) {
|
||||
this.flowUrgent = e[0].value
|
||||
this.selectflowUrgent = e[0]
|
||||
this.defaultValue = [this.flowUrgentList.findIndex(item => item.value === e[0].value)] || [0]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background-color: #f0f2f6;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.flow-urgent-value {
|
||||
position: fixed;
|
||||
top: var(--window-top);
|
||||
width: 100%;
|
||||
z-index: 99;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 60rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.flowBefore-v {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-top: 60rpx;
|
||||
|
||||
|
||||
|
||||
.workFlowTitle {
|
||||
width: 100%;
|
||||
padding: 0 32rpx 32rpx 32rpx;
|
||||
background-color: #FFFFFF;
|
||||
font-size: 32rpx;
|
||||
font-weight: 700;
|
||||
white-space: pre-wrap;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.flowBefore-box {
|
||||
height: 100%;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
padding-bottom: 3.3rem;
|
||||
|
||||
.sticky-box {
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.swiper-box {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.swiper-item {
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.scroll-v {
|
||||
flex: 1;
|
||||
/* #ifndef MP-ALIPAY */
|
||||
flex-direction: column;
|
||||
/* #endif */
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.flowStatus {
|
||||
position: absolute;
|
||||
top: 90rpx;
|
||||
right: 0;
|
||||
border: 0;
|
||||
margin: 20rpx;
|
||||
opacity: 0.7;
|
||||
z-index: 999;
|
||||
|
||||
image {
|
||||
width: 200rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.discuss_btn {
|
||||
background-color: #fff;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
// height: 88rpx;
|
||||
// box-shadow: 0 -2rpx 8rpx #e1e5ec;
|
||||
z-index: 20;
|
||||
|
||||
.custom-style {
|
||||
background-color: #2979ff;
|
||||
color: #FFFFFF;
|
||||
width: 100%;
|
||||
border-radius: 0 !important;
|
||||
|
||||
&::after {
|
||||
border: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 24rpx;
|
||||
text-align: center;
|
||||
|
||||
.confrim-btn {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
.send {
|
||||
flex: 1;
|
||||
background-color: #2979ff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.cancel {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.approverContent {
|
||||
height: 1000rpx;
|
||||
overflow-y: scroll;
|
||||
padding: 0 20rpx;
|
||||
|
||||
.notice-warp {
|
||||
top: 0;
|
||||
height: 5.6rem;
|
||||
|
||||
.close-icon {
|
||||
height: 60rpx;
|
||||
padding: 10rpx 20rpx;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
}
|
||||
|
||||
.popup {
|
||||
margin-top: 5.65rem;
|
||||
|
||||
.list-box {
|
||||
.item {
|
||||
border-bottom: 1rpx solid #f0f0f0;
|
||||
padding: 20rpx 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nodeList-v {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.record-v {
|
||||
padding: 32rpx 32rpx 10rpx;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
|
||||
.discuss_box {
|
||||
.discuss_list {
|
||||
|
||||
.time_button {
|
||||
padding-left: 110rpx;
|
||||
margin-top: 20rpx;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
|
||||
.discuss_txt {
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
|
||||
.discuss_txt_left {
|
||||
.uName {
|
||||
margin-left: 8px;
|
||||
font-size: 14px;
|
||||
font-family: PingFang SC;
|
||||
line-height: 17rpx;
|
||||
|
||||
.replyText {
|
||||
margin-left: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.del {
|
||||
color: red;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.reply {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.discuss_content {
|
||||
font-size: 12px;
|
||||
padding-left: 70rpx;
|
||||
|
||||
.img_box {
|
||||
margin: 40rpx 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.comment-creator-time {
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
font-family: PingFang SC;
|
||||
line-height: 17rpx;
|
||||
}
|
||||
|
||||
.comment-content-color {
|
||||
color: #606266;
|
||||
}
|
||||
|
||||
.comment-header-color {
|
||||
color: #303133;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user