commit
335900be6a
@ -0,0 +1,7 @@
|
||||
node_modules
|
||||
.DS_Store
|
||||
.history
|
||||
/.idea/
|
||||
unpackage
|
||||
hbuilderx
|
||||
.hbuilderx
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,95 @@
|
||||
const Base64 = {
|
||||
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
|
||||
encode: function(e) {
|
||||
var t = "";
|
||||
var n, r, i, s, o, u, a;
|
||||
var f = 0;
|
||||
e = Base64._utf8_encode(e);
|
||||
while (f < e.length) {
|
||||
n = e.charCodeAt(f++);
|
||||
r = e.charCodeAt(f++);
|
||||
i = e.charCodeAt(f++);
|
||||
s = n >> 2;
|
||||
o = (n & 3) << 4 | r >> 4;
|
||||
u = (r & 15) << 2 | i >> 6;
|
||||
a = i & 63;
|
||||
if (isNaN(r)) {
|
||||
u = a = 64
|
||||
} else if (isNaN(i)) {
|
||||
a = 64
|
||||
}
|
||||
t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a)
|
||||
}
|
||||
return t
|
||||
},
|
||||
decode: function(e) {
|
||||
var t = "";
|
||||
var n, r, i;
|
||||
var s, o, u, a;
|
||||
var f = 0;
|
||||
e = e.replace(/[^A-Za-z0-9+/=]/g, "");
|
||||
while (f < e.length) {
|
||||
s = this._keyStr.indexOf(e.charAt(f++));
|
||||
o = this._keyStr.indexOf(e.charAt(f++));
|
||||
u = this._keyStr.indexOf(e.charAt(f++));
|
||||
a = this._keyStr.indexOf(e.charAt(f++));
|
||||
n = s << 2 | o >> 4;
|
||||
r = (o & 15) << 4 | u >> 2;
|
||||
i = (u & 3) << 6 | a;
|
||||
t = t + String.fromCharCode(n);
|
||||
if (u != 64) {
|
||||
t = t + String.fromCharCode(r)
|
||||
}
|
||||
if (a != 64) {
|
||||
t = t + String.fromCharCode(i)
|
||||
}
|
||||
}
|
||||
t = Base64._utf8_decode(t);
|
||||
return t
|
||||
},
|
||||
_utf8_encode: function(e) {
|
||||
e = e.replace(/rn/g, "n");
|
||||
var t = "";
|
||||
for (var n = 0; n < e.length; n++) {
|
||||
var r = e.charCodeAt(n);
|
||||
if (r < 128) {
|
||||
t += String.fromCharCode(r)
|
||||
} else if (r > 127 && r < 2048) {
|
||||
t += String.fromCharCode(r >> 6 | 192);
|
||||
t += String.fromCharCode(r & 63 | 128)
|
||||
} else {
|
||||
t += String.fromCharCode(r >> 12 | 224);
|
||||
t += String.fromCharCode(r >> 6 & 63 | 128);
|
||||
t += String.fromCharCode(r & 63 | 128)
|
||||
}
|
||||
}
|
||||
return t
|
||||
},
|
||||
_utf8_decode: function(e) {
|
||||
var t = "";
|
||||
var n = 0;
|
||||
var r = 0;
|
||||
var c1 =0;
|
||||
var c2 =0;
|
||||
var c3 =0;
|
||||
while (n < e.length) {
|
||||
r = e.charCodeAt(n);
|
||||
if (r < 128) {
|
||||
t += String.fromCharCode(r);
|
||||
n++
|
||||
} else if (r > 191 && r < 224) {
|
||||
c2 = e.charCodeAt(n + 1);
|
||||
t += String.fromCharCode((r & 31) << 6 | c2 & 63);
|
||||
n += 2
|
||||
} else {
|
||||
c2 = e.charCodeAt(n + 1);
|
||||
c3 = e.charCodeAt(n + 2);
|
||||
t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
|
||||
n += 3
|
||||
}
|
||||
}
|
||||
return t
|
||||
}
|
||||
}
|
||||
|
||||
export default Base64
|
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,222 @@
|
||||
export default[
|
||||
{
|
||||
"name": "综合管理",
|
||||
"foods": [
|
||||
{
|
||||
"name": "人员资质",
|
||||
"key": "人员资质",
|
||||
"icon": "../../static/images/zhgl/ryzz.jpg",
|
||||
"cat": 10
|
||||
},
|
||||
{
|
||||
"name": "设备信息",
|
||||
"key": "设备信息",
|
||||
"icon": "../../static/images/zhgl/sbxx.jpg",
|
||||
"cat": 10
|
||||
},
|
||||
{
|
||||
"name": "设备维修",
|
||||
"key": "设备维修",
|
||||
"icon": "../../static/images/zhgl/sbwx.jpg",
|
||||
"cat": 10
|
||||
},
|
||||
{
|
||||
"name": "巡查记录",
|
||||
"key": "巡查记录",
|
||||
"icon": "../../static/images/zhgl/xcjl.png",
|
||||
"cat": 10
|
||||
},
|
||||
{
|
||||
"name": "隐患上报",
|
||||
"key": "隐患上报",
|
||||
"icon": "../../static/images/zhgl/yhsb.png",
|
||||
"cat": 10
|
||||
},
|
||||
{
|
||||
"name": "硬件报修",
|
||||
"key": "硬件报修",
|
||||
"icon": "../../static/images/zhgl/yjbx.png",
|
||||
"cat": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "生产管控",
|
||||
"foods": [
|
||||
{
|
||||
"name": "图纸接收",
|
||||
"key": "图纸接收",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 6
|
||||
},
|
||||
{
|
||||
"name": "涂装接收",
|
||||
"key": "涂装接收",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 6
|
||||
},
|
||||
{
|
||||
"name": "入库接收",
|
||||
"key": "入库接收",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 6
|
||||
},
|
||||
{
|
||||
"name": "设备运行",
|
||||
"key": "设备运行",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 6
|
||||
},
|
||||
{
|
||||
"name": "结构反馈",
|
||||
"key": "结构反馈",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 6
|
||||
},
|
||||
{
|
||||
"name": "镀锌反馈",
|
||||
"key": "镀锌反馈",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 6
|
||||
},
|
||||
{
|
||||
"name": "下料工序",
|
||||
"key": "下料工序",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "弯曲工序",
|
||||
"key": "弯曲工序",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "平台工序",
|
||||
"key": "平台工序",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "焊接工序",
|
||||
"key": "焊接工序",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "清理工序",
|
||||
"key": "清理工序",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
},
|
||||
|
||||
{
|
||||
"name": "工时统计",
|
||||
"key": "眉妆",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "处理接收",
|
||||
"key": "处理接收",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "处理完工",
|
||||
"key": "处理完工",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "处理完工(部件)",
|
||||
"key": "处理完工(部件)",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "集配入库",
|
||||
"key": "集配入库",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "集配入库(部件)",
|
||||
"key": "集配入库(部件)",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "问题反馈",
|
||||
"key": "问题反馈",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "配送交接",
|
||||
"foods": [
|
||||
{
|
||||
"name": "配送接收",
|
||||
"key": "配送接收",
|
||||
"icon": "../../static/images/psjj/btn_jj01.jpg",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "需求计划",
|
||||
"key": "需求计划",
|
||||
"icon": "../../static/images/psjj/btn_jj01.jpg",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "配送计划",
|
||||
"key": "配送计划",
|
||||
"icon": "../../static/images/psjj/btn_jj01.jpg",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "问题跟踪",
|
||||
"key": "问题跟踪",
|
||||
"icon": "../../static/images/psjj/btn_jj02.jpg",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "信息反馈",
|
||||
"key": "信息反馈",
|
||||
"icon": "../../static/images/psjj/btn_jj03.jpg",
|
||||
"cat": 3
|
||||
},
|
||||
|
||||
{
|
||||
"name": "舾装日报",
|
||||
"key": "舾装日报",
|
||||
"icon": "../../static/images/psjj/btn_jj04.jpg",
|
||||
"cat": 3
|
||||
},
|
||||
{
|
||||
"name": "特殊管件",
|
||||
"key": "特殊管件",
|
||||
"icon": "../../static/images/psjj/btn_jj05.jpg",
|
||||
"cat": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "网上办公",
|
||||
"foods": [
|
||||
{
|
||||
"name": "公务用车",
|
||||
"key": "公务用车",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 4
|
||||
},
|
||||
{
|
||||
"name": "船东食堂",
|
||||
"key": "船东食堂",
|
||||
"icon": "../../static/images/btn_scgk.png",
|
||||
"cat": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
]
|
||||
@ -0,0 +1,86 @@
|
||||
/* #ifndef APP-NVUE */
|
||||
view,
|
||||
text {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
/* #endif */
|
||||
|
||||
/* start--演示页面使用的统一样式--start */
|
||||
.u-demo {
|
||||
padding: 25px 20px;
|
||||
}
|
||||
|
||||
.u-demo-wrap {
|
||||
border-width: 1px;
|
||||
border-color: #ddd;
|
||||
border-style: dashed;
|
||||
background-color: rgb(250, 250, 250);
|
||||
padding: 20px 10px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.u-demo-area {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.u-no-demo-here {
|
||||
color: $u-tips-color;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.u-demo-result-line {
|
||||
border-width: 1px;
|
||||
border-color: #ddd;
|
||||
border-style: dashed;
|
||||
padding: 5px 20px;
|
||||
margin-top: 30px;
|
||||
border-radius: 5px;
|
||||
background-color: rgb(240, 240, 240);
|
||||
color: $u-content-color;
|
||||
font-size: 16px;
|
||||
/* #ifndef APP-NVUE */
|
||||
word-break: break-word;
|
||||
display: inline-block;
|
||||
/* #endif */
|
||||
text-align: left;
|
||||
|
||||
}
|
||||
|
||||
.u-demo-title,
|
||||
.u-config-title {
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.u-config-item {
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
.u-config-title {
|
||||
margin-top: 20px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.u-item-title {
|
||||
position: relative;
|
||||
font-size: 15px;
|
||||
padding-left: 8px;
|
||||
line-height: 1;
|
||||
margin-bottom: 11px;
|
||||
}
|
||||
|
||||
.u-item-title:after {
|
||||
position: absolute;
|
||||
width: 4px;
|
||||
top: -1px;
|
||||
height: 16px;
|
||||
/* #ifndef APP-NVUE */
|
||||
content: '';
|
||||
/* #endif */
|
||||
left: 0;
|
||||
border-radius: 10px;
|
||||
background-color: $u-content-color;
|
||||
}
|
||||
/* end--演示页面使用的统一样式--end */
|
||||
@ -0,0 +1,585 @@
|
||||
module.exports = {
|
||||
list: [{
|
||||
"letter": "A",
|
||||
"data": [{
|
||||
"name": "阿拉斯加",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "阿拉斯加ABA13588889999"
|
||||
},
|
||||
{
|
||||
"name": "阿克苏",
|
||||
"mobile": "0551-4386721",
|
||||
"keyword": "阿克苏AKESU0551-4386721"
|
||||
},
|
||||
{
|
||||
"name": "阿拉善",
|
||||
"mobile": "4008009100",
|
||||
"keyword": "阿拉善ALASHAN4008009100"
|
||||
},
|
||||
{
|
||||
"name": "阿勒泰",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "阿勒泰ALETAI13588889999"
|
||||
},
|
||||
{
|
||||
"name": "阿里",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "阿里ALI13588889999"
|
||||
},
|
||||
{
|
||||
"name": "安阳",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "13588889999安阳ANYANG"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "B",
|
||||
"data": [{
|
||||
"name": "白城",
|
||||
"mobile": "该主子没有留电话~",
|
||||
"keyword": "白城BAICHENG"
|
||||
},
|
||||
{
|
||||
"name": "白山",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "白山BAISHAN13588889999"
|
||||
},
|
||||
{
|
||||
"name": "白银",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "白银BAIYIN13588889999"
|
||||
},
|
||||
{
|
||||
"name": "保定",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "保定BAODING13588889999"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "C",
|
||||
"data": [{
|
||||
"name": "沧州",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "沧州CANGZHOU13588889999"
|
||||
},
|
||||
{
|
||||
"name": "长春",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "长春CHANGCHUN13588889999"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "D",
|
||||
"data": [{
|
||||
"name": "大理",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "大理DALI13588889999"
|
||||
},
|
||||
{
|
||||
"name": "大连",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "大连DALIAN13588889999"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "E",
|
||||
"data": [{
|
||||
"name": "鄂尔多斯",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "鄂尔多斯EERDUOSI13588889999"
|
||||
},
|
||||
{
|
||||
"name": "恩施",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "恩施ENSHI13588889999"
|
||||
},
|
||||
{
|
||||
"name": "鄂州",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "鄂州EZHOU13588889999"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "F",
|
||||
"data": [{
|
||||
"name": "防城港",
|
||||
"mobile": "该主子没有留电话~",
|
||||
"keyword": "防城港FANGCHENGGANG"
|
||||
},
|
||||
{
|
||||
"name": "抚顺",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "抚顺FUSHUN13588889999"
|
||||
},
|
||||
{
|
||||
"name": "阜新",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "阜新FUXIN13588889999"
|
||||
},
|
||||
{
|
||||
"name": "阜阳",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "阜阳FUYANG13588889999"
|
||||
},
|
||||
{
|
||||
"name": "抚州",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "抚州FUZHOU13588889999"
|
||||
},
|
||||
{
|
||||
"name": "福州",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "福州FUZHOU13588889999"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "G",
|
||||
"data": [{
|
||||
"name": "甘南",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "甘南GANNAN13588889999"
|
||||
},
|
||||
{
|
||||
"name": "赣州",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "赣州GANZHOU13588889999"
|
||||
},
|
||||
{
|
||||
"name": "甘孜",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "甘孜GANZI13588889999"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "H",
|
||||
"data": [{
|
||||
"name": "哈尔滨",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "哈尔滨HAERBIN13588889999"
|
||||
},
|
||||
{
|
||||
"name": "海北",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "海北HAIBEI13588889999"
|
||||
},
|
||||
{
|
||||
"name": "海东",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "海东HAIDONG13588889999"
|
||||
},
|
||||
{
|
||||
"name": "海口",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "海口HAIKOU13588889999"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "I",
|
||||
"data": [{
|
||||
"name": "ice",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "佳木斯JIAMUSI13588889999"
|
||||
}]
|
||||
},
|
||||
{
|
||||
"letter": "J",
|
||||
"data": [{
|
||||
"name": "佳木斯",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "佳木斯JIAMUSI13588889999"
|
||||
},
|
||||
{
|
||||
"name": "吉安",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "吉安JIAN13588889999"
|
||||
},
|
||||
{
|
||||
"name": "江门",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "江门JIANGMEN13588889999"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "K",
|
||||
"data": [{
|
||||
"name": "开封",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "开封KAIFENG13588889999"
|
||||
},
|
||||
{
|
||||
"name": "喀什",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "喀什KASHI13588889999"
|
||||
},
|
||||
{
|
||||
"name": "克拉玛依",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "克拉玛依KELAMAYI13588889999"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "L",
|
||||
"data": [{
|
||||
"name": "来宾",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "来宾LAIBIN13588889999"
|
||||
},
|
||||
{
|
||||
"name": "兰州",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "兰州LANZHOU13588889999"
|
||||
},
|
||||
{
|
||||
"name": "拉萨",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "拉萨LASA13588889999"
|
||||
},
|
||||
{
|
||||
"name": "乐山",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "乐山LESHAN13588889999"
|
||||
},
|
||||
{
|
||||
"name": "凉山",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "凉山LIANGSHAN13588889999"
|
||||
},
|
||||
{
|
||||
"name": "连云港",
|
||||
"mobile": "13588889999",
|
||||
"keyword": "连云港LIANYUNGANG13588889999"
|
||||
},
|
||||
{
|
||||
"name": "聊城",
|
||||
"mobile": "18322223333",
|
||||
"keyword": "聊城LIAOCHENG18322223333"
|
||||
},
|
||||
{
|
||||
"name": "辽阳",
|
||||
"mobile": "18322223333",
|
||||
"keyword": "辽阳LIAOYANG18322223333"
|
||||
},
|
||||
{
|
||||
"name": "辽源",
|
||||
"mobile": "18322223333",
|
||||
"keyword": "辽源LIAOYUAN18322223333"
|
||||
},
|
||||
{
|
||||
"name": "丽江",
|
||||
"mobile": "18322223333",
|
||||
"keyword": "丽江LIJIANG18322223333"
|
||||
},
|
||||
{
|
||||
"name": "临沧",
|
||||
"mobile": "18322223333",
|
||||
"keyword": "临沧LINCANG18322223333"
|
||||
},
|
||||
{
|
||||
"name": "临汾",
|
||||
"mobile": "18322223333",
|
||||
"keyword": "临汾LINFEN18322223333"
|
||||
},
|
||||
{
|
||||
"name": "临夏",
|
||||
"mobile": "18322223333",
|
||||
"keyword": "临夏LINXIA18322223333"
|
||||
},
|
||||
{
|
||||
"name": "临沂",
|
||||
"mobile": "18322223333",
|
||||
"keyword": "临沂LINYI18322223333"
|
||||
},
|
||||
{
|
||||
"name": "林芝",
|
||||
"mobile": "18322223333",
|
||||
"keyword": "林芝LINZHI18322223333"
|
||||
},
|
||||
{
|
||||
"name": "丽水",
|
||||
"mobile": "18322223333",
|
||||
"keyword": "丽水LISHUI18322223333"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "M",
|
||||
"data": [{
|
||||
"name": "眉山",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "眉山MEISHAN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "梅州",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "梅州MEIZHOU15544448888"
|
||||
},
|
||||
{
|
||||
"name": "绵阳",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "绵阳MIANYANG15544448888"
|
||||
},
|
||||
{
|
||||
"name": "牡丹江",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "牡丹江MUDANJIANG15544448888"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "N",
|
||||
"data": [{
|
||||
"name": "南昌",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "南昌NANCHANG15544448888"
|
||||
},
|
||||
{
|
||||
"name": "南充",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "南充NANCHONG15544448888"
|
||||
},
|
||||
{
|
||||
"name": "南京",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "南京NANJING15544448888"
|
||||
},
|
||||
{
|
||||
"name": "南宁",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "南宁NANNING15544448888"
|
||||
},
|
||||
{
|
||||
"name": "南平",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "南平NANPING15544448888"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "O",
|
||||
"data": [{
|
||||
"name": "欧阳",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "欧阳ouyang15544448888"
|
||||
}]
|
||||
},
|
||||
{
|
||||
"letter": "P",
|
||||
"data": [{
|
||||
"name": "盘锦",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "盘锦PANJIN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "攀枝花",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "攀枝花PANZHIHUA15544448888"
|
||||
},
|
||||
{
|
||||
"name": "平顶山",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "平顶山PINGDINGSHAN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "平凉",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "平凉PINGLIANG15544448888"
|
||||
},
|
||||
{
|
||||
"name": "萍乡",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "萍乡PINGXIANG15544448888"
|
||||
},
|
||||
{
|
||||
"name": "普洱",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "普洱PUER15544448888"
|
||||
},
|
||||
{
|
||||
"name": "莆田",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "莆田PUTIAN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "濮阳",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "濮阳PUYANG15544448888"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "Q",
|
||||
"data": [{
|
||||
"name": "黔东南",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "黔东南QIANDONGNAN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "黔南",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "黔南QIANNAN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "黔西南",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "黔西南QIANXINAN15544448888"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "R",
|
||||
"data": [{
|
||||
"name": "日喀则",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "日喀则RIKAZE15544448888"
|
||||
},
|
||||
{
|
||||
"name": "日照",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "日照RIZHAO15544448888"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "S",
|
||||
"data": [{
|
||||
"name": "三门峡",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "三门峡SANMENXIA15544448888"
|
||||
},
|
||||
{
|
||||
"name": "三明",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "三明SANMING15544448888"
|
||||
},
|
||||
{
|
||||
"name": "三沙",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "三沙SANSHA15544448888"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "T",
|
||||
"data": [{
|
||||
"name": "塔城",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "塔城TACHENG15544448888"
|
||||
},
|
||||
{
|
||||
"name": "漯河",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "漯河TAHE15544448888"
|
||||
},
|
||||
{
|
||||
"name": "泰安",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "泰安TAIAN15544448888"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "W",
|
||||
"data": [{
|
||||
"name": "潍坊",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "潍坊WEIFANG15544448888"
|
||||
},
|
||||
{
|
||||
"name": "威海",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "威海WEIHAI15544448888"
|
||||
},
|
||||
{
|
||||
"name": "渭南",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "渭南WEINAN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "文山",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "文山WENSHAN15544448888"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "X",
|
||||
"data": [{
|
||||
"name": "厦门",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "厦门XIAMEN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "西安",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "西安XIAN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "湘潭",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "湘潭XIANGTAN15544448888"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "Y",
|
||||
"data": [{
|
||||
"name": "雅安",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "雅安YAAN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "延安",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "延安YANAN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "延边",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "延边YANBIAN15544448888"
|
||||
},
|
||||
{
|
||||
"name": "盐城",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "盐城YANCHENG15544448888"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "Z",
|
||||
"data": [{
|
||||
"name": "枣庄",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "枣庄ZAOZHUANG15544448888"
|
||||
},
|
||||
{
|
||||
"name": "张家界",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "张家界ZHANGJIAJIE15544448888"
|
||||
},
|
||||
{
|
||||
"name": "张家口",
|
||||
"mobile": "15544448888",
|
||||
"keyword": "张家口ZHANGJIAKOU15544448888"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"letter": "#",
|
||||
"data": [{
|
||||
"name": "其他.",
|
||||
"mobile": "16666666666",
|
||||
"keyword": "echo16666666666"
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,96 @@
|
||||
|
||||
var utils = {
|
||||
//时间格式化
|
||||
formatDate: (value) => {
|
||||
let date = null;
|
||||
if (!value) {
|
||||
return date;
|
||||
}
|
||||
if (value.constructor == Date && !isNaN(value.getTime())) {
|
||||
date = value;
|
||||
}
|
||||
else if (value.constructor == String || value.constructor == Number) {
|
||||
date = new Date(value);
|
||||
}
|
||||
else {
|
||||
throw "格式化日期时,传入的数据格式不正确。";
|
||||
}
|
||||
let y = date.getFullYear();
|
||||
let MM = date.getMonth() + 1;
|
||||
MM = MM < 10 ? ('0' + MM) : MM;
|
||||
let d = date.getDate();
|
||||
d = d < 10 ? ('0' + d) : d;
|
||||
let h = date.getHours();
|
||||
h = h < 10 ? ('0' + h) : h;
|
||||
let m = date.getMinutes();
|
||||
m = m < 10 ? ('0' + m) : m;
|
||||
let s = date.getSeconds();
|
||||
s = s < 10 ? ('0' + s) : s;
|
||||
return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;
|
||||
},
|
||||
format: (value) => {
|
||||
let date = null;
|
||||
if (!value) {
|
||||
return date;
|
||||
}
|
||||
if (value.constructor == Date && !isNaN(value.getTime())) {
|
||||
date = value;
|
||||
}
|
||||
else if (value.constructor == String || value.constructor == Number) {
|
||||
date = new Date(value);
|
||||
}
|
||||
else {
|
||||
throw "格式化日期时,传入的数据格式不正确。";
|
||||
}
|
||||
let y = date.getFullYear();
|
||||
let MM = date.getMonth() + 1;
|
||||
MM = MM < 10 ? ('0' + MM) : MM;
|
||||
let d = date.getDate();
|
||||
d = d < 10 ? ('0' + d) : d;
|
||||
|
||||
return y + '/' + MM + '/' + d;
|
||||
},
|
||||
|
||||
//字典数据根据key显示文字
|
||||
dataFilter:(arr, val='')=> {
|
||||
let name = "";
|
||||
arr.forEach((item) => {
|
||||
if (item.key == val) {
|
||||
name = item.name;
|
||||
}else{
|
||||
name='--'
|
||||
}
|
||||
});
|
||||
return name;
|
||||
},
|
||||
|
||||
//列表转换为树格式
|
||||
listtoTree:(data)=>{
|
||||
let result = [];
|
||||
if (!Array.isArray(data)) {
|
||||
return result;
|
||||
}
|
||||
data.forEach((item) => {
|
||||
delete item.children;
|
||||
});
|
||||
let map = {};
|
||||
data.forEach((item) => {
|
||||
map[item.id] = item;
|
||||
});
|
||||
data.forEach((item) => {
|
||||
let parent = map[item.parentId];
|
||||
if (parent) {
|
||||
(parent.children || (parent.children = [])).push(item);
|
||||
} else {
|
||||
result.push(item);
|
||||
}
|
||||
});
|
||||
return result;
|
||||
},
|
||||
getRemoteFile: (path) => {
|
||||
return `http://218.24.131.92:18080/images/${path}`;
|
||||
//return `https://xzapp.runpengsoft.com/images/${path}`;
|
||||
}
|
||||
}
|
||||
// 格式化日期
|
||||
export default utils;
|
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,157 @@
|
||||
.tki-tree-mask {
|
||||
position: fixed;
|
||||
top: 0rpx;
|
||||
right: 0rpx;
|
||||
bottom: 0rpx;
|
||||
left: 0rpx;
|
||||
z-index: 9998;
|
||||
background-color: rgba(0, 0, 0, 0.6);
|
||||
opacity: 0;
|
||||
transition: all 0.3s ease;
|
||||
visibility: hidden;
|
||||
}
|
||||
.tki-tree-mask.show {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
.tki-tree-cnt {
|
||||
position: fixed;
|
||||
top: 0rpx;
|
||||
right: 0rpx;
|
||||
bottom: 0rpx;
|
||||
left: 0rpx;
|
||||
z-index: 9999;
|
||||
top: 225rpx;
|
||||
transition: all 0.3s ease;
|
||||
transform: translateY(100%);
|
||||
}
|
||||
.tki-tree-cnt.show {
|
||||
transform: translateY(0);
|
||||
}
|
||||
.tki-tree-bar {
|
||||
background-color: #fff;
|
||||
height: 100rpx;
|
||||
padding-left: 20rpx;
|
||||
padding-right: 20rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
border-bottom-width: 2rpx !important;
|
||||
border-bottom-style: solid;
|
||||
border-bottom-color: #f5f5f5;
|
||||
font-size: 32rpx;
|
||||
color: #757575;
|
||||
line-height: 1;
|
||||
}
|
||||
.tki-tree-bar-confirm {
|
||||
color: #347ACF;
|
||||
}
|
||||
.tki-tree-view {
|
||||
position: absolute;
|
||||
top: 0rpx;
|
||||
right: 0rpx;
|
||||
bottom: 0rpx;
|
||||
left: 0rpx;
|
||||
top: 100rpx;
|
||||
background-color: #fff;
|
||||
padding-top: 20rpx;
|
||||
padding-right: 20rpx;
|
||||
padding-bottom: 20rpx;
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
.tki-tree-view-sc {
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
.tki-tree-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
color: #757575;
|
||||
line-height: 1;
|
||||
height: 0;
|
||||
opacity: 0;
|
||||
transition: 0.2s;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.tki-tree-item.show {
|
||||
height: 100rpx;
|
||||
opacity: 1;
|
||||
}
|
||||
.tki-tree-item.showchild:before {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
.tki-tree-item.last:before {
|
||||
opacity: 0;
|
||||
}
|
||||
.tki-tree-icon {
|
||||
width: 26rpx;
|
||||
height: 26rpx;
|
||||
margin-right: 8rpx;
|
||||
}
|
||||
.tki-tree-label {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
line-height: 1.2;
|
||||
word-break: break-all;
|
||||
}
|
||||
.tki-tree-check {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.tki-tree-check-yes,
|
||||
.tki-tree-check-no {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-top-left-radius: 20%;
|
||||
border-top-right-radius: 20%;
|
||||
border-bottom-right-radius: 20%;
|
||||
border-bottom-left-radius: 20%;
|
||||
border-top-width: 2rpx;
|
||||
border-left-width: 2rpx;
|
||||
border-bottom-width: 2rpx;
|
||||
border-right-width: 2rpx;
|
||||
border-style: solid;
|
||||
border-color: #347ACF;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.tki-tree-check-yes-b {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border-top-left-radius: 20%;
|
||||
border-top-right-radius: 20%;
|
||||
border-bottom-right-radius: 20%;
|
||||
border-bottom-left-radius: 20%;
|
||||
background-color: #347ACF;
|
||||
}
|
||||
.tki-tree-check .radio {
|
||||
border-top-left-radius: 50%;
|
||||
border-top-right-radius: 50%;
|
||||
border-bottom-right-radius: 50%;
|
||||
border-bottom-left-radius: 50%;
|
||||
}
|
||||
.tki-tree-check .radio .tki-tree-check-yes-b {
|
||||
border-top-left-radius: 50%;
|
||||
border-top-right-radius: 50%;
|
||||
border-bottom-right-radius: 50%;
|
||||
border-bottom-left-radius: 50%;
|
||||
}
|
||||
.hover-c {
|
||||
opacity: 0.6;
|
||||
}
|
||||
.tki-tree-bar-title{
|
||||
color:#000000;
|
||||
width: 66%;
|
||||
text-align: center;
|
||||
}
|
||||
@ -0,0 +1,426 @@
|
||||
<template>
|
||||
<view>
|
||||
<view v-for="(i,ind) in relatedContents" :key='ind'>
|
||||
<view v-if="(ind==0 && i.sort) || (ind>0 && i.sort && i.sort!=relatedContents[ind-1].sort)" style="width: 100%; font-size: 28rpx;font-weight: 600;color:#000; margin-left: 20rpx;">
|
||||
<view style="margin:24rpx 0 12rpx 0">
|
||||
<image v-if="i.isTmpFlag=='1'" :src="zdy" class="radius" style="margin-right: 8rpx;"></image>
|
||||
{{i.sort}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="checkproduct finish" >
|
||||
<view class="u-flex u-col-top u-row-between">
|
||||
<view class="u-flex u-row-between">
|
||||
<view v-if="!editContent" class="noticeBar" style="margin-right: 20rpx;" >{{i.content||i.checkContent}}</view>
|
||||
<u-input v-else v-model="i.content" type="text" class="noticeBar contentInp" placeholder="请输入检查内容" height="30" />
|
||||
</view>
|
||||
<view>
|
||||
<image v-if="editContent" :src="del" @click="delContent(ind)" class="delIcon"></image>
|
||||
<!-- <u-tag v-if="checkResult" class="tit" :text='i.checkResult==0?"无隐患":"有隐患"' border-color="#fff"
|
||||
:type="i.checkResult==0?'success':'error'" /> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="u-flex u-row-between star">
|
||||
|
||||
<view v-if="!checkResult">
|
||||
<u-radio-group v-model="i.checkResult" @change="changeRadio($event,ind)">
|
||||
<u-radio size="mini" v-for="(item, index) in checkList" :key="index" :name="item.value">
|
||||
{{item.name}}
|
||||
</u-radio>
|
||||
</u-radio-group>
|
||||
</view>
|
||||
<view v-else style="width: 200rpx;">
|
||||
<view :class="i.checkResult==0?'dangerno':'dangeryes'">
|
||||
<image v-if="i.checkResult==0" class="radius" :src="radius" width="32rpx" height="32rpx"></image>
|
||||
<image v-else class="radius" :src="radiusyes" width="38rpx" height="38rpx"></image>
|
||||
<span style="margin-left: 8rpx; margin-bottom: 8rpx;">{{i.checkResult==0?"无隐患":"有隐患"}}</span>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view style="width: 100%; text-align: right;">
|
||||
<u-button v-if="i.regionIds" size="mini" class="colorBtn" style="margin-right: 20rpx;" shape="square"
|
||||
@click="lookRegion(i.regionIds,ind)">所在区域
|
||||
</u-button>
|
||||
<u-button size="mini" :class="(i.problemDesc||i.checkResult=='1')?'colorBtnRed':''" shape="square"
|
||||
@click="(i.problemDesc||i.checkResult==1)&&problem(i.problemDesc,ind)">问题描述
|
||||
</u-button>
|
||||
<u-button size="mini" :class="(i.photoIds.length>0||!checkResult)?'colorBtn':''" style="margin-left: 20rpx;" shape="square"
|
||||
@click="(i.photoIds.length>0||!checkResult)&&lookphoto(i.photoIds,ind)">现场照片
|
||||
</u-button>
|
||||
</view>
|
||||
|
||||
<u-modal v-model="showModal" content="是否删除该检查项" show-cancel-button @confirm='modalDel'
|
||||
@cancel="showModal=false"></u-modal>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<u-popup v-model="show" z-index="1000" mode="bottom" border-radius="8" height="300rpx">
|
||||
<view class="popup">
|
||||
<view v-if="checkResult&&relatedContents[itemIndex]" >
|
||||
<u-image class="checkimg" width="200rpx" height="200rpx" v-for="(item,index) in relatedContents[itemIndex].photoList" :key="index" @tap="ViewImage1(item,index)" :data-url="index"
|
||||
:src="imgurl+`/portal/file/onlinePreviewController/v1/getFileById_${item.id}`"></u-image>
|
||||
</view>
|
||||
|
||||
<UploadFile v-else @picIds="picIds" :fileidList='fileidList'></UploadFile>
|
||||
</view>
|
||||
</u-popup>
|
||||
<u-popup v-model="showRemark" z-index="1000" mode="bottom" border-radius="8" height="200rpx">
|
||||
<view class="popup">
|
||||
|
||||
<u-input v-if="editContent" type="textarea" :value="problemDesc" @blur='blur' maxlength='30' placeholder="请填写问题描述" />
|
||||
<view style="margin-right: 20rpx;line-height: 36rpx;">{{problemDesc}}</view>
|
||||
|
||||
</view>
|
||||
</u-popup>
|
||||
<u-popup v-model="showRegion" style="z-index: 10000;" @close="close" @open="open" mode="bottom">
|
||||
<view class="popcon">
|
||||
<view class="popbtn" @tap="close">
|
||||
<u-icon name="close" size="36" color="#909399"></u-icon>
|
||||
</view>
|
||||
<view class="poptitle">
|
||||
所在区域
|
||||
</view>
|
||||
<view class="popcell" v-if="regionListNames">
|
||||
<view class="rlist" v-for="(res, index) in regionListNames" :key="index">
|
||||
<view class="rhead">
|
||||
{{res.name}}
|
||||
</view>
|
||||
<view class="rcon">
|
||||
<view class="rcell" v-for="(text, ii) in res.texts" :key="ii">
|
||||
{{text}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
<u-toast ref="uToast" />
|
||||
<u-button type="primary" v-if="!checkResult" class="submit" @click="submitTask" shape="circle">提 交</u-button>
|
||||
<view style="height:40rpx ;"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import UploadFile from "@/components/UploadFile.vue"
|
||||
export default {
|
||||
name: "myCheck",
|
||||
components: {
|
||||
UploadFile
|
||||
},
|
||||
props: ['list', 'editContent', 'checkResult'],
|
||||
data() {
|
||||
return {
|
||||
del: require("@/static/images/del.png"),
|
||||
zdy: require("@/static/images/zdy.png"),
|
||||
radius: require("@/static/images/radius.png"),
|
||||
radiusyes: require("@/static/images/radiusred.png"),
|
||||
imgurl:'',
|
||||
fileidList: [],
|
||||
showRemark: false,
|
||||
showModal: false,
|
||||
showRegion: false,
|
||||
content: {},
|
||||
relatedContents: [],
|
||||
show: false,
|
||||
showColor:false,
|
||||
desc:false,
|
||||
problemDesc: '',
|
||||
delIndex: null,
|
||||
picidlist: [],
|
||||
problemIndex: null,
|
||||
checkList: [{
|
||||
name: "无隐患",
|
||||
value: "0"
|
||||
}, {
|
||||
name: "有隐患",
|
||||
value: "1"
|
||||
}],
|
||||
itemIndex: 0,
|
||||
regionListNames:[]
|
||||
}
|
||||
|
||||
},
|
||||
watch: {
|
||||
list(val) {
|
||||
this.relatedContents = val.map(function(item) {
|
||||
if (item.photoIds&&Array.isArray(item.photoIds)) {
|
||||
item.photoIds = item.photoIds
|
||||
} else if (item.photoIds&&typeof(item.photoIds) == 'string') {
|
||||
item.photoIds = item.photoIds.split(',')
|
||||
} else {
|
||||
item.photoIds = []
|
||||
}
|
||||
item.checkResult=item.checkResult?item.checkResult:"0"
|
||||
return item;
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.imgurl=this.$u.api.imgurl;
|
||||
},
|
||||
methods: {
|
||||
lookphoto(val, index) {
|
||||
this.show = true;
|
||||
this.itemIndex = index
|
||||
if (this.relatedContents[this.itemIndex].photoIds.length > 0) {
|
||||
this.fileidList = this.relatedContents[this.itemIndex].photoIds
|
||||
}else{
|
||||
this.fileidList =[]
|
||||
}
|
||||
},
|
||||
picIds(val, i) {
|
||||
this.relatedContents[this.itemIndex].photoIds = val;
|
||||
},
|
||||
submitTask() {
|
||||
let isok = this.relatedContents.every(item => {
|
||||
item.checkResult = !item.checkResult ? '0' : item.checkResult
|
||||
return (item.checkResult == 1 && item.problemDesc) || (item.checkResult == 0)
|
||||
})
|
||||
if (!isok) {
|
||||
this.$refs.uToast.show({
|
||||
title: '有隐患时请填写问题描述',
|
||||
type: 'error',
|
||||
})
|
||||
} else {
|
||||
this.$emit('submitData', this.relatedContents)
|
||||
}
|
||||
},
|
||||
delContent(index) {
|
||||
this.delIndex = index
|
||||
this.showModal = true
|
||||
},
|
||||
changeRadio(val,ind){
|
||||
this.$forceUpdate()
|
||||
},
|
||||
ViewImage1(val,index) {
|
||||
var imgList=[];
|
||||
this.relatedContents[this.itemIndex].photoList.forEach((item,index)=>{
|
||||
imgList.push(this.imgurl+`/portal/file/onlinePreviewController/v1/getFileById_${item.id}`);
|
||||
})
|
||||
uni.previewImage({
|
||||
urls: imgList,
|
||||
current:index
|
||||
});
|
||||
},
|
||||
problem(val, index) {
|
||||
this.showRemark = true
|
||||
this.problemIndex = index
|
||||
this.problemDesc = val
|
||||
},
|
||||
lookRegion(val,index) {
|
||||
if(!this.relatedContents[index].regionListName){
|
||||
this.relatedContents[index].regionListName=[];
|
||||
// 获取区域数据
|
||||
uni.showLoading();
|
||||
var param={
|
||||
regionIds:val
|
||||
}
|
||||
this.$u.api.queryregionNameById(param).then(res => {
|
||||
uni.hideLoading();
|
||||
console.log(res)
|
||||
if(res&&res.length>0){
|
||||
var regionListName=res;
|
||||
regionListName.forEach((cell) => {
|
||||
var ii= Object.keys(cell)[0];
|
||||
var item={
|
||||
name: ii,
|
||||
texts:cell[ii]?(cell[ii]).split(','):[]
|
||||
};
|
||||
this.relatedContents[index].regionListName.push(item);
|
||||
});
|
||||
console.log(this.relatedContents[index].regionListName)
|
||||
this.regionListNames=this.relatedContents[index].regionListName;
|
||||
this.showRegion = true;
|
||||
}
|
||||
})
|
||||
}
|
||||
else{
|
||||
this.regionListNames=this.relatedContents[index].regionListName;
|
||||
this.showRegion = true;
|
||||
}
|
||||
},
|
||||
modalDel() {
|
||||
this.relatedContents.splice(this.delIndex, 1)
|
||||
this.$emit('contentData', this.relatedContents)
|
||||
},
|
||||
blur(val) {
|
||||
this.relatedContents[this.problemIndex].problemDesc = val;
|
||||
},
|
||||
close() {
|
||||
// console.log('close');
|
||||
this.showRegion=false;
|
||||
},
|
||||
open() {
|
||||
// console.log('open');
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep img{
|
||||
opacity: 1
|
||||
}
|
||||
.radius{
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
}
|
||||
.u-drawer{
|
||||
height: auto !important;
|
||||
}
|
||||
.checkimg{
|
||||
|
||||
margin-right: 20rpx;
|
||||
display: inline-block;
|
||||
|
||||
}
|
||||
.tit{
|
||||
width: 120rpx;
|
||||
margin-top: -12rpx;
|
||||
}
|
||||
.checkproduct {
|
||||
width: 710rpx;
|
||||
padding: 24rpx;
|
||||
margin-left: 20rpx;
|
||||
background: #fff;
|
||||
// height: 80rpx;
|
||||
border-radius: 8rpx;
|
||||
margin-bottom: 20rpx;
|
||||
overflow: hidden;
|
||||
image {
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
// top: -6rpx;
|
||||
}
|
||||
.noticeBar {
|
||||
// width: 450rpx;
|
||||
// margin-top: 20rpx;
|
||||
margin-bottom: 8rpx;
|
||||
font-size: 28rpx;
|
||||
color:#000;
|
||||
}
|
||||
.delIcon {
|
||||
float: right;
|
||||
}
|
||||
.dangerno{
|
||||
height: 60rpx;
|
||||
width: 150rpx;
|
||||
background: url('../static/images/nobg.png') no-repeat center center;
|
||||
background-size: 100% auto;
|
||||
font-size: 24rpx;
|
||||
color:#347ACF;
|
||||
padding: 12rpx;
|
||||
}
|
||||
.dangeryes{
|
||||
height: 60rpx;
|
||||
width: 150rpx;
|
||||
background: url('../static/images/hasbg.png') no-repeat center center;
|
||||
background-size: 100% auto;
|
||||
font-size: 24rpx;
|
||||
color:#fa3534;
|
||||
padding: 12rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.contentInp {
|
||||
margin-left: 20rpx;
|
||||
z-index: 9;
|
||||
// display: inline-block;
|
||||
// width: 300rpx;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.finish {
|
||||
// height: 180rpx;
|
||||
|
||||
.buttonList {
|
||||
margin-left: 360rpx;
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.popup {
|
||||
margin-left: 46rpx;
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
|
||||
.star {
|
||||
position: relative;
|
||||
top: 10rpx;
|
||||
// height: 166rpx;
|
||||
}
|
||||
|
||||
.colorBtn {
|
||||
color: #347ACF;
|
||||
border-color: #347ACF;
|
||||
|
||||
}
|
||||
.colorBtnRed {
|
||||
color: #fa3534;
|
||||
border-color: #fa3534;
|
||||
|
||||
}
|
||||
.submit {
|
||||
width: 710rpx;
|
||||
margin: 20rpx
|
||||
}
|
||||
.popcon{
|
||||
position: relative;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
.popbtn{
|
||||
position: absolute;
|
||||
right:20rpx;
|
||||
top:26rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
.poptitle
|
||||
{
|
||||
color:#33383C;
|
||||
font-size: 30upx;
|
||||
margin: 26rpx;
|
||||
text-align: left;
|
||||
}
|
||||
.popcell{
|
||||
padding: 20rpx;
|
||||
.rlist{
|
||||
position: relative;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
.rhead{
|
||||
width: 100%;
|
||||
height: 66rpx;
|
||||
line-height: 66rpx;
|
||||
text-align: center;
|
||||
background: url('../static/images/areabg.jpg') no-repeat center center;
|
||||
background-size: 100% auto;
|
||||
font-size: 28rpx;
|
||||
font-weight: 600;
|
||||
color:#fff;
|
||||
border-radius: 10rpx 10rpx 0 0;
|
||||
}
|
||||
.rcon{
|
||||
width: 100%;
|
||||
background-color: #f8fafc;
|
||||
padding-bottom: 20rpx;
|
||||
.rcell{
|
||||
display:inline-block;
|
||||
font-size:26rpx;
|
||||
color:#000;
|
||||
background:#fff;
|
||||
padding:10rpx 28rpx;
|
||||
height:60rpx;
|
||||
border-radius:30rpx;
|
||||
border:1rpx solid #d8dde6;
|
||||
margin-left:16rpx;
|
||||
margin-right:3rpx;
|
||||
margin-top:18rpx;
|
||||
box-shadow: 0 9rpx 19rpx 0 #DCDFE6, 0 0 17rpx 0 #DCDFE6;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,450 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<!-- 主内容区域 -->
|
||||
<scroll-view class="content" scroll-y="true">
|
||||
<!-- 托盘明细 -->
|
||||
<view class="section">
|
||||
<view class="section-header">
|
||||
<text class="section-title">托盘明细</text>
|
||||
</view>
|
||||
<!-- 托盘明细 -->
|
||||
<view class="list-container" v-if="item">
|
||||
<view class="list-item">
|
||||
<view class="item-header">
|
||||
<text class="item-title">{{ item.assemcode }}</text>
|
||||
<text class="status-badge" :class="getStatusClass(item.status)">{{item.status}}</text>
|
||||
</view>
|
||||
<view class="item-content">
|
||||
<view class="detail-row">
|
||||
<text class="label">工程编号:</text>
|
||||
<text class="value">{{ item.project }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">安装托盘表号:</text>
|
||||
<text class="value">{{ item.instno }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">制作图号:</text>
|
||||
<text class="value">{{ item.dwgno }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">分段号:</text>
|
||||
<text class="value">{{ item.section }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">规格:</text>
|
||||
<text class="value">{{ item.spec }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">材质:</text>
|
||||
<text class="value">{{ item.grd }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">数量:</text>
|
||||
<text class="value">{{ item.qty }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">重量:</text>
|
||||
<text class="value">{{ item.weight }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">表面处理:</text>
|
||||
<text class="value">{{ item.treatment }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">涂装代码:</text>
|
||||
<text class="value">{{ item.paintcode }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">状态日期:</text>
|
||||
<text class="value">{{ item.statusDate }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">制作单位:</text>
|
||||
<text class="value">{{ item.manuDept }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">处理单位:</text>
|
||||
<text class="value">{{ item.treatDept }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">配送单位:</text>
|
||||
<text class="value">{{ item.deliverDept }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">工装托盘编号:</text>
|
||||
<text class="value">{{ item.palletNo }}</text>
|
||||
</view>
|
||||
<!-- <view class="detail-row">
|
||||
<text class="label">工装托盘转运记录ID:</text>
|
||||
<text class="value">{{ item.deliveryId }}</text>
|
||||
</view> -->
|
||||
<view class="detail-row">
|
||||
<text class="label">配送单号:</text>
|
||||
<text class="value">{{ item.deliveryNo }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">配送车辆:</text>
|
||||
<text class="value">{{ item.deliveryCar }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">配送日期:</text>
|
||||
<text class="value">{{ item.deliveryDate }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">配送备注:</text>
|
||||
<text class="value">{{ item.deliveryRemark }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">需求日期:</text>
|
||||
<text class="value">{{ item.requireRate }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">需求单位代码:</text>
|
||||
<text class="value">{{ retType(item.requireDepartCode,2) }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">配送地址:</text>
|
||||
<text class="value">{{ item.requireAddress }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">接收人员:</text>
|
||||
<text class="value">{{ item.requireName }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">接收人员电话:</text>
|
||||
<text class="value">{{ item.requirePhone }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">实际接收日期:</text>
|
||||
<text class="value">{{ item.receiveDate }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">实际接收人员:</text>
|
||||
<text class="value">{{ item.receiveName }}</text>
|
||||
</view>
|
||||
<view class="detail-row">
|
||||
<text class="label">实际接收备注:</text>
|
||||
<text class="value">{{ item.receiveRemark }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</scroll-view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
pallet: {
|
||||
type: Object,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
item: null,
|
||||
depts:[],
|
||||
dicts:[],
|
||||
status:[], // 状态
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this._initDetail();
|
||||
this.getTypes();
|
||||
},
|
||||
watch: {
|
||||
pallet(data) {
|
||||
this._initDetail(data);
|
||||
},
|
||||
deep: true, // 深度监听
|
||||
immediate: true, // 初次监听即执行
|
||||
},
|
||||
methods: {
|
||||
_initDetail(pallet = this.pallet) {
|
||||
this.item=pallet;
|
||||
this.$forceUpdate();
|
||||
},
|
||||
getTypes() {
|
||||
//获取数据字典
|
||||
this.gcs=[];
|
||||
this.status=[];
|
||||
var commondata = uni.getStorageSync("commondata");
|
||||
if(commondata){
|
||||
var data = JSON.parse(commondata);
|
||||
if(data){
|
||||
this.dicts=data.dicts;
|
||||
this.depts=data.depts;
|
||||
this.dicts.forEach(cell=>{
|
||||
// console.log(cell.bmlb)
|
||||
if("TPZT"==cell.bmlb){
|
||||
// 托盘转运状态
|
||||
this.status.push(cell);
|
||||
}
|
||||
if("SYZT"==cell.bmlb){
|
||||
|
||||
// 托盘转运状态
|
||||
this.palletStatus.push(cell);
|
||||
}
|
||||
|
||||
});
|
||||
this.$forceUpdate();
|
||||
}
|
||||
}
|
||||
else{
|
||||
this.dicts=[];
|
||||
this.depts=[];
|
||||
this.status=[];
|
||||
}
|
||||
},
|
||||
retType(type,str) {
|
||||
var rets = '';
|
||||
if(str==1){
|
||||
// 状态
|
||||
this.status.forEach((cell,idx)=>{
|
||||
if(type==cell.bm){
|
||||
rets=cell.bmsm;
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
else if(str==3){
|
||||
// 使用状态
|
||||
this.palletStatus.forEach((cell,idx)=>{
|
||||
if(type==cell.bm){
|
||||
rets=cell.bmsm;
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
else if(str==2){
|
||||
// 部门
|
||||
this.depts.forEach((cell,idx)=>{
|
||||
if(type==cell.departCode){
|
||||
rets=cell.departName;
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
if(!rets){
|
||||
rets=type
|
||||
}
|
||||
return rets;
|
||||
},
|
||||
getStatusClass(status) {
|
||||
switch (status) {
|
||||
case '表面接收':
|
||||
return 'status-waiting';
|
||||
case '建立任务':
|
||||
return 'status-delivered';
|
||||
case '内表面接收':
|
||||
return 'status-receivedf';
|
||||
case '配盘完工':
|
||||
return 'status-received';
|
||||
case '配送出库':
|
||||
return 'status-outbound';
|
||||
case '完工转运':
|
||||
return 'status-complete';
|
||||
default:
|
||||
return 'status-default';
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.container {
|
||||
height: 100%;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 88rpx;
|
||||
background-color: #fff;
|
||||
padding: 0 30rpx;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.nav-left,
|
||||
.nav-right {
|
||||
width: 60rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.nav-title {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
font-size: 34rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.content {
|
||||
height: calc(100%);
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.section {
|
||||
background-color: #fff;
|
||||
border-radius: 16rpx;
|
||||
margin-bottom: 20rpx;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.section-header {
|
||||
padding: 30rpx;
|
||||
border-bottom: 1rpx solid #eee;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.info-card {
|
||||
padding: 30rpx;
|
||||
}
|
||||
|
||||
.info-row {
|
||||
display: flex;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.info-row:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.label {
|
||||
width: 200rpx;
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.value {
|
||||
flex: 1;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.status-used {
|
||||
color: #ff6b35;
|
||||
}
|
||||
|
||||
.status-transit {
|
||||
color: #4a90e2;
|
||||
}
|
||||
|
||||
.list-container {
|
||||
padding: 20rpx 30rpx 30rpx;
|
||||
}
|
||||
|
||||
.list-item {
|
||||
border: 1rpx solid #eee;
|
||||
border-radius: 12rpx;
|
||||
margin-bottom: 20rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.item-header {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
padding: 20rpx 30rpx;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.item-content {
|
||||
padding: 20rpx 30rpx;
|
||||
}
|
||||
|
||||
.detail-row {
|
||||
display: flex;
|
||||
margin-bottom: 15rpx;
|
||||
}
|
||||
|
||||
.detail-row:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.image-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 20rpx;
|
||||
padding: 30rpx;
|
||||
}
|
||||
|
||||
.image-item {
|
||||
border-radius: 12rpx;
|
||||
overflow: hidden;
|
||||
aspect-ratio: 1;
|
||||
}
|
||||
|
||||
.image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.status-badge {
|
||||
padding: 6rpx 12rpx;
|
||||
border-radius: 10rpx;
|
||||
font-size: 24rpx;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.status-waiting {
|
||||
background-color: #faad14;
|
||||
}
|
||||
|
||||
.status-delivered {
|
||||
background-color: #1890ff;
|
||||
}
|
||||
|
||||
.status-receivedf {
|
||||
background-color: #52c41a;
|
||||
}
|
||||
|
||||
.status-received {
|
||||
background-color: #18b566;
|
||||
}
|
||||
|
||||
.status-outbound {
|
||||
background-color: #fca600;
|
||||
}
|
||||
|
||||
.status-complete {
|
||||
background-color: #c191e8;
|
||||
}
|
||||
|
||||
.status-default {
|
||||
background-color: #f5f5f5;
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
</style>
|
||||
@ -0,0 +1,356 @@
|
||||
<template>
|
||||
<view class="noTabBarPage">
|
||||
<view class="cu-timeline" style="margin-bottom: 10upx;padding:20rpx 0">
|
||||
<view class="textjd">始</view>
|
||||
<block v-for="(item,idx) in buslinks" :key="idx">
|
||||
<view class="cu-item" :class="item.color">
|
||||
<view class="text-xh">
|
||||
{{ idx+1 }}
|
||||
</view>
|
||||
<view class="content">
|
||||
<view class="con">
|
||||
<text v-if="item.stepContent" class="texttop" style="font-weight: 600; margin-right: 16rpx;">
|
||||
{{item.stepContent}}
|
||||
</text>
|
||||
<text v-if="item.result" class="kuang" :class="item.b2">
|
||||
<text class="kuang1" :class="item.b1">{{item.result}}</text>
|
||||
</text>
|
||||
</view>
|
||||
<view style="margin-top:10rpx">
|
||||
<text v-if="item.name" class="texttop" style="margin-right: 8rpx;color:#446ea0"> {{item.name}} {{item.dept?'/':''}}</text>
|
||||
<text v-if="item.dept" class="texttop" style="margin-right: 8rpx;color:#446ea0"> {{item.dept}}</text>
|
||||
<text v-if="item.dotime" class="texttop" style="margin-left: 8rpx;color:#828E99"> {{(item.dotime).substr(0,16)}}</text>
|
||||
</view>
|
||||
<view v-if="item.remark">
|
||||
<text class="textremark" style="margin-right: 6rpx;"> {{item.stepContent=='整改完成'?'整改内容:':(item.stepContent=='整改已验证'?'验证内容:':'审批意见:')}}</text>
|
||||
<text class="textremark"> {{item.remark}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view v-if="ifend" class="textjd endall">末</view>
|
||||
<view v-else class="textjd end"></view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
range: {
|
||||
type: Array,
|
||||
default: function () {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
ifend: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
buslinks:[]
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this._initTree();
|
||||
},
|
||||
watch: {
|
||||
range(list) {
|
||||
this._initTree(list);
|
||||
},
|
||||
deep: true, // 深度监听
|
||||
immediate: true, // 初次监听即执行
|
||||
},
|
||||
methods: {
|
||||
_initTree(range = this.range) {
|
||||
this.buslinks=[];
|
||||
if (range.length > 0) {
|
||||
range.forEach((item,idx)=>{
|
||||
var cell={};
|
||||
var result='',b1 = 'blue1',b2 = 'blue2',color = "line-blue";
|
||||
if (item.opinionType == '0') {
|
||||
// 置灰流程
|
||||
result="";
|
||||
b1 = '';
|
||||
b2 = '';
|
||||
color = "line-grey";
|
||||
}
|
||||
else if (item.opinionType == '1') {
|
||||
// 同意
|
||||
result="同意";
|
||||
b1 = 'green1';
|
||||
b2 = 'green2';
|
||||
color = "line-blue";
|
||||
}
|
||||
else if(item.opinionType == '2'){
|
||||
// 不同意
|
||||
result="不同意";
|
||||
b1 = 'red1';
|
||||
b2 = 'red2';
|
||||
color = "line-red";
|
||||
}
|
||||
else if(item.opinionType == '3'){
|
||||
// 完成
|
||||
result="完成";
|
||||
b1 = 'green1';
|
||||
b2 = 'green2';
|
||||
color = "line-blue";
|
||||
}
|
||||
else if(item.opinionType == '4'){
|
||||
// 已确认
|
||||
result="已确认";
|
||||
b1 = 'blue1';
|
||||
b2 = 'blue2';
|
||||
color = "line-blue";
|
||||
}
|
||||
else if(item.opinionType == '5'){
|
||||
// 开始整改
|
||||
result="开始整改";
|
||||
b1 = 'blue1';
|
||||
b2 = 'blue2';
|
||||
color = "line-blue";
|
||||
}
|
||||
else if(item.opinionType == '6'){
|
||||
// 整改完成
|
||||
result="整改完成";
|
||||
b1 = 'blue1';
|
||||
b2 = 'blue2';
|
||||
color = "line-blue";
|
||||
}
|
||||
else if(item.opinionType == '7'){
|
||||
// 司机开始
|
||||
result="司机开始";
|
||||
b1 = 'blue1';
|
||||
b2 = 'blue2';
|
||||
color = "line-blue";
|
||||
}
|
||||
else if(item.opinionType == '8'){
|
||||
// 司机结束
|
||||
result="司机结束";
|
||||
b1 = 'blue1';
|
||||
b2 = 'blue2';
|
||||
color = "line-blue";
|
||||
}
|
||||
else {
|
||||
if (item.isStart&&item.isStart=='1') {
|
||||
// 发起申请
|
||||
result="已申请";
|
||||
color = "line-blue";
|
||||
}
|
||||
else{
|
||||
// 待审批
|
||||
result="待审批";
|
||||
color = "";
|
||||
}
|
||||
b1 = 'blue1';
|
||||
b2 = 'blue2';
|
||||
}
|
||||
|
||||
cell={
|
||||
name: item.name,
|
||||
dept: item.dept,
|
||||
stepContent: item.stepContent,// 审批内容
|
||||
dotime: item.dotime? item.dotime:"",
|
||||
result: result,
|
||||
remark: item.remark? item.remark:"",
|
||||
b1: b1,
|
||||
b2: b2,
|
||||
color: color
|
||||
};
|
||||
console.log(item)
|
||||
this.buslinks.push(cell);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.noTabBarPage{
|
||||
width: 100%;
|
||||
background: url('@/static/images/pagebackimg.jpg') no-repeat top center ;
|
||||
background-size:100% 100%;
|
||||
}
|
||||
.cu-timeline>.cu-item.line-blue::after{
|
||||
background-color:#347ACF;
|
||||
}
|
||||
.cu-timeline>.cu-item.line-grey::after{
|
||||
background-color:#FFF;
|
||||
border-left:1rpx dashed #CCC;
|
||||
}
|
||||
.cu-timeline>.cu-item.line-red::after{
|
||||
background-color:#da533e;
|
||||
}
|
||||
.text-xh{
|
||||
left:34rpx!important;
|
||||
}
|
||||
.line-grey{
|
||||
color:#b0b0b0 !important;
|
||||
}
|
||||
.line-grey .text-xh{
|
||||
border:1rpx dashed #CCC;
|
||||
color:#b0b0b0;
|
||||
}
|
||||
.line-grey .texttop{
|
||||
color:#b0b0b0 !important;
|
||||
}
|
||||
.line-blue .text-xh{
|
||||
border:1rpx solid #347ACF;
|
||||
color:#347ACF;
|
||||
}
|
||||
.line-red .text-xh{
|
||||
border:1px solid #da533e;
|
||||
color:#da533e;
|
||||
}
|
||||
.blue1{
|
||||
border:1px solid #347acf;
|
||||
color:#347acf;
|
||||
}
|
||||
.blue2{
|
||||
border:2px solid #347acf;
|
||||
}
|
||||
.green1{
|
||||
border:1px solid #28994e;
|
||||
color:#28994e;
|
||||
}
|
||||
.green2{
|
||||
border:2px solid #28994e;
|
||||
}
|
||||
.red1{
|
||||
border:1px solid #da533e;
|
||||
color:#da533e;
|
||||
}
|
||||
.red2{
|
||||
border:2px solid #da533e;
|
||||
}
|
||||
.orange1{
|
||||
border:1px solid #edab26;
|
||||
color:#edab26;
|
||||
}
|
||||
.orange2{
|
||||
border:2px solid #edab26;
|
||||
}
|
||||
.kuang{
|
||||
padding:2px 2px 3px 2px;
|
||||
margin-right:5px;
|
||||
.kuang1{
|
||||
padding:1px;
|
||||
font-size:12px;
|
||||
}
|
||||
}
|
||||
.con{
|
||||
width: 100%;
|
||||
}
|
||||
.cu-timeline>.cu-item{
|
||||
padding: 30rpx 30rpx 30rpx 96rpx !important;
|
||||
}
|
||||
.cu-timeline>.cu-item::before{
|
||||
left: 34rpx!important;
|
||||
}
|
||||
.cu-timeline>.cu-item::after{
|
||||
left: 60rpx!important;
|
||||
}
|
||||
.cu-timeline>.cu-item>.content{
|
||||
padding:25rpx 20rpx;
|
||||
}
|
||||
.texttop{
|
||||
color:#000;
|
||||
}
|
||||
.textbottom{
|
||||
color:#347ACF;
|
||||
font-weight: 600;
|
||||
}
|
||||
.textbottomred{
|
||||
color:#ff0000;
|
||||
font-weight: 600;
|
||||
}
|
||||
.textremark{
|
||||
color:#000;
|
||||
}
|
||||
.tx{
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
width:100%;
|
||||
height:150upx;
|
||||
}
|
||||
.textjd{
|
||||
margin: 0 0 0 30rpx!important;
|
||||
width:56rpx;
|
||||
height:56rpx;;
|
||||
line-height:56rpx;
|
||||
}
|
||||
.textjd.end{
|
||||
background-color: #eee;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
.textjd.endall{
|
||||
background-color: #347ACF;
|
||||
border: 1px solid #347ACF;
|
||||
}
|
||||
.txgd{
|
||||
position:absolute;
|
||||
right:20upx;
|
||||
top:10upx;
|
||||
}
|
||||
.ltx{
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
width:100%;
|
||||
height:80upx;
|
||||
line-height:80upx;
|
||||
}
|
||||
.fright{
|
||||
position:absolute;
|
||||
right:20upx;
|
||||
top:0;
|
||||
}
|
||||
.cu-form-group{
|
||||
padding: 2upx 20upx;
|
||||
}
|
||||
.cu-form-group .title {
|
||||
min-width: calc(4em + 15px);
|
||||
}
|
||||
.padd{
|
||||
padding:20upx;
|
||||
}
|
||||
.cu-padd-bottom{
|
||||
margin-bottom: 20upx;
|
||||
}
|
||||
.busimg{
|
||||
position: absolute;
|
||||
top:20upx;
|
||||
left:0;
|
||||
width:40upx;
|
||||
height:40upx;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.busitimg{
|
||||
position: absolute;
|
||||
top:20upx;
|
||||
left:80upx;
|
||||
width:52upx;
|
||||
height:52upx;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.bottomcon{
|
||||
position: fixed;
|
||||
bottom:0;
|
||||
left:0;
|
||||
width:100%;
|
||||
display: block;
|
||||
height:80upx;
|
||||
z-index: 10000;
|
||||
}
|
||||
.tipimg{
|
||||
width:36upx;
|
||||
height:36upx;
|
||||
}
|
||||
.cuIcon-refresh{
|
||||
font-size: 36upx;
|
||||
margin-right: 4upx;
|
||||
font-weight: 600;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,318 @@
|
||||
<template>
|
||||
<view class="uni-combox">
|
||||
<view class="uni-combox-dialog" v-if="isDialogInput && showSelector">
|
||||
<view class="uni-combox-input">
|
||||
<input
|
||||
class="uni-combox__input"
|
||||
type="text"
|
||||
:placeholder="selectItem.value ? selectItem.value : placeholder"
|
||||
v-model="inputVal"
|
||||
@input="onInput"
|
||||
@blur="onBlur"
|
||||
:focus="'true'"
|
||||
style="height: 90upx;"
|
||||
/>
|
||||
<uni-icons style="line-height: 90upx;" class="uni-combox__input-arrow" type="close" size="14" @click="clearSelector"></uni-icons>
|
||||
<view class="uni-combox__selector">
|
||||
<scroll-view scroll-y="true" class="uni-combox__selector-scroll">
|
||||
<view class="uni-combox__selector-empty" v-if="isLoading"><text>数据加载...</text></view>
|
||||
<view class="uni-combox__selector-empty" v-if="filterCandidatesLength === 0 && !isLoading">
|
||||
<text>{{ emptyTips }}</text>
|
||||
</view>
|
||||
<view v-if="!isLoading" class="uni-combox__selector-item" v-for="(item, index) in filterCandidates" :key="index" @click="onSelectorClick(item)">
|
||||
<text>{{ item.value }}</text>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="label" class="uni-combox__label" :style="labelStyle">
|
||||
<text>{{ label }}</text>
|
||||
</view>
|
||||
<view class="uni-combox__input-box">
|
||||
<input
|
||||
v-if="isDialogInput"
|
||||
class="uni-combox__input"
|
||||
type="text"
|
||||
:placeholder="selectItem.value ? selectItem.value : placeholder"
|
||||
v-model="inputVal"
|
||||
@focus="onFocus"
|
||||
/>
|
||||
<input
|
||||
v-else
|
||||
class="uni-combox__input"
|
||||
type="text"
|
||||
:placeholder="selectItem.value ? selectItem.value : placeholder"
|
||||
v-model="inputVal"
|
||||
@focus="onFocus"
|
||||
@input="onInput"
|
||||
@blur="onBlur"
|
||||
/>
|
||||
<uni-icons v-if="!showSelector && !inputVal" class="uni-combox__input-arrow" type="arrowdown" size="14" @click="toggleSelector"></uni-icons>
|
||||
<uni-icons v-else class="uni-combox__input-arrow" type="close" size="14" @click="clearSelector"></uni-icons>
|
||||
<view class="uni-combox__selector" v-if="!isDialogInput && showSelector">
|
||||
<scroll-view scroll-y="true" class="uni-combox__selector-scroll">
|
||||
<view class="uni-combox__selector-empty" v-if="isLoading"><text>数据加载...</text></view>
|
||||
<view class="uni-combox__selector-empty" v-if="filterCandidatesLength === 0 && !isLoading">
|
||||
<text>{{ emptyTips }}</text>
|
||||
</view>
|
||||
<view v-if="!isLoading" class="uni-combox__selector-item" v-for="(item, index) in filterCandidates" :key="index" @click="onSelectorClick(item)">
|
||||
<text>{{ item.value }}</text>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import uniIcons from '../uni-icons/uni-icons.vue';
|
||||
/**
|
||||
* Combox 组合输入框
|
||||
* @description 组合输入框一般用于既可以输入也可以选择的场景
|
||||
* @tutorial https://ext.dcloud.net.cn/plugin?id=1261
|
||||
* @property {String} label 左侧文字
|
||||
* @property {String} labelWidth 左侧内容宽度
|
||||
* @property {String} placeholder 输入框占位符
|
||||
* @property {Array} candidates 候选项列表
|
||||
* @property {String} emptyTips 筛选结果为空时显示的文字
|
||||
* @property {String} value 组合框的值
|
||||
* @property {String} isDialogInput 弹出框输入和选择避免键盘遮挡
|
||||
*/
|
||||
export default {
|
||||
name: 'uniCombox',
|
||||
components: {
|
||||
uniIcons
|
||||
},
|
||||
props: {
|
||||
label: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
labelWidth: {
|
||||
type: String,
|
||||
default: 'auto'
|
||||
},
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
candidates: {
|
||||
type: Array,
|
||||
default() {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
emptyTips: {
|
||||
type: String,
|
||||
default: '无匹配项'
|
||||
},
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
isDialogInput: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
showSelector: false,
|
||||
inputVal: '',
|
||||
isLoading: false,
|
||||
showDowm: true,
|
||||
selectItem: { key: '', value: '' }
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
labelStyle() {
|
||||
if (this.labelWidth === 'auto') {
|
||||
return {};
|
||||
}
|
||||
return {
|
||||
width: this.labelWidth
|
||||
};
|
||||
},
|
||||
filterCandidates() {
|
||||
return this.candidates.filter(item => {
|
||||
return item;
|
||||
});
|
||||
},
|
||||
filterCandidatesLength() {
|
||||
return this.filterCandidates.length;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value: {
|
||||
handler(newVal) {
|
||||
if(newVal) {
|
||||
this.candidates.filter(item => {
|
||||
if (this.value === item.key) {
|
||||
this.selectItem = item;
|
||||
this.inputVal = item.value;
|
||||
}
|
||||
});
|
||||
}else {
|
||||
this.selectItem = { key: '', value: '' }
|
||||
this.inputVal = ''
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
},
|
||||
candidates: {
|
||||
handler(newVal) {
|
||||
this.isLoading = false;
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
toggleSelector() {
|
||||
this.showSelector = !this.showSelector;
|
||||
},
|
||||
clearSelector() {
|
||||
this.selectItem = { key: '', value: '' };
|
||||
this.inputVal = '';
|
||||
this.showSelector = false;
|
||||
this.isLoading = false;
|
||||
this.$emit('clear');
|
||||
},
|
||||
onFocus() {
|
||||
this.showSelector = true;
|
||||
if (this.inputVal) {
|
||||
this.inputVal = '';
|
||||
}
|
||||
},
|
||||
onBlur() {
|
||||
setTimeout(() => {
|
||||
if (this.selectItem.value) {
|
||||
const selectItem = JSON.parse(JSON.stringify(this.selectItem));
|
||||
this.inputVal = selectItem.value;
|
||||
} else {
|
||||
this.inputVal = '';
|
||||
}
|
||||
this.showSelector = false;
|
||||
}, 50);
|
||||
},
|
||||
onSelectorClick(item) {
|
||||
this.selectItem = item;
|
||||
this.inputVal = item.value;
|
||||
this.showSelector = false;
|
||||
this.$emit('select', item.key, item);
|
||||
},
|
||||
onInput() {
|
||||
setTimeout(() => {
|
||||
if (this.inputVal) {
|
||||
this.isLoading = true;
|
||||
this.$emit('input', this.inputVal);
|
||||
} else {
|
||||
this.isLoading = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.uni-combox {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
height: 40upx;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
// border-bottom: solid 1px #DDDDDD;
|
||||
}
|
||||
|
||||
.uni-combox__label {
|
||||
font-size: 28upx;
|
||||
line-height: 40upx;
|
||||
padding-right: 10px;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.uni-combox__input-box {
|
||||
position: relative;
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.uni-combox__input {
|
||||
flex: 1;
|
||||
font-size: 28upx;
|
||||
}
|
||||
|
||||
.uni-combox__input-arrow {
|
||||
padding-left: 15upx;
|
||||
padding-right: 15upx;
|
||||
}
|
||||
|
||||
.uni-combox__selector {
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
top: 50px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
background-color: #ffffff;
|
||||
border-radius: 6px;
|
||||
box-shadow: #dddddd 4px 4px 8px, #dddddd -4px -4px 8px;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.uni-combox__selector-scroll {
|
||||
max-height: 350upx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.uni-combox__selector::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-bottom: solid 6px #ffffff;
|
||||
border-right: solid 6px transparent;
|
||||
border-left: solid 6px transparent;
|
||||
left: 50%;
|
||||
top: -6px;
|
||||
margin-left: -6px;
|
||||
}
|
||||
|
||||
.uni-combox__selector-empty,
|
||||
.uni-combox__selector-item {
|
||||
/* #ifdef APP-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
line-height: 70upx;
|
||||
font-size: 28upx;
|
||||
text-align: center;
|
||||
border-bottom: solid 1px #dddddd;
|
||||
margin: 0px 10px;
|
||||
}
|
||||
|
||||
.uni-combox__selector-empty:last-child,
|
||||
.uni-combox__selector-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.uni-combox-dialog {
|
||||
background: #cccccc7d;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 100;
|
||||
}
|
||||
.uni-combox-input {
|
||||
background: #fff;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
height: 90upx;
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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