Browse Source

添加抽查弹窗修改

dev
wenlele 1 year ago
parent
commit
e5879a6b6a
  1. 51
      api/app/lib/controllers/report/index.js
  2. 8
      api/utils/xlsxDownload.js
  3. 35
      web/client/src/sections/fillion/containers/maintenanceSpotCheck-new.js

51
api/app/lib/controllers/report/index.js

@ -728,7 +728,7 @@ async function roadSpotPrepare(ctx) {
let otherWhere = [`township_code='${t.township_code}'`] let otherWhere = [`township_code='${t.township_code}'`]
const townRoadTotalMileage = await getRoadTotalMileage('乡', otherWhere, true) const townRoadTotalMileage = await getRoadTotalMileage('乡', otherWhere, true)
const townRoadHide = await getRoadTotalMileage('乡', otherWhere, false) const townRoadHide = await getRoadTotalMileage('乡', otherWhere, false)
const townRoadNeedMileage = townRoadTotalMileage * 25 / 100 const townRoadNeedMileage = townRoadTotalMileage * (countyPercentage == 75 ? 50 : 25) / 100
let spotTownRoadIdsArr = await spotRoadId('乡', lastTownRoadIds, townRoadNeedMileage, otherWhere) let spotTownRoadIdsArr = await spotRoadId('乡', lastTownRoadIds, townRoadNeedMileage, otherWhere)
let spotTownRoadIds_ = spotTownRoadIdsArr[0] let spotTownRoadIds_ = spotTownRoadIdsArr[0]
@ -740,7 +740,7 @@ async function roadSpotPrepare(ctx) {
// 抽村 // 抽村
const villageRoadTotalMileage = await getRoadTotalMileage('村', otherWhere, true) const villageRoadTotalMileage = await getRoadTotalMileage('村', otherWhere, true)
const villageRoadTotalHide = await getRoadTotalMileage('村', otherWhere, false) const villageRoadTotalHide = await getRoadTotalMileage('村', otherWhere, false)
const villageRoadNeedMileage = villageRoadTotalMileage * 10 / 100 const villageRoadNeedMileage = villageRoadTotalMileage * (countyPercentage == 75 ? 20 : 10) / 100
let spotFirstVillageId = -1 let spotFirstVillageId = -1
// 随机选取一个不在上次查过的村 // 随机选取一个不在上次查过的村
@ -1077,12 +1077,39 @@ async function roadSpotChange(ctx) {
let curChangeRoad = roadRes.find(item => item.id == changeRoadId) let curChangeRoad = roadRes.find(item => item.id == changeRoadId)
const level = curChangeRoad.level; const level = curChangeRoad.level;
let milData = {} let milData = {}
let differenceValue = (parseFloat(curChangeRoad.chainageMileage) - parseFloat(curOriginRoad.chainageMileage)) || 0
if (level == '县') { if (level == '县') {
milData = { countryMil: previewRes.countryMil + parseFloat(curChangeRoad.chainageMileage) - parseFloat(curOriginRoad.chainageMileage) } previewRes.gather && previewRes.gather.forEach(d => {
if (!d.code) {
d.countyPresent = d.countyPresent + differenceValue
d.countyDifferenceValue = d.countyDifferenceValue + differenceValue
}
})
milData = { countryMil: previewRes.countryMil + differenceValue, gather: previewRes.gather }
} else if (level == '乡') { } else if (level == '乡') {
milData = { townMil: previewRes.townMil + parseFloat(curChangeRoad.chainageMileage) - parseFloat(curOriginRoad.chainageMileage) } previewRes.gather && previewRes.gather.forEach(d => {
if (d.code == curOriginRoad.townshipCode) {
d.townshipPresent = d.townshipPresent - parseFloat(curOriginRoad.chainageMileage)
d.townshipDifferenceValue = d.townshipDifferenceValue - parseFloat(curOriginRoad.chainageMileage)
}
if (d.code == curOriginRoad.curChangeRoad) {
d.villagePresent = d.villagePresent + parseFloat(curChangeRoad.chainageMileage)
d.townshipDifferenceValue = d.townshipDifferenceValue + parseFloat(curChangeRoad.chainageMileage)
}
}) || []
milData = { townMil: previewRes.townMil + differenceValue, gather: previewRes.gather }
} else if (level == '村') { } else if (level == '村') {
milData = { villageMil: previewRes.villageMil + parseFloat(curChangeRoad.chainageMileage) - parseFloat(curOriginRoad.chainageMileage) } previewRes.gather && previewRes.gather.forEach(d => {
if (d.code == curOriginRoad.townshipCode) {
d.villageParticipate = d.villageParticipate - parseFloat(curOriginRoad.chainageMileage)
d.villageDifferenceValue = d.villageDifferenceValue - parseFloat(curOriginRoad.chainageMileage)
}
if (d.code == curOriginRoad.curChangeRoad) {
d.villageParticipate = d.villageParticipate + parseFloat(curChangeRoad.chainageMileage)
d.villageDifferenceValue = d.villageDifferenceValue + parseFloat(curChangeRoad.chainageMileage)
}
}) || []
milData = { villageMil: previewRes.villageMil + differenceValue, gather: previewRes.gather }
} }
await models.RoadSpotCheckPreview.update({ await models.RoadSpotCheckPreview.update({
@ -1276,21 +1303,21 @@ async function exportSpotRode(ctx) {
villageId: (village.find(d => road.villageId == d.id) || {}).name || '--', villageId: (village.find(d => road.villageId == d.id) || {}).name || '--',
routeName: road.routeName, routeName: road.routeName,
routeCode: road.routeCode, routeCode: road.routeCode,
startStation: road.startStation, startStation: road.startStation || 0,
stopStation: road.stopStation, stopStation: road.stopStation || 0,
technicalLevel: road.technicalLevel, technicalLevel: road.technicalLevel,
pavementType: road.pavementType, pavementType: road.pavementType,
pavementWidth: road.pavementWidth, pavementWidth: road.pavementWidth || 0,
subgradeWidth: road.subgradeWidth, subgradeWidth: road.subgradeWidth || 0,
chainageMileage: road.chainageMileage, chainageMileage: road.chainageMileage || 0,
maintenanceCount: item.maintenanceCount, maintenanceCount: item.maintenanceCount,
} }
}) })
const fileName = `${moment(previewRes.date).format('YYYY年MM月DD日HH时mm分')}道路抽查记录` + '.csv' const fileName = `${moment(previewRes.date).format('YYYY年MM月DD日HH时mm分')}道路抽查记录` + '.csv'
const filePath = await xlsxDownload.simpleExcelDown({ const filePath = await xlsxDownload.simpleExcelDown({
data: exportData, header, fileName: fileName // data: exportData, header, fileName: fileName
// data: exportData, header, fileName: fileName, gather: { data: previewRes.gather || [] } data: exportData, header, fileName: fileName, gather: { data: previewRes.gather || [] }
}) })
const fileData = fs.readFileSync(filePath); const fileData = fs.readFileSync(filePath);

8
api/utils/xlsxDownload.js

@ -108,12 +108,18 @@ async function gatherSheet ({ sheet_2, data = [] }) {
style.border.bottom = 'thin'; style.border.bottom = 'thin';
style.border.bottomColor = '#000000'; style.border.bottomColor = '#000000';
let rowGather = sheet_2.addRow();
for (let h of header) {
const cell = rowGather.addCell();
cell.value = h.key == 'name' ? '汇总' : data.reduce((a, b) => a + (b[h.key] || 0), 0)
cell.style = style
}
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
const row = sheet_2.addRow(); const row = sheet_2.addRow();
for (let h of header) { for (let h of header) {
const cell = row.addCell(); const cell = row.addCell();
cell.value = data[i][h.key]; cell.value = data[i][h.key]
cell.style = style cell.style = style
} }
} }

35
web/client/src/sections/fillion/containers/maintenanceSpotCheck-new.js

@ -29,6 +29,7 @@ const MaintenanceSpotCheck = (props) => {
const [isAdjustment, setIsAdjustment] = useState(false) const [isAdjustment, setIsAdjustment] = useState(false)
const [editData, setEditData] = useState({}) const [editData, setEditData] = useState({})
const [keyword, setKeyword] = useState("") const [keyword, setKeyword] = useState("")
const [show, setShow] = useState()
const roadCode = [ const roadCode = [
@ -153,6 +154,7 @@ const MaintenanceSpotCheck = (props) => {
const cancelHandler = () => { const cancelHandler = () => {
setVis(false) setVis(false)
form.resetFields() form.resetFields()
setShow("")
} }
@ -295,6 +297,7 @@ const MaintenanceSpotCheck = (props) => {
queryData({ startTime: dateRange[0], endTime: dateRange[1] }) queryData({ startTime: dateRange[0], endTime: dateRange[1] })
form.resetFields() form.resetFields()
setVis(false) setVis(false)
setShow("")
} }
}) })
}) })
@ -302,9 +305,7 @@ const MaintenanceSpotCheck = (props) => {
<Form form={form}> <Form form={form}>
<Form.Item <Form.Item
label={<div>抽取县道比例(%)<Tooltip title='默认抽查乡道比例为25%、抽查村道比例为10%'> label={'抽取县道比例(%)'}
<ExclamationCircleOutlined style={{ marginLeft: 6 }} />
</Tooltip></div>}
name="percentValue" name="percentValue"
rules={[ rules={[
{ required: true, message: '请选择抽取比例' }, { required: true, message: '请选择抽取比例' },
@ -314,8 +315,34 @@ const MaintenanceSpotCheck = (props) => {
// }, // },
]} ]}
> >
<Select style={{}} placeholder="请选择抽取比例" options={[{ value: 50, label: '50%', }, { value: 75, label: '75%', }]} /> <Select style={{}} placeholder="请选择抽取比例" options={[{ value: 50, label: '50%', }, { value: 75, label: '75%', }]}
onChange={v => {
setShow(v)
form.setFieldsValue({
'town': v == 75 ? 50 : 25,
'village': v == 75 ? 20 : 10,
})
}} />
</Form.Item>
{
show && <>
<Form.Item
label={'抽取乡道比例(%)'}
name="town"
rules={[{ required: true, message: '请选择抽取比例' }]}
>
<Select disabled placeholder="请选择抽取比例" options={[{ value: 25, label: '25%', }, { value: 50, label: '50%', }]} />
</Form.Item> </Form.Item>
<Form.Item
label={'抽取村道比例(%)'}
name="village"
rules={[{ required: true, message: '请选择抽取比例' }]}
>
<Select disabled placeholder="请选择抽取比例" options={[{ value: 10, label: '10%', }, { value: 20, label: '20%', }]} />
</Form.Item>
</>
}
<Form.Item className="ant-row" style={{ <Form.Item className="ant-row" style={{
textAlign: 'center', textAlign: 'center',

Loading…
Cancel
Save