Browse Source

宣传视频模块

dev
yangsen 3 years ago
parent
commit
949c2791ed
  1. 193
      api/app/lib/controllers/data/index.js
  2. 17
      api/app/lib/controllers/data/vehicle.js
  3. 8
      weapp/src/packages/changePassword/index.jsx
  4. 36
      web/client/assets/color.less
  5. 128
      web/client/src/sections/fillion/actions/infor.js
  6. 37
      web/client/src/sections/fillion/components/infor/details.js
  7. 215
      web/client/src/sections/fillion/components/infor/videoUpload.js
  8. 146
      web/client/src/sections/fillion/components/operationalTable.js
  9. 194
      web/client/src/sections/fillion/components/promotionalTable.js
  10. 3
      web/client/src/sections/quanju/containers/footer/build/index.js
  11. 2
      web/client/src/sections/quanju/containers/footer/guanli/LeftItem.js
  12. 173
      web/client/src/utils/webapi.js
  13. 18810
      web/log/development.txt
  14. 3
      web/routes/attachment/index.js

193
api/app/lib/controllers/data/index.js

@ -1,108 +1,106 @@
'use strict'; 'use strict';
const fs = require('fs');
const xlsxDownload = require('../../../../utils/xlsxDownload.js'); // const { simpleExcelDown } = require('../../../../utils/xlsxDownload');
const moment = require('moment');
const request = require('superagent');
async function dataExport (ctx) { async function dataExport (ctx) {
try { try {
const models = ctx.fs.dc.models; // const models = ctx.fs.dc.models;
const { userId } = ctx.fs.api // const { userId } = ctx.fs.api
const { exp, ids, roadLevel, municipalType } = ctx.query; // const { ids } = ctx.query;
if (!exp) {
throw '参数错误';
}
const modalList = [ // const fileList = [
{ // {
n: '道路', // n: '道路',
k: 'road', // tableName: 'road',
tableName: 'Road', // defaultKey: ['level'],
}, // defaultValue: ['村'],
{ // },
n: '桥梁', // {
k: 'bridge', // n: '道路',
tableName: 'Bridge' // tableName: 'road',
}, // defaultKey: ['level'],
{ // defaultValue: ['县'],
n: '运政车辆', // },
k: 'vehicle', // {
tableName: 'MunicipalVehicle', // n: '道路',
}, // tableName: 'road',
{ // defaultKey: ['level'],
n: '运政业户', // defaultValue: ['乡'],
k: 'business', // },
tableName: 'MunicipalBusiness', // {
}, // n: '桥梁',
{ // tableName: 'bridge'
n: '工程一览', // },
k: 'project', // {
tableName: 'Project', // n: '运政车辆',
}, // tableName: 'municipal_vehicle',
{ // defaultKey: ['type'],
n: '治超', // defaultValue: ['出租车'],
k: 'overspeed', // },
tableName: 'Overspeed', // {
}, // n: '运政车辆',
{ // tableName: 'municipal_vehicle',
n: '公交线路', // defaultKey: ['type'],
k: 'busLine', // defaultValue: ['危货'],
tableName: 'BusLine', // },
}, // {
{ // n: '运政业户',
n: '公交车辆', // tableName: 'municipal_business',
k: 'busCar', // defaultKey: ['type'],
tableName: 'BusCar', // defaultValue: ['出租车'],
}, // },
] // {
// n: '运政业户',
// tableName: 'municipal_business',
// defaultKey: ['type'],
// defaultValue: ['危货'],
// },
// {
// n: '工程一览',
// tableName: 'project',
// defaultKey: ['done', 'type'],
// defaultValue: [false, 'road'],
// },
// {
// n: '工程一览',
// tableName: 'project',
// defaultKey: ['done', 'type'],
// defaultValue: [false, 'bridge'],
// },
// {
// n: '治超',
// tableName: 'overspeed',
// },
// {
// n: '公交线路',
// tableName: 'bus_line',
// },
// {
// n: '公交车辆',
// tableName: 'bus_car',
// },
// ]
const modalOption = modalList.find(item => item.k == exp); // const exportData = await models.BusCar.destroy({
if (!modalOption) { // where: {
throw '参数错误'; // id: { $in: ids.split(',') }
} // }
// })
let findOption = { // const fileName = `摄像头信息列表_${moment().format('YYYYMMDDHHmmss')}` + '.csv'
where: {} // const filePath = await simpleExcelDown({ data: exportData, header, fileName: fileName })
} // const fileData = fs.readFileSync(filePath);
if (ids) {
findOption.where.id = { $in: ids.split(',') }
}
if (roadLevel) {
findOption.where.level = roadLevel
}
if (municipalType) {
findOption.where.type = municipalType
}
const exportData = await models[modalOption.tableName].findAll(findOption) // ctx.status = 200;
const tableAttributes = models[modalOption.tableName].tableAttributes // ctx.set('Content-Type', 'application/x-xls');
let header = [] // ctx.set('Content-disposition', 'attachment; filename=' + encodeURI(fileName));
for (let k in tableAttributes) { // ctx.body = fileData;
if (k != 'id' && tableAttributes[k].comment) {
header.push({
title: tableAttributes[k].comment || '-',
key: k,
index: tableAttributes[k].index,
})
}
}
header.sort((a, b) => { return a.index - b.index })
const fileName = `${modalOption.n}_${moment().format('YYYYMMDDHHmmss')}` + '.csv'
const filePath = await xlsxDownload.simpleExcelDown({ data: exportData, header, fileName: fileName })
const fileData = fs.readFileSync(filePath);
ctx.status = 200;
ctx.set('Content-Type', 'application/x-xls');
ctx.set('Content-disposition', 'attachment; filename=' + encodeURI(fileName));
ctx.body = fileData;
} catch (error) { } catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); // ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400; // ctx.status = 400;
ctx.body = { // ctx.body = {
message: typeof error == 'string' ? error : undefined // message: typeof error == 'string' ? error : undefined
} // }
} }
} }
@ -127,6 +125,5 @@ async function godTrans (ctx) {
} }
module.exports = { module.exports = {
dataExport, dataExport
godTrans
}; };

17
api/app/lib/controllers/data/vehicle.js

@ -9,8 +9,7 @@ async function get (ctx) {
let findOption = { let findOption = {
where: { where: {
type type
}, }
order: [['id', 'DESC']]
} }
if (name) { if (name) {
findOption.where.name = { findOption.where.name = {
@ -89,8 +88,7 @@ async function specificGet (ctx) {
let findOption = { let findOption = {
where: { where: {
type type
}, }
order: [['id', 'DESC']]
} }
if (nameOfBusinessOwner) { if (nameOfBusinessOwner) {
findOption.where.nameOfBusinessOwner = { findOption.where.nameOfBusinessOwner = {
@ -117,9 +115,9 @@ async function specificEdit (ctx) {
const data = ctx.request.body; const data = ctx.request.body;
if (!data.vehicleId) { if (!data.vehicleId) {
const vehicleRes = await models.MunicipalVehicle.create(data) const vehicleRes = await models.Vehicle.create(data)
} else { } else {
const vehicleRes = await models.MunicipalVehicle.update(data, { const vehicleRes = await models.Vehicle.update(data, {
where: { where: {
id: data.vehicleId id: data.vehicleId
} }
@ -141,7 +139,7 @@ async function specificDel (ctx) {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { vehicleId } = ctx.params; const { vehicleId } = ctx.params;
const vehicleRes = await models.MunicipalVehicle.destroy({ const vehicleRes = await models.Vehicle.destroy({
where: { where: {
id: vehicleId id: vehicleId
} }
@ -165,8 +163,7 @@ async function businessGet (ctx) {
let findOption = { let findOption = {
where: { where: {
}, }
order: [['id', 'DESC']]
} }
if (nameOfBusinessOwner) { if (nameOfBusinessOwner) {
findOption.where.nameOfBusinessOwner = { findOption.where.nameOfBusinessOwner = {
@ -216,7 +213,7 @@ async function businessDel (ctx) {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { businessId } = ctx.params; const { businessId } = ctx.params;
await models.MunicipalBusiness.destroy({ await models.Vehicle.MunicipalBusiness({
where: { where: {
id: businessId id: businessId
} }

8
weapp/src/packages/changePassword/index.jsx

@ -14,10 +14,10 @@ function Index() {
function confirm() { function confirm() {
if (!password) { if (!password) {
Taro.showToast({ title: '请输入密码', icon: 'none' }) Taro.showToast({ title: '请输入密码' })
return return
} else if (password !== password2) { } else if (password !== password2) {
Taro.showToast({ title: '两次输入的密码不一致', icon: 'none' }) Taro.showToast({ title: '两次输入的密码不一致' })
return return
} else { } else {
Taro.showModal({ Taro.showModal({
@ -50,11 +50,11 @@ function Index() {
</View> </View>
<View className='pswd'> <View className='pswd'>
<View className='title'>新的密码</View> <View className='title'>新的密码</View>
<Input value={password} type='password' onInput={e => setPassword(e.detail.value)} /> <Input value={password} onInput={e => setPassword(e.detail.value)} />
</View> </View>
<View className='pswd'> <View className='pswd'>
<View className='title'>再次输入新的密码</View> <View className='title'>再次输入新的密码</View>
<Input value={password2} type='password' onInput={e => setPassword2(e.detail.value)} /> <Input value={password2} onInput={e => setPassword2(e.detail.value)} />
</View> </View>
<AtButton className='btn' type='primary' onClick={confirm}>确认</AtButton> <AtButton className='btn' type='primary' onClick={confirm}>确认</AtButton>
</View> </View>

36
web/client/assets/color.less

@ -798,19 +798,17 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::before, .ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::after {border-style: dashed none none;} .ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::before, .ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::after {border-style: dashed none none;}
.ant-divider-vertical.ant-divider-dashed {border-width: 0 0 0 1px;} .ant-divider-vertical.ant-divider-dashed {border-width: 0 0 0 1px;}
.ant-divider-plain.ant-divider-with-text {color: @text-color;} .ant-divider-plain.ant-divider-with-text {color: @text-color;}
.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {box-shadow: 6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), 12px 0 48px 16px rgba(0, 0, 0, 0.03);} .ant-drawer-mask {background: rgba(0, 0, 0, 0.45);}
.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper {box-shadow: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), -12px 0 48px 16px rgba(0, 0, 0, 0.03);} .ant-drawer-left .ant-drawer-content {box-shadow: 6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), 12px 0 48px 16px rgba(0, 0, 0, 0.03);}
.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper {box-shadow: 0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), 0 12px 48px 16px rgba(0, 0, 0, 0.03);} .ant-drawer-right .ant-drawer-content {box-shadow: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), -12px 0 48px 16px rgba(0, 0, 0, 0.03);}
.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper {box-shadow: 0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), 0 -12px 48px 16px rgba(0, 0, 0, 0.03);} .ant-drawer-top .ant-drawer-content {box-shadow: 0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), 0 12px 48px 16px rgba(0, 0, 0, 0.03);}
.ant-drawer-title {color: @heading-color;} .ant-drawer-bottom .ant-drawer-content {box-shadow: 0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), 0 -12px 48px 16px rgba(0, 0, 0, 0.03);}
.ant-drawer-content {background-color: @drawer-bg;background-clip: padding-box;border: 0;} .ant-drawer-wrapper-body {background: @drawer-bg;}
.ant-drawer-header {border-bottom: 1px solid @border-color-split;}
.ant-drawer-close {color: @text-color-secondary;background: transparent;border: 0;} .ant-drawer-close {color: @text-color-secondary;background: transparent;border: 0;}
.ant-drawer-close:focus, .ant-drawer-close:hover {color: @icon-color-hover;} .ant-drawer-close:focus, .ant-drawer-close:hover {color: @icon-color-hover;}
.ant-drawer-header {color: @text-color;background: @drawer-bg;border-bottom: 1px solid @border-color-split;border-radius: 2px 2px 0 0;} .ant-drawer-title {color: @heading-color;}
.ant-drawer-header-close-only {border: none;}
.ant-drawer-footer {border-top: 1px solid @border-color-split;} .ant-drawer-footer {border-top: 1px solid @border-color-split;}
.ant-drawer-mask {background-color: rgba(0, 0, 0, 0.45);}
.ant-drawer .ant-picker-clear {background: @popover-background;}
.ant-dropdown-menu-item.ant-dropdown-menu-item-danger {color: #ff4d4f;} .ant-dropdown-menu-item.ant-dropdown-menu-item-danger {color: #ff4d4f;}
.ant-dropdown-menu-item.ant-dropdown-menu-item-danger:hover {color: #fff;background-color: #ff4d4f;} .ant-dropdown-menu-item.ant-dropdown-menu-item-danger:hover {color: #fff;background-color: #ff4d4f;}
.ant-dropdown {color: @text-color;} .ant-dropdown {color: @text-color;}
@ -1149,10 +1147,10 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-mentions-dropdown-menu-item-active {background-color: @item-hover-bg;} .ant-mentions-dropdown-menu-item-active {background-color: @item-hover-bg;}
.ant-menu-item-danger.ant-menu-item {color: #ff4d4f;} .ant-menu-item-danger.ant-menu-item {color: #ff4d4f;}
.ant-menu-item-danger.ant-menu-item:hover, .ant-menu-item-danger.ant-menu-item-active {color: #ff4d4f;} .ant-menu-item-danger.ant-menu-item:hover, .ant-menu-item-danger.ant-menu-item-active {color: #ff4d4f;}
.ant-menu-item-danger.ant-menu-item:active {background: color(~`colorPalette("@{select-clear-background}", 1)`);} .ant-menu-item-danger.ant-menu-item:active {background: color(~`colorPalette("@{segmented-hover-bg}", 1)`);}
.ant-menu-item-danger.ant-menu-item-selected {color: #ff4d4f;} .ant-menu-item-danger.ant-menu-item-selected {color: #ff4d4f;}
.ant-menu-item-danger.ant-menu-item-selected > a, .ant-menu-item-danger.ant-menu-item-selected > a:hover {color: #ff4d4f;} .ant-menu-item-danger.ant-menu-item-selected > a, .ant-menu-item-danger.ant-menu-item-selected > a:hover {color: #ff4d4f;}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: color(~`colorPalette("@{select-clear-background}", 1)`);} .ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: color(~`colorPalette("@{segmented-hover-bg}", 1)`);}
.ant-menu-inline .ant-menu-item-danger.ant-menu-item::after {border-right-color: #ff4d4f;} .ant-menu-inline .ant-menu-item-danger.ant-menu-item::after {border-right-color: #ff4d4f;}
.ant-menu-dark .ant-menu-item-danger.ant-menu-item, .ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover, .ant-menu-dark .ant-menu-item-danger.ant-menu-item > a {color: #ff4d4f;} .ant-menu-dark .ant-menu-item-danger.ant-menu-item, .ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover, .ant-menu-dark .ant-menu-item-danger.ant-menu-item > a {color: #ff4d4f;}
.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {color: #fff;background-color: #ff4d4f;} .ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {color: #fff;background-color: #ff4d4f;}
@ -1722,15 +1720,15 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-tag-checkable:active, .ant-tag-checkable-checked {color: #fff;} .ant-tag-checkable:active, .ant-tag-checkable-checked {color: #fff;}
.ant-tag-checkable-checked {background-color: @primary-color;} .ant-tag-checkable-checked {background-color: @primary-color;}
.ant-tag-checkable:active {background-color: color(~`colorPalette("@{primary-color}", 7)`);} .ant-tag-checkable:active {background-color: color(~`colorPalette("@{primary-color}", 7)`);}
.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{modal-footer-border-color-split}", 1)`);border-color: #ffadd2;} .ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{table-fixed-header-sort-active-bg}", 3)`);border-color: #ffadd2;}
.ant-tag-pink-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;} .ant-tag-pink-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;}
.ant-tag-magenta {color: #c41d7f;background: color(~`colorPalette("@{modal-footer-border-color-split}", 1)`);border-color: #ffadd2;} .ant-tag-magenta {color: #c41d7f;background: color(~`colorPalette("@{table-fixed-header-sort-active-bg}", 3)`);border-color: #ffadd2;}
.ant-tag-magenta-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;} .ant-tag-magenta-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;}
.ant-tag-red {color: #cf1322;background: color(~`colorPalette("@{select-clear-background}", 1)`);border-color: #ffa39e;} .ant-tag-red {color: #cf1322;background: color(~`colorPalette("@{segmented-hover-bg}", 1)`);border-color: #ffa39e;}
.ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;} .ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;}
.ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;} .ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;}
.ant-tag-volcano-inverse {color: #fff;background: #fa541c;border-color: #fa541c;} .ant-tag-volcano-inverse {color: #fff;background: #fa541c;border-color: #fa541c;}
.ant-tag-orange {color: #d46b08;background: #fff7e6;border-color: #ffd591;} .ant-tag-orange {color: #d46b08;background: color(~`colorPalette("@{descriptions-bg}", 1)`);border-color: #ffd591;}
.ant-tag-orange-inverse {color: #fff;background: #fa8c16;border-color: #fa8c16;} .ant-tag-orange-inverse {color: #fff;background: #fa8c16;border-color: #fa8c16;}
.ant-tag-yellow {color: #d4b106;background: #feffe6;border-color: #fffb8f;} .ant-tag-yellow {color: #d4b106;background: #feffe6;border-color: #fffb8f;}
.ant-tag-yellow-inverse {color: #fff;background: #fadb14;border-color: #fadb14;} .ant-tag-yellow-inverse {color: #fff;background: #fadb14;border-color: #fadb14;}
@ -1738,15 +1736,15 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-tag-gold-inverse {color: #fff;background: #faad14;border-color: #faad14;} .ant-tag-gold-inverse {color: #fff;background: #faad14;border-color: #faad14;}
.ant-tag-cyan {color: #08979c;background: #e6fffb;border-color: #87e8de;} .ant-tag-cyan {color: #08979c;background: #e6fffb;border-color: #87e8de;}
.ant-tag-cyan-inverse {color: #fff;background: #13c2c2;border-color: #13c2c2;} .ant-tag-cyan-inverse {color: #fff;background: #13c2c2;border-color: #13c2c2;}
.ant-tag-lime {color: #7cb305;background: color(~`colorPalette("@{steps-nav-arrow-color}", 1)`);border-color: #eaff8f;} .ant-tag-lime {color: #7cb305;background: color(~`colorPalette("@{layout-header-background}", 1)`);border-color: #eaff8f;}
.ant-tag-lime-inverse {color: #fff;background: #a0d911;border-color: #a0d911;} .ant-tag-lime-inverse {color: #fff;background: #a0d911;border-color: #a0d911;}
.ant-tag-green {color: #389e0d;background: #f6ffed;border-color: #b7eb8f;} .ant-tag-green {color: #389e0d;background: #f6ffed;border-color: #b7eb8f;}
.ant-tag-green-inverse {color: #fff;background: #52c41a;border-color: #52c41a;} .ant-tag-green-inverse {color: #fff;background: #52c41a;border-color: #52c41a;}
.ant-tag-blue {color: #096dd9;background: color(~`colorPalette("@{pagination-item-input-bg}", 1)`);border-color: color(~`colorPalette("@{pagination-item-input-bg}", 3)`);} .ant-tag-blue {color: #096dd9;background: color(~`colorPalette("@{pagination-item-input-bg}", 1)`);border-color: color(~`colorPalette("@{pagination-item-input-bg}", 3)`);}
.ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;} .ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;}
.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{modal-content-bg}", 1)`);border-color: #adc6ff;} .ant-tag-geekblue {color: #1d39c4;background: #f0f5ff;border-color: #adc6ff;}
.ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;} .ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;}
.ant-tag-purple {color: #531dab;background: #f9f0ff;border-color: #d3adf7;} .ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{alert-success-bg-color}", 2)`);border-color: #d3adf7;}
.ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;} .ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;}
.ant-tag-success {color: #52c41a;background: @success-color-deprecated-bg;border-color: @success-color-deprecated-border;} .ant-tag-success {color: #52c41a;background: @success-color-deprecated-bg;border-color: @success-color-deprecated-border;}
.ant-tag-processing {color: @primary-color;background: @info-color-deprecated-bg;border-color: @info-color-deprecated-border;} .ant-tag-processing {color: @primary-color;background: @info-color-deprecated-bg;border-color: @info-color-deprecated-border;}

128
web/client/src/sections/fillion/actions/infor.js

@ -31,9 +31,10 @@ export function getOperaTional(query) {
actionType: 'GET_OPERA_TIONAL', actionType: 'GET_OPERA_TIONAL',
url: ApiTable.getOperaTional, url: ApiTable.getOperaTional,
msg: { error: '获取客运信息失败' }, msg: { error: '获取客运信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function putOperaTional (query) { export function putOperaTional (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'put', type: 'put',
@ -42,7 +43,7 @@ export function putOperaTional(query) {
actionType: 'PUT_OPERA_TIONAL', actionType: 'PUT_OPERA_TIONAL',
url: ApiTable.putOperaTional, url: ApiTable.putOperaTional,
msg: { error: '获取车辆信息失败' }, msg: { error: '获取车辆信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function getSpecificVehicle (query) { export function getSpecificVehicle (query) {
@ -53,7 +54,7 @@ export function getSpecificVehicle(query) {
actionType: 'GET_SPECIFIC_VEHICLE', actionType: 'GET_SPECIFIC_VEHICLE',
url: ApiTable.getSpecificVehicle, url: ApiTable.getSpecificVehicle,
msg: { error: '获取车辆信息失败' }, msg: { error: '获取车辆信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function putSpecificVehicle (query) { export function putSpecificVehicle (query) {
@ -64,7 +65,7 @@ export function putSpecificVehicle(query) {
actionType: 'put_SPECIFIC_VEHICLE', actionType: 'put_SPECIFIC_VEHICLE',
url: ApiTable.putSpecificVehicle, url: ApiTable.putSpecificVehicle,
msg: { error: '编辑车辆信息失败' }, msg: { error: '编辑车辆信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function putHouseholds (query) { export function putHouseholds (query) {
@ -75,7 +76,7 @@ export function putHouseholds(query) {
actionType: 'put_HOUSEHOLDS', actionType: 'put_HOUSEHOLDS',
url: ApiTable.putHouseholds, url: ApiTable.putHouseholds,
msg: { error: '编辑业户信息失败' }, msg: { error: '编辑业户信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function getHouseholds (query) { export function getHouseholds (query) {
@ -86,7 +87,7 @@ export function getHouseholds(query) {
actionType: 'GET_HOUSEHOLDS', actionType: 'GET_HOUSEHOLDS',
url: ApiTable.getHouseholds, url: ApiTable.getHouseholds,
msg: { error: '获取业户信息失败' }, msg: { error: '获取业户信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function getRoadway (query) { export function getRoadway (query) {
@ -97,7 +98,7 @@ export function getRoadway(query) {
actionType: 'GET_ROADWAY', actionType: 'GET_ROADWAY',
url: ApiTable.getRoadway, url: ApiTable.getRoadway,
msg: { error: '获取道路信息失败' }, msg: { error: '获取道路信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function putRoadway (query) { export function putRoadway (query) {
@ -108,7 +109,7 @@ export function putRoadway(query) {
actionType: 'PUT_ROADWAY', actionType: 'PUT_ROADWAY',
url: ApiTable.putRoadway, url: ApiTable.putRoadway,
msg: { error: '编辑道路信息失败' }, msg: { error: '编辑道路信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function getBridge (query) { export function getBridge (query) {
@ -119,7 +120,7 @@ export function getBridge(query) {
actionType: 'GET_BRIDGE', actionType: 'GET_BRIDGE',
url: ApiTable.getBridge, url: ApiTable.getBridge,
msg: { error: '获取桥梁信息失败' }, msg: { error: '获取桥梁信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function putBridge (query) { export function putBridge (query) {
@ -130,7 +131,7 @@ export function putBridge(query) {
actionType: 'PUT_BRIDGE', actionType: 'PUT_BRIDGE',
url: ApiTable.putBridge, url: ApiTable.putBridge,
msg: { error: '编辑桥梁信息失败' }, msg: { error: '编辑桥梁信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function getProject (query) { export function getProject (query) {
@ -141,7 +142,7 @@ export function getProject(query) {
actionType: 'GET_PROJECT', actionType: 'GET_PROJECT',
url: ApiTable.getProject, url: ApiTable.getProject,
msg: { error: '获取工程信息失败' }, msg: { error: '获取工程信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function putProject (query) { export function putProject (query) {
@ -152,9 +153,53 @@ export function putProject(query) {
actionType: 'GET_PROJECT', actionType: 'GET_PROJECT',
url: ApiTable.putProject, url: ApiTable.putProject,
msg: { error: '编辑工程信息失败' }, msg: { error: '编辑工程信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function getPropagata (query) {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
query: query,
actionType: 'GET_PROPAGATA',
url: ApiTable.getpropagata,
msg: { error: '获取宣传视频信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putAddPropagata (query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'PUT_PROPAGATA',
url: ApiTable.putpropagata,
msg: { error: '新增宣传视频信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putEditPropagata (query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'PUT_PROPAGATA',
url: ApiTable.putpropagata,
msg: { error: '编辑宣传视频信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delPropagata (query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_PROPAGATA',
url: ApiTable.delpropagata.replace("{publicityId}", query?.publicityId),
msg: { error: '删除宣传视频信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getHighways (query) { export function getHighways (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
@ -163,7 +208,7 @@ export function getHighways(query) {
actionType: 'GET_HIGHWAYS', actionType: 'GET_HIGHWAYS',
url: ApiTable.getHighways, url: ApiTable.getHighways,
msg: { error: '获取路政信息失败' }, msg: { error: '获取路政信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function putHighways (query) { export function putHighways (query) {
@ -174,7 +219,7 @@ export function putHighways(query) {
actionType: 'GET_HIGHWAYS', actionType: 'GET_HIGHWAYS',
url: ApiTable.putHighways, url: ApiTable.putHighways,
msg: { error: '编辑路政信息失败' }, msg: { error: '编辑路政信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function getCircuit (query) { export function getCircuit (query) {
@ -185,7 +230,7 @@ export function getCircuit(query) {
actionType: 'GET_CIRCUIT', actionType: 'GET_CIRCUIT',
url: ApiTable.getCircuit, url: ApiTable.getCircuit,
msg: { error: '获取线路信息失败' }, msg: { error: '获取线路信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function putCircuit (query) { export function putCircuit (query) {
@ -196,7 +241,7 @@ export function putCircuit(query) {
actionType: 'PUT_CIRCUIT', actionType: 'PUT_CIRCUIT',
url: ApiTable.putCircuit, url: ApiTable.putCircuit,
msg: { error: '编辑线路信息失败' }, msg: { error: '编辑线路信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function getVehicle (query) { export function getVehicle (query) {
@ -207,7 +252,7 @@ export function getVehicle(query) {
actionType: 'GET_VEHICLE', actionType: 'GET_VEHICLE',
url: ApiTable.getVehicle, url: ApiTable.getVehicle,
msg: { error: '获取车辆信息失败' }, msg: { error: '获取车辆信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function putVehicle (query) { export function putVehicle (query) {
@ -218,7 +263,7 @@ export function putVehicle(query) {
actionType: 'PUT_VEHICLE', actionType: 'PUT_VEHICLE',
url: ApiTable.putVehicle, url: ApiTable.putVehicle,
msg: { error: '编辑车辆信息失败' }, msg: { error: '编辑车辆信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function delRoadway (query) { export function delRoadway (query) {
@ -228,7 +273,7 @@ export function delRoadway(query) {
actionType: 'DEL_ROADWAY', actionType: 'DEL_ROADWAY',
url: ApiTable.delRoadway.replace("{roadId}", query?.roadId), url: ApiTable.delRoadway.replace("{roadId}", query?.roadId),
msg: { error: '删除车辆信息失败' }, msg: { error: '删除车辆信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function delProject (query) { export function delProject (query) {
@ -238,7 +283,7 @@ export function delProject(query) {
actionType: 'DEL_PROJECT', actionType: 'DEL_PROJECT',
url: ApiTable.delProject.replace("{projectId}", query?.projectId), url: ApiTable.delProject.replace("{projectId}", query?.projectId),
msg: { error: '删除工程信息失败' }, msg: { error: '删除工程信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function delBridge (query) { export function delBridge (query) {
@ -248,7 +293,7 @@ export function delBridge(query) {
actionType: 'DEL_BRIDGE', actionType: 'DEL_BRIDGE',
url: ApiTable.delBridge.replace("{bridgeId}", query?.bridgeId), url: ApiTable.delBridge.replace("{bridgeId}", query?.bridgeId),
msg: { error: '删除桥梁信息失败' }, msg: { error: '删除桥梁信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function delSpecificVehicle (query) { export function delSpecificVehicle (query) {
@ -258,7 +303,7 @@ export function delSpecificVehicle(query) {
actionType: 'DEL_SPECIFICVENICLE', actionType: 'DEL_SPECIFICVENICLE',
url: ApiTable.delSpecificVehicle.replace("{vehicleId}", query?.vehicleId), url: ApiTable.delSpecificVehicle.replace("{vehicleId}", query?.vehicleId),
msg: { error: '删除车辆信息失败' }, msg: { error: '删除车辆信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function delHouseholds (query) { export function delHouseholds (query) {
@ -268,7 +313,7 @@ export function delHouseholds(query) {
actionType: 'DEL_HOUSEHOLDS', actionType: 'DEL_HOUSEHOLDS',
url: ApiTable.delHouseholds.replace("{businessId}", query?.businessId), url: ApiTable.delHouseholds.replace("{businessId}", query?.businessId),
msg: { error: '删除业户信息失败' }, msg: { error: '删除业户信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function delCircuit (query) { export function delCircuit (query) {
@ -278,7 +323,7 @@ export function delCircuit(query) {
actionType: 'DEL_CIRCUIT', actionType: 'DEL_CIRCUIT',
url: ApiTable.delCircuit.replace("{lineId}", query?.lineId), url: ApiTable.delCircuit.replace("{lineId}", query?.lineId),
msg: { error: '删除运营线路信息失败' }, msg: { error: '删除运营线路信息失败' },
// reducer: { name: 'reportstatistic' }
}); });
} }
export function delVehicle (query) { export function delVehicle (query) {
@ -288,39 +333,6 @@ export function delVehicle(query) {
actionType: 'DEL_VEHICLE', actionType: 'DEL_VEHICLE',
url: ApiTable.delVehicle.replace("{carId}", query?.carId), url: ApiTable.delVehicle.replace("{carId}", query?.carId),
msg: { error: '删除车辆信息失败' }, msg: { error: '删除车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getPurchase(query) {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
query: query,
actionType: 'GET_PURCHASE',
url: ApiTable.getPurchase,
msg: { error: '获取治超信息失败' },
});
}
export function putPurchase(query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'PUT_PURCHASE',
url: ApiTable.putPurchase,
msg: { error: '获取治超信息失败' },
});
}
export function delPurchase(query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_PURCHASE',
url: ApiTable.delPurchase.replace("{overspeedId}", query?.overspeedId),
msg: { error: '删除车辆信息失败' },
}); });
} }

37
web/client/src/sections/fillion/components/infor/details.js

@ -2,11 +2,11 @@ import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { Form, Spin, Table } from 'antd'; import { Form, Spin, Table } from 'antd';
import { DrawerForm, ProForm, ProFormText, ProFormSelect } from '@ant-design/pro-form'; import { DrawerForm, ProForm, ProFormText, ProFormSelect } from '@ant-design/pro-form';
import { putRoadway, putSpecificVehicle, putHouseholds, putCircuit, putVehicle, putPurchase } from "../../actions/infor" import { putRoadway, putSpecificVehicle, putHouseholds,putCircuit,putVehicle } from "../../actions/infor"
import { putBridge } from "../../actions/infor" import { putBridge } from "../../actions/infor"
import _ from 'lodash' import _ from 'lodash'
const UserModal = (props) => { const UserModal = (props) => {
const { visible, onVisibleChange, typecard, rewkeys, data, recortd, sitename, dispatch, setRecortd, setMonitor,setDelet,whichofits } = props const { visible, onVisibleChange, typecard, rewkeys, data, recortd, sitename, dispatch, setRecortd, engineering } = props
const [newlys, setNewlys] = useState() //必填数据 const [newlys, setNewlys] = useState() //必填数据
const [newlysay, setNewlysay] = useState() //处理hou const [newlysay, setNewlysay] = useState() //处理hou
const [records, setRecords] = useState()//处理 const [records, setRecords] = useState()//处理
@ -65,13 +65,6 @@ const UserModal = (props) => {
setNewlys(array?.splice(0, 2)) setNewlys(array?.splice(0, 2))
setNewlysay(array) setNewlysay(array)
} }
if (rewkeys === 'zhichao') {
_.forIn(data, function (value, key) {
array.push({ name: value, type: key })
});
setNewlys(array?.splice(0, 2))
setNewlysay(array)
}
}, []) }, [])
useEffect(() => { useEffect(() => {
const arr = [] const arr = []
@ -124,13 +117,6 @@ const UserModal = (props) => {
setRecordsay(arr.splice(1, 2)) setRecordsay(arr.splice(1, 2))
// setEstablishment(arr.splice(-1, 1)) // setEstablishment(arr.splice(-1, 1))
setRecords(arr) setRecords(arr)
} if (rewkeys === 'zhichao') {
_.forIn(recortd, function (value, key) {
arr.push({ value: value, type: key })
});
setRecordsay(arr.splice(1, 2))
// setEstablishment(arr.splice(-1, 1))
setRecords(arr)
} }
}, [recortd]) }, [recortd])
useEffect(() => { useEffect(() => {
@ -252,25 +238,6 @@ const UserModal = (props) => {
return true return true
} }
} }
if (rewkeys === 'zhichao') {
if (typecard == '111') {
setDelet(values)
const query = { ...values, overspeedId: records?.[0]?.value || '' }
dispatch(putPurchase(query)).then((res) => {
setMonitor(res)
})
return true
} else {
setDelet(values)
const query = { ...values }
dispatch(putPurchase(query)).then((res) => {
setMonitor(res)
})
return true
}
}
} else { return false } } else { return false }
}} }}

215
web/client/src/sections/fillion/components/infor/videoUpload.js

@ -0,0 +1,215 @@
import React, { useState, useEffect } from 'react';
import { connect } from 'react-redux';
import { Modal, Form, Button, Input } from 'antd';
import Uploads from "../../../../components/Upload/index"
import { putAddPropagata } from '../../actions/infor';
import { putEditPropagata } from '../../actions/infor';
import { getPropagata } from '../../actions/infor';
const VideoUpload = (props) => {
const [counts, setCounts] = useState()//shuju
//获取数据
// useEffect(() => {
// const vedio = dispatch(getPropagata()).then((res) => {
// setCounts(res.payload.data)
// console.log(res.payload.data)
// })
// }, [])
const { dispatch, record } = props
// console.log(record);
const [success, setSuccess] = useState() //状态
const [form] = Form.useForm();
//弹窗
const [isModalVisible, setIsModalVisible] = useState(false);
// const [video1, videoAddress] = useState()
const showModal = () => {
setIsModalVisible(true);
};
// const idArr = record.map((item) => { item.id })
// console.log(idArr);
//新增
const handleOkAdd = () => {
form.validateFields().then((values) => {
const videoAddress = values.video.map((item) => {
return item.storageUrl.concat()
})
const videoname = values.videoname
const data = { name: videoname, video: videoAddress }
dispatch(putAddPropagata(data)).then((res) => {
setSuccess(res.success)
console.log(data);
})
setIsModalVisible(false);
}
);
};
//编辑
const handleOkEdit = (record) => {
console.log(record);
console.log(record.id);
form.validateFields().then((values) => {
console.log(values);
const videoAddress = values.video.map((item) => {
return item.storageUrl.concat()
})
// const videoname = form.getFieldsValue('videoname')
const videoname = values.username ? (!values.username) : record.name
const id = record.id
const video = record.video
const data = { publicityId: id, name: videoname, video: videoAddress }
dispatch(putEditPropagata(data)).then((res) => {
setSuccess(res.success)
console.log(data);
})
}
);
setIsModalVisible(false);
};
const handleCancel = () => {
setIsModalVisible(false);
};
const onFinish = (values) => {
console.log('Success:', values);
};
const onFinishFailed = (errorInfo) => {
console.log('Failed:', errorInfo);
};
return (
<div >
{
props.type_ys ? <div><Button type='primary' onClick={showModal}>新增</Button>
<Modal visible={isModalVisible} onOk={handleOkAdd} onCancel={handleCancel}>
<Form
form={form}
name="basic"
labelCol={{
span: 5,
}}
wrapperCol={{
span: 16,
}}
initialValues={{
remember: true,
}}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
autoComplete="off"
>
<Form.Item
label="视频名称"
name="videoname"
rules={[
{
required: true,
message: '请输入视频名称!',
max: 50,
},
]}
>
<Input
placeholder="请输入视频名称" />
</Form.Item>
<Form.Item
label="选择视频"
name="video"
>
<Uploads
maxFilesNum={10}
fileTypes={['mp4']}
maxFileSize={200}
/>
</Form.Item>
</Form>
</Modal>
</div>
:
<div><Button type='link' onClick={showModal} style={{ Position: "absolute", left: "-50px", top: "32px" }}>编辑</Button>
<Modal visible={isModalVisible} onOk={() => handleOkEdit(record)} onCancel={handleCancel}>
<Form
form={form}
name="basic"
labelCol={{
span: 5,
}}
wrapperCol={{
span: 16,
}}
// initialValues={{
// remember: true,
// }}
initialValues={true}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
autoComplete="off"
>
<Form.Item
label="视频名称"
name="username"
rules={[
{
required: false,
message: '没有做出任何修改!',
max: 50,
},
]}
>
<Input
placeholder="请输入视频名称"
defaultValue={record.name}
/>
</Form.Item>
<Form.Item
label="选择视频"
name="video"
>
<Uploads
maxFilesNum={10}
fileTypes={['mp4']}
maxFileSize={200}
/>
</Form.Item>
</Form>
</Modal>
</div>
}
</div >
)
}
function mapStateToProps (state) {
const { depMessage } = state;
const pakData = (dep) => {
return dep.map((d) => {
return {
title: d.name,
value: d.id,
children: pakData(d.subordinate)
}
})
}
let depData = pakData(depMessage.data || [])
return {
loading: depMessage.isRequesting,
depData,
};
}
export default connect(mapStateToProps)(VideoUpload);

146
web/client/src/sections/fillion/components/operationalTable.js

@ -11,7 +11,9 @@ import HightModal from './highways/highwaysdata';
const OperaTionalTable = (props) => { const OperaTionalTable = (props) => {
const { dispatch, user, depData, depMessage, depLoading } = props const { dispatch, user, depData, depMessage, depLoading } = props
const [rowSelected, setRowSelected] = useState([]) const [rowSelected, setRowSelected] = useState([])
// const [regionId, setRegionId] = useState()//区域id
// const [placeType, setPlaceType] = useState()//场所
// const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期
const [sitename, setSitename] = useState()//场所名称 const [sitename, setSitename] = useState()//场所名称
const [counts, setCounts] = useState()//shuju const [counts, setCounts] = useState()//shuju
const [modalVisible, setModalVisible] = useState(false); const [modalVisible, setModalVisible] = useState(false);
@ -24,7 +26,7 @@ const OperaTionalTable = (props) => {
const [delet, setDelet] = useState() const [delet, setDelet] = useState()
const ref = useRef() const ref = useRef()
useEffect(() => { ref.current.reload() }, [rewkeys, activeKey, delet]) useEffect(() => { ref.current.reload() }, [modalVisible, modalVisibleyilan, rewkeys, activeKey, delet])
//打开弹窗 //打开弹窗
const openModal = (type, record) => { const openModal = (type, record) => {
setModalVisible(true); setModalVisible(true);
@ -35,23 +37,6 @@ const OperaTionalTable = (props) => {
setModalRecord(null); setModalRecord(null);
} }
} }
const deldata = (id) => { // 出租危货
const query = {
vehicleId: id
}
dispatch(delSpecificVehicle(query)).then((res) => {
setDelet(res)
})
}
const deldatas = (id) => { // 业户
const query = {
businessId: id
}
dispatch(delHouseholds(query)).then((res) => {
setDelet(res)
})
}
//打开弹窗 //打开弹窗
const hightModal = (type, record) => { const hightModal = (type, record) => {
setModalVisibleyilan(true); setModalVisibleyilan(true);
@ -168,7 +153,7 @@ const OperaTionalTable = (props) => {
title: '车牌号', title: '车牌号',
search: false, search: false,
dataIndex: 'time2', dataIndex: 'time2',
valueType: 'dateRange1', valueType: 'dateRange',
// align: 'right', // align: 'right',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
@ -182,7 +167,7 @@ const OperaTionalTable = (props) => {
title: '燃料类型', title: '燃料类型',
search: false, search: false,
dataIndex: 'time3', dataIndex: 'time3',
valueType: 'dateRange2', valueType: 'dateRange',
@ -197,7 +182,7 @@ const OperaTionalTable = (props) => {
title: '住址', title: '住址',
search: false, search: false,
dataIndex: 'time4', dataIndex: 'time4',
valueType: 'dateRange3', valueType: 'dateRange',
width: 120, width: 120,
@ -211,7 +196,7 @@ const OperaTionalTable = (props) => {
title: '经济性质', title: '经济性质',
search: false, search: false,
dataIndex: 'time5', dataIndex: 'time5',
valueType: 'dateRange4', valueType: 'dateRange',
width: 120, width: 120,
@ -225,7 +210,7 @@ const OperaTionalTable = (props) => {
title: '核定载客位数', title: '核定载客位数',
search: false, search: false,
dataIndex: 'time6', dataIndex: 'time6',
valueType: 'dateRange5', valueType: 'dateRange',
width: 120, width: 120,
@ -239,7 +224,7 @@ const OperaTionalTable = (props) => {
title: '核定载质量', title: '核定载质量',
search: false, search: false,
dataIndex: 'time7', dataIndex: 'time7',
valueType: 'dateRange6', valueType: 'dateRange',
width: 120, width: 120,
@ -253,7 +238,7 @@ const OperaTionalTable = (props) => {
title: '车辆车轴数', title: '车辆车轴数',
search: false, search: false,
dataIndex: 'time8', dataIndex: 'time8',
valueType: 'dateRange7', valueType: 'dateRange',
width: 120, width: 120,
@ -267,7 +252,7 @@ const OperaTionalTable = (props) => {
title: '车辆厂牌', title: '车辆厂牌',
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange8', valueType: 'dateRange',
width: 140, width: 140,
@ -281,8 +266,8 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '经营范围', title: '经营范围',
search: false, search: false,
dataIndex: 'time10', dataIndex: 'time9',
valueType: 'dateRange9', valueType: 'dateRange',
width: 140, width: 140,
@ -296,8 +281,8 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '车辆营运状态', title: '车辆营运状态',
search: false, search: false,
dataIndex: 'time11', dataIndex: 'time9',
valueType: 'dateRange10', valueType: 'dateRange',
width: 140, width: 140,
@ -311,7 +296,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '客车类型与等级', title: '客车类型与等级',
search: false, search: false,
dataIndex: 'time12', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -326,7 +311,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '年审结果', title: '年审结果',
search: false, search: false,
dataIndex: 'time13', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -341,7 +326,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '本次年审日期', title: '本次年审日期',
search: false, search: false,
dataIndex: 'time14', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -356,7 +341,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '下次年审日期', title: '下次年审日期',
search: false, search: false,
dataIndex: 'time15', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -371,7 +356,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '注册登记日期', title: '注册登记日期',
search: false, search: false,
dataIndex: 'time16', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -386,7 +371,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '运力来源', title: '运力来源',
search: false, search: false,
dataIndex: 'time17', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -401,7 +386,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '有效期起', title: '有效期起',
search: false, search: false,
dataIndex: 'time18', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -416,7 +401,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '有效期止', title: '有效期止',
search: false, search: false,
dataIndex: 'time19', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -431,7 +416,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '发动机排量', title: '发动机排量',
search: false, search: false,
dataIndex: 'time20', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -446,7 +431,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '发动机号', title: '发动机号',
search: false, search: false,
dataIndex: 'time21', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -461,7 +446,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '车辆发动机功率', title: '车辆发动机功率',
search: false, search: false,
dataIndex: 'time22', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -476,7 +461,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '经营许可证号', title: '经营许可证号',
search: false, search: false,
dataIndex: 'time23', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -491,7 +476,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '车牌颜色', title: '车牌颜色',
search: false, search: false,
dataIndex: 'time24', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -506,7 +491,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '车辆总质量', title: '车辆总质量',
search: false, search: false,
dataIndex: 'time25', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -521,7 +506,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '车辆准牵引总质量', title: '车辆准牵引总质量',
search: false, search: false,
dataIndex: 'time26', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -536,7 +521,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '道路运输证号', title: '道路运输证号',
search: false, search: false,
dataIndex: 'time27', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -551,7 +536,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '车辆车高', title: '车辆车高',
search: false, search: false,
dataIndex: 'time28', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -566,7 +551,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '车辆车长', title: '车辆车长',
search: false, search: false,
dataIndex: 'time29', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -581,7 +566,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '车辆车宽', title: '车辆车宽',
search: false, search: false,
dataIndex: 'time30', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -596,7 +581,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '车辆类型', title: '车辆类型',
search: false, search: false,
dataIndex: 'time31', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -611,7 +596,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '行驶证车辆类型', title: '行驶证车辆类型',
search: false, search: false,
dataIndex: 'time30', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -626,7 +611,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '车辆轴距', title: '车辆轴距',
search: false, search: false,
dataIndex: 'time31', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -641,7 +626,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '等级评定日期', title: '等级评定日期',
search: false, search: false,
dataIndex: 'time32', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -656,7 +641,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '技术评定等级', title: '技术评定等级',
search: false, search: false,
dataIndex: 'time33', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -671,7 +656,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '下次等级评定日期', title: '下次等级评定日期',
search: false, search: false,
dataIndex: 'time34', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -686,7 +671,7 @@ const OperaTionalTable = (props) => {
}, { }, {
title: '创建日期', title: '创建日期',
search: false, search: false,
dataIndex: 'time35', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -701,7 +686,7 @@ const OperaTionalTable = (props) => {
}, },
{ {
title: '操作', title: '操作',
dataIndex: 'creatTime55', dataIndex: 'creatTime',
valueType: 'dateTimeRange', valueType: 'dateTimeRange',
hideInSearch: true, hideInSearch: true,
width: 120, width: 120,
@ -711,11 +696,17 @@ const OperaTionalTable = (props) => {
onClick={() => { onClick={() => {
openModal('edit', record) openModal('edit', record)
setTypecard('111') setTypecard('111')
setRecortd(record)
}} }}
>编辑</Button> <Popconfirm title='' onConfirm={() => { deldata(record.id) }}> >编辑</Button><Button type="link"
<Button type="link">删除</Button> onClick={() => {
</Popconfirm></div> const query = {
vehicleId: record.id
}
dispatch(delSpecificVehicle(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
} }
}, },
@ -1344,11 +1335,17 @@ const OperaTionalTable = (props) => {
onClick={() => { onClick={() => {
openModal('edit', record) openModal('edit', record)
setTypecard('111') setTypecard('111')
setRecortd(record)
}} }}
>编辑</Button> <Popconfirm title='' onConfirm={() => { deldata(record.id) }}> >编辑</Button><Button type="link"
<Button type="link">删除</Button> onClick={() => {
</Popconfirm></div> const query = {
vehicleId: record.id
}
dispatch(delSpecificVehicle(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
} }
}, },
@ -1816,9 +1813,16 @@ const OperaTionalTable = (props) => {
setTypecard('111') setTypecard('111')
setRecortd(record) setRecortd(record)
}} }}
>编辑</Button><Popconfirm title='' onConfirm={() => { deldatas(record.id) }}> >编辑</Button><Button type="link"
<Button type="link">删除</Button> onClick={() => {
</Popconfirm></div> const query = {
businessId: record.id
}
dispatch(delHouseholds(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
} }
}, },
@ -1906,7 +1910,7 @@ const OperaTionalTable = (props) => {
options={false} options={false}
ref={c => { finishedProductTable = c; }} ref={c => { finishedProductTable = c; }}
style={{ width: "100% ", overflow: "auto", height: '760px' }} style={{ width: "100% ", overflow: "auto", height: '760px' }}
rowKey='id' rowKey='key'
rowSelection={{ rowSelection={{
selectedRowKeys: rowSelected, selectedRowKeys: rowSelected,
onChange: (selectedRowKeys) => { onChange: (selectedRowKeys) => {
@ -1994,7 +1998,6 @@ const OperaTionalTable = (props) => {
data={rewkeys === 'yehu' ? data : date} data={rewkeys === 'yehu' ? data : date}
recortd={recortd} recortd={recortd}
// sitename={sitename} // sitename={sitename}
setDelet={setDelet}
setRecortd={setRecortd} setRecortd={setRecortd}
/> : ''} /> : ''}
{modalVisibleyilan ? <HightModal {modalVisibleyilan ? <HightModal
@ -2004,7 +2007,6 @@ const OperaTionalTable = (props) => {
typecard={typecard} typecard={typecard}
rewkeys={'passenger'} rewkeys={'passenger'}
recortd={recortd} recortd={recortd}
setDelet={setDelet}
setRecortd={setRecortd} setRecortd={setRecortd}
/> : ''} /> : ''}
</Spin > </Spin >

194
web/client/src/sections/fillion/components/promotionalTable.js

@ -1,18 +1,43 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState, useRef } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { Spin, Button, Popconfirm, Badge } from 'antd'; import { Spin, Button, Popconfirm, Switch } from 'antd';
import ProTable from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table';
import './protable.less' import './protable.less'
import moment from 'moment'; import VideoUpload from './infor/videoUpload';
import { getReportStatistic } from "../actions/infor" import { getPropagata } from '../actions/infor';
import { putEditPropagata } from '../actions/infor';
import { delPropagata } from '../actions/infor';
const promotionalTable = (props) => { const promotionalTable = (props) => {
const { dispatch, user, depData, depMessage, depLoading } = props const { dispatch, } = props
const [rowSelected, setRowSelected] = useState([]) const [rowSelected, setRowSelected] = useState([])
const [regionId, setRegionId] = useState()//区域id
const [placeType, setPlaceType] = useState()//场所
const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期
const [sitename, setSitename] = useState()//场所名称
const [counts, setCounts] = useState()//shuju const [counts, setCounts] = useState()//shuju
const [success, setSuccess] = useState()
const [delet, setDelet] = useState()
// console.log(record);
const ref = useRef()
useEffect(() => { ref.current.reload() }, [delet])
const onClickEnable = (record) => {
console.log(record);
const id = record.id
const name = record.name
const video = record.video
const enable = true ? record.enable == false : true
const data = ({ publicityId: id, name: name, video: video, enable: enable })
console.log(data);
dispatch(putEditPropagata(data)).then((res) => {
setSuccess(res.success)
console.log(data);
})
}
// const ref = useRef()
// useEffect(() => { ref.current.reload() }, [modalVisible, modalVisibleyilan, whichofits, delet])//刷新数据
const columns = const columns =
@ -20,44 +45,78 @@ const promotionalTable = (props) => {
title: '序号', title: '序号',
search: false, search: false,
dataIndex: 'containers', dataIndex: 'containers',
fixed: 'left', fixed: 'left',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.address for (let i = 0; i < record.lenght; i += 1) {
}, return i
fieldProps: { }
getPopupContainer: (triggerNode) => triggerNode.parentNode,
} }
}, },
{ {
title: '视频名称', title: '视频名称',
dataIndex: 'placeName', dataIndex: 'videoName',
fixed: 'left', fixed: 'left',
search: false,
width: 120, width: 120,
options: 1, options: 1,
backgroundColor: "#ffffff", render: (dom, record) => {
fieldProps: { // console.log('record',record)
onChange: (value, cs) => { return record.name
setSitename(value.currentTarget.value) }
},
placeholder: '请输入视频名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
},
}, },
{ {
title: '修改时间', title: '是否展示',
dataIndex: 'shuffling',
valueType: 'shufflingRange',
search: false, search: false,
dataIndex: 'time2',
valueType: 'dateRange',
// align: 'right',
width: 120, width: 120,
fixed: 'right',
render: (dom, record) => { render: (dom, record) => {
return record.address return <div >
<Switch checkedChildren="展示" unCheckedChildren="关闭" onClick={() => onClickEnable(record)} defaultChecked={true ? record.enable == true : false} /></div>
}
}, },
fieldProps: { {
getPopupContainer: (triggerNode) => triggerNode.parentNode, title: '操作',
dataIndex: 'creatTime',
valueType: 'dateTimeRange',
hideInSearch: true,
width: 120,
fixed: 'right',
render: (dom, record) => {
return <div style={{ position: 'relative', marginTop: '-30px' }}>
<VideoUpload record={record} />
<Popconfirm
title="是否确定删除?"
arrowPointAtCenter={true}
showArrow={true}
position="topRight"
onConfirm={/* () => handleRemove(record) */
() => {
const query = {
publicityId: record.id
}
dispatch(delPropagata(query)).then((res) => {
setDelet(res)
console.log(res);
// if (res.success) {
// message.success("记录删除成功");
// handelRefresh()
// } else {
// message.error("记录删除失败")
// }
})
}
}
>
<Button type="link" float="right"
>删除</Button>
</Popconfirm>
</div>
} }
}, },
{ {
@ -65,88 +124,61 @@ const promotionalTable = (props) => {
hideInTable: true, hideInTable: true,
dataIndex: "direction", dataIndex: "direction",
order: 6, order: 6,
renderFormItem: (item, { type, defaultRender, ...rest }, form) => { renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => {
return ( return (
<div> <Button <div>
type="primary" <VideoUpload type_ys={1} record={counts} />
style={{ width: "100px" }}
onClick={() => {
dispatch(push(`article/update/post`));
}}
>
新增
</Button>
</div> </div>
); );
}, },
}, },
] ]
//获取数据
useEffect(() => {
const vedio = dispatch(getPropagata()).then((res) => {
setCounts(res.payload.data)
console.log(res.payload.data)
})
}, [])
return ( return (
<Spin spinning={false}> <Spin spinning={false}>
<div className='protable-transpor'> <div className='protable-transpor'>
<ProTable <ProTable
actionRef={ref}
scroll={{ x: 800 }} scroll={{ x: 800 }}
options={false} options={false}
ref={c => { finishedProductTable = c; }}
style={{ width: "100% ", overflow: "auto", height: '760px' }} style={{ width: "100% ", overflow: "auto", height: '760px' }}
rowKey='id' rowKey='id'
onReset={(v) => {
const { id } = depMessage[0]
console.log(id)
setRegionId(id)
setPlaceType(-1)
setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])
setSitename('')
}}
rowSelection={{ rowSelection={{
selectedRowKeys: rowSelected, selectedRowKeys: rowSelected,
onChange: (selectedRowKeys) => { onChange: (selectedRowKeys) => {
setRowSelected(selectedRowKeys); setRowSelected(selectedRowKeys);
}, },
}} }}
form={{
submitter: false,
}}
columns={columns} columns={columns}
dataSource={counts || []}
dataSource={(counts || {}).rows || []}
request={async (params) => { request={async (params) => {
const query = { const query = {
// startDate: day[0], limit: params.pageSize,
// endDate: day[1], offset: ((params.current ? params.current : 1) - 1) * params.pageSize
// placeType: placeType,
// regionId: regionId,
// placeName: sitename,
// limit: params.pageSize,
// offset: ((params.current ? params.current : 1) - 1) * params.pageSize
} }
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getReportStatistic(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
}} }}
// search={{
// defaultCollapsed: false,
// optionRender: (searchConfig, formProps, dom) => [
// ...dom.reverse(),
// <Popconfirm title="确认导出?" onConfirm={() => { props.exports(rowSelected, counts) }}>
// <Button
// >
// 导出
// </Button>
// </Popconfirm>
// ],
// }}
> >
</ProTable></div> </ProTable></div>
</Spin > </Spin >
) )
} }
function mapStateToProps (state) { function mapStateToProps (state) {
const { auth, depMessage } = state; const { auth, depMessage } = state;
const pakData = (dep) => { const pakData = (dep) => {
return dep.map((d) => { return dep.map((d) => {

3
web/client/src/sections/quanju/containers/footer/build/index.js

@ -120,8 +120,6 @@ const Build = (props) => {
<Module title={"各种状态公路数量统计"} style={{ width: "100%", <Module title={"各种状态公路数量统计"} style={{ width: "100%",
height:" 33%" height:" 33%"
}} customize = {true}> }} customize = {true}>
<div style={{height:"100%",position:"relative"}} >
<span style={{position:"absolute",width:"10%",color:"#FFF",backgroundColor:'rgba(216, 240, 255, 0.1)',right:"5%",textAlign:"center"}}></span>
{buildingnumber&&buildingnumber.buildedRoad!==0&&totalgongli!==0?<div className='build-left-top'> {buildingnumber&&buildingnumber.buildedRoad!==0&&totalgongli!==0?<div className='build-left-top'>
<div className='build-left-top-item'> <div className='build-left-top-item'>
<div> <div>
@ -141,7 +139,6 @@ const Build = (props) => {
<div>{buildingnumber?.buildedRoad || 0}</div> <div>{buildingnumber?.buildedRoad || 0}</div>
</div> </div>
</div>:<NoData/>} </div>:<NoData/>}
</div>
</Module> </Module>
<Module title={"各乡镇道路分布统计"} style={{ width: "100%", <Module title={"各乡镇道路分布统计"} style={{ width: "100%",
height:" 33%",marginTop:'3%' height:" 33%",marginTop:'3%'

2
web/client/src/sections/quanju/containers/footer/guanli/LeftItem.js

@ -15,7 +15,7 @@ export default function LeftItem({datas}) {
textStyle: { textStyle: {
color: '#fff', color: '#fff',
}, },
formatter: (values) => `${values.name}<b>${datas.processed}</b>`, formatter: (values) => ` ${values.name}<b>${datas.processed}</b>`,
}, },
title: { title: {
text: `${(datas.processed*100/datas.total).toFixed(2)}%`, text: `${(datas.processed*100/datas.total).toFixed(2)}%`,

173
web/client/src/utils/webapi.js

@ -85,25 +85,180 @@ export const ApiTable = {
getRoadMaintenance: 'conserve/statistic', getRoadMaintenance: 'conserve/statistic',
//获取宣传数据 //获取宣传数据
getpropagata: 'publicity', getpropagata: 'publicity',putpropagata:'publicity',delpropagata:'/publicity/{publicityId}',
// <<<<<<< HEAD
// //公交信息
// getCircuit: 'bus/line', putCircuit: 'bus/line', delCircuit: 'bus/line/{lineId}',
// getVehicle: 'bus/car', putVehicle: 'bus/car', delVehicle: 'bus/car/{carId}',
// =======
//公交信息 //公交信息
getCircuit: 'bus/line', putCircuit: 'bus/line', delCircuit: 'bus/line/{lineId}', getCircuit: 'bus/line', putCircuit: 'bus/line', delCircuit: 'bus/line/{lineId}',
getVehicle: 'bus/car', putVehicle: 'bus/car', delVehicle: 'bus/car/{carId}', getVehicle: 'bus/car', putVehicle: 'bus/car', delVehicle: 'bus/car/{carId}',
// 获取道路拥堵指数
getgodshuju: "data/god_trans",
//治超管理 //治超管理
getPurchase: 'overspeed', getPurchase: 'overspeed',
putPurchase: 'overspeed', putPurchase: 'overspeed',
delPurchase: 'overspeed/{overspeedId}', delPurchase: 'overspeed/{overspeedId}',
// >>>>>>> a3fe9bee43370f1e5ceb69dcdef1b9b7cbf9c84c login: 'login',
logout: 'logout',
getEnterprisesMembers: 'enterprises/{enterpriseId}/members',
//组织管理-用户管理-部门
getDepMessage: 'department',
createDepMessage: 'department',
updateDepMessage: 'department',
delDepMessage: 'department/{depId}',
//组织管理-用户管理-用户
getDepUser: 'department/{depId}/user',
createUser: 'department/user',
updateUser: 'department/user/{userId}',
delUser: 'department/user/{userIds}',
resetPwd: 'department/user/{userId}/password',
//用户权限
getResource: 'resource',
getUserResource: 'user/resource',
postUserRes: 'user/resource',
//报表配置
allAreas: 'allAreas',
addReportConfig: 'report/config',
getReportConfig: 'report/config',
editReportConfig: 'report/{reportId}/config',
delReportConfig: 'report/{reportId}/config',
// 报表编辑
getReportRectify: 'report/rectify',
getReportRectifyDetail: 'report/rectify/detail',
compileReportRectifyDetail: 'report/rectify/detail',
getReportList: 'report/list',
getReportDetail: 'report/{reportId}/detail',
getUsers: 'user',
//运政管理
getOperaTional: 'vehicle', putOperaTional: 'vehicle',
getSpecificVehicle: 'vehicle/specific', putSpecificVehicle: 'vehicle/specific', delSpecificVehicle: 'vehicle/{vehicleId}/specific',
getHouseholds: 'vehicle/business', putHouseholds: 'vehicle/business', delHouseholds: 'vehicle/business/{businessId}',
getRoadway: 'road',
// 获取运政统计
getYunZheng: "transportation/statistic",
//桥梁管理
getBridge: 'bridge',
putBridge: 'bridge',
delBridge: 'bridge/{bridgeId}',
//工程数据
getProject: 'project',
putProject: 'project',
delProject: 'project/{projectId}',
//道路数据
getRoadway: 'road',
putRoadway: 'road',
delRoadway: 'road/{roadId}',
//道路统计
getBgroadstatistics: "build/road_state",
//治超监测点处理数据
getzhichaomanager: 'manage/overspeed/processed',
//获取治超详情数据
getzhichaodetail: '/manage/overspeed',
// 获取道路养护统计及列表
getroadmaintain: "conserve/statistic",
// 获取治超详情列
getzhichaoList: "manage/overspeed",
//大屏运营 —— 公交车辆层级信息
getBusTier: '/operation/car_level',
//获取路政列表
getHighways: 'road_manage', putHighways: 'road_manage',
//获取道路养护统计及列表
getRoadMaintenance: 'conserve/statistic',
//获取宣传数据
getpropagata: 'publicity',
login: 'login',
logout: 'logout',
getEnterprisesMembers: 'enterprises/{enterpriseId}/members',
//组织管理-用户管理-部门
getDepMessage: 'department',
createDepMessage: 'department',
updateDepMessage: 'department',
delDepMessage: 'department/{depId}',
//组织管理-用户管理-用户
getDepUser: 'department/{depId}/user',
createUser: 'department/user',
updateUser: 'department/user/{userId}',
delUser: 'department/user/{userIds}',
resetPwd: 'department/user/{userId}/password',
//用户权限
getResource: 'resource',
getUserResource: 'user/resource',
postUserRes: 'user/resource',
//报表配置
allAreas: 'allAreas',
addReportConfig: 'report/config',
getReportConfig: 'report/config',
editReportConfig: 'report/{reportId}/config',
delReportConfig: 'report/{reportId}/config',
// 报表编辑
getReportRectify: 'report/rectify',
getReportRectifyDetail: 'report/rectify/detail',
compileReportRectifyDetail: 'report/rectify/detail',
getReportList: 'report/list',
getReportDetail: 'report/{reportId}/detail',
getUsers: 'user',
//运政管理
getOperaTional: 'vehicle',
getSpecificVehicle: 'vehicle/specific',
getHouseholds: 'vehicle/business',
getRoadway: 'road',
//桥梁管理
getBridge: 'bridge',
putBridge: 'bridge',
//工程数据
getProject: 'project',
putProject: 'project',
//道路统计
getBgroadstatistics: "build/road_state",
//治超监测点处理数据
getzhichaomanager: 'manage/overspeed/processed',
//获取治超详情数据
getzhichaodetail: '/manage/overspeed',
//大屏运营 —— 公交车辆层级信息
getBusTier: '/operation/car_level',
//获取路政列表
getHighways: 'road_manage',
//获取道路养护统计及列表
getRoadMaintenance: 'conserve/statistic',
//获取宣传数据
getpropagata: 'publicity',
//编辑/新增宣传数据
putpropagata: 'publicity',
//公交信息
getCircuit: 'bus/line', putCircuit: 'bus/line', delCircuit: 'bus/line/{lineId}',
getVehicle: 'bus/car', putVehicle: 'bus/car', delVehicle: 'bus/car/{carId}',
}; };

18810
web/log/development.txt

File diff suppressed because it is too large

3
web/routes/attachment/index.js

@ -18,7 +18,8 @@ const ext = {
module.exports = { module.exports = {
entry: function (app, router, opts) { entry: function (app, router, opts) {
const getApiRoot = async function (ctx) { const getApiRoot = async function (ctx) {
const { apiUrl, qndmn } = opts; const { apiUrl } = opts;
ctx.status = 200; ctx.status = 200;
ctx.body = { root: apiUrl, qndmn }; ctx.body = { root: apiUrl, qndmn };
}; };

Loading…
Cancel
Save