Browse Source

联调提交

wangqin
Joe 1 year ago
parent
commit
a9d7053bd6
  1. 8
      ruoyi-ui/src/views/JiHeExpressway/components/Card1/index.vue
  2. 6
      ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/index.vue
  3. 2
      ruoyi-ui/src/views/JiHeExpressway/components/InputSearch/index.vue
  4. 14
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/components/PeopleCard/index.vue
  5. 26
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/index.vue
  6. 22
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/data.js
  7. 56
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/index.vue
  8. 27
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/data.js
  9. 82
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue
  10. 12
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/data.js
  11. 83
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/index.vue
  12. 22
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/data.js
  13. 116
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/index.vue
  14. 16
      ruoyi-ui/src/views/JiHeExpressway/scss/el-reset.scss
  15. 17
      ruoyi-ui/src/views/JiHeExpressway/utils/index.js

8
ruoyi-ui/src/views/JiHeExpressway/components/Card1/index.vue

@ -6,7 +6,7 @@
<span>{{ item.label }}: </span>
<span>
<slot :name="`form-${item.key}`" :data="cardData">
{{ cardData[item.key] || '-' }}
{{ getValue(item.key) }}
</slot>
</span>
</p>
@ -28,6 +28,7 @@
<script>
import Button from '@screen/components/Buttons/Button.vue';
import BorderRadiusImage from "@screen/components/BorderRadiusImage.vue";
import { get as pathGet } from "lodash";
export default {
name: 'Card',
@ -97,6 +98,11 @@ export default {
4: "normal"
}
}
},
methods: {
getValue(key) {
return pathGet(this.cardData, key) ?? '-'
}
}
}
</script>

6
ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/index.vue

@ -62,7 +62,7 @@ export default {
*/
dFormData: {
type: Object,
default: () => {}
default: () => { }
},
formList: {
type: Array,
@ -101,7 +101,7 @@ export default {
},
created() {
this.reset(true);
if(this.dFormData) {
if (this.dFormData) {
this.modelFormData = this.dFormData;
}
},
@ -231,7 +231,7 @@ export default {
align-content: start;
width: 100%;
gap: 15px 15px;
overflow-x: hidden;
// overflow-x: hidden;
padding-right: 9px;
.formItem {

2
ruoyi-ui/src/views/JiHeExpressway/components/InputSearch/index.vue

@ -6,7 +6,7 @@
<img src="./search.svg">
</div>
<div style="width: 100%">
<div style="width: 100%;max-height: 360px;">
<slot>
<Form v-if="formList && formList.length" class="form" ref="FormConfigRef" :formList="formList"
v-bind="getFormConfigOptions" />

14
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/components/PeopleCard/index.vue

@ -4,8 +4,8 @@
<img src="./images/avatar.svg" width="90px">
<div class="desc">
<p v-for="item in keyMap" :key="item.key">
<span>{{ item.label }}: </span>
<span>{{ cardData[item.key] }}</span>
<span>{{ item.label || '-' }}: </span>
<span>{{ cardData[item.key] || '-' }}</span>
</p>
</div>
<div class="btns">
@ -29,17 +29,13 @@ export default {
cardData: {
type: Object,
default: () => ({
source: "济菏运管中心",
name: "王亮亮",
work: "主任",
number: "18666666666"
})
},
keyMap: {
type: Array,
default: () => ([
{
key: "source",
key: "organizationName",
label: "机构"
},
{
@ -47,11 +43,11 @@ export default {
label: "姓名"
},
{
key: "work",
key: "postName",
label: "岗位"
},
{
key: "number",
key: "contactNumber",
label: "电话"
}
])

26
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/index.vue

@ -5,13 +5,14 @@
<!-- 内容 -->
<div class="body">
<Transition name="fade">
<component :is="activeName" class="content" />
<component :is="activeName" class="content" ref="viewRef" />
</Transition>
</div>
<!-- 分页 -->
<div class="footer">
<Pagination :total="90" />
<Pagination :total="total" :page-size="30" :page-sizes="[30, 60, 90]" @size-change="handleSizeChange"
@current-change="handleCurrentChange" />
</div>
</div>
</template>
@ -36,6 +37,15 @@ export default {
FirstResponders,
JurisdictionalManagement
},
provide() {
return {
getPagination: () => ({
pageSize: this.pageSize || 30,
pageNum: this.pageNum || 1
}),
setTotal: (total) => this.total = total
}
},
data() {
return {
activeName: "FirstResponders",
@ -56,13 +66,21 @@ export default {
label: "辖段管理",
key: "JurisdictionalManagement"
},
]
],
total: 0
}
},
methods: {
handleSelect(activeName) {
this.pageNum = 1;
this.activeName = activeName;
}
},
handleSizeChange(size) {
this.pageNum = size;
},
handleCurrentChange(currentPage) {
this.pageNum = currentPage;
},
}
}
</script>

22
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/data.js

@ -0,0 +1,22 @@
// import * as PresetFormItems from "@screen/pages/control/event/event/FormEvent/PresetFormItems.js";
export const searchFormList = [
// {
// label: "岗位:",
// key: "postId",
// type: "select",
// options: {
// clearable: true,
// options: [],
// },
// },
// {
// label: "机构:",
// key: "organizationId",
// type: "select",
// options: {
// clearable: true,
// options: [],
// },
// },
];

56
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/index.vue

@ -28,10 +28,12 @@
</ButtonGradient>
</div>
<InputSearch style="width: 402px;" />
<InputSearch style="width: 402px;" :formList="searchFormList" :formConfigOptions="{ labelWidth: '72px' }"
@handleSearch="handleSearch" />
</div>
<ElEmpty v-if="!data.length" description="暂无数据" style="width: 100%;height: 100%;" />
<SpecialTable :columns="columns" :data="data" class="body">
<SpecialTable v-else :columns="columns" :data="data" class="body">
<template #title-DateDuty>
<div class="special-title">
值班中心
@ -106,6 +108,11 @@ import ModifyDutyInformationTable from "./components/ModifyDutyInformationTable.
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import InputSearch from '@screen/components/InputSearch/index.vue';
import { searchFormList } from "./data";
import request from "@/utils/request";
import { setLoading } from "@screen/utils/index.js"
import { delay } from "@screen/utils/common";
export default {
name: 'DutyOfficer',
components: {
@ -115,6 +122,7 @@ export default {
ButtonGradient,
InputSearch
},
inject: ['getPagination', 'setTotal'],
data() {
return {
columns: [
@ -139,24 +147,54 @@ export default {
width: "510px"
},
],
data: Array.from({ length: 15 }).map((_, index) => ({
"id": index,
"值班日期": "2023-12-21",
"驻点": "驻点",
"白班": "甘易玫",
"夜班": "甘易玫",
})),
// data: Array.from({ length: 15 }).map((_, index) => ({
// "id": index,
// "": "2023-12-21",
// "": "",
// "": "",
// "": "",
// })),
data: [],
operateRecordVisible: false,
modifyDutyInformationTableVisible: false
}
},
created() {
this.getData();
},
methods: {
handleOperateRecord(bool) {
this.operateRecordVisible = bool;
},
handleModifyDutyInformationTable(bool) {
this.modifyDutyInformationTableVisible = bool;
},
handleSearch(data) {
this.searchData = data;
this.getData();
},
async getData() {
const closeLoading = setLoading();
await delay(150);
closeLoading();
// request({
// url: `/business/employees/list`,
// method: "get",
// params: {
// ...this.searchData,
// ...this.getPagination()
// }
// }).then(result => {
// if (result.code != 200) return;
// this.data = result.rows;
// this.total = result.total;
// }).finally(() => {
// closeLoading();
// })
}
}
}

27
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/data.js

@ -0,0 +1,27 @@
// import * as PresetFormItems from "@screen/pages/control/event/event/FormEvent/PresetFormItems.js";
export const searchFormList = [
{
label: "机构类型:",
key: "organizationType",
type: "select",
options: {
clearable: true,
options: [
{
key: 1,
label: "运营中心",
},
{
key: 2,
label: "驻点",
},
],
},
},
{
label: "机构名称:",
key: "organizationName",
type: "input",
},
];

82
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue

@ -14,7 +14,7 @@
</template>
导出
</ButtonGradient>
<ButtonGradient>
<ButtonGradient @click.native="getData">
<template #prefix>
<img src="@screen/images/refresh.svg" />
</template>
@ -22,11 +22,15 @@
</ButtonGradient>
</div>
<InputSearch style="width: 402px;" />
<InputSearch style="width: 402px;" :formList="searchFormList" :formConfigOptions="{ labelWidth: '90px' }"
@handleSearch="handleSearch" />
</div>
<div class='body'>
<Card v-for="(item, index) in data" :cardData="item" :key="index">
<ElEmpty v-if="!data.length" description="暂无数据" style="width: 100%;height: 100%;position: absolute;" />
<template v-else>
<Card v-for="(item, index) in data" :keyMap="keyMap" :cardData="item" :key="index">
<template #button>
<Button>
修改
@ -36,6 +40,7 @@
</Button>
</template>
</Card>
</template>
</div>
</div>
</template>
@ -46,8 +51,14 @@ import InputSearch from '@screen/components/InputSearch/index.vue';
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import Button from '@screen/components/Buttons/Button.vue';
import { searchFormList } from "./data";
import request from "@/utils/request";
import { setLoading } from "@screen/utils/index.js"
import { delay } from "@screen/utils/common";
export default {
name: 'EmergencyAgencies',
inject: ['getPagination', 'setTotal'],
components: {
Card,
ButtonGradient,
@ -56,12 +67,65 @@ export default {
},
data() {
return {
data: Array.from({ length: 20 }).map(() => ({
source: "济菏运管中心",
location: "长清大学城收费站",
direction: "117.123456",
direction2: "37.12234",
})),
searchFormList,
// data: Array.from({ length: 20 }).map(() => ({
// source: "",
// location: "",
// direction: "117.123456",
// direction2: "37.12234",
// })),
data: [],
keyMap: [
{
key: "dcOrganizations.organizationName",
label: "机构名称"
},
{
key: "dcOrganizations.organizationAddress",
label: "机构地址"
},
{
key: "coordinate.longitude",
label: "经度"
},
{
key: "coordinate.longitude",
label: "纬度"
},
{
key: "dcOrganizations.latitude",
label: "救援外协单位"
}]
}
},
created() {
this.getData();
},
methods: {
handleSearch(data) {
this.searchData = data;
this.getData();
},
async getData() {
const closeLoading = setLoading();
await delay(150);
request({
url: `/business/organization/list`,
method: "get",
params: {
...this.searchData,
...this.getPagination()
}
}).then(result => {
if (result.code != 200) return;
this.data = result.data;
this.total = result.total;
}).finally(() => {
closeLoading();
})
}
}

12
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/data.js

@ -3,18 +3,20 @@
export const searchFormList = [
{
label: "岗位:",
key: "key009",
key: "postId",
type: "select",
options: {
type: "daterange",
clearable: true,
options: [],
},
},
{
label: "驻点:",
key: "key018",
label: "机构:",
key: "organizationId",
type: "select",
options: {
type: "daterange",
clearable: true,
options: [],
},
},
];

83
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/index.vue

@ -14,7 +14,7 @@
</template>
导出
</ButtonGradient>
<ButtonGradient>
<ButtonGradient @click.native="getData">
<template #prefix>
<img src="@screen/images/refresh.svg" />
</template>
@ -22,11 +22,15 @@
</ButtonGradient>
</div>
<InputSearch style="width: 402px;" :formList="searchFormList" />
<InputSearch style="width: 402px;" :formList="searchFormList" :formConfigOptions="{ labelWidth: '72px' }"
@handleSearch="handleSearch" />
</div>
<div class='body'>
<PeopleCard v-for="(item, index) in 15" :buttonIcon="null" :key="index" buttonText="详情" />
<ElEmpty v-if="!data.length" description="暂无数据" style="width: 100%;height: 100%;position: absolute;" />
<template v-else>
<PeopleCard v-for="(item, index) in data" :buttonIcon="null" :cardData="item" :key="index" buttonText="详情" />
</template>
</div>
</div>
</template>
@ -35,7 +39,11 @@
import PeopleCard from "./../../components/PeopleCard/index.vue";
import InputSearch from '@screen/components/InputSearch/index.vue';
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import { searchFormList } from "./data";
import request from "@/utils/request";
import { setLoading } from "@screen/utils/index.js"
import { delay } from "@screen/utils/common";
export default {
name: 'FirstResponders',
@ -44,9 +52,75 @@ export default {
ButtonGradient,
InputSearch
},
inject: ['getPagination', 'setTotal'],
data() {
return {
searchFormList
searchFormList,
data: []
}
},
created() {
this.getData();
this.getSearchOptions();
},
methods: {
getSearchOptions() {
Promise.allSettled([
//
request({
url: `/business/employees/sysPost`,
method: "post",
data: {}
}),
//
request({
url: `/business/employees/organization`,
method: "post",
data: {}
})
])
.then(([post, organization]) => {
if (post.status === 'fulfilled' && post.value.code == 200) {
this.searchFormList[0].options.options = post.value.data.map(item => ({
key: item.postId,
label: item.postName,
}))
}
if (organization.status === 'fulfilled' && organization.value.code == 200) {
this.searchFormList[1].options.options = organization.value.data.map(item => ({
key: item.id,
label: item.organizationName,
}))
}
console.log(this.searchFormList)
})
},
handleSearch(data) {
this.searchData = data;
this.getData();
},
async getData() {
const closeLoading = setLoading();
await delay(150);
request({
url: `/business/employees/list`,
method: "get",
params: {
...this.searchData,
...this.getPagination()
}
}).then(result => {
if (result.code != 200) return;
this.data = result.rows;
this.total = result.total;
}).finally(() => {
closeLoading();
})
}
}
}
@ -62,6 +136,7 @@ export default {
// grid-auto-flow: row;
justify-content: space-between;
grid-auto-rows: minmax(270px, max-content);
position: relative;
}
}
</style>

22
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/data.js

@ -0,0 +1,22 @@
// import * as PresetFormItems from "@screen/pages/control/event/event/FormEvent/PresetFormItems.js";
export const searchFormList = [
// {
// label: "岗位:",
// key: "postId",
// type: "select",
// options: {
// clearable: true,
// options: [],
// },
// },
// {
// label: "机构:",
// key: "organizationId",
// type: "select",
// options: {
// clearable: true,
// options: [],
// },
// },
];

116
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/index.vue

@ -14,7 +14,7 @@
</template>
导出
</ButtonGradient>
<ButtonGradient>
<ButtonGradient @click.native="getData">
<template #prefix>
<img src="@screen/images/refresh.svg" />
</template>
@ -22,24 +22,30 @@
</ButtonGradient>
</div>
<InputSearch style="width: 402px;" />
<InputSearch style="width: 402px;" :formList="searchFormList" :formConfigOptions="{ labelWidth: '72px' }"
@handleSearch="handleSearch" />
</div>
<div class="body">
<ElEmpty v-if="!data.length" description="暂无数据" style="width: 100%;height: 100%;position: absolute;" />
<template v-else>
<Card v-for="(item, index) in data" :buttonIcon="null" :keyMap="keyMap" :cardData="item" :key="index"
buttonText="详情">
<template #form-location="{ data }">
<div class="endSpecial">
<span>
: {{ data.location }}
: {{ data.startStakeMark }}
</span>
<span>
: {{ data.location }}
: {{ data.endStakeMark }}
</span>
</div>
</template>
</Card>
</template>
</div>
<EditEventInformationDialog v-model="editEventInformationDialogVisible" />
</div>
@ -51,6 +57,11 @@ import EditEventInformationDialog from "./components/EditEventInformationDialog/
import InputSearch from '@screen/components/InputSearch/index.vue';
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import { searchFormList } from "./data";
import request from "@/utils/request";
import { setLoading } from "@screen/utils/index.js"
import { delay } from "@screen/utils/common";
export default {
name: 'JurisdictionalManagement',
components: {
@ -59,11 +70,12 @@ export default {
ButtonGradient,
InputSearch
},
inject: ['getPagination', 'setTotal'],
data() {
return {
keyMap: [
{
key: "source",
key: "sectionName",
label: "路段名称"
},
{
@ -71,28 +83,94 @@ export default {
label: "路段桩号"
},
{
key: "time",
key: "createTime",
label: "采集时间"
},
{
key: "km",
key: "mileage",
label: "路段里程"
}
],
data: Array.from({ length: 20 }).map(() => ({
time: "2023.12.22 13:00:00",
source: "视频智能识别",
location: "k100+000",
km: "13.588km",
direction2: "37.12234",
state: (() => {
const min = 1;
const max = 5;
return Math.floor(Math.random() * (max - min + 1)) + min;
})()
})),
// data: Array.from({ length: 20 }).map(() => ({
// time: "2023.12.22 13:00:00",
// source: "",
// location: "k100+000",
// km: "13.588km",
// direction2: "37.12234",
// state: (() => {
// const min = 1;
// const max = 5;
// return Math.floor(Math.random() * (max - min + 1)) + min;
// })()
// })),
data: [],
editEventInformationDialogVisible: false
}
},
created() {
this.getData();
// this.getSearchOptions();
},
methods: {
getSearchOptions() {
Promise.allSettled([
//
request({
url: `/business/employees/sysPost`,
method: "post",
data: {}
}),
//
request({
url: `/business/employees/organization`,
method: "post",
data: {}
})
])
.then(([post, organization]) => {
if (post.status === 'fulfilled' && post.value.code == 200) {
this.searchFormList[0].options.options = post.value.data.map(item => ({
key: item.postId,
label: item.postName,
}))
}
if (organization.status === 'fulfilled' && organization.value.code == 200) {
this.searchFormList[1].options.options = organization.value.data.map(item => ({
key: item.id,
label: item.organizationName,
}))
}
console.log(this.searchFormList)
})
},
handleSearch(data) {
this.searchData = data;
this.getData();
},
async getData() {
const closeLoading = setLoading();
await delay(150);
request({
url: `/business/roadSection/list`,
method: "get",
params: {
...this.searchData,
...this.getPagination()
}
}).then(result => {
if (result.code != 200) return;
this.data = result.rows;
this.total = result.total;
}).finally(() => {
closeLoading();
})
}
}
}

16
ruoyi-ui/src/views/JiHeExpressway/scss/el-reset.scss

@ -500,3 +500,19 @@ div.el-popper.global-input-search-popover {
margin-top: 15px;
}
}
.el-loading-mask {
background-color: rgba(255, 255, 255, 0.15);
.el-loading-spinner {
i,
p {
// color: #fff;
color: #00b3cc;
}
svg {
circle {
stroke: #00b3cc;
}
}
}
}

17
ruoyi-ui/src/views/JiHeExpressway/utils/index.js

@ -0,0 +1,17 @@
import { Loading } from "element-ui";
/**
* 设置 一个Loading
* @param {{ target: HTMLElement; fullscreen: boolean; spinner: string; text: string; }} options
* @returns close callback
*/
export function setLoading(options) {
let loadingInstance = Loading.service({
fullscreen: true,
text: "数据加载中...",
lock: true,
...options,
});
return () => loadingInstance.close();
}
Loading…
Cancel
Save