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