|
|
@ -22,21 +22,43 @@ |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="人员" align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-for="item in scope.row.shiftsMap"> |
|
|
|
<el-checkbox-group v-model="form.personnel"> |
|
|
|
<el-checkbox |
|
|
|
v-for="item in scope.row.shiftsMap" |
|
|
|
:label="item.shiftsName" |
|
|
|
></el-checkbox> |
|
|
|
</el-checkbox-group> |
|
|
|
<!-- <span v-for="item in scope.row.shiftsMap"> |
|
|
|
{{ item.shiftsName }}</span |
|
|
|
> |
|
|
|
> --> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="车辆" align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-for="item in scope.row.vehiclesMap"> |
|
|
|
{{ item.shiftsName }}</span |
|
|
|
> |
|
|
|
<el-checkbox-group v-model="form.vehicle"> |
|
|
|
<el-checkbox |
|
|
|
v-for="item in scope.row.vehiclesMap" |
|
|
|
:label="item.vehiclePlate + ' -' + item.vehicleText" |
|
|
|
></el-checkbox> |
|
|
|
</el-checkbox-group> |
|
|
|
<!-- <span v-for="item in scope.row.vehiclesMap"> |
|
|
|
{{ item.vehiclePlate }}</span |
|
|
|
> --> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table></el-form |
|
|
|
> |
|
|
|
</el-table> |
|
|
|
</el-form> |
|
|
|
</div> |
|
|
|
|
|
|
|
<template #footer> |
|
|
|
<Button |
|
|
|
style="background-color: rgba(0, 179, 204, 0.3)" |
|
|
|
@click.native="(modelVisible = false), (submitting = false)" |
|
|
|
> |
|
|
|
取消 |
|
|
|
</Button> |
|
|
|
<Button @click.native="handleSubmit" :loading="submitting"> 确定 </Button> |
|
|
|
</template> |
|
|
|
</Dialog> |
|
|
|
</template> |
|
|
|
|
|
|
@ -46,12 +68,14 @@ import InputSearch from "@screen/components/InputSearch/index.vue"; |
|
|
|
import Table from "@screen/components/Table.vue"; |
|
|
|
import { selectTollStation } from "@/api/event/governanceAnalysis"; |
|
|
|
import request from "@/utils/request"; |
|
|
|
import Button from "@screen/components/Buttons/Button.vue"; |
|
|
|
export default { |
|
|
|
name: "StatsDetail", |
|
|
|
components: { |
|
|
|
Dialog, |
|
|
|
InputSearch, |
|
|
|
Table, |
|
|
|
Button, |
|
|
|
}, |
|
|
|
model: { |
|
|
|
prop: "visible", |
|
|
@ -63,102 +87,7 @@ export default { |
|
|
|
}, |
|
|
|
data() { |
|
|
|
return { |
|
|
|
num: 0, |
|
|
|
tableData: [], |
|
|
|
weatherNum: [], |
|
|
|
startTime: "", |
|
|
|
endTime: "", |
|
|
|
pickerOptions: { |
|
|
|
disabledDate(time) { |
|
|
|
return time.getTime() > Date.now(); |
|
|
|
}, |
|
|
|
}, |
|
|
|
searchType: 1, |
|
|
|
controlType: 1, |
|
|
|
facilityIds: [], |
|
|
|
facilityTableData: [], |
|
|
|
searchFormList: [ |
|
|
|
{ |
|
|
|
label: "查询条件:", |
|
|
|
key: "searchType", |
|
|
|
required: true, |
|
|
|
isAlone: true, |
|
|
|
type: "RadioGroup", |
|
|
|
default: 1, |
|
|
|
options: { |
|
|
|
type: "circle", |
|
|
|
options: [ |
|
|
|
{ |
|
|
|
key: 1, |
|
|
|
label: "站点", |
|
|
|
}, |
|
|
|
{ |
|
|
|
key: 2, |
|
|
|
label: "原因", |
|
|
|
}, |
|
|
|
], |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
label: "事件类型:", |
|
|
|
key: "controlType", |
|
|
|
required: true, |
|
|
|
isAlone: true, |
|
|
|
type: "RadioGroup", |
|
|
|
visible: (data) => { |
|
|
|
if (data.searchType == 2) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
}, |
|
|
|
default: 1, |
|
|
|
options: { |
|
|
|
type: "circle", |
|
|
|
options: [ |
|
|
|
{ |
|
|
|
key: 1, |
|
|
|
label: "收费站封闭", |
|
|
|
}, |
|
|
|
{ |
|
|
|
key: 2, |
|
|
|
label: "收费站限行", |
|
|
|
}, |
|
|
|
], |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
label: "选择站点:", |
|
|
|
key: "facilityId", |
|
|
|
required: true, |
|
|
|
type: "Select", |
|
|
|
options: { |
|
|
|
multiple: true, |
|
|
|
options: [], |
|
|
|
}, |
|
|
|
default: [], |
|
|
|
visible: (data) => { |
|
|
|
if (data.searchType == 1) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
label: "日期:", |
|
|
|
key: "date", |
|
|
|
required: true, |
|
|
|
type: "datePicker", |
|
|
|
default: "", |
|
|
|
options: { |
|
|
|
pickerOptions: { |
|
|
|
disabledDate(time) { |
|
|
|
return time.getTime() > Date.now(); |
|
|
|
}, |
|
|
|
}, |
|
|
|
valueFormat: "yyyy-MM-dd", |
|
|
|
type: "daterange", |
|
|
|
}, |
|
|
|
}, |
|
|
|
], |
|
|
|
queryParams: {}, |
|
|
|
form: { personnel: [], vehicle: [] }, |
|
|
|
}; |
|
|
|
}, |
|
|
|
computed: { |
|
|
@ -173,149 +102,9 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
methods: { |
|
|
|
getFacilityList() { |
|
|
|
Promise.allSettled([ |
|
|
|
// 查询收费站 |
|
|
|
request({ |
|
|
|
url: `/business/facility/query`, |
|
|
|
method: "get", |
|
|
|
}), |
|
|
|
]).then((res) => { |
|
|
|
if (res[0].status === "fulfilled" && res[0].value.code == 200) { |
|
|
|
// this.searchFormList[2].options.options = res[0].value.data.map( |
|
|
|
// (item) => ({ |
|
|
|
// key: item.id, |
|
|
|
// label: item.facilityName, |
|
|
|
// }) |
|
|
|
// ); |
|
|
|
let dataList = []; |
|
|
|
res[0].value.data.forEach((item) => { |
|
|
|
if (item.facilityType == 1) { |
|
|
|
dataList.push({ |
|
|
|
key: item.id, |
|
|
|
label: item.facilityName, |
|
|
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
this.searchFormList[2].options.options = dataList; |
|
|
|
this.facilityIds = res[0].value.data.map((item) => item.id); |
|
|
|
this.searchFormList[2].default = dataList.map((item) => item.key); |
|
|
|
console.log(56, this.searchFormList[2].default); |
|
|
|
let currentMonth = moment().format("YYYY-MM"); |
|
|
|
let currentDate = moment().format("YYYY-MM-DD"); |
|
|
|
this.queryParams = { |
|
|
|
searchType: 1, |
|
|
|
facilityId: this.facilityIds, |
|
|
|
date: [currentMonth + "-01", currentDate], |
|
|
|
}; |
|
|
|
this.searchFormList[3].default = [currentMonth + "-01", currentDate]; |
|
|
|
this.getSelectTollStation(this.queryParams); |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
// handleResetForm(data) { |
|
|
|
// this.getSelectTollStation(data); |
|
|
|
// }, |
|
|
|
handleSearch(data, value) { |
|
|
|
console.log(888, data, value); |
|
|
|
if (value == "reset") { |
|
|
|
data = this.queryParams; |
|
|
|
} |
|
|
|
this.getSelectTollStation(data); |
|
|
|
}, |
|
|
|
arraySpanMethod({ row, column, rowIndex, columnIndex }) { |
|
|
|
if (this.searchType == 2) { |
|
|
|
if (!row.causeTypeName) { |
|
|
|
if (columnIndex === 0) { |
|
|
|
return [1, 2]; |
|
|
|
} else if (columnIndex === 1) { |
|
|
|
return [0, 0]; |
|
|
|
} |
|
|
|
} |
|
|
|
if (row.controlCauseName === "恶劣天气") { |
|
|
|
if (columnIndex === 0) { |
|
|
|
console.log(this.weatherNum.length); |
|
|
|
if (rowIndex === 0) { |
|
|
|
return [this.weatherNum.length, 1]; |
|
|
|
} else if (rowIndex <= this.weatherNum.length) { |
|
|
|
return [0, 0]; |
|
|
|
} |
|
|
|
// if (rowIndex === 2) { |
|
|
|
// return [7, 1]; |
|
|
|
// } |
|
|
|
// else if (rowIndex === 3) { |
|
|
|
// return [0, 0]; |
|
|
|
// } else if (rowIndex === 4) { |
|
|
|
// return [0, 0]; |
|
|
|
// } |
|
|
|
// else if (rowIndex === 5) { |
|
|
|
// return [0, 0]; |
|
|
|
// } |
|
|
|
// else if (rowIndex === 6) { |
|
|
|
// return [0, 0]; |
|
|
|
// } |
|
|
|
// else if (rowIndex === 7) { |
|
|
|
// return [0, 0]; |
|
|
|
// } |
|
|
|
// else if (rowIndex === 8) { |
|
|
|
// return [0, 0]; |
|
|
|
// } |
|
|
|
} |
|
|
|
// this.weatherNum = 0 |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
getSelectTollStation(data) { |
|
|
|
let startTime = ""; |
|
|
|
let endTime = ""; |
|
|
|
if (data) { |
|
|
|
startTime = data.date[0] + " 00:00:00"; |
|
|
|
endTime = data.date[1] + " 23:59:59"; |
|
|
|
} else { |
|
|
|
startTime = new Date("2024-01-01 11:12:21"); |
|
|
|
startTime = new Date("2024-01-26 11:12:36"); |
|
|
|
} |
|
|
|
|
|
|
|
var formData = new FormData(); |
|
|
|
this.searchType = data.searchType; |
|
|
|
this.controlType = data.controlType; |
|
|
|
if (data.searchType == 1) { |
|
|
|
formData.append("facilityId", data.facilityId); |
|
|
|
} else { |
|
|
|
formData.append("controlType", data.controlType); |
|
|
|
} |
|
|
|
formData.append("searchType", data.searchType); |
|
|
|
formData.append("startTime", startTime); |
|
|
|
formData.append("endTime", endTime); |
|
|
|
let weatherData = []; |
|
|
|
let otherData = []; |
|
|
|
selectTollStation(formData).then((res) => { |
|
|
|
if (data.searchType == 2) { |
|
|
|
this.weatherNum = []; |
|
|
|
res.data.forEach((item) => { |
|
|
|
if (item.causeTypeName) { |
|
|
|
this.weatherNum.push(item.causeTypeName); |
|
|
|
weatherData.push(item); |
|
|
|
} else { |
|
|
|
otherData.push(item); |
|
|
|
} |
|
|
|
}); |
|
|
|
this.tableData = weatherData.concat(otherData); |
|
|
|
} else { |
|
|
|
res.data.forEach((item) => { |
|
|
|
item.total = |
|
|
|
item.facilityClose + |
|
|
|
item.facilityRestriction + |
|
|
|
item.facilityInterval; |
|
|
|
}); |
|
|
|
this.facilityTableData = res.data; |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
}, |
|
|
|
mounted() { |
|
|
|
this.getFacilityList(); |
|
|
|
handleSubmit() {}, |
|
|
|
}, |
|
|
|
mounted() {}, |
|
|
|
}; |
|
|
|
</script> |
|
|
|
|
|
|
@ -391,4 +180,8 @@ export default { |
|
|
|
.el-table--border::after { |
|
|
|
background: none; |
|
|
|
} |
|
|
|
.footer { |
|
|
|
margin-top: 20px; |
|
|
|
display: flex; |
|
|
|
} |
|
|
|
</style> |
|
|
|