完成 电能质量问题管理页面 修改 谐波普测管理页面
This commit is contained in:
@@ -17,6 +17,15 @@ export function exportSurveyPlan(data: any) {
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
//删除普测计划
|
||||
export function deletePlan(data: any) {
|
||||
return createAxios({
|
||||
url: '/process-boot/rGeneralSurveyPlan/deletePlan',
|
||||
method: 'post',
|
||||
data,
|
||||
|
||||
})
|
||||
}
|
||||
//新增
|
||||
export function getGeneratrixByCondition(data: any) {
|
||||
return createAxios({
|
||||
|
||||
@@ -146,3 +146,10 @@ export function existMonitorDeptTree() {
|
||||
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]
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -10,7 +10,7 @@
|
||||
import { onBeforeUnmount, ref, watch, onMounted, defineEmits } from 'vue'
|
||||
import * as echarts from 'echarts4'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
const dictData = useDictData()
|
||||
const dictData = useDictData()
|
||||
const props = defineProps(['options'])
|
||||
const myCharts = ref()
|
||||
const showCircle = ref(false)
|
||||
@@ -29,7 +29,8 @@ const GetEchar = async (name: string) => {
|
||||
let chartDom = document.getElementById('chartMap')
|
||||
myCharts.value?.dispose()
|
||||
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)) //注册可用的地图
|
||||
let option = {
|
||||
@@ -156,7 +157,8 @@ const GetEchar = async (name: string) => {
|
||||
// 点击事件
|
||||
myCharts.value.off('click')
|
||||
myCharts.value.on('click', (e: any) => {
|
||||
if (name == '中国' && e.componentIndex == 0) {
|
||||
// if (name == dictData.state.area?.[0].name && e.componentIndex == 0) {
|
||||
if (name == '中国' && e.componentIndex == 0) {
|
||||
MapReturn(e.name)
|
||||
|
||||
// console.log('🚀 ~ file: MyEchartMap.vue:156 ~ myCharts.value.on ~ MapReturn(e.name):', MapReturn(e.name))
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
ref='treeRef'
|
||||
:props='defaultProps'
|
||||
highlight-current
|
||||
default-expand-all
|
||||
|
||||
:filter-node-method='filterNode'
|
||||
node-key='id'
|
||||
v-bind='$attrs'
|
||||
|
||||
@@ -130,8 +130,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.el-select,
|
||||
.el-input {
|
||||
.el-select {
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
@@ -182,7 +181,8 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
|
||||
background-color: var(--el-checkbox-checked-bg-color);
|
||||
.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner,
|
||||
.el-radio__input.is-disabled.is-checked .el-radio__inner {
|
||||
background-color: var(--el-color-primary);
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
@@ -1,45 +1,54 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>
|
||||
<TableHeader area datePicker ref="TableHeaderRef">
|
||||
<template #select>
|
||||
<el-form-item label="问题来源">
|
||||
<el-select
|
||||
v-model="tableStore.table.params.problemSources"
|
||||
clearable
|
||||
placeholder="请选择问题来源"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in problemData"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="填报进度">
|
||||
<el-select v-model="tableStore.table.params.reportProcess" clearable placeholder="请选择填报进度">
|
||||
<el-option
|
||||
v-for="item in fillingProgress"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<TableHeader area datePicker ref="TableHeaderRef">
|
||||
<template #select>
|
||||
<el-form-item label="问题来源">
|
||||
<el-select v-model="tableStore.table.params.problemSources" clearable placeholder="请选择问题来源">
|
||||
<el-option
|
||||
v-for="item in problemData"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="填报进度">
|
||||
<el-select v-model="tableStore.table.params.reportProcess" clearable placeholder="请选择填报进度">
|
||||
<el-option
|
||||
v-for="item in fillingProgress"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称">
|
||||
<el-input
|
||||
v-model="tableStore.table.params.problemName"
|
||||
clearable
|
||||
placeholder="请输入问题名称"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" />
|
||||
</div>
|
||||
<el-form-item label="问题名称">
|
||||
<el-input
|
||||
v-model="tableStore.table.params.problemName"
|
||||
clearable
|
||||
placeholder="请输入问题名称"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" />
|
||||
|
||||
<!-- 审核 -->
|
||||
<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>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
@@ -47,23 +56,25 @@ import { ref, onMounted, provide, nextTick } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import Table from '@/components/table/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 { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
|
||||
|
||||
import Filling from './filling.vue'
|
||||
import recording from './recording.vue'
|
||||
const dictData = useDictData()
|
||||
const problemData = dictData.getBasicData('Problem_Sources')
|
||||
const fillingProgress = dictData.getBasicData('Fill_Progress')
|
||||
const TableHeaderRef = ref()
|
||||
|
||||
const FillingRef = ref()
|
||||
const ruleFormRef = ref()
|
||||
|
||||
const list: any = ref({})
|
||||
const recordingRef = ref(false)
|
||||
const dialogVisible = ref(false)
|
||||
const tableStore = new TableStore({
|
||||
url: '/process-boot/electricityQuality/getIssues',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
column: [
|
||||
// { width: '60', type: 'checkbox' },
|
||||
{
|
||||
field: 'index',
|
||||
title: '序号',
|
||||
@@ -99,7 +110,13 @@ const tableStore = new TableStore({
|
||||
type: 'primary',
|
||||
icon: 'el-icon-Plus',
|
||||
render: 'basicButton',
|
||||
click: async row => {}
|
||||
click: async row => {
|
||||
dialogVisible.value = true
|
||||
setTimeout(() => {
|
||||
list.value = row
|
||||
FillingRef.value.open(row)
|
||||
}, 10)
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'edit',
|
||||
@@ -107,7 +124,9 @@ const tableStore = new TableStore({
|
||||
type: 'primary',
|
||||
icon: 'el-icon-Plus',
|
||||
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.reportProcessStatus = 'Auditt'
|
||||
|
||||
const beforeClose = () => {
|
||||
tableStore.index()
|
||||
dialogVisible.value = false
|
||||
}
|
||||
provide('tableStore', tableStore)
|
||||
|
||||
onMounted(() => {
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<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-tabs>
|
||||
</el-dialog>
|
||||
|
||||
@@ -72,10 +72,37 @@
|
||||
@handleClose="handleClose"
|
||||
/>
|
||||
|
||||
<!-- 填报 -->
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px" v-show="!disabled">
|
||||
<el-button type="primary" @click="Submit">提交审核</el-button>
|
||||
<el-button @click="handleClose">取消</el-button>
|
||||
</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>
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted } from 'vue'
|
||||
@@ -84,11 +111,13 @@ import process1 from './process1.vue'
|
||||
import process2 from './process2.vue'
|
||||
import process3 from './process3.vue'
|
||||
import process4 from './process4.vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import {
|
||||
getAbnormalDetail,
|
||||
getComplaintDetail,
|
||||
getGeneralSurveyDetail,
|
||||
getExcessiveDetail
|
||||
getExcessiveDetail,
|
||||
checkPowerQuality
|
||||
} from '@/api/process-boot/electricitymanagement'
|
||||
const emit = defineEmits(['beforeClose'])
|
||||
const dictData = useDictData()
|
||||
@@ -96,18 +125,31 @@ const addData: any = ref({})
|
||||
const List: any = ref({})
|
||||
const active = ref(4)
|
||||
const control = ref()
|
||||
const ruleFormRef = ref()
|
||||
const stepTitle = ['原因分析', '计划整改措施', '实际采取措施', '成效分析']
|
||||
const process0Ref = ref()
|
||||
const process1Ref = ref()
|
||||
const process2Ref = ref()
|
||||
const process3Ref = ref()
|
||||
const form = ref({
|
||||
checkComment: ''
|
||||
})
|
||||
const disabled = ref(false)
|
||||
const prop = defineProps({
|
||||
isDisabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
audit: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
flag: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
})
|
||||
|
||||
const problemData = dictData.getBasicData('Problem_Sources')
|
||||
const open = async (row: any) => {
|
||||
addData.value = row
|
||||
@@ -124,7 +166,6 @@ const open = async (row: any) => {
|
||||
|
||||
setTimeout(() => {
|
||||
List.value = res.data
|
||||
|
||||
if (res.data.filePathYyfx == null) {
|
||||
active.value = 0
|
||||
} else if (res.data.filePathJhzg == null) {
|
||||
@@ -143,9 +184,18 @@ const open = async (row: any) => {
|
||||
active.value = 2
|
||||
}
|
||||
}
|
||||
|
||||
// 审核判断
|
||||
if (prop.audit) {
|
||||
active.value == 0 ? 0 : (active.value = active.value - 1)
|
||||
}
|
||||
|
||||
control.value = active.value == 4 ? 3 : active.value
|
||||
}, 0)
|
||||
}
|
||||
const rules = {
|
||||
checkComment: [{ required: true, message: '请输入审核意见', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
const step = (e: number) => {
|
||||
if (active.value >= e) {
|
||||
@@ -176,8 +226,31 @@ const Submit = () => {
|
||||
}
|
||||
// 取消
|
||||
const handleClose = () => {
|
||||
form.value.checkComment = ''
|
||||
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 })
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
<el-select v-model="tableStore.table.params.reportProcess" clearable placeholder="请选择填报进度">
|
||||
<el-option
|
||||
v-for="item in fillingProgress"
|
||||
:key="item.id"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -25,9 +25,9 @@
|
||||
<el-select v-model="tableStore.table.params.reportProcessStatus" clearable placeholder="请选择审核状态">
|
||||
<el-option
|
||||
v-for="item in auditStatus"
|
||||
:key="item.id"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -49,11 +49,14 @@
|
||||
<NewlyAdd v-if="showNewlyAdded" @handleClose="handleClose" @onSubmit="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>
|
||||
|
||||
<!-- 详情 -->
|
||||
<Detail ref="detailRef" />
|
||||
|
||||
<!-- 审核记录 -->
|
||||
<recording ref="recordingRef" />
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, provide, nextTick } from 'vue'
|
||||
@@ -66,11 +69,13 @@ import { useDictData } from '@/stores/dictData'
|
||||
import NewlyAdd from './NewlyAdd.vue'
|
||||
import Filling from './filling.vue'
|
||||
import Detail from './detail.vue'
|
||||
import recording from './recording.vue'
|
||||
const dictData = useDictData()
|
||||
const FillingRef = ref()
|
||||
|
||||
const showNewlyAdded = ref(false)
|
||||
const dialogVisible = ref(false)
|
||||
const recordingRef = ref(false)
|
||||
const TableHeaderRef = ref()
|
||||
const detailRef = ref()
|
||||
const problemData = dictData.getBasicData('Problem_Sources')
|
||||
@@ -82,7 +87,7 @@ const tableStore: any = new TableStore({
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
column: [
|
||||
{ width: '60', type: 'checkbox' },
|
||||
// { width: '60', type: 'checkbox' },
|
||||
{
|
||||
field: 'index',
|
||||
title: '序号',
|
||||
@@ -182,7 +187,9 @@ const tableStore: any = new TableStore({
|
||||
},
|
||||
icon: 'el-icon-PieChart',
|
||||
render: 'basicButton',
|
||||
click: async row => {}
|
||||
click: row => {
|
||||
recordingRef.value.open(row)
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'del',
|
||||
|
||||
@@ -153,7 +153,6 @@ onMounted(() => {
|
||||
if (prop.List.filePathYyfx != null) {
|
||||
causeAnalysisData.value = prop.List
|
||||
}
|
||||
console.log(prop.disabled)
|
||||
})
|
||||
const submit = (num: number) => {
|
||||
console.log(prop.addData.problemSources)
|
||||
|
||||
@@ -1,16 +1,43 @@
|
||||
<template>
|
||||
<div>
|
||||
<vxe-table v-bind="defaultAttribute" height="350" ref="xTable1Ref" :data="list">
|
||||
<vxe-column field="sustationName" title="变电站"></vxe-column>
|
||||
<vxe-column field="barName" title="母线"></vxe-column>
|
||||
<vxe-column field="measurementPointName" title="监测点名称"></vxe-column>
|
||||
<el-dialog draggable v-model="dialogVisible" title="历史审核记录" width="1000px">
|
||||
<vxe-table v-bind="defaultAttribute" height="500" ref="xTable1Ref" :data="list">
|
||||
<vxe-column field="reportProcess" title="审核节点" :formatter="formatter"></vxe-column>
|
||||
<vxe-column field="type" title="审核结果" :formatter="formatter"></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>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive } from 'vue'
|
||||
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 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>
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
@@ -2,20 +2,37 @@
|
||||
<TableHeader area datePicker ref="TableHeaderRef">
|
||||
<template #select>
|
||||
<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-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<template #operation>
|
||||
<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-Download" type="primary">导出</el-button>
|
||||
<el-button icon="el-icon-Stamp" type="primary" @click="submit">提交审核</el-button>
|
||||
<el-button icon="el-icon-Download" type="primary" @click="exportFn">导出</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
</TableHeader ref="tableRef">
|
||||
<Table ref="tableRef" />
|
||||
<!-- 新增 -->
|
||||
<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>
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, provide, nextTick } from 'vue'
|
||||
@@ -27,8 +44,11 @@ import { planStatus } from '@/api/process-boot/generalTest'
|
||||
import planAdd from './planAdd.vue'
|
||||
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 dialogVisible=ref(false)
|
||||
const tableRef = ref()
|
||||
const list = [
|
||||
{
|
||||
id: 0,
|
||||
@@ -50,6 +70,8 @@ const list = [
|
||||
|
||||
const planAddRef = ref()
|
||||
const TableHeaderRef = ref()
|
||||
const auditList:any = ref([])
|
||||
const auditUser = ref('')
|
||||
|
||||
const ruleFormRef = ref()
|
||||
const tableStore = new TableStore({
|
||||
@@ -113,6 +135,28 @@ const tableStore = new TableStore({
|
||||
click: async 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 = '普测计划新增'
|
||||
planAddRef.value.open('普测计划新增')
|
||||
}
|
||||
const submit = () => {
|
||||
if(tableStore.table.selection.length == 0){
|
||||
|
||||
return ElMessage.warning('请选择计划进行审核')
|
||||
}
|
||||
const flag = !tableStore.table.selection.some(item => item.status !== 0 && item.status !== 2);
|
||||
if (flag) {
|
||||
dialogVisible.value = true
|
||||
} else {
|
||||
ElMessage.warning('请选择新建、未通过的计划进行审核!')
|
||||
}
|
||||
|
||||
}
|
||||
// 提交审核
|
||||
const planReviewFn = () => {
|
||||
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()
|
||||
})
|
||||
} else {
|
||||
ElMessage.warning('请选择新建、未通过的计划进行审核!')
|
||||
}
|
||||
|
||||
}
|
||||
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(() => {
|
||||
tableStore.index()
|
||||
getUserByRoleType(3).then(res => {
|
||||
auditList.value = res.data
|
||||
})
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
<el-tab-pane label="普测计划审批" name="2">
|
||||
<planAudits v-if="activeName == '2'"/>
|
||||
</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="3"><outcome v-if="activeName == '3'"/></el-tab-pane>
|
||||
<el-tab-pane label="普测计划占比配置" name="4"><occupancy v-if="activeName == '4'"/></el-tab-pane> -->
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -59,20 +59,20 @@
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">
|
||||
入网评估结论填报
|
||||
</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="0">否</el-radio>
|
||||
</el-form-item>
|
||||
<br />
|
||||
<el-form-item label="超标指标:" style="margin-top: 10px" prop="IOverLimitTarget">
|
||||
<br v-if="show"/>
|
||||
<el-form-item label="超标指标:" style="margin-top: 10px" prop="IOverLimitTarget" v-if="show">
|
||||
<el-checkbox-group v-model="addForm.IOverLimitTarget">
|
||||
<el-checkbox v-for="(item, ind) in exceeded" :label="item.id">
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<br />
|
||||
<el-form-item label="计划采取措施:" style="margin-top: 10px" prop="IPlanStep">
|
||||
<br v-if="show"/>
|
||||
<el-form-item label="计划采取措施:" style="margin-top: 10px" prop="IPlanStep" v-if="show">
|
||||
<el-select v-model="addForm.IPlanStep" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in takeMeasures"
|
||||
@@ -94,7 +94,7 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<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="cancel">取消</el-button>
|
||||
</div>
|
||||
@@ -115,7 +115,7 @@ const interferenceType = dictData.getBasicData('Interference_Source')
|
||||
|
||||
const emit = defineEmits(['onSubmit'])
|
||||
const uploadConclusions = ref(false)
|
||||
|
||||
const show = ref(false)
|
||||
const addForm: any = ref({
|
||||
id: '',
|
||||
orgNo: '',
|
||||
@@ -143,7 +143,7 @@ const submit = (flag: any) => {
|
||||
if (valid) {
|
||||
const formData = new FormData()
|
||||
|
||||
addForm.value.fileList.forEach(item => {
|
||||
addForm.value.fileList.forEach((item: any) => {
|
||||
if (item.raw == undefined) {
|
||||
} else {
|
||||
formData.append('file', item.raw)
|
||||
@@ -211,6 +211,15 @@ const open = (text: string, row: any) => {
|
||||
|
||||
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 })
|
||||
</script>
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
</template>
|
||||
<template #operation>
|
||||
<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>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" />
|
||||
@@ -47,9 +47,11 @@ import { mainHeight } from '@/utils/layout'
|
||||
import Add from './add.vue'
|
||||
import Audit from './audit.vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { getLoadTypeUserList } from '@/api/process-boot/interference'
|
||||
const dictData = useDictData()
|
||||
|
||||
const TableHeaderRef = ref()
|
||||
const tableRef = ref()
|
||||
const interferenceType = dictData.getBasicData('Interference_Source')
|
||||
|
||||
const istatusList = dictData.getBasicData('On-network_Status')
|
||||
@@ -102,7 +104,7 @@ const tableStore = new TableStore({
|
||||
buttons: [
|
||||
{
|
||||
name: 'edit',
|
||||
title: '上传',
|
||||
title: '审核',
|
||||
type: 'primary',
|
||||
disabled: row => {
|
||||
return !(
|
||||
@@ -152,13 +154,25 @@ provide('tableStore', tableStore)
|
||||
const addList = () => {
|
||||
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(() => {
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<template>
|
||||
<div class="default-main" :style="layout">
|
||||
<work />
|
||||
<!-- <work /> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { onMounted, reactive, ref, provide } from 'vue'
|
||||
import work from './work.vue'
|
||||
// import work from './work.vue'
|
||||
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
defineOptions({
|
||||
|
||||
@@ -1,416 +1,11 @@
|
||||
<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">
|
||||
<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>
|
||||
<div> </div>
|
||||
|
||||
<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>
|
||||
|
||||
<script lang="ts" setup name="ActDefinitionPage">
|
||||
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 setup lang='ts'>
|
||||
import { ref, reactive } from 'vue'
|
||||
</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>
|
||||
|
||||
@@ -93,12 +93,9 @@ const map = (res: any) => {
|
||||
tooltip: {
|
||||
formatter: function (params) {
|
||||
var tips = ''
|
||||
if (params.color != undefined) {
|
||||
if (params.value >= 0) {
|
||||
tips += params.name + '</br/>'
|
||||
tips += '暂降次数' + ':' + params.value + '次' + '<br/>'
|
||||
} else if (params.color == undefined) {
|
||||
tips += params.name + '</br/>'
|
||||
tips += '暂降次数' + ':' + '暂无数据' + '<br/>'
|
||||
}
|
||||
return tips
|
||||
}
|
||||
|
||||
@@ -128,7 +128,21 @@ const map = (res: any) => {
|
||||
title: {
|
||||
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: {
|
||||
min: 0,
|
||||
max: 2,
|
||||
|
||||
@@ -59,14 +59,14 @@ import { useDictData } from '@/stores/dictData'
|
||||
import Area from '@/components/form/area/index.vue'
|
||||
|
||||
defineOptions({
|
||||
name: 'voltage/sags/operationsManagement/index'
|
||||
name: 'Operationmanagement/terminalmanagement'
|
||||
})
|
||||
const dictData = useDictData()
|
||||
const manufacturer = dictData.getBasicData('Dev_Manufacturers')
|
||||
const manufacturerForm = ref<string[]>([])
|
||||
const tableStore = new TableStore({
|
||||
isWebPaging: true,
|
||||
url: 'Operationmanagement/terminalmanagement',
|
||||
url: '/device-boot/runManage/getRuntimeData',
|
||||
method: 'POST',
|
||||
column: [
|
||||
{
|
||||
|
||||
@@ -171,7 +171,7 @@ const tableStore = new TableStore({
|
||||
type: 'bar'
|
||||
},
|
||||
{
|
||||
name: '热备用',
|
||||
name: '停运',
|
||||
stack: 'one',
|
||||
barMaxWidth: 30,
|
||||
barMinHeight: 5,
|
||||
@@ -306,7 +306,7 @@ const tableStore = new TableStore({
|
||||
type: 'bar'
|
||||
},
|
||||
{
|
||||
name: '热备用',
|
||||
name: '停运',
|
||||
stack: 'one',
|
||||
barMaxWidth: 30,
|
||||
barMinHeight: 5,
|
||||
|
||||
Reference in New Issue
Block a user