完成 电能质量问题管理页面 修改 谐波普测管理页面
This commit is contained in:
@@ -17,6 +17,15 @@ export function exportSurveyPlan(data: any) {
|
|||||||
responseType: 'blob'
|
responseType: 'blob'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
//删除普测计划
|
||||||
|
export function deletePlan(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/process-boot/rGeneralSurveyPlan/deletePlan',
|
||||||
|
method: 'post',
|
||||||
|
data,
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
//新增
|
//新增
|
||||||
export function getGeneratrixByCondition(data: any) {
|
export function getGeneratrixByCondition(data: any) {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
|
|||||||
@@ -146,3 +146,10 @@ export function existMonitorDeptTree() {
|
|||||||
method: 'post'
|
method: 'post'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 获取用户
|
||||||
|
export function getUserByRoleType(data:any) {
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/getUserByRoleType?roleType=' + data,
|
||||||
|
method: 'GET'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
1
src/assets/map/三亚.json
Normal file
1
src/assets/map/三亚.json
Normal file
File diff suppressed because one or more lines are too long
866
src/assets/map/海南省.json
Normal file
866
src/assets/map/海南省.json
Normal file
@@ -0,0 +1,866 @@
|
|||||||
|
{
|
||||||
|
"type": "FeatureCollection",
|
||||||
|
"features": [{
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 460100, "name": "海口", "center": [110.33119, 20.031971], "centroid": [110.422966, 19.852113], "childrenNum": 4, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 0, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.106525, 20.026851],
|
||||||
|
[110.161895, 19.977693],
|
||||||
|
[110.143932, 19.889106],
|
||||||
|
[110.186246, 19.864193],
|
||||||
|
[110.228283, 19.753767],
|
||||||
|
[110.208468, 19.716679],
|
||||||
|
[110.222357, 19.67974],
|
||||||
|
[110.262449, 19.687318],
|
||||||
|
[110.314208, 19.697421],
|
||||||
|
[110.340041, 19.720625],
|
||||||
|
[110.393373, 19.698053],
|
||||||
|
[110.372633, 19.654004],
|
||||||
|
[110.401151, 19.606626],
|
||||||
|
[110.455687, 19.574559],
|
||||||
|
[110.486705, 19.593357],
|
||||||
|
[110.519297, 19.563341],
|
||||||
|
[110.540223, 19.535532],
|
||||||
|
[110.611518, 19.526841],
|
||||||
|
[110.641333, 19.549122],
|
||||||
|
[110.636148, 19.593989],
|
||||||
|
[110.672814, 19.647214],
|
||||||
|
[110.623463, 19.664109],
|
||||||
|
[110.623, 19.735461],
|
||||||
|
[110.670314, 19.812776],
|
||||||
|
[110.704665, 19.805992],
|
||||||
|
[110.699573, 19.861512],
|
||||||
|
[110.676147, 19.860092],
|
||||||
|
[110.675314, 19.907868],
|
||||||
|
[110.634666, 19.965401],
|
||||||
|
[110.598, 19.98305],
|
||||||
|
[110.526612, 20.075206],
|
||||||
|
[110.495039, 20.077253],
|
||||||
|
[110.387355, 20.11347],
|
||||||
|
[110.318467, 20.109061],
|
||||||
|
[110.293282, 20.059614],
|
||||||
|
[110.24319, 20.077568],
|
||||||
|
[110.144395, 20.074418],
|
||||||
|
[110.106525, 20.026851]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 460200, "name": "三亚", "center": [109.508268, 18.247872], "centroid": [109.421656, 18.362263], "childrenNum": 4, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 1, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[108.932374, 18.335288],
|
||||||
|
[108.956448, 18.307433],
|
||||||
|
[109.006632, 18.323032],
|
||||||
|
[109.108298, 18.323828],
|
||||||
|
[109.138668, 18.267791],
|
||||||
|
[109.174686, 18.260149],
|
||||||
|
[109.28811, 18.264925],
|
||||||
|
[109.355887, 18.214922],
|
||||||
|
[109.441349, 18.199153],
|
||||||
|
[109.4632, 18.177171],
|
||||||
|
[109.527366, 18.169046],
|
||||||
|
[109.561718, 18.143554],
|
||||||
|
[109.63792, 18.171595],
|
||||||
|
[109.72616, 18.177808],
|
||||||
|
[109.749863, 18.19326],
|
||||||
|
[109.783381, 18.337516],
|
||||||
|
[109.805418, 18.347543],
|
||||||
|
[109.785048, 18.426622],
|
||||||
|
[109.809955, 18.459388],
|
||||||
|
[109.781159, 18.51107],
|
||||||
|
[109.725234, 18.493102],
|
||||||
|
[109.710882, 18.426462],
|
||||||
|
[109.665883, 18.391462],
|
||||||
|
[109.539866, 18.396713],
|
||||||
|
[109.515607, 18.429008],
|
||||||
|
[109.536996, 18.490717],
|
||||||
|
[109.535237, 18.53142],
|
||||||
|
[109.506163, 18.551291],
|
||||||
|
[109.423386, 18.574657],
|
||||||
|
[109.405146, 18.623443],
|
||||||
|
[109.332832, 18.575451],
|
||||||
|
[109.313295, 18.517429],
|
||||||
|
[109.246537, 18.558921],
|
||||||
|
[109.203574, 18.553517],
|
||||||
|
[109.185056, 18.507095],
|
||||||
|
[109.195148, 18.469407],
|
||||||
|
[109.072557, 18.452231],
|
||||||
|
[109.015243, 18.422645],
|
||||||
|
[108.932374, 18.335288]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 460400, "name": "儋州", "center": [109.576782, 19.517486], "centroid": [109.390059, 19.579264], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 3, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[108.928671, 19.524313],
|
||||||
|
[108.939596, 19.497287],
|
||||||
|
[108.982744, 19.477213],
|
||||||
|
[108.997373, 19.431522],
|
||||||
|
[109.04478, 19.430415],
|
||||||
|
[109.051447, 19.487803],
|
||||||
|
[109.117557, 19.46757],
|
||||||
|
[109.13052, 19.479584],
|
||||||
|
[109.178389, 19.399262],
|
||||||
|
[109.26774, 19.376803],
|
||||||
|
[109.318943, 19.398155],
|
||||||
|
[109.384035, 19.355448],
|
||||||
|
[109.424405, 19.354815],
|
||||||
|
[109.457275, 19.39942],
|
||||||
|
[109.483848, 19.406063],
|
||||||
|
[109.506348, 19.359561],
|
||||||
|
[109.468386, 19.301178],
|
||||||
|
[109.541625, 19.311939],
|
||||||
|
[109.587365, 19.243249],
|
||||||
|
[109.611995, 19.252589],
|
||||||
|
[109.634031, 19.20256],
|
||||||
|
[109.673105, 19.207627],
|
||||||
|
[109.686994, 19.178965],
|
||||||
|
[109.706808, 19.22156],
|
||||||
|
[109.697271, 19.271267],
|
||||||
|
[109.713382, 19.309881],
|
||||||
|
[109.700234, 19.349436],
|
||||||
|
[109.647272, 19.357505],
|
||||||
|
[109.646439, 19.402425],
|
||||||
|
[109.737734, 19.407486],
|
||||||
|
[109.751993, 19.416974],
|
||||||
|
[109.728197, 19.496023],
|
||||||
|
[109.760048, 19.528895],
|
||||||
|
[109.7694, 19.578508],
|
||||||
|
[109.709308, 19.57756],
|
||||||
|
[109.659402, 19.611048],
|
||||||
|
[109.664216, 19.629685],
|
||||||
|
[109.582921, 19.637581],
|
||||||
|
[109.557366, 19.697421],
|
||||||
|
[109.599402, 19.730726],
|
||||||
|
[109.569218, 19.797947],
|
||||||
|
[109.564588, 19.854888],
|
||||||
|
[109.498663, 19.873339],
|
||||||
|
[109.410794, 19.895256],
|
||||||
|
[109.349591, 19.898724],
|
||||||
|
[109.30811, 19.9178],
|
||||||
|
[109.264592, 19.90503],
|
||||||
|
[109.255611, 19.867189],
|
||||||
|
[109.218574, 19.855834],
|
||||||
|
[109.15913, 19.790689],
|
||||||
|
[109.169501, 19.736724],
|
||||||
|
[109.147649, 19.704998],
|
||||||
|
[109.093668, 19.689844],
|
||||||
|
[109.048576, 19.620051],
|
||||||
|
[108.993392, 19.586723],
|
||||||
|
[108.928671, 19.524313]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469001, "name": "五指山", "center": [109.516662, 18.776921], "centroid": [109.511892, 18.824035], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 4, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.715419, 18.833686],
|
||||||
|
[109.699123, 18.889379],
|
||||||
|
[109.730512, 18.913649],
|
||||||
|
[109.676531, 18.925862],
|
||||||
|
[109.601532, 18.910318],
|
||||||
|
[109.55357, 18.946321],
|
||||||
|
[109.524033, 19.030986],
|
||||||
|
[109.468386, 19.032254],
|
||||||
|
[109.456349, 18.995635],
|
||||||
|
[109.424775, 18.990403],
|
||||||
|
[109.367739, 18.936171],
|
||||||
|
[109.34848, 18.946321],
|
||||||
|
[109.32635, 18.926338],
|
||||||
|
[109.343109, 18.877163],
|
||||||
|
[109.374591, 18.853998],
|
||||||
|
[109.353387, 18.812896],
|
||||||
|
[109.356628, 18.710653],
|
||||||
|
[109.398109, 18.671104],
|
||||||
|
[109.408016, 18.627733],
|
||||||
|
[109.448293, 18.655378],
|
||||||
|
[109.48857, 18.64664],
|
||||||
|
[109.539866, 18.659508],
|
||||||
|
[109.533662, 18.694295],
|
||||||
|
[109.576717, 18.714782],
|
||||||
|
[109.619865, 18.678252],
|
||||||
|
[109.641809, 18.72304],
|
||||||
|
[109.703012, 18.721769],
|
||||||
|
[109.681531, 18.786071],
|
||||||
|
[109.689216, 18.830036],
|
||||||
|
[109.715419, 18.833686]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469002, "name": "琼海", "center": [110.466785, 19.246011], "centroid": [110.421962, 19.210377], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 5, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.610593, 19.084394],
|
||||||
|
[110.619296, 19.152041],
|
||||||
|
[110.676703, 19.286302],
|
||||||
|
[110.706517, 19.320167],
|
||||||
|
[110.730035, 19.378859],
|
||||||
|
[110.633555, 19.391354],
|
||||||
|
[110.604574, 19.350386],
|
||||||
|
[110.584111, 19.367787],
|
||||||
|
[110.581426, 19.419504],
|
||||||
|
[110.546242, 19.46836],
|
||||||
|
[110.504853, 19.46836],
|
||||||
|
[110.484761, 19.443223],
|
||||||
|
[110.450317, 19.447492],
|
||||||
|
[110.423928, 19.413495],
|
||||||
|
[110.368744, 19.391829],
|
||||||
|
[110.327356, 19.315261],
|
||||||
|
[110.3593, 19.298646],
|
||||||
|
[110.344392, 19.228368],
|
||||||
|
[110.300226, 19.21586],
|
||||||
|
[110.224857, 19.221718],
|
||||||
|
[110.170598, 19.191317],
|
||||||
|
[110.150876, 19.208419],
|
||||||
|
[110.115229, 19.133191],
|
||||||
|
[110.124118, 19.04747],
|
||||||
|
[110.158562, 18.99944],
|
||||||
|
[110.229579, 19.002452],
|
||||||
|
[110.249949, 18.976292],
|
||||||
|
[110.465039, 19.074411],
|
||||||
|
[110.477539, 19.096912],
|
||||||
|
[110.521797, 19.102932],
|
||||||
|
[110.610593, 19.084394]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469005, "name": "文昌", "center": [110.753975, 19.612986], "centroid": [110.788535, 19.747363], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 6, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.730035, 19.378859],
|
||||||
|
[110.781053, 19.395783],
|
||||||
|
[110.844015, 19.450179],
|
||||||
|
[110.920774, 19.552598],
|
||||||
|
[111.008921, 19.60394],
|
||||||
|
[111.071327, 19.628895],
|
||||||
|
[111.044013, 19.763551],
|
||||||
|
[111.013643, 19.850472],
|
||||||
|
[110.969569, 20.010151],
|
||||||
|
[110.940959, 20.028583],
|
||||||
|
[110.871515, 20.011569],
|
||||||
|
[110.808738, 20.035672],
|
||||||
|
[110.778368, 20.068276],
|
||||||
|
[110.744665, 20.073946],
|
||||||
|
[110.717258, 20.148734],
|
||||||
|
[110.687073, 20.16353],
|
||||||
|
[110.655685, 20.134409],
|
||||||
|
[110.56226, 20.109691],
|
||||||
|
[110.526612, 20.075206],
|
||||||
|
[110.598, 19.98305],
|
||||||
|
[110.634666, 19.965401],
|
||||||
|
[110.675314, 19.907868],
|
||||||
|
[110.676147, 19.860092],
|
||||||
|
[110.699573, 19.861512],
|
||||||
|
[110.704665, 19.805992],
|
||||||
|
[110.670314, 19.812776],
|
||||||
|
[110.623, 19.735461],
|
||||||
|
[110.623463, 19.664109],
|
||||||
|
[110.672814, 19.647214],
|
||||||
|
[110.636148, 19.593989],
|
||||||
|
[110.641333, 19.549122],
|
||||||
|
[110.611518, 19.526841],
|
||||||
|
[110.540223, 19.535532],
|
||||||
|
[110.519297, 19.563341],
|
||||||
|
[110.469854, 19.531424],
|
||||||
|
[110.485779, 19.502345],
|
||||||
|
[110.520594, 19.509931],
|
||||||
|
[110.546242, 19.46836],
|
||||||
|
[110.581426, 19.419504],
|
||||||
|
[110.584111, 19.367787],
|
||||||
|
[110.604574, 19.350386],
|
||||||
|
[110.633555, 19.391354],
|
||||||
|
[110.730035, 19.378859]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469006, "name": "万宁", "center": [110.388793, 18.796216], "centroid": [110.324496, 18.830445], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 7, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.158562, 18.99944],
|
||||||
|
[110.108284, 18.944577],
|
||||||
|
[110.097729, 18.911746],
|
||||||
|
[110.045322, 18.884778],
|
||||||
|
[110.095785, 18.811467],
|
||||||
|
[110.057267, 18.758448],
|
||||||
|
[110.014952, 18.732885],
|
||||||
|
[110.020786, 18.658873],
|
||||||
|
[110.115877, 18.592774],
|
||||||
|
[110.137543, 18.606123],
|
||||||
|
[110.213931, 18.578789],
|
||||||
|
[110.246246, 18.609619],
|
||||||
|
[110.329393, 18.642509],
|
||||||
|
[110.36754, 18.632182],
|
||||||
|
[110.495316, 18.649976],
|
||||||
|
[110.500779, 18.752732],
|
||||||
|
[110.577908, 18.784642],
|
||||||
|
[110.590593, 18.839082],
|
||||||
|
[110.585871, 18.897786],
|
||||||
|
[110.610593, 19.084394],
|
||||||
|
[110.521797, 19.102932],
|
||||||
|
[110.477539, 19.096912],
|
||||||
|
[110.465039, 19.074411],
|
||||||
|
[110.249949, 18.976292],
|
||||||
|
[110.229579, 19.002452],
|
||||||
|
[110.158562, 18.99944]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469007, "name": "东方", "center": [108.653789, 19.10198], "centroid": [108.818801, 18.996184], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 8, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.125242, 18.878432],
|
||||||
|
[109.089779, 18.909842],
|
||||||
|
[109.113668, 18.969949],
|
||||||
|
[109.098853, 19.028291],
|
||||||
|
[109.008762, 19.050005],
|
||||||
|
[109.022929, 19.107052],
|
||||||
|
[108.99191, 19.13034],
|
||||||
|
[108.954874, 19.218869],
|
||||||
|
[108.916171, 19.218552],
|
||||||
|
[108.833209, 19.25987],
|
||||||
|
[108.783765, 19.244674],
|
||||||
|
[108.704136, 19.262719],
|
||||||
|
[108.644785, 19.349278],
|
||||||
|
[108.605712, 19.264619],
|
||||||
|
[108.591082, 19.141587],
|
||||||
|
[108.598305, 19.055869],
|
||||||
|
[108.630434, 19.003086],
|
||||||
|
[108.637841, 18.924593],
|
||||||
|
[108.595619, 18.872086],
|
||||||
|
[108.593212, 18.809404],
|
||||||
|
[108.659785, 18.716846],
|
||||||
|
[108.761543, 18.732091],
|
||||||
|
[108.81145, 18.720022],
|
||||||
|
[108.844412, 18.750827],
|
||||||
|
[108.928578, 18.790198],
|
||||||
|
[108.987003, 18.786547],
|
||||||
|
[109.015151, 18.808928],
|
||||||
|
[109.071076, 18.807499],
|
||||||
|
[109.094965, 18.857012],
|
||||||
|
[109.125242, 18.878432]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469021, "name": "定安", "center": [110.349235, 19.684966], "centroid": [110.312936, 19.483405], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 9, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.224857, 19.221718],
|
||||||
|
[110.300226, 19.21586],
|
||||||
|
[110.344392, 19.228368],
|
||||||
|
[110.3593, 19.298646],
|
||||||
|
[110.327356, 19.315261],
|
||||||
|
[110.368744, 19.391829],
|
||||||
|
[110.423928, 19.413495],
|
||||||
|
[110.450317, 19.447492],
|
||||||
|
[110.484761, 19.443223],
|
||||||
|
[110.504853, 19.46836],
|
||||||
|
[110.546242, 19.46836],
|
||||||
|
[110.520594, 19.509931],
|
||||||
|
[110.485779, 19.502345],
|
||||||
|
[110.469854, 19.531424],
|
||||||
|
[110.519297, 19.563341],
|
||||||
|
[110.486705, 19.593357],
|
||||||
|
[110.455687, 19.574559],
|
||||||
|
[110.401151, 19.606626],
|
||||||
|
[110.372633, 19.654004],
|
||||||
|
[110.393373, 19.698053],
|
||||||
|
[110.340041, 19.720625],
|
||||||
|
[110.314208, 19.697421],
|
||||||
|
[110.262449, 19.687318],
|
||||||
|
[110.221616, 19.629843],
|
||||||
|
[110.186524, 19.636791],
|
||||||
|
[110.160784, 19.67153],
|
||||||
|
[110.13134, 19.648003],
|
||||||
|
[110.137266, 19.56034],
|
||||||
|
[110.192172, 19.58925],
|
||||||
|
[110.196339, 19.535374],
|
||||||
|
[110.243005, 19.517675],
|
||||||
|
[110.227727, 19.450654],
|
||||||
|
[110.194024, 19.455871],
|
||||||
|
[110.164487, 19.426146],
|
||||||
|
[110.165691, 19.361459],
|
||||||
|
[110.188283, 19.306242],
|
||||||
|
[110.228098, 19.301969],
|
||||||
|
[110.224857, 19.221718]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469022, "name": "屯昌", "center": [110.102773, 19.362916], "centroid": [110.055723, 19.342208], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 10, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.115229, 19.133191],
|
||||||
|
[110.150876, 19.208419],
|
||||||
|
[110.170598, 19.191317],
|
||||||
|
[110.224857, 19.221718],
|
||||||
|
[110.228098, 19.301969],
|
||||||
|
[110.188283, 19.306242],
|
||||||
|
[110.165691, 19.361459],
|
||||||
|
[110.164487, 19.426146],
|
||||||
|
[110.194024, 19.455871],
|
||||||
|
[110.227727, 19.450654],
|
||||||
|
[110.243005, 19.517675],
|
||||||
|
[110.196339, 19.535374],
|
||||||
|
[110.192172, 19.58925],
|
||||||
|
[110.137266, 19.56034],
|
||||||
|
[110.101803, 19.54928],
|
||||||
|
[110.119488, 19.503293],
|
||||||
|
[110.072081, 19.492071],
|
||||||
|
[110.045785, 19.456029],
|
||||||
|
[110.020508, 19.485432],
|
||||||
|
[109.938287, 19.485749],
|
||||||
|
[109.94699, 19.468044],
|
||||||
|
[109.914583, 19.42409],
|
||||||
|
[109.912917, 19.391671],
|
||||||
|
[109.876436, 19.386926],
|
||||||
|
[109.826436, 19.343108],
|
||||||
|
[109.822733, 19.289626],
|
||||||
|
[109.923565, 19.239608],
|
||||||
|
[109.957638, 19.188625],
|
||||||
|
[110.026526, 19.17564],
|
||||||
|
[110.057267, 19.134617],
|
||||||
|
[110.115229, 19.133191]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469023, "name": "澄迈", "center": [110.007147, 19.737095], "centroid": [109.990417, 19.700201], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 11, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.137266, 19.56034],
|
||||||
|
[110.13134, 19.648003],
|
||||||
|
[110.160784, 19.67153],
|
||||||
|
[110.186524, 19.636791],
|
||||||
|
[110.221616, 19.629843],
|
||||||
|
[110.262449, 19.687318],
|
||||||
|
[110.222357, 19.67974],
|
||||||
|
[110.208468, 19.716679],
|
||||||
|
[110.228283, 19.753767],
|
||||||
|
[110.186246, 19.864193],
|
||||||
|
[110.143932, 19.889106],
|
||||||
|
[110.161895, 19.977693],
|
||||||
|
[110.106525, 20.026851],
|
||||||
|
[109.997638, 19.979899],
|
||||||
|
[109.965231, 19.993608],
|
||||||
|
[109.855047, 19.984153],
|
||||||
|
[109.879491, 19.885322],
|
||||||
|
[109.842269, 19.871446],
|
||||||
|
[109.884121, 19.853311],
|
||||||
|
[109.874306, 19.799524],
|
||||||
|
[109.897084, 19.77933],
|
||||||
|
[109.852732, 19.652582],
|
||||||
|
[109.786437, 19.608047],
|
||||||
|
[109.7694, 19.578508],
|
||||||
|
[109.760048, 19.528895],
|
||||||
|
[109.728197, 19.496023],
|
||||||
|
[109.751993, 19.416974],
|
||||||
|
[109.737734, 19.407486],
|
||||||
|
[109.793474, 19.379966],
|
||||||
|
[109.857269, 19.412388],
|
||||||
|
[109.876436, 19.386926],
|
||||||
|
[109.912917, 19.391671],
|
||||||
|
[109.914583, 19.42409],
|
||||||
|
[109.94699, 19.468044],
|
||||||
|
[109.938287, 19.485749],
|
||||||
|
[110.020508, 19.485432],
|
||||||
|
[110.045785, 19.456029],
|
||||||
|
[110.072081, 19.492071],
|
||||||
|
[110.119488, 19.503293],
|
||||||
|
[110.101803, 19.54928],
|
||||||
|
[110.137266, 19.56034]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469024, "name": "临高", "center": [109.687697, 19.908293], "centroid": [109.71548, 19.809704], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 12, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.855047, 19.984153],
|
||||||
|
[109.814307, 19.992977],
|
||||||
|
[109.761715, 19.981317],
|
||||||
|
[109.712271, 20.017398],
|
||||||
|
[109.585328, 19.98825],
|
||||||
|
[109.526626, 19.943494],
|
||||||
|
[109.498663, 19.873339],
|
||||||
|
[109.564588, 19.854888],
|
||||||
|
[109.569218, 19.797947],
|
||||||
|
[109.599402, 19.730726],
|
||||||
|
[109.557366, 19.697421],
|
||||||
|
[109.582921, 19.637581],
|
||||||
|
[109.664216, 19.629685],
|
||||||
|
[109.659402, 19.611048],
|
||||||
|
[109.709308, 19.57756],
|
||||||
|
[109.7694, 19.578508],
|
||||||
|
[109.786437, 19.608047],
|
||||||
|
[109.852732, 19.652582],
|
||||||
|
[109.897084, 19.77933],
|
||||||
|
[109.874306, 19.799524],
|
||||||
|
[109.884121, 19.853311],
|
||||||
|
[109.842269, 19.871446],
|
||||||
|
[109.879491, 19.885322],
|
||||||
|
[109.855047, 19.984153]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469025, "name": "白沙", "center": [109.452606, 19.224584], "centroid": [109.351743, 19.20989], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 13, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.298203, 18.960911],
|
||||||
|
[109.34848, 18.946321],
|
||||||
|
[109.367739, 18.936171],
|
||||||
|
[109.424775, 18.990403],
|
||||||
|
[109.456349, 18.995635],
|
||||||
|
[109.468386, 19.032254],
|
||||||
|
[109.524033, 19.030986],
|
||||||
|
[109.561347, 19.072668],
|
||||||
|
[109.601439, 19.053492],
|
||||||
|
[109.613569, 19.086454],
|
||||||
|
[109.687734, 19.118775],
|
||||||
|
[109.686994, 19.178965],
|
||||||
|
[109.673105, 19.207627],
|
||||||
|
[109.634031, 19.20256],
|
||||||
|
[109.611995, 19.252589],
|
||||||
|
[109.587365, 19.243249],
|
||||||
|
[109.541625, 19.311939],
|
||||||
|
[109.468386, 19.301178],
|
||||||
|
[109.506348, 19.359561],
|
||||||
|
[109.483848, 19.406063],
|
||||||
|
[109.457275, 19.39942],
|
||||||
|
[109.424405, 19.354815],
|
||||||
|
[109.384035, 19.355448],
|
||||||
|
[109.318943, 19.398155],
|
||||||
|
[109.26774, 19.376803],
|
||||||
|
[109.178389, 19.399262],
|
||||||
|
[109.13052, 19.479584],
|
||||||
|
[109.117557, 19.46757],
|
||||||
|
[109.051447, 19.487803],
|
||||||
|
[109.04478, 19.430415],
|
||||||
|
[109.043669, 19.342792],
|
||||||
|
[109.08265, 19.328869],
|
||||||
|
[109.142834, 19.265727],
|
||||||
|
[109.120242, 19.203985],
|
||||||
|
[109.163667, 19.14222],
|
||||||
|
[109.177093, 19.083443],
|
||||||
|
[109.271166, 19.067438],
|
||||||
|
[109.298203, 18.960911]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469026, "name": "昌江", "center": [109.053351, 19.260968], "centroid": [108.993675, 19.226048], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 14, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.04478, 19.430415],
|
||||||
|
[108.997373, 19.431522],
|
||||||
|
[108.982744, 19.477213],
|
||||||
|
[108.939596, 19.497287],
|
||||||
|
[108.928671, 19.524313],
|
||||||
|
[108.887004, 19.4897],
|
||||||
|
[108.806357, 19.450654],
|
||||||
|
[108.747654, 19.391671],
|
||||||
|
[108.694137, 19.387084],
|
||||||
|
[108.644785, 19.349278],
|
||||||
|
[108.704136, 19.262719],
|
||||||
|
[108.783765, 19.244674],
|
||||||
|
[108.833209, 19.25987],
|
||||||
|
[108.916171, 19.218552],
|
||||||
|
[108.954874, 19.218869],
|
||||||
|
[108.99191, 19.13034],
|
||||||
|
[109.022929, 19.107052],
|
||||||
|
[109.008762, 19.050005],
|
||||||
|
[109.098853, 19.028291],
|
||||||
|
[109.113668, 18.969949],
|
||||||
|
[109.089779, 18.909842],
|
||||||
|
[109.125242, 18.878432],
|
||||||
|
[109.141816, 18.904449],
|
||||||
|
[109.206722, 18.894772],
|
||||||
|
[109.265518, 18.905877],
|
||||||
|
[109.298203, 18.960911],
|
||||||
|
[109.271166, 19.067438],
|
||||||
|
[109.177093, 19.083443],
|
||||||
|
[109.163667, 19.14222],
|
||||||
|
[109.120242, 19.203985],
|
||||||
|
[109.142834, 19.265727],
|
||||||
|
[109.08265, 19.328869],
|
||||||
|
[109.043669, 19.342792],
|
||||||
|
[109.04478, 19.430415]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469027, "name": "乐东", "center": [109.175444, 18.74758], "centroid": [109.029671, 18.639822], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 15, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.405146, 18.623443],
|
||||||
|
[109.408016, 18.627733],
|
||||||
|
[109.398109, 18.671104],
|
||||||
|
[109.356628, 18.710653],
|
||||||
|
[109.353387, 18.812896],
|
||||||
|
[109.374591, 18.853998],
|
||||||
|
[109.343109, 18.877163],
|
||||||
|
[109.32635, 18.926338],
|
||||||
|
[109.34848, 18.946321],
|
||||||
|
[109.298203, 18.960911],
|
||||||
|
[109.265518, 18.905877],
|
||||||
|
[109.206722, 18.894772],
|
||||||
|
[109.141816, 18.904449],
|
||||||
|
[109.125242, 18.878432],
|
||||||
|
[109.094965, 18.857012],
|
||||||
|
[109.071076, 18.807499],
|
||||||
|
[109.015151, 18.808928],
|
||||||
|
[108.987003, 18.786547],
|
||||||
|
[108.928578, 18.790198],
|
||||||
|
[108.844412, 18.750827],
|
||||||
|
[108.81145, 18.720022],
|
||||||
|
[108.761543, 18.732091],
|
||||||
|
[108.659785, 18.716846],
|
||||||
|
[108.664137, 18.673328],
|
||||||
|
[108.641082, 18.565279],
|
||||||
|
[108.644971, 18.486741],
|
||||||
|
[108.658304, 18.462728],
|
||||||
|
[108.70997, 18.444119],
|
||||||
|
[108.776728, 18.442051],
|
||||||
|
[108.881264, 18.416599],
|
||||||
|
[108.932374, 18.335288],
|
||||||
|
[109.015243, 18.422645],
|
||||||
|
[109.072557, 18.452231],
|
||||||
|
[109.195148, 18.469407],
|
||||||
|
[109.185056, 18.507095],
|
||||||
|
[109.203574, 18.553517],
|
||||||
|
[109.246537, 18.558921],
|
||||||
|
[109.313295, 18.517429],
|
||||||
|
[109.332832, 18.575451],
|
||||||
|
[109.405146, 18.623443]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469028, "name": "陵水", "center": [110.037218, 18.505006], "centroid": [109.951436, 18.549546], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 16, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.014952, 18.732885],
|
||||||
|
[109.980416, 18.76718],
|
||||||
|
[109.94412, 18.771942],
|
||||||
|
[109.902361, 18.739395],
|
||||||
|
[109.891065, 18.754479],
|
||||||
|
[109.830696, 18.728597],
|
||||||
|
[109.773474, 18.809404],
|
||||||
|
[109.756159, 18.788928],
|
||||||
|
[109.771993, 18.723675],
|
||||||
|
[109.802177, 18.725263],
|
||||||
|
[109.839677, 18.67857],
|
||||||
|
[109.804677, 18.594364],
|
||||||
|
[109.846621, 18.57116],
|
||||||
|
[109.828751, 18.511229],
|
||||||
|
[109.781159, 18.51107],
|
||||||
|
[109.809955, 18.459388],
|
||||||
|
[109.785048, 18.426622],
|
||||||
|
[109.805418, 18.347543],
|
||||||
|
[109.919676, 18.375551],
|
||||||
|
[109.999767, 18.359797],
|
||||||
|
[110.070785, 18.376187],
|
||||||
|
[110.090507, 18.399258],
|
||||||
|
[110.116618, 18.506618],
|
||||||
|
[110.213931, 18.578789],
|
||||||
|
[110.137543, 18.606123],
|
||||||
|
[110.115877, 18.592774],
|
||||||
|
[110.020786, 18.658873],
|
||||||
|
[110.014952, 18.732885]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469029, "name": "保亭", "center": [109.70245, 18.636371], "centroid": [109.650759, 18.589686], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 17, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.715419, 18.833686],
|
||||||
|
[109.689216, 18.830036],
|
||||||
|
[109.681531, 18.786071],
|
||||||
|
[109.703012, 18.721769],
|
||||||
|
[109.641809, 18.72304],
|
||||||
|
[109.619865, 18.678252],
|
||||||
|
[109.576717, 18.714782],
|
||||||
|
[109.533662, 18.694295],
|
||||||
|
[109.539866, 18.659508],
|
||||||
|
[109.48857, 18.64664],
|
||||||
|
[109.448293, 18.655378],
|
||||||
|
[109.408016, 18.627733],
|
||||||
|
[109.405146, 18.623443],
|
||||||
|
[109.423386, 18.574657],
|
||||||
|
[109.506163, 18.551291],
|
||||||
|
[109.535237, 18.53142],
|
||||||
|
[109.536996, 18.490717],
|
||||||
|
[109.515607, 18.429008],
|
||||||
|
[109.539866, 18.396713],
|
||||||
|
[109.665883, 18.391462],
|
||||||
|
[109.710882, 18.426462],
|
||||||
|
[109.725234, 18.493102],
|
||||||
|
[109.781159, 18.51107],
|
||||||
|
[109.828751, 18.511229],
|
||||||
|
[109.846621, 18.57116],
|
||||||
|
[109.804677, 18.594364],
|
||||||
|
[109.839677, 18.67857],
|
||||||
|
[109.802177, 18.725263],
|
||||||
|
[109.771993, 18.723675],
|
||||||
|
[109.756159, 18.788928],
|
||||||
|
[109.773474, 18.809404],
|
||||||
|
[109.715419, 18.833686]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469030, "name": "琼中", "center": [109.839996, 19.03557], "centroid": [109.854584, 19.033919], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 18, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.876436, 19.386926],
|
||||||
|
[109.857269, 19.412388],
|
||||||
|
[109.793474, 19.379966],
|
||||||
|
[109.737734, 19.407486],
|
||||||
|
[109.646439, 19.402425],
|
||||||
|
[109.647272, 19.357505],
|
||||||
|
[109.700234, 19.349436],
|
||||||
|
[109.713382, 19.309881],
|
||||||
|
[109.697271, 19.271267],
|
||||||
|
[109.706808, 19.22156],
|
||||||
|
[109.686994, 19.178965],
|
||||||
|
[109.687734, 19.118775],
|
||||||
|
[109.613569, 19.086454],
|
||||||
|
[109.601439, 19.053492],
|
||||||
|
[109.561347, 19.072668],
|
||||||
|
[109.524033, 19.030986],
|
||||||
|
[109.55357, 18.946321],
|
||||||
|
[109.601532, 18.910318],
|
||||||
|
[109.676531, 18.925862],
|
||||||
|
[109.730512, 18.913649],
|
||||||
|
[109.699123, 18.889379],
|
||||||
|
[109.715419, 18.833686],
|
||||||
|
[109.773474, 18.809404],
|
||||||
|
[109.830696, 18.728597],
|
||||||
|
[109.891065, 18.754479],
|
||||||
|
[109.902361, 18.739395],
|
||||||
|
[109.94412, 18.771942],
|
||||||
|
[109.980416, 18.76718],
|
||||||
|
[110.014952, 18.732885],
|
||||||
|
[110.057267, 18.758448],
|
||||||
|
[110.095785, 18.811467],
|
||||||
|
[110.045322, 18.884778],
|
||||||
|
[110.097729, 18.911746],
|
||||||
|
[110.108284, 18.944577],
|
||||||
|
[110.158562, 18.99944],
|
||||||
|
[110.124118, 19.04747],
|
||||||
|
[110.115229, 19.133191],
|
||||||
|
[110.057267, 19.134617],
|
||||||
|
[110.026526, 19.17564],
|
||||||
|
[109.957638, 19.188625],
|
||||||
|
[109.923565, 19.239608],
|
||||||
|
[109.822733, 19.289626],
|
||||||
|
[109.826436, 19.343108],
|
||||||
|
[109.876436, 19.386926]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -29,7 +29,8 @@ const GetEchar = async (name: string) => {
|
|||||||
let chartDom = document.getElementById('chartMap')
|
let chartDom = document.getElementById('chartMap')
|
||||||
myCharts.value?.dispose()
|
myCharts.value?.dispose()
|
||||||
myCharts.value = echarts.init(chartDom)
|
myCharts.value = echarts.init(chartDom)
|
||||||
name == '中国' ? (showCircle.value = false) : (showCircle.value = true)
|
|
||||||
|
name == dictData.state.area?.[0].name ? (showCircle.value = false) : (showCircle.value = true)
|
||||||
|
|
||||||
echarts.registerMap(name, await fetchConfig(name)) //注册可用的地图
|
echarts.registerMap(name, await fetchConfig(name)) //注册可用的地图
|
||||||
let option = {
|
let option = {
|
||||||
@@ -156,6 +157,7 @@ const GetEchar = async (name: string) => {
|
|||||||
// 点击事件
|
// 点击事件
|
||||||
myCharts.value.off('click')
|
myCharts.value.off('click')
|
||||||
myCharts.value.on('click', (e: any) => {
|
myCharts.value.on('click', (e: any) => {
|
||||||
|
// if (name == dictData.state.area?.[0].name && e.componentIndex == 0) {
|
||||||
if (name == '中国' && e.componentIndex == 0) {
|
if (name == '中国' && e.componentIndex == 0) {
|
||||||
MapReturn(e.name)
|
MapReturn(e.name)
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
ref='treeRef'
|
ref='treeRef'
|
||||||
:props='defaultProps'
|
:props='defaultProps'
|
||||||
highlight-current
|
highlight-current
|
||||||
default-expand-all
|
|
||||||
:filter-node-method='filterNode'
|
:filter-node-method='filterNode'
|
||||||
node-key='id'
|
node-key='id'
|
||||||
v-bind='$attrs'
|
v-bind='$attrs'
|
||||||
|
|||||||
@@ -130,8 +130,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-select,
|
.el-select {
|
||||||
.el-input {
|
|
||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,7 +181,8 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
|
.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner,
|
||||||
background-color: var(--el-checkbox-checked-bg-color);
|
.el-radio__input.is-disabled.is-checked .el-radio__inner {
|
||||||
|
background-color: var(--el-color-primary);
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
|
||||||
<div>
|
<div>
|
||||||
<TableHeader area datePicker ref="TableHeaderRef">
|
<TableHeader area datePicker ref="TableHeaderRef">
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="问题来源">
|
<el-form-item label="问题来源">
|
||||||
<el-select
|
<el-select v-model="tableStore.table.params.problemSources" clearable placeholder="请选择问题来源">
|
||||||
v-model="tableStore.table.params.problemSources"
|
|
||||||
clearable
|
|
||||||
placeholder="请选择问题来源"
|
|
||||||
>
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in problemData"
|
v-for="item in problemData"
|
||||||
:key="item.code"
|
:key="item.code"
|
||||||
@@ -39,7 +34,21 @@
|
|||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<Table ref="tableRef" />
|
<Table ref="tableRef" />
|
||||||
</div>
|
|
||||||
|
<!-- 审核 -->
|
||||||
|
<el-dialog draggable title="问题审核" v-model="dialogVisible" width="1400px" :before-close="beforeClose">
|
||||||
|
<Filling
|
||||||
|
ref="FillingRef"
|
||||||
|
v-if="dialogVisible"
|
||||||
|
:isDisabled="true"
|
||||||
|
:audit="true"
|
||||||
|
:flag="true"
|
||||||
|
@beforeClose="beforeClose"
|
||||||
|
/>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<!-- 审核记录 -->
|
||||||
|
<recording ref="recordingRef" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@@ -47,23 +56,25 @@ import { ref, onMounted, provide, nextTick } from 'vue'
|
|||||||
import TableStore from '@/utils/tableStore'
|
import TableStore from '@/utils/tableStore'
|
||||||
import Table from '@/components/table/index.vue'
|
import Table from '@/components/table/index.vue'
|
||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
|
||||||
import { mainHeight } from '@/utils/layout'
|
|
||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
|
|
||||||
|
|
||||||
|
import Filling from './filling.vue'
|
||||||
|
import recording from './recording.vue'
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const problemData = dictData.getBasicData('Problem_Sources')
|
const problemData = dictData.getBasicData('Problem_Sources')
|
||||||
const fillingProgress = dictData.getBasicData('Fill_Progress')
|
const fillingProgress = dictData.getBasicData('Fill_Progress')
|
||||||
const TableHeaderRef = ref()
|
const TableHeaderRef = ref()
|
||||||
|
const FillingRef = ref()
|
||||||
const ruleFormRef = ref()
|
const ruleFormRef = ref()
|
||||||
|
|
||||||
|
const list: any = ref({})
|
||||||
|
const recordingRef = ref(false)
|
||||||
|
const dialogVisible = ref(false)
|
||||||
const tableStore = new TableStore({
|
const tableStore = new TableStore({
|
||||||
url: '/process-boot/electricityQuality/getIssues',
|
url: '/process-boot/electricityQuality/getIssues',
|
||||||
publicHeight: 65,
|
publicHeight: 65,
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
column: [
|
column: [
|
||||||
// { width: '60', type: 'checkbox' },
|
|
||||||
{
|
{
|
||||||
field: 'index',
|
field: 'index',
|
||||||
title: '序号',
|
title: '序号',
|
||||||
@@ -99,7 +110,13 @@ const tableStore = new TableStore({
|
|||||||
type: 'primary',
|
type: 'primary',
|
||||||
icon: 'el-icon-Plus',
|
icon: 'el-icon-Plus',
|
||||||
render: 'basicButton',
|
render: 'basicButton',
|
||||||
click: async row => {}
|
click: async row => {
|
||||||
|
dialogVisible.value = true
|
||||||
|
setTimeout(() => {
|
||||||
|
list.value = row
|
||||||
|
FillingRef.value.open(row)
|
||||||
|
}, 10)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'edit',
|
name: 'edit',
|
||||||
@@ -107,7 +124,9 @@ const tableStore = new TableStore({
|
|||||||
type: 'primary',
|
type: 'primary',
|
||||||
icon: 'el-icon-Plus',
|
icon: 'el-icon-Plus',
|
||||||
render: 'basicButton',
|
render: 'basicButton',
|
||||||
click: async row => {}
|
click: async row => {
|
||||||
|
recordingRef.value.open(row)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -124,7 +143,12 @@ tableStore.table.params.reportProcess = ''
|
|||||||
tableStore.table.params.problemName = ''
|
tableStore.table.params.problemName = ''
|
||||||
tableStore.table.params.reportProcessStatus = 'Auditt'
|
tableStore.table.params.reportProcessStatus = 'Auditt'
|
||||||
|
|
||||||
|
const beforeClose = () => {
|
||||||
|
tableStore.index()
|
||||||
|
dialogVisible.value = false
|
||||||
|
}
|
||||||
provide('tableStore', tableStore)
|
provide('tableStore', tableStore)
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -166,7 +166,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="流程" name="2">
|
<el-tab-pane label="流程" name="2">
|
||||||
<Filling v-if="dialogVisible" :isDisabled="true" ref="FillingRef" />
|
<Filling v-if="dialogVisible" :isDisabled="true" :audit="true" ref="FillingRef" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|||||||
@@ -72,10 +72,37 @@
|
|||||||
@handleClose="handleClose"
|
@handleClose="handleClose"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<!-- 填报 -->
|
||||||
<div style="display: flex; justify-content: center; margin-top: 10px" v-show="!disabled">
|
<div style="display: flex; justify-content: center; margin-top: 10px" v-show="!disabled">
|
||||||
<el-button type="primary" @click="Submit">提交审核</el-button>
|
<el-button type="primary" @click="Submit">提交审核</el-button>
|
||||||
<el-button @click="handleClose">取消</el-button>
|
<el-button @click="handleClose">取消</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 审核 -->
|
||||||
|
<el-form
|
||||||
|
label-width="100px"
|
||||||
|
:model="form"
|
||||||
|
ref="ruleFormRef"
|
||||||
|
:rules="rules"
|
||||||
|
v-if="disabled && audit && flag && control == active"
|
||||||
|
>
|
||||||
|
<el-form-item prop="checkComment" label="审核意见:">
|
||||||
|
<el-input
|
||||||
|
type="textarea"
|
||||||
|
style="width: 400px"
|
||||||
|
:autosize="{ minRows: 2, maxRows: 4 }"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
v-model="form.checkComment"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div
|
||||||
|
style="display: flex; justify-content: center; margin-top: 10px"
|
||||||
|
v-if="disabled && audit && flag && control == active"
|
||||||
|
>
|
||||||
|
<el-button type="primary" @click="adopt(1)">通过</el-button>
|
||||||
|
<el-button type="primary" @click="adopt(0)">不通过</el-button>
|
||||||
|
<el-button @click="handleClose">取消</el-button>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
@@ -84,11 +111,13 @@ import process1 from './process1.vue'
|
|||||||
import process2 from './process2.vue'
|
import process2 from './process2.vue'
|
||||||
import process3 from './process3.vue'
|
import process3 from './process3.vue'
|
||||||
import process4 from './process4.vue'
|
import process4 from './process4.vue'
|
||||||
|
import { ElMessage } from 'element-plus'
|
||||||
import {
|
import {
|
||||||
getAbnormalDetail,
|
getAbnormalDetail,
|
||||||
getComplaintDetail,
|
getComplaintDetail,
|
||||||
getGeneralSurveyDetail,
|
getGeneralSurveyDetail,
|
||||||
getExcessiveDetail
|
getExcessiveDetail,
|
||||||
|
checkPowerQuality
|
||||||
} from '@/api/process-boot/electricitymanagement'
|
} from '@/api/process-boot/electricitymanagement'
|
||||||
const emit = defineEmits(['beforeClose'])
|
const emit = defineEmits(['beforeClose'])
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
@@ -96,18 +125,31 @@ const addData: any = ref({})
|
|||||||
const List: any = ref({})
|
const List: any = ref({})
|
||||||
const active = ref(4)
|
const active = ref(4)
|
||||||
const control = ref()
|
const control = ref()
|
||||||
|
const ruleFormRef = ref()
|
||||||
const stepTitle = ['原因分析', '计划整改措施', '实际采取措施', '成效分析']
|
const stepTitle = ['原因分析', '计划整改措施', '实际采取措施', '成效分析']
|
||||||
const process0Ref = ref()
|
const process0Ref = ref()
|
||||||
const process1Ref = ref()
|
const process1Ref = ref()
|
||||||
const process2Ref = ref()
|
const process2Ref = ref()
|
||||||
const process3Ref = ref()
|
const process3Ref = ref()
|
||||||
|
const form = ref({
|
||||||
|
checkComment: ''
|
||||||
|
})
|
||||||
const disabled = ref(false)
|
const disabled = ref(false)
|
||||||
const prop = defineProps({
|
const prop = defineProps({
|
||||||
isDisabled: {
|
isDisabled: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
audit: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
flag: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const problemData = dictData.getBasicData('Problem_Sources')
|
const problemData = dictData.getBasicData('Problem_Sources')
|
||||||
const open = async (row: any) => {
|
const open = async (row: any) => {
|
||||||
addData.value = row
|
addData.value = row
|
||||||
@@ -124,7 +166,6 @@ const open = async (row: any) => {
|
|||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
List.value = res.data
|
List.value = res.data
|
||||||
|
|
||||||
if (res.data.filePathYyfx == null) {
|
if (res.data.filePathYyfx == null) {
|
||||||
active.value = 0
|
active.value = 0
|
||||||
} else if (res.data.filePathJhzg == null) {
|
} else if (res.data.filePathJhzg == null) {
|
||||||
@@ -143,9 +184,18 @@ const open = async (row: any) => {
|
|||||||
active.value = 2
|
active.value = 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 审核判断
|
||||||
|
if (prop.audit) {
|
||||||
|
active.value == 0 ? 0 : (active.value = active.value - 1)
|
||||||
|
}
|
||||||
|
|
||||||
control.value = active.value == 4 ? 3 : active.value
|
control.value = active.value == 4 ? 3 : active.value
|
||||||
}, 0)
|
}, 0)
|
||||||
}
|
}
|
||||||
|
const rules = {
|
||||||
|
checkComment: [{ required: true, message: '请输入审核意见', trigger: 'blur' }]
|
||||||
|
}
|
||||||
|
|
||||||
const step = (e: number) => {
|
const step = (e: number) => {
|
||||||
if (active.value >= e) {
|
if (active.value >= e) {
|
||||||
@@ -176,8 +226,31 @@ const Submit = () => {
|
|||||||
}
|
}
|
||||||
// 取消
|
// 取消
|
||||||
const handleClose = () => {
|
const handleClose = () => {
|
||||||
|
form.value.checkComment = ''
|
||||||
emit('beforeClose')
|
emit('beforeClose')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 审核
|
||||||
|
const adopt = (type: number) => {
|
||||||
|
ruleFormRef.value.validate((valid: any) => {
|
||||||
|
if (valid) {
|
||||||
|
const adminInfo = window.localStorage.getItem('adminInfo')
|
||||||
|
const adminName = adminInfo ? JSON.parse(adminInfo).name : ''
|
||||||
|
|
||||||
|
checkPowerQuality({
|
||||||
|
checkComment: form.value.checkComment,
|
||||||
|
checkPerson: adminName,
|
||||||
|
checkResult: type,
|
||||||
|
powerQualityProblemNo: addData.value.powerQualityProblemNo,
|
||||||
|
reportProcess: addData.value.reportProcess
|
||||||
|
}).then((res: any) => {
|
||||||
|
ElMessage.success(res.message)
|
||||||
|
handleClose()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
defineExpose({ open })
|
defineExpose({ open })
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@@ -15,9 +15,9 @@
|
|||||||
<el-select v-model="tableStore.table.params.reportProcess" clearable placeholder="请选择填报进度">
|
<el-select v-model="tableStore.table.params.reportProcess" clearable placeholder="请选择填报进度">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in fillingProgress"
|
v-for="item in fillingProgress"
|
||||||
:key="item.id"
|
:key="item.code"
|
||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id"
|
:value="item.code"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -25,9 +25,9 @@
|
|||||||
<el-select v-model="tableStore.table.params.reportProcessStatus" clearable placeholder="请选择审核状态">
|
<el-select v-model="tableStore.table.params.reportProcessStatus" clearable placeholder="请选择审核状态">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in auditStatus"
|
v-for="item in auditStatus"
|
||||||
:key="item.id"
|
:key="item.code"
|
||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id"
|
:value="item.code"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -49,11 +49,14 @@
|
|||||||
<NewlyAdd v-if="showNewlyAdded" @handleClose="handleClose" @onSubmit="beforeClose" />
|
<NewlyAdd v-if="showNewlyAdded" @handleClose="handleClose" @onSubmit="beforeClose" />
|
||||||
<!-- 填报 -->
|
<!-- 填报 -->
|
||||||
<el-dialog draggable title="填报" v-model="dialogVisible" width="1400px" :before-close="beforeClose">
|
<el-dialog draggable title="填报" v-model="dialogVisible" width="1400px" :before-close="beforeClose">
|
||||||
<Filling ref="FillingRef" v-if="dialogVisible"@beforeClose="beforeClose" />
|
<Filling ref="FillingRef" v-if="dialogVisible" @beforeClose="beforeClose" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 详情 -->
|
<!-- 详情 -->
|
||||||
<Detail ref="detailRef" />
|
<Detail ref="detailRef" />
|
||||||
|
|
||||||
|
<!-- 审核记录 -->
|
||||||
|
<recording ref="recordingRef" />
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, provide, nextTick } from 'vue'
|
import { ref, onMounted, provide, nextTick } from 'vue'
|
||||||
@@ -66,11 +69,13 @@ import { useDictData } from '@/stores/dictData'
|
|||||||
import NewlyAdd from './NewlyAdd.vue'
|
import NewlyAdd from './NewlyAdd.vue'
|
||||||
import Filling from './filling.vue'
|
import Filling from './filling.vue'
|
||||||
import Detail from './detail.vue'
|
import Detail from './detail.vue'
|
||||||
|
import recording from './recording.vue'
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const FillingRef = ref()
|
const FillingRef = ref()
|
||||||
|
|
||||||
const showNewlyAdded = ref(false)
|
const showNewlyAdded = ref(false)
|
||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
|
const recordingRef = ref(false)
|
||||||
const TableHeaderRef = ref()
|
const TableHeaderRef = ref()
|
||||||
const detailRef = ref()
|
const detailRef = ref()
|
||||||
const problemData = dictData.getBasicData('Problem_Sources')
|
const problemData = dictData.getBasicData('Problem_Sources')
|
||||||
@@ -82,7 +87,7 @@ const tableStore: any = new TableStore({
|
|||||||
publicHeight: 65,
|
publicHeight: 65,
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
column: [
|
column: [
|
||||||
{ width: '60', type: 'checkbox' },
|
// { width: '60', type: 'checkbox' },
|
||||||
{
|
{
|
||||||
field: 'index',
|
field: 'index',
|
||||||
title: '序号',
|
title: '序号',
|
||||||
@@ -182,7 +187,9 @@ const tableStore: any = new TableStore({
|
|||||||
},
|
},
|
||||||
icon: 'el-icon-PieChart',
|
icon: 'el-icon-PieChart',
|
||||||
render: 'basicButton',
|
render: 'basicButton',
|
||||||
click: async row => {}
|
click: row => {
|
||||||
|
recordingRef.value.open(row)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'del',
|
name: 'del',
|
||||||
|
|||||||
@@ -153,7 +153,6 @@ onMounted(() => {
|
|||||||
if (prop.List.filePathYyfx != null) {
|
if (prop.List.filePathYyfx != null) {
|
||||||
causeAnalysisData.value = prop.List
|
causeAnalysisData.value = prop.List
|
||||||
}
|
}
|
||||||
console.log(prop.disabled)
|
|
||||||
})
|
})
|
||||||
const submit = (num: number) => {
|
const submit = (num: number) => {
|
||||||
console.log(prop.addData.problemSources)
|
console.log(prop.addData.problemSources)
|
||||||
|
|||||||
@@ -1,16 +1,43 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<el-dialog draggable v-model="dialogVisible" title="历史审核记录" width="1000px">
|
||||||
<vxe-table v-bind="defaultAttribute" height="350" ref="xTable1Ref" :data="list">
|
<vxe-table v-bind="defaultAttribute" height="500" ref="xTable1Ref" :data="list">
|
||||||
<vxe-column field="sustationName" title="变电站"></vxe-column>
|
<vxe-column field="reportProcess" title="审核节点" :formatter="formatter"></vxe-column>
|
||||||
<vxe-column field="barName" title="母线"></vxe-column>
|
<vxe-column field="type" title="审核结果" :formatter="formatter"></vxe-column>
|
||||||
<vxe-column field="measurementPointName" title="监测点名称"></vxe-column>
|
<vxe-column field="checker" title="审核人"></vxe-column>
|
||||||
|
<vxe-column field="orgName" title="审核人单位"></vxe-column>
|
||||||
|
<vxe-column field="dataDate" title="审核时间" min-width="100px"></vxe-column>
|
||||||
|
<vxe-column field="description" title="审核意见" min-width="180px"></vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</div>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive } from 'vue'
|
import { ref, reactive } from 'vue'
|
||||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
|
import { queryCheckTrack } from '@/api/process-boot/electricitymanagement'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
const dictData = useDictData()
|
||||||
|
const problemData = dictData.getBasicData('Fill_Progress')
|
||||||
|
const auditStatus = dictData.getBasicData('Audit_Status')
|
||||||
const list = ref([])
|
const list = ref([])
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
|
||||||
|
const formatter = (row: any) => {
|
||||||
|
if (row.column.field == 'reportProcess') {
|
||||||
|
return problemData.filter((item: any) => item.code == row.cellValue)[0]?.name
|
||||||
|
} else if (row.column.field == 'type') {
|
||||||
|
return auditStatus.filter((item: any) => item.code == row.cellValue)[0]?.name
|
||||||
|
} else {
|
||||||
|
return row.cellValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const open = (row: any) => {
|
||||||
|
dialogVisible.value = true
|
||||||
|
queryCheckTrack(row.powerQualityProblemNo).then((res: any) => {
|
||||||
|
list.value = res.data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({ open })
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped></style>
|
<style lang="scss" scoped></style>
|
||||||
|
|||||||
@@ -2,20 +2,37 @@
|
|||||||
<TableHeader area datePicker ref="TableHeaderRef">
|
<TableHeader area datePicker ref="TableHeaderRef">
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="计划状态">
|
<el-form-item label="计划状态">
|
||||||
<el-select v-model="tableStore.table.params.status" placeholder="请选择计划状态">
|
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择计划状态">
|
||||||
<el-option v-for="item in list" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
<el-option v-for="item in list" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<template #operation>
|
<template #operation>
|
||||||
<el-button icon="el-icon-Plus" type="primary" @click="add">新增计划</el-button>
|
<el-button icon="el-icon-Plus" type="primary" @click="add">新增计划</el-button>
|
||||||
<el-button icon="el-icon-Stamp" type="primary" @click="planReviewFn">提交审核</el-button>
|
<el-button icon="el-icon-Stamp" type="primary" @click="submit">提交审核</el-button>
|
||||||
<el-button icon="el-icon-Download" type="primary">导出</el-button>
|
<el-button icon="el-icon-Download" type="primary" @click="exportFn">导出</el-button>
|
||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader ref="tableRef">
|
||||||
<Table ref="tableRef" />
|
<Table ref="tableRef" />
|
||||||
<!-- 新增 -->
|
<!-- 新增 -->
|
||||||
<planAdd ref="planAddRef" @onsubmit="tableStore.index()" />
|
<planAdd ref="planAddRef" @onsubmit="tableStore.index()" />
|
||||||
|
|
||||||
|
<!-- 选择审核人 -->
|
||||||
|
<el-dialog v-model="dialogVisible" title="审核" width="300" :before-close="handleClose">
|
||||||
|
选择审核人: <el-select v-model="auditUser" clearable placeholder="请选择计划状态">
|
||||||
|
<el-option v-for="item in auditList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
<template #footer>
|
||||||
|
<span class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="planReviewFn">确定</el-button>
|
||||||
|
<el-button @click="handleClose">取消</el-button>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, provide, nextTick } from 'vue'
|
import { ref, onMounted, provide, nextTick } from 'vue'
|
||||||
@@ -27,8 +44,11 @@ import { planStatus } from '@/api/process-boot/generalTest'
|
|||||||
import planAdd from './planAdd.vue'
|
import planAdd from './planAdd.vue'
|
||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
|
||||||
import { initDetpStataionTree } from '@/api/process-boot/generalTest'
|
import { queryPlan,deletePlan } from '@/api/process-boot/generalTest'
|
||||||
|
import { getUserByRoleType } from '@/api/user-boot/user'
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
|
const dialogVisible=ref(false)
|
||||||
|
const tableRef = ref()
|
||||||
const list = [
|
const list = [
|
||||||
{
|
{
|
||||||
id: 0,
|
id: 0,
|
||||||
@@ -50,6 +70,8 @@ const list = [
|
|||||||
|
|
||||||
const planAddRef = ref()
|
const planAddRef = ref()
|
||||||
const TableHeaderRef = ref()
|
const TableHeaderRef = ref()
|
||||||
|
const auditList:any = ref([])
|
||||||
|
const auditUser = ref('')
|
||||||
|
|
||||||
const ruleFormRef = ref()
|
const ruleFormRef = ref()
|
||||||
const tableStore = new TableStore({
|
const tableStore = new TableStore({
|
||||||
@@ -113,6 +135,28 @@ const tableStore = new TableStore({
|
|||||||
click: async row => {
|
click: async row => {
|
||||||
planAddRef.value.open('编辑计划', row)
|
planAddRef.value.open('编辑计划', row)
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'del',
|
||||||
|
title: '删除',
|
||||||
|
type: 'danger',
|
||||||
|
icon: 'el-icon-Delete',
|
||||||
|
render: 'confirmButton',
|
||||||
|
disabled: row => {
|
||||||
|
return !(row.status == 0 || row.status == 2)
|
||||||
|
},
|
||||||
|
popconfirm: {
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
confirmButtonType: 'danger',
|
||||||
|
title: '确定删除吗?'
|
||||||
|
},
|
||||||
|
click: row => {
|
||||||
|
deletePlan([row.planNo]).then(res => {
|
||||||
|
ElMessage.success('删除成功')
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -131,31 +175,61 @@ const add = () => {
|
|||||||
// title.value = '普测计划新增'
|
// title.value = '普测计划新增'
|
||||||
planAddRef.value.open('普测计划新增')
|
planAddRef.value.open('普测计划新增')
|
||||||
}
|
}
|
||||||
// 提交审核
|
const submit = () => {
|
||||||
const planReviewFn = () => {
|
if(tableStore.table.selection.length == 0){
|
||||||
let planNo: any = []
|
|
||||||
let flag = true
|
|
||||||
tableStore.table.selection.forEach(item => {
|
|
||||||
if (item.status == 0 || item.status == 2) {
|
|
||||||
planNo.push(item.planNo)
|
|
||||||
} else {
|
|
||||||
flag = false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
if (flag) {
|
|
||||||
planStatus(planNo).then(res => {
|
|
||||||
ElMessage.success('提交成功!')
|
|
||||||
|
|
||||||
tableStore.index()
|
return ElMessage.warning('请选择计划进行审核')
|
||||||
})
|
}
|
||||||
|
const flag = !tableStore.table.selection.some(item => item.status !== 0 && item.status !== 2);
|
||||||
|
if (flag) {
|
||||||
|
dialogVisible.value = true
|
||||||
} else {
|
} else {
|
||||||
ElMessage.warning('请选择新建、未通过的计划进行审核!')
|
ElMessage.warning('请选择新建、未通过的计划进行审核!')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// 提交审核
|
||||||
|
const planReviewFn = () => {
|
||||||
|
let planNo: any = []
|
||||||
|
tableStore.table.selection.forEach(item => {
|
||||||
|
if (item.status == 0 || item.status == 2) {
|
||||||
|
planNo.push(item.planNo)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
planStatus(planNo).then(res => {
|
||||||
|
ElMessage.success('提交成功!')
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
const exportFn = () => {
|
||||||
|
let form = JSON.parse(JSON.stringify(tableStore.table.params))
|
||||||
|
form.pageNum = 1
|
||||||
|
form.pageSize = tableStore.table.total
|
||||||
|
queryPlan(form).then(res => {
|
||||||
|
tableRef.value.getRef().exportData({
|
||||||
|
filename: '普测计划', // 文件名字
|
||||||
|
sheetName: 'Sheet1',
|
||||||
|
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||||
|
useStyle: true,
|
||||||
|
data: res.data.records, // 数据源 // 过滤那个字段导出
|
||||||
|
columnFilterMethod: function (column: any) {
|
||||||
|
return !(column.$columnIndex === 0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const handleClose = () => {
|
||||||
|
dialogVisible.value = false
|
||||||
|
auditUser.value = ''
|
||||||
}
|
}
|
||||||
// 取消
|
// 取消
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
|
getUserByRoleType(3).then(res => {
|
||||||
|
auditList.value = res.data
|
||||||
|
})
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
<el-tab-pane label="普测计划审批" name="2">
|
<el-tab-pane label="普测计划审批" name="2">
|
||||||
<planAudits v-if="activeName == '2'"/>
|
<planAudits v-if="activeName == '2'"/>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="普测结果管理" name="3"><outcome v-if="activeName == '3'"/></el-tab-pane>
|
<!-- <el-tab-pane label="普测结果管理" name="3"><outcome v-if="activeName == '3'"/></el-tab-pane>
|
||||||
<el-tab-pane label="普测计划占比配置" name="4"><occupancy v-if="activeName == '4'"/></el-tab-pane>
|
<el-tab-pane label="普测计划占比配置" name="4"><occupancy v-if="activeName == '4'"/></el-tab-pane> -->
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -59,20 +59,20 @@
|
|||||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">
|
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">
|
||||||
入网评估结论填报
|
入网评估结论填报
|
||||||
</el-divider>
|
</el-divider>
|
||||||
<el-form-item label="是否超标:" style="margin-top: 10px" prop="iIsOverLimit">
|
<el-form-item label="是否超标:" style="margin-top: 10px" prop="iIsOverLimit" @change="changeOverLimit">
|
||||||
<el-radio v-model="addForm.iIsOverLimit" :label="1">是</el-radio>
|
<el-radio v-model="addForm.iIsOverLimit" :label="1">是</el-radio>
|
||||||
<el-radio v-model="addForm.iIsOverLimit" :label="0">否</el-radio>
|
<el-radio v-model="addForm.iIsOverLimit" :label="0">否</el-radio>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<br />
|
<br v-if="show"/>
|
||||||
<el-form-item label="超标指标:" style="margin-top: 10px" prop="IOverLimitTarget">
|
<el-form-item label="超标指标:" style="margin-top: 10px" prop="IOverLimitTarget" v-if="show">
|
||||||
<el-checkbox-group v-model="addForm.IOverLimitTarget">
|
<el-checkbox-group v-model="addForm.IOverLimitTarget">
|
||||||
<el-checkbox v-for="(item, ind) in exceeded" :label="item.id">
|
<el-checkbox v-for="(item, ind) in exceeded" :label="item.id">
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</el-checkbox>
|
</el-checkbox>
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<br />
|
<br v-if="show"/>
|
||||||
<el-form-item label="计划采取措施:" style="margin-top: 10px" prop="IPlanStep">
|
<el-form-item label="计划采取措施:" style="margin-top: 10px" prop="IPlanStep" v-if="show">
|
||||||
<el-select v-model="addForm.IPlanStep" placeholder="请选择">
|
<el-select v-model="addForm.IPlanStep" placeholder="请选择">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in takeMeasures"
|
v-for="item in takeMeasures"
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div style="display: flex; justify-content: center; margin-top: 30px" v-if="title != '未建档干扰源用户详情'">
|
<div style="display: flex; justify-content: center; margin-top: 30px" v-if="title != '未建档干扰源用户详情'">
|
||||||
<el-button type="primary" class="ml20" @click="submit(1)">提交</el-button>
|
<el-button type="primary" class="ml20" @click="submit(1)">审核</el-button>
|
||||||
<el-button type="primary" class="ml20" @click="submit(2)">保存</el-button>
|
<el-button type="primary" class="ml20" @click="submit(2)">保存</el-button>
|
||||||
<el-button type="primary" class="ml20" @click="cancel">取消</el-button>
|
<el-button type="primary" class="ml20" @click="cancel">取消</el-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -115,7 +115,7 @@ const interferenceType = dictData.getBasicData('Interference_Source')
|
|||||||
|
|
||||||
const emit = defineEmits(['onSubmit'])
|
const emit = defineEmits(['onSubmit'])
|
||||||
const uploadConclusions = ref(false)
|
const uploadConclusions = ref(false)
|
||||||
|
const show = ref(false)
|
||||||
const addForm: any = ref({
|
const addForm: any = ref({
|
||||||
id: '',
|
id: '',
|
||||||
orgNo: '',
|
orgNo: '',
|
||||||
@@ -143,7 +143,7 @@ const submit = (flag: any) => {
|
|||||||
if (valid) {
|
if (valid) {
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
|
|
||||||
addForm.value.fileList.forEach(item => {
|
addForm.value.fileList.forEach((item: any) => {
|
||||||
if (item.raw == undefined) {
|
if (item.raw == undefined) {
|
||||||
} else {
|
} else {
|
||||||
formData.append('file', item.raw)
|
formData.append('file', item.raw)
|
||||||
@@ -211,6 +211,15 @@ const open = (text: string, row: any) => {
|
|||||||
|
|
||||||
uploadConclusions.value = true
|
uploadConclusions.value = true
|
||||||
}
|
}
|
||||||
|
const changeOverLimit = (e: any) => {
|
||||||
|
if (e.target.value == 0) {
|
||||||
|
show.value = false
|
||||||
|
} else {
|
||||||
|
show.value = true
|
||||||
|
}
|
||||||
|
addForm.value.IOverLimitTarget = []
|
||||||
|
addForm.value.IPlanStep = ''
|
||||||
|
}
|
||||||
|
|
||||||
defineExpose({ open })
|
defineExpose({ open })
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<template #operation>
|
<template #operation>
|
||||||
<el-button icon="el-icon-Plus" type="primary" @click="addList">新增</el-button>
|
<el-button icon="el-icon-Plus" type="primary" @click="addList">新增</el-button>
|
||||||
|
|
||||||
<el-button icon="el-icon-Download" type="primary">导出</el-button>
|
<el-button icon="el-icon-Download" @click="exportEvent" type="primary">导出</el-button>
|
||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<Table ref="tableRef" />
|
<Table ref="tableRef" />
|
||||||
@@ -47,9 +47,11 @@ import { mainHeight } from '@/utils/layout'
|
|||||||
import Add from './add.vue'
|
import Add from './add.vue'
|
||||||
import Audit from './audit.vue'
|
import Audit from './audit.vue'
|
||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
import { getLoadTypeUserList } from '@/api/process-boot/interference'
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
|
|
||||||
const TableHeaderRef = ref()
|
const TableHeaderRef = ref()
|
||||||
|
const tableRef = ref()
|
||||||
const interferenceType = dictData.getBasicData('Interference_Source')
|
const interferenceType = dictData.getBasicData('Interference_Source')
|
||||||
|
|
||||||
const istatusList = dictData.getBasicData('On-network_Status')
|
const istatusList = dictData.getBasicData('On-network_Status')
|
||||||
@@ -102,7 +104,7 @@ const tableStore = new TableStore({
|
|||||||
buttons: [
|
buttons: [
|
||||||
{
|
{
|
||||||
name: 'edit',
|
name: 'edit',
|
||||||
title: '上传',
|
title: '审核',
|
||||||
type: 'primary',
|
type: 'primary',
|
||||||
disabled: row => {
|
disabled: row => {
|
||||||
return !(
|
return !(
|
||||||
@@ -152,13 +154,25 @@ provide('tableStore', tableStore)
|
|||||||
const addList = () => {
|
const addList = () => {
|
||||||
addRef.value.open()
|
addRef.value.open()
|
||||||
}
|
}
|
||||||
// 提交
|
|
||||||
const submit = () => {
|
|
||||||
console.log(123, fileList.value)
|
|
||||||
}
|
|
||||||
// 保存
|
|
||||||
const preservation = () => {}
|
|
||||||
|
|
||||||
|
// 导出
|
||||||
|
const exportEvent = () => {
|
||||||
|
let form = JSON.parse(JSON.stringify(tableStore.table.params))
|
||||||
|
form.pageNum = 1
|
||||||
|
form.pageSize = tableStore.table.total
|
||||||
|
getLoadTypeUserList(form).then(res => {
|
||||||
|
tableRef.value.getRef().exportData({
|
||||||
|
filename: '未建档非线性用户', // 文件名字
|
||||||
|
sheetName: 'Sheet1',
|
||||||
|
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||||
|
useStyle: true,
|
||||||
|
data: res.data.records, // 数据源 // 过滤那个字段导出
|
||||||
|
columnFilterMethod: function (column: any) {
|
||||||
|
return !(column.$columnIndex === 0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main" :style="layout">
|
<div class="default-main" :style="layout">
|
||||||
<work />
|
<!-- <work /> -->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onMounted, reactive, ref, provide } from 'vue'
|
import { onMounted, reactive, ref, provide } from 'vue'
|
||||||
import work from './work.vue'
|
// import work from './work.vue'
|
||||||
|
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
defineOptions({
|
defineOptions({
|
||||||
|
|||||||
@@ -1,416 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-loading.fullscreen.lock="loading" class="bpmn-dialog">
|
|
||||||
<el-dialog v-model="dialogVisible" :fullscreen="true" draggable @close="close">
|
|
||||||
<template #header>
|
|
||||||
<el-space>
|
|
||||||
<el-button icon="FolderChecked" @click="saveModeler">保存</el-button>
|
|
||||||
<el-button icon="Download" @click="downloadProcess('xml')">导出xml</el-button>
|
|
||||||
<el-button icon="Download" @click="downloadProcess('bpmn')">导出bpmn</el-button>
|
|
||||||
<el-upload
|
|
||||||
ref="uploadRef"
|
|
||||||
:auto-upload="false"
|
|
||||||
:show-file-list="false"
|
|
||||||
:limit="1"
|
|
||||||
accept="text/xml"
|
|
||||||
@change="openProcess"
|
|
||||||
>
|
|
||||||
<template #trigger>
|
|
||||||
<el-button icon="Upload">导入</el-button>
|
|
||||||
</template>
|
|
||||||
</el-upload>
|
|
||||||
</el-space>
|
|
||||||
|
|
||||||
<ul class="icon-btn">
|
<div> </div>
|
||||||
<li v-for="item in iconBtn1" :key="item.key" :title="item.name" @click="handlerAlign(item)">
|
|
||||||
<el-icon>
|
|
||||||
<component :is="item.icon"></component>
|
|
||||||
</el-icon>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<ul class="icon-btn">
|
|
||||||
<li v-for="item in iconBtn2" :key="item.key" :title="item.name" @click="handlerReset(item)">
|
|
||||||
<el-icon>
|
|
||||||
<component :is="item.icon"></component>
|
|
||||||
</el-icon>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</template>
|
|
||||||
<splitpanes class="default-theme bpmn-body">
|
|
||||||
<pane min-size="20">
|
|
||||||
<div ref="canvasRef" class="canvas"></div>
|
|
||||||
</pane>
|
|
||||||
<!--属性面板将通过该元素呈现到其中-->
|
|
||||||
<pane :size="25" min-size="15" style="overflow-y: auto">
|
|
||||||
<div id="js-properties-panel" class="panel"></div>
|
|
||||||
</pane>
|
|
||||||
</splitpanes>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
<script setup lang='ts'>
|
||||||
<script lang="ts" setup name="ActDefinitionPage">
|
import { ref, reactive } from 'vue'
|
||||||
import { computed, watch, ref, nextTick } from 'vue'
|
|
||||||
import { ElMessage, type UploadFile } from 'element-plus'
|
|
||||||
import BpmnModeler from 'bpmn-js/lib/Modeler' // 引入 bpmn-js
|
|
||||||
import type { ModdleElement } from 'bpmn-js/lib/BaseModeler'
|
|
||||||
// 导入一下有关于bpmn-js的字体库以及样式文件
|
|
||||||
import 'bpmn-js/dist/assets/diagram-js.css'
|
|
||||||
import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css'
|
|
||||||
import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css'
|
|
||||||
import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css'
|
|
||||||
// // 右侧属性面包样式
|
|
||||||
// import "bpmn-js-properties-panel/dist/assets/properties-panel.css";
|
|
||||||
// import "bpmn-js-properties-panel/dist/assets/element-templates.css";
|
|
||||||
// 属性面板相关模块
|
|
||||||
import {
|
|
||||||
BpmnPropertiesPanelModule,
|
|
||||||
BpmnPropertiesProviderModule,
|
|
||||||
CamundaPlatformPropertiesProviderModule
|
|
||||||
} from 'bpmn-js-properties-panel'
|
|
||||||
import CamundaBpmnModdle from 'camunda-bpmn-moddle/resources/camunda.json'
|
|
||||||
// 汉化包
|
|
||||||
import customTranslate from '@/assets/bpmn/translate'
|
|
||||||
// 注意这个xml文件
|
|
||||||
import createBpmnXml, { activitiToCamundaXml, camundaToActivitiXml } from './xml' // 放在下面了
|
|
||||||
// 窗格拆分器插件
|
|
||||||
import { Splitpanes, Pane } from 'splitpanes'
|
|
||||||
import 'splitpanes/dist/splitpanes.css'
|
|
||||||
import saveAs from 'file-saver'
|
|
||||||
import type CommandStack from 'diagram-js/lib/command/CommandStack'
|
|
||||||
import { getModelerDetail, updateModeler, type ActModelerObj, type XmlMetaInfo } from '@/api/activiti/modeler'
|
|
||||||
|
|
||||||
//外部参数 ################################################
|
|
||||||
const props = withDefaults(
|
|
||||||
defineProps<{
|
|
||||||
modelValue: boolean
|
|
||||||
modelId: string
|
|
||||||
}>(),
|
|
||||||
{}
|
|
||||||
)
|
|
||||||
//ref对象 ################################################
|
|
||||||
const loading = ref(false)
|
|
||||||
const iconBtn1 = ref([
|
|
||||||
{ name: '左对齐', key: 'left', icon: 'myAlignStartVertical' },
|
|
||||||
{ name: '水平居中', key: 'center', icon: 'myAlignCenterVertical' },
|
|
||||||
{ name: '右对齐', key: 'right', icon: 'myAlignEndVertical' },
|
|
||||||
{ name: '上对齐', key: 'top', icon: 'myAlignStartHorizontal' },
|
|
||||||
{ name: '垂直居中', key: 'middle', icon: 'myAlignCenterHorizontal' },
|
|
||||||
{ name: '下对齐', key: 'bottom', icon: 'myAlignEndHorizontal' }
|
|
||||||
])
|
|
||||||
const iconBtn2 = ref([
|
|
||||||
{ name: '撤销', key: 'undo', icon: 'myUndo' },
|
|
||||||
{ name: '恢复', key: 'redo', icon: 'myRedo' },
|
|
||||||
{ name: '擦除重做', key: 'restart', icon: 'myEraser' }
|
|
||||||
])
|
|
||||||
//elment ################################################
|
|
||||||
const canvasRef = ref()
|
|
||||||
const uploadRef = ref()
|
|
||||||
//emit
|
|
||||||
const emit = defineEmits<{ (event: 'update:modelValue', value: boolean): void; (event: 'close'): void }>()
|
|
||||||
//内部变量 ################################################
|
|
||||||
let bpmnModeler: BpmnModeler | undefined = undefined
|
|
||||||
let modelData: ActModelerObj = { id: '' }
|
|
||||||
|
|
||||||
//computed ################################################
|
|
||||||
const dialogVisible = computed({
|
|
||||||
get() {
|
|
||||||
return props.modelValue
|
|
||||||
},
|
|
||||||
set(value) {
|
|
||||||
emit('update:modelValue', value)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// watch ################################################
|
|
||||||
watch(dialogVisible, value => {
|
|
||||||
nextTick(() => {
|
|
||||||
if (value && !bpmnModeler) {
|
|
||||||
initModeler()
|
|
||||||
}
|
|
||||||
if (value) {
|
|
||||||
refuseModelerData()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
// Function ################################################
|
|
||||||
/**
|
|
||||||
* 初始化 BpmnModeler
|
|
||||||
*/
|
|
||||||
const initModeler = () => {
|
|
||||||
// 将汉化包装成一个模块
|
|
||||||
const customTranslateModule = {
|
|
||||||
translate: ['value', customTranslate]
|
|
||||||
}
|
|
||||||
// 生成实例
|
|
||||||
bpmnModeler = new BpmnModeler({
|
|
||||||
container: canvasRef.value, // 获取到属性ref为“canvasRef”的dom节点
|
|
||||||
propertiesPanel: {
|
|
||||||
parent: '#js-properties-panel'
|
|
||||||
},
|
|
||||||
additionalModules: [
|
|
||||||
BpmnPropertiesPanelModule,
|
|
||||||
BpmnPropertiesProviderModule,
|
|
||||||
CamundaPlatformPropertiesProviderModule,
|
|
||||||
customTranslateModule // 汉化模块
|
|
||||||
],
|
|
||||||
moddleExtensions: {
|
|
||||||
camunda: CamundaBpmnModdle
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**刷新视图数据 */
|
|
||||||
const refuseModelerData = () => {
|
|
||||||
loading.value = true
|
|
||||||
getModelerDetail(props.modelId)
|
|
||||||
.then(({ data }) => {
|
|
||||||
data && (modelData = data)
|
|
||||||
const xml = data?.bpmnXml
|
|
||||||
createNewDiagram(xml ? activitiToCamundaXml(xml) : undefined)
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
loading.value = false
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对齐操作
|
|
||||||
*/
|
|
||||||
const handlerAlign = ({ key }: { key: string }) => {
|
|
||||||
if (bpmnModeler) {
|
|
||||||
const modeling = bpmnModeler.get('modeling')
|
|
||||||
const selection = bpmnModeler.get<{ get: () => ModdleElement[] }>('selection')
|
|
||||||
const align = bpmnModeler.get<ModdleElement>('alignElements')
|
|
||||||
|
|
||||||
if (modeling && selection) {
|
|
||||||
const SelectedElements = selection.get()
|
|
||||||
if (!SelectedElements || SelectedElements.length <= 1) {
|
|
||||||
return ElMessage.warning('请按住 Shift 键选择多个元素对齐')
|
|
||||||
}
|
|
||||||
align.trigger(SelectedElements, key)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 重置操作
|
|
||||||
*/
|
|
||||||
const handlerReset = ({ key }: { key: string }) => {
|
|
||||||
if (bpmnModeler) {
|
|
||||||
const command = bpmnModeler.get<CommandStack>('commandStack')
|
|
||||||
switch (key) {
|
|
||||||
case 'undo':
|
|
||||||
command && command.canUndo() && command.undo()
|
|
||||||
break
|
|
||||||
case 'redo':
|
|
||||||
command && command.canRedo() && command.redo()
|
|
||||||
break
|
|
||||||
case 'restart':
|
|
||||||
command && command.clear()
|
|
||||||
createNewDiagram()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 打开文件
|
|
||||||
*/
|
|
||||||
const openProcess = (rawFile: UploadFile) => {
|
|
||||||
if (!rawFile.raw) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
loading.value = true
|
|
||||||
const reader = new FileReader()
|
|
||||||
reader.readAsText(rawFile.raw, 'utf8')
|
|
||||||
reader.onload = () => {
|
|
||||||
if (typeof reader.result === 'string' && bpmnModeler) {
|
|
||||||
if (reader.result.indexOf('bpmn2:definitions') <= 0) {
|
|
||||||
ElMessage.error('请选择bpmn20标准的流程文件!')
|
|
||||||
loading.value = false
|
|
||||||
} else {
|
|
||||||
bpmnModeler
|
|
||||||
.importXML(reader.result)
|
|
||||||
.then(({ warnings }) => {
|
|
||||||
warnings && warnings.length > 0 && console.warn(warnings)
|
|
||||||
warnings && warnings.length > 0 && ElMessage.warning(warnings.toString())
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
loading.value = false
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
loading.value = false
|
|
||||||
}
|
|
||||||
uploadRef.value.clearFiles()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 加载bpmn.xml配置文件
|
|
||||||
*/
|
|
||||||
const createNewDiagram = (xml?: string) => {
|
|
||||||
loading.value = true
|
|
||||||
let bpmnXml = xml
|
|
||||||
if (!bpmnXml) {
|
|
||||||
const metaInfo = modelData.metaInfo ? (JSON.parse(modelData.metaInfo) as XmlMetaInfo) : {}
|
|
||||||
const param = {
|
|
||||||
key: modelData.key,
|
|
||||||
name: modelData.name,
|
|
||||||
description: metaInfo?.description,
|
|
||||||
version: metaInfo?.version
|
|
||||||
}
|
|
||||||
bpmnXml = createBpmnXml(param)
|
|
||||||
}
|
|
||||||
bpmnModeler &&
|
|
||||||
bpmnModeler
|
|
||||||
.importXML(bpmnXml)
|
|
||||||
.then(({ warnings }) => {
|
|
||||||
warnings && warnings.length > 0 && ElMessage.warning(warnings.toString())
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
loading.value = false
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存模型
|
|
||||||
*/
|
|
||||||
const saveModeler = () => {
|
|
||||||
loading.value = true
|
|
||||||
if (!bpmnModeler) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 读取xml、svg
|
|
||||||
Promise.all([bpmnModeler.saveXML({}), bpmnModeler.saveSVG()])
|
|
||||||
.then(([rsp1, rsp2]) => {
|
|
||||||
const { error, xml } = rsp1
|
|
||||||
const { svg } = rsp2
|
|
||||||
if (error) {
|
|
||||||
return { code: 500, msg: error.message }
|
|
||||||
}
|
|
||||||
if (!xml) {
|
|
||||||
return { code: 500, msg: 'xml文件不存在!' }
|
|
||||||
}
|
|
||||||
if (!svg) {
|
|
||||||
return { code: 500, msg: 'svg文件不存在!' }
|
|
||||||
}
|
|
||||||
return updateModeler({
|
|
||||||
id: modelData.id,
|
|
||||||
name: modelData.name,
|
|
||||||
description: modelData.description,
|
|
||||||
bpmnXml: camundaToActivitiXml(xml),
|
|
||||||
svgXml: svg
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.then(rsp => {
|
|
||||||
if (rsp.code === 200) {
|
|
||||||
ElMessage.success('保存成功')
|
|
||||||
} else {
|
|
||||||
ElMessage.success(rsp.msg)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
loading.value = false
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 下载流程图到本地
|
|
||||||
/**
|
|
||||||
* @param {string} type
|
|
||||||
* @param {string} name
|
|
||||||
*/
|
|
||||||
const downloadProcess = (type = 'xml', name = 'diagram') => {
|
|
||||||
loading.value = true
|
|
||||||
bpmnModeler &&
|
|
||||||
bpmnModeler
|
|
||||||
.saveXML({})
|
|
||||||
.then(({ error, xml }) => {
|
|
||||||
// 读取异常时抛出异常
|
|
||||||
if (error || !xml) {
|
|
||||||
console.error(`[Process Designer Warn ]:`, error)
|
|
||||||
} else {
|
|
||||||
const blob = new Blob([camundaToActivitiXml(xml)], {
|
|
||||||
type: type === 'xml' ? 'text/xml' : 'bpmn20-xml'
|
|
||||||
})
|
|
||||||
saveAs(blob, `${name}.${type}`)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
loading.value = false
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const close = () => {
|
|
||||||
emit('close')
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
|
||||||
.bpmn-dialog {
|
|
||||||
:deep(.el-dialog__body) {
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: calc(100vh - 65px);
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bpmn-body {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
min-height: 600px;
|
|
||||||
|
|
||||||
.canvas {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+')
|
|
||||||
repeat !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-btn {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
display: inline-flex;
|
|
||||||
margin-left: 30px;
|
|
||||||
|
|
||||||
li {
|
|
||||||
border-left: 1px solid var(--el-border-color);
|
|
||||||
border-top: 1px solid var(--el-border-color);
|
|
||||||
border-bottom: 1px solid var(--el-border-color);
|
|
||||||
color: var(--el-text-color-regular);
|
|
||||||
list-style: none;
|
|
||||||
font-size: 24px;
|
|
||||||
text-align: center;
|
|
||||||
cursor: pointer;
|
|
||||||
padding: 3px 8px 0 8px;
|
|
||||||
height: 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
li:hover {
|
|
||||||
background-color: #ecf5ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
li:first-child {
|
|
||||||
border-top-left-radius: 4px;
|
|
||||||
border-bottom-left-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
li:last-child {
|
|
||||||
border-top-right-radius: 4px;
|
|
||||||
border-bottom-right-radius: 4px;
|
|
||||||
border-right: 1px solid var(--el-border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-popper {
|
|
||||||
width: 60px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -93,12 +93,9 @@ const map = (res: any) => {
|
|||||||
tooltip: {
|
tooltip: {
|
||||||
formatter: function (params) {
|
formatter: function (params) {
|
||||||
var tips = ''
|
var tips = ''
|
||||||
if (params.color != undefined) {
|
if (params.value >= 0) {
|
||||||
tips += params.name + '</br/>'
|
tips += params.name + '</br/>'
|
||||||
tips += '暂降次数' + ':' + params.value + '次' + '<br/>'
|
tips += '暂降次数' + ':' + params.value + '次' + '<br/>'
|
||||||
} else if (params.color == undefined) {
|
|
||||||
tips += params.name + '</br/>'
|
|
||||||
tips += '暂降次数' + ':' + '暂无数据' + '<br/>'
|
|
||||||
}
|
}
|
||||||
return tips
|
return tips
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -128,7 +128,21 @@ const map = (res: any) => {
|
|||||||
title: {
|
title: {
|
||||||
text: '区域暂降评估'
|
text: '区域暂降评估'
|
||||||
},
|
},
|
||||||
|
tooltip: {
|
||||||
|
formatter: function (params: any) {
|
||||||
|
var tips = ''
|
||||||
|
console.log('🚀 ~ map ~ params:', params)
|
||||||
|
|
||||||
|
if (Number.isNaN(params.value) == true) {
|
||||||
|
tips += params.name + '</br>'
|
||||||
|
tips += '评估值:暂无数据'
|
||||||
|
} else {
|
||||||
|
tips += params.name + '</br>'
|
||||||
|
tips += '评估值:' + params.value
|
||||||
|
}
|
||||||
|
return tips
|
||||||
|
}
|
||||||
|
},
|
||||||
visualMap: {
|
visualMap: {
|
||||||
min: 0,
|
min: 0,
|
||||||
max: 2,
|
max: 2,
|
||||||
|
|||||||
@@ -59,14 +59,14 @@ import { useDictData } from '@/stores/dictData'
|
|||||||
import Area from '@/components/form/area/index.vue'
|
import Area from '@/components/form/area/index.vue'
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'voltage/sags/operationsManagement/index'
|
name: 'Operationmanagement/terminalmanagement'
|
||||||
})
|
})
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const manufacturer = dictData.getBasicData('Dev_Manufacturers')
|
const manufacturer = dictData.getBasicData('Dev_Manufacturers')
|
||||||
const manufacturerForm = ref<string[]>([])
|
const manufacturerForm = ref<string[]>([])
|
||||||
const tableStore = new TableStore({
|
const tableStore = new TableStore({
|
||||||
isWebPaging: true,
|
isWebPaging: true,
|
||||||
url: 'Operationmanagement/terminalmanagement',
|
url: '/device-boot/runManage/getRuntimeData',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
column: [
|
column: [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ const tableStore = new TableStore({
|
|||||||
type: 'bar'
|
type: 'bar'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '热备用',
|
name: '停运',
|
||||||
stack: 'one',
|
stack: 'one',
|
||||||
barMaxWidth: 30,
|
barMaxWidth: 30,
|
||||||
barMinHeight: 5,
|
barMinHeight: 5,
|
||||||
@@ -306,7 +306,7 @@ const tableStore = new TableStore({
|
|||||||
type: 'bar'
|
type: 'bar'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '热备用',
|
name: '停运',
|
||||||
stack: 'one',
|
stack: 'one',
|
||||||
barMaxWidth: 30,
|
barMaxWidth: 30,
|
||||||
barMinHeight: 5,
|
barMinHeight: 5,
|
||||||
|
|||||||
Reference in New Issue
Block a user