0911
git commit -m 0911
This commit is contained in:
@ -8,9 +8,9 @@ VITE_APP_ENV = 'development'
|
|||||||
|
|
||||||
# VITE_APP_BASE_API = 'http://192.168.110.209:8899'
|
# VITE_APP_BASE_API = 'http://192.168.110.209:8899'
|
||||||
# 李陈杰 209
|
# 李陈杰 209
|
||||||
# VITE_APP_BASE_API = 'http://192.168.110.209:8899'
|
VITE_APP_BASE_API = 'http://192.168.110.149:8899'
|
||||||
# 曾涛
|
# 曾涛
|
||||||
VITE_APP_BASE_API = 'http://192.168.110.210:8899'
|
# VITE_APP_BASE_API = 'http://192.168.110.149:8899'
|
||||||
# 罗成
|
# 罗成
|
||||||
# VITE_APP_BASE_API = 'http://192.168.110.188:8899'
|
# VITE_APP_BASE_API = 'http://192.168.110.188:8899'
|
||||||
# 朱银
|
# 朱银
|
||||||
@ -18,8 +18,10 @@ VITE_APP_ENV = 'development'
|
|||||||
#曾涛
|
#曾涛
|
||||||
# VITE_APP_BASE_API = 'http://192.168.110.171:8899'
|
# VITE_APP_BASE_API = 'http://192.168.110.171:8899'
|
||||||
|
|
||||||
# 无人机接口地址
|
# ws
|
||||||
|
VITE_APP_BASE_WS_API = 'ws://192.168.110.149:8899/resource/websocket'
|
||||||
|
|
||||||
|
# 无人机接口地址
|
||||||
VITE_APP_BASE_DRONE_API = 'http://58.17.134.85:9512'
|
VITE_APP_BASE_DRONE_API = 'http://58.17.134.85:9512'
|
||||||
|
|
||||||
# 应用访问路径 例如使用前缀 /admin/
|
# 应用访问路径 例如使用前缀 /admin/
|
||||||
|
@ -1 +1,2 @@
|
|||||||
|
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
"date-fns": "^4.1.0",
|
"date-fns": "^4.1.0",
|
||||||
"diagram-js": "12.3.0",
|
"diagram-js": "12.3.0",
|
||||||
"didi": "9.0.2",
|
"didi": "9.0.2",
|
||||||
"echarts": "5.5.0",
|
"echarts": "^5.5.0",
|
||||||
"echarts-gl": "^2.0.9",
|
"echarts-gl": "^2.0.9",
|
||||||
"element-plus": "2.8.8",
|
"element-plus": "2.8.8",
|
||||||
"esbuild": "^0.25.0",
|
"esbuild": "^0.25.0",
|
||||||
|
@ -106,6 +106,6 @@ export const getFootNote = (data) => {
|
|||||||
return request({
|
return request({
|
||||||
url: 'gps/equipmentSon/getList',
|
url: 'gps/equipmentSon/getList',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
data: data
|
params: data
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -122,6 +122,11 @@ export interface EquipmentQuery extends PageQuery {
|
|||||||
*/
|
*/
|
||||||
type?: string | number;
|
type?: string | number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 展示用户/设备数据:1=用户数据,0=设备数据
|
||||||
|
*/
|
||||||
|
gpsType?: string | number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户id
|
* 用户id
|
||||||
*/
|
*/
|
||||||
|
@ -53,7 +53,6 @@ export interface MaterialReceiveVO {
|
|||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
remark: string;
|
remark: string;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MaterialReceiveForm extends BaseEntity {
|
export interface MaterialReceiveForm extends BaseEntity {
|
||||||
@ -156,11 +155,13 @@ export interface MaterialReceiveForm extends BaseEntity {
|
|||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
remark?: string;
|
remark?: string;
|
||||||
|
/**
|
||||||
|
* 附件
|
||||||
|
*/
|
||||||
|
attachmentId?: string | number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MaterialReceiveQuery extends PageQuery {
|
export interface MaterialReceiveQuery extends PageQuery {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目id
|
* 项目id
|
||||||
*/
|
*/
|
||||||
@ -206,6 +207,3 @@ export interface MaterialReceiveQuery extends PageQuery {
|
|||||||
*/
|
*/
|
||||||
params?: any;
|
params?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ export interface FlowTaskVO {
|
|||||||
version?: string;
|
version?: string;
|
||||||
applyNode?: boolean;
|
applyNode?: boolean;
|
||||||
buttonList?: buttonList[];
|
buttonList?: buttonList[];
|
||||||
|
projectName?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface buttonList {
|
export interface buttonList {
|
||||||
|
@ -12,7 +12,8 @@ export default {
|
|||||||
businessId: routerJumpVo.businessId,
|
businessId: routerJumpVo.businessId,
|
||||||
type: routerJumpVo.type,
|
type: routerJumpVo.type,
|
||||||
planMonth: routerJumpVo.planMonth,
|
planMonth: routerJumpVo.planMonth,
|
||||||
taskId: routerJumpVo.taskId
|
taskId: routerJumpVo.taskId,
|
||||||
|
projectName: routerJumpVo.projectName
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ export interface RouterJumpVo {
|
|||||||
type: string;
|
type: string;
|
||||||
formCustom: string;
|
formCustom: string;
|
||||||
formPath: string;
|
formPath: string;
|
||||||
|
projectName?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface StartProcessBo {
|
export interface StartProcessBo {
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<div>
|
||||||
<div style="display: flex; justify-content: space-between">
|
<div style="display: flex; justify-content: space-between">
|
||||||
<div>
|
<div>
|
||||||
<el-button v-if="submitButtonShow" :loading="props.buttonLoading" type="info" @click="submitForm('draft')">暂存</el-button>
|
<el-button v-if="submitButtonShow" :loading="props.buttonLoading" type="info" @click="submitForm('draft')">暂存</el-button>
|
||||||
@ -11,6 +12,8 @@
|
|||||||
<el-button style="float: right" @click="goBack()">返回</el-button>
|
<el-button style="float: right" @click="goBack()">返回</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<h3 v-if="props.projectName" class="text-lg font-semibold text-gray-800">项目名称:{{ props.projectName }}</h3>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { propTypes } from '@/utils/propTypes';
|
import { propTypes } from '@/utils/propTypes';
|
||||||
@ -22,7 +25,8 @@ const props = defineProps({
|
|||||||
status: propTypes.string.def(''),
|
status: propTypes.string.def(''),
|
||||||
pageType: propTypes.string.def(''),
|
pageType: propTypes.string.def(''),
|
||||||
buttonLoading: propTypes.bool.def(false),
|
buttonLoading: propTypes.bool.def(false),
|
||||||
id: propTypes.string.def('') || propTypes.number.def()
|
id: propTypes.string.def('') || propTypes.number.def(),
|
||||||
|
projectName: propTypes.string.def('')
|
||||||
});
|
});
|
||||||
const emits = defineEmits(['submitForm', 'approvalVerifyOpen', 'handleApprovalRecord']);
|
const emits = defineEmits(['submitForm', 'approvalVerifyOpen', 'handleApprovalRecord']);
|
||||||
//暂存,提交
|
//暂存,提交
|
||||||
|
@ -167,7 +167,7 @@ const reset = () => {
|
|||||||
form.value = { ...initFormData };
|
form.value = { ...initFormData };
|
||||||
leaveFormRef.value?.resetFields();
|
leaveFormRef.value?.resetFields();
|
||||||
};
|
};
|
||||||
|
const projectId = ref('');
|
||||||
/** 获取详情 */
|
/** 获取详情 */
|
||||||
const getInfo = () => {
|
const getInfo = () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@ -175,6 +175,7 @@ const getInfo = () => {
|
|||||||
nextTick(async () => {
|
nextTick(async () => {
|
||||||
const res = await getVersionDetail(routeParams.value.id);
|
const res = await getVersionDetail(routeParams.value.id);
|
||||||
console.log(res);
|
console.log(res);
|
||||||
|
projectId.value = res.data.projectId;
|
||||||
Object.assign(form.value, res.data);
|
Object.assign(form.value, res.data);
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
buttonLoading.value = false;
|
buttonLoading.value = false;
|
||||||
@ -186,7 +187,7 @@ const sheets = ref([]);
|
|||||||
const getSheetName = async () => {
|
const getSheetName = async () => {
|
||||||
try {
|
try {
|
||||||
const params = {
|
const params = {
|
||||||
projectId: currentProject.value?.id,
|
projectId: projectId.value,
|
||||||
versions: form.value.versions
|
versions: form.value.versions
|
||||||
};
|
};
|
||||||
const res = await sheetList(params);
|
const res = await sheetList(params);
|
||||||
@ -208,7 +209,7 @@ const tableData = ref([]);
|
|||||||
//获取列表
|
//获取列表
|
||||||
const getListTable = async () => {
|
const getListTable = async () => {
|
||||||
const res = await getTreeLimit({
|
const res = await getTreeLimit({
|
||||||
projectId: currentProject.value?.id,
|
projectId: projectId.value,
|
||||||
versions: form.value.versions,
|
versions: form.value.versions,
|
||||||
sheet: form.value.sheet,
|
sheet: form.value.sheet,
|
||||||
type: '0'
|
type: '0'
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<el-form :model="queryForm" :inline="true">
|
<el-form :model="queryForm" :inline="true">
|
||||||
<el-form-item label="版本号" prop="versions">
|
<el-form-item label="版本号" prop="versions">
|
||||||
<el-select v-model="queryForm.versions" placeholder="选择版本号" @change="changeVersions">
|
<el-select v-model="queryForm.versions" placeholder="选择版本号" @change="changeVersions">
|
||||||
<el-option v-for="item in options" :key="item.versions" :label="item.versions" :value="item.versions" />
|
<el-option v-for="item in options" :key="item.versions" :label="item.versionsName" :value="item.versions" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="表名" prop="sheet">
|
<el-form-item label="表名" prop="sheet">
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.versions"
|
:id="form.versions"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
@ -162,7 +163,7 @@ const reset = () => {
|
|||||||
form.value = { ...initFormData };
|
form.value = { ...initFormData };
|
||||||
leaveFormRef.value?.resetFields();
|
leaveFormRef.value?.resetFields();
|
||||||
};
|
};
|
||||||
|
const projectId = ref('');
|
||||||
/** 获取详情 */
|
/** 获取详情 */
|
||||||
const getInfo = () => {
|
const getInfo = () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@ -170,6 +171,7 @@ const getInfo = () => {
|
|||||||
nextTick(async () => {
|
nextTick(async () => {
|
||||||
const res = await getVersionDetails(routeParams.value.id);
|
const res = await getVersionDetails(routeParams.value.id);
|
||||||
console.log(res);
|
console.log(res);
|
||||||
|
projectId.value = res.data.projectId;
|
||||||
Object.assign(form.value, res.data);
|
Object.assign(form.value, res.data);
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
buttonLoading.value = false;
|
buttonLoading.value = false;
|
||||||
@ -181,7 +183,7 @@ const sheets = ref([]);
|
|||||||
const getSheetName = async () => {
|
const getSheetName = async () => {
|
||||||
try {
|
try {
|
||||||
const params = {
|
const params = {
|
||||||
projectId: currentProject.value?.id,
|
projectId: projectId.value,
|
||||||
versions: form.value.versions
|
versions: form.value.versions
|
||||||
};
|
};
|
||||||
const res = await sheetList(params);
|
const res = await sheetList(params);
|
||||||
@ -201,7 +203,7 @@ const changeSheet = () => {
|
|||||||
//获取列表
|
//获取列表
|
||||||
const getListTable = async () => {
|
const getListTable = async () => {
|
||||||
const res = await listBillofquantitiesLimitList({
|
const res = await listBillofquantitiesLimitList({
|
||||||
projectId: currentProject.value?.id,
|
projectId: projectId.value,
|
||||||
versions: form.value.versions,
|
versions: form.value.versions,
|
||||||
sheet: form.value.sheet
|
sheet: form.value.sheet
|
||||||
});
|
});
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<el-form :model="state.queryForm" :inline="true">
|
<el-form :model="state.queryForm" :inline="true">
|
||||||
<el-form-item label="版本号" prop="versions">
|
<el-form-item label="版本号" prop="versions">
|
||||||
<el-select v-model="state.queryForm.versions" placeholder="选择版本号" @change="handleChangeVersion">
|
<el-select v-model="state.queryForm.versions" placeholder="选择版本号" @change="handleChangeVersion">
|
||||||
<el-option v-for="item in state.options" :key="item.versions" :label="item.versions" :value="item.versions" />
|
<el-option v-for="item in state.options" :key="item.versions" :label="item.versionsName" :value="item.versions" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="表名" prop="sheet">
|
<el-form-item label="表名" prop="sheet">
|
||||||
@ -48,7 +48,7 @@
|
|||||||
<el-form :model="state.queryForm" :inline="true">
|
<el-form :model="state.queryForm" :inline="true">
|
||||||
<el-form-item label="版本号" prop="versions">
|
<el-form-item label="版本号" prop="versions">
|
||||||
<el-select v-model="state.queryForm.versions" placeholder="选择版本号" @change="handleChangeVersion">
|
<el-select v-model="state.queryForm.versions" placeholder="选择版本号" @change="handleChangeVersion">
|
||||||
<el-option v-for="item in state.options" :key="item.versions" :label="item.versions" :value="item.versions" />
|
<el-option v-for="item in state.options" :key="item.versions" :label="item.versionsName" :value="item.versions" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.versions"
|
:id="form.versions"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.versions"
|
:id="form.versions"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.versions"
|
:id="form.versions"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.versions"
|
:id="form.versions"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.design"
|
:id="form.design"
|
||||||
:status="form.auditStatus"
|
:status="form.auditStatus"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.auditStatus"
|
:status="form.auditStatus"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.auditStatus"
|
:status="form.auditStatus"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<div ref="mapRef" class="map-container" style="width: 100%; height: 100%" />
|
<div ref="mapRef" class="map-container" style="width: 100%; height: 100%" />
|
||||||
</div>
|
</div>
|
||||||
<div class="centerPage_bottom">
|
<div class="centerPage_bottom">
|
||||||
<Title title="风险预警">
|
<Title title="风险预警" style="font-size: 22px">
|
||||||
<img src="@/assets/projectLarge/robot.svg" alt="" height="20px" width="20px" />
|
<img src="@/assets/projectLarge/robot.svg" alt="" height="20px" width="20px" />
|
||||||
</Title>
|
</Title>
|
||||||
<div class="centerPage_bottom_table">
|
<div class="centerPage_bottom_table">
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="leftPage">
|
<div class="leftPage">
|
||||||
<div class="topPage">
|
<div class="topPage">
|
||||||
<Title title="项目进度分析" />
|
<Title title="项目进度分析" style="font-size: 22px" />
|
||||||
<div class="progress">
|
<div class="progress">
|
||||||
<div class="progress_item">
|
<div class="progress_item">
|
||||||
<div class="progress_imgBox">
|
<div class="progress_imgBox">
|
||||||
@ -53,7 +53,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="output">
|
<div class="output">
|
||||||
<Title title="实际产值与预期产值对比" />
|
<Title title="实际产值与预期产值对比" style="font-size: 22px" />
|
||||||
<div class="chart_container">
|
<div class="chart_container">
|
||||||
<div ref="lineChartRef" class="echart" />
|
<div ref="lineChartRef" class="echart" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -71,15 +71,17 @@ let data = [
|
|||||||
const getTrajectoryData = async () => {
|
const getTrajectoryData = async () => {
|
||||||
try {
|
try {
|
||||||
// 从URL参数中获取clientId、projectId和userId
|
// 从URL参数中获取clientId、projectId和userId
|
||||||
const { clientId, projectId, userId } = route.query;
|
const { clientId, projectId, userId, gpsType } = route.query;
|
||||||
|
|
||||||
if (!clientId || !projectId || !userId) {
|
if (!projectId || !userId || !gpsType) {
|
||||||
ElMessage.warning('缺少必要参数,请检查传入的参数');
|
ElMessage.warning('缺少必要参数,请检查传入的参数');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const res = await getFootNote({ clientId, projectId, userId });
|
// 确保gpsType转换为数字类型,以便正确传递给后端
|
||||||
|
const gpsTypeNum = parseInt(gpsType, 10);
|
||||||
|
const res = await getFootNote({ clientId, projectId, userId, gpsType: gpsTypeNum });
|
||||||
|
|
||||||
if (res && res.code === 200 && res.data && res.data.length > 0) {
|
if (res && res.code === 200 && res.data && res.data.length > 0) {
|
||||||
data = res.data;
|
data = res.data;
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="20" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['gps:equipment:edit']"
|
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['gps:equipment:edit']"
|
||||||
>修改</el-button
|
>修改</el-button
|
||||||
@ -39,7 +39,12 @@
|
|||||||
>
|
>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2">
|
<el-col :span="2">
|
||||||
<el-button type="primary" plain @click="handleViewAll">{{ viewAllButtonText }}</el-button>
|
<el-button type="primary" plain @click="toggleGpsType">
|
||||||
|
{{ currentGpsType === 0 ? '显示用户数据' : '显示设备数据' }}
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="2">
|
||||||
|
<el-button type="primary" v-if="queryParams.gpsType !== 1" plain @click="handleViewAll">{{ viewAllButtonText }}</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
@ -102,7 +107,7 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
icon="Location"
|
icon="Location"
|
||||||
v-hasPermi="['gps:equipmentSon:getList']"
|
v-hasPermi="['gps:equipmentSon:getList']"
|
||||||
@click="handleGoToEmptyPage(scope.row.userId, scope.row.projectId, scope.row.clientId)"
|
@click="handleGoToEmptyPage(scope.row.userId, scope.row.projectId, scope.row.clientId, scope.row.gpsType)"
|
||||||
:disabled="!scope.row.userId || !scope.row.projectId"
|
:disabled="!scope.row.userId || !scope.row.projectId"
|
||||||
></el-button>
|
></el-button>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
@ -189,7 +194,7 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
icon="Location"
|
icon="Location"
|
||||||
v-hasPermi="['gps:equipmentSon:getList']"
|
v-hasPermi="['gps:equipmentSon:getList']"
|
||||||
@click="handleGoToEmptyPage(scope.row.userId, scope.row.projectId, currentHistoryClientId)"
|
@click="handleGoToEmptyPage(scope.row.userId, scope.row.projectId, currentHistoryClientId, currentGpsType)"
|
||||||
></el-button>
|
></el-button>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
@ -301,6 +306,9 @@ const initFormData: EquipmentForm = {
|
|||||||
remark: undefined
|
remark: undefined
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 当前GPS类型 (0:设备数据, 1:用户数据)
|
||||||
|
const currentGpsType = ref(0);
|
||||||
|
|
||||||
// 页面数据
|
// 页面数据
|
||||||
const data = reactive<PageData<EquipmentForm, EquipmentQuery>>({
|
const data = reactive<PageData<EquipmentForm, EquipmentQuery>>({
|
||||||
form: { ...initFormData },
|
form: { ...initFormData },
|
||||||
@ -317,6 +325,7 @@ const data = reactive<PageData<EquipmentForm, EquipmentQuery>>({
|
|||||||
creationTime: undefined,
|
creationTime: undefined,
|
||||||
lastAccessedTime: undefined,
|
lastAccessedTime: undefined,
|
||||||
registered: undefined,
|
registered: undefined,
|
||||||
|
gpsType: 0, // 默认显示设备数据
|
||||||
params: {}
|
params: {}
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
@ -385,6 +394,15 @@ const formatDateTime = (timestamp: any): string => {
|
|||||||
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** 切换GPS数据类型 */
|
||||||
|
const toggleGpsType = () => {
|
||||||
|
currentGpsType.value = currentGpsType.value === 0 ? 1 : 0;
|
||||||
|
queryParams.value.gpsType = currentGpsType.value;
|
||||||
|
queryParams.value.pageNum = 1;
|
||||||
|
getList();
|
||||||
|
proxy?.$modal.msgSuccess(`已切换到${currentGpsType.value === 0 ? '设备数据' : '用户数据'}模式`);
|
||||||
|
};
|
||||||
|
|
||||||
/** 获取设备列表 */
|
/** 获取设备列表 */
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@ -397,6 +415,9 @@ const getList = async () => {
|
|||||||
queryParams.value.projectId = undefined;
|
queryParams.value.projectId = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 确保gpsType参数正确设置
|
||||||
|
queryParams.value.gpsType = currentGpsType.value;
|
||||||
|
|
||||||
const res = await listEquipment(queryParams.value);
|
const res = await listEquipment(queryParams.value);
|
||||||
equipmentList.value = res.rows as ExtendedEquipmentVO[];
|
equipmentList.value = res.rows as ExtendedEquipmentVO[];
|
||||||
total.value = res.total;
|
total.value = res.total;
|
||||||
@ -490,16 +511,24 @@ const handleViewAll = () => {
|
|||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleGoToEmptyPage = (userId: any, projectId: any, clientId: any) => {
|
const handleGoToEmptyPage = (userId: any, projectId: any, clientId: any, gpsType: number) => {
|
||||||
console.log('userId:', userId, 'projectId:', projectId, 'clientId:', clientId);
|
console.log('userId:', userId, 'projectId:', projectId, 'clientId:', clientId, 'gpsType:', gpsType);
|
||||||
|
|
||||||
|
const queryParams: any = {
|
||||||
|
userId: userId,
|
||||||
|
projectId: projectId,
|
||||||
|
gpsType: gpsType,
|
||||||
|
clientId: clientId
|
||||||
|
};
|
||||||
|
|
||||||
|
// 当gpsType为0时传入clientId,为1时不传入
|
||||||
|
if (gpsType === 1 && clientId) {
|
||||||
|
queryParams.clientId = '';
|
||||||
|
}
|
||||||
|
|
||||||
router.push({
|
router.push({
|
||||||
path: './equipmentGPS',
|
path: './equipmentGPS',
|
||||||
query: {
|
query: queryParams
|
||||||
userId: userId,
|
|
||||||
projectId: projectId,
|
|
||||||
clientId: clientId
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="ol-map" id="olMap"></div>
|
<div class="ol-map" id="olMap"></div>
|
||||||
<div class="left_title_button">
|
<div class="left_title_button">
|
||||||
<div class="title">{{ projectName }}</div>
|
<div class="title">{{ currentProject.name }}</div>
|
||||||
<div class="btn" @click="updateZhiJiaZhuanDian('zhuangdian')">
|
<div class="btn" @click="updateZhiJiaZhuanDian('zhuangdian')">
|
||||||
<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" />
|
<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" />
|
||||||
<span>桩点-更新高程</span>
|
<span>桩点-更新高程</span>
|
||||||
@ -29,6 +29,11 @@
|
|||||||
import { workScheduleDel } from '@/api/progress/plan';
|
import { workScheduleDel } from '@/api/progress/plan';
|
||||||
import { renderFacilitiesToCesium } from '@/views/gisHome/js/renderFacilities';
|
import { renderFacilitiesToCesium } from '@/views/gisHome/js/renderFacilities';
|
||||||
import { CenterHeight } from '@/views/gis2D/js/center';
|
import { CenterHeight } from '@/views/gis2D/js/center';
|
||||||
|
import { useUserStoreHook } from '@/store/modules/user';
|
||||||
|
const userStore = useUserStoreHook();
|
||||||
|
const currentProject = computed(() => userStore.selectedProject);
|
||||||
|
console.log('projectName', currentProject);
|
||||||
|
|
||||||
import md5 from 'js-md5';
|
import md5 from 'js-md5';
|
||||||
const arr = ref();
|
const arr = ref();
|
||||||
const initFacilities = async () => {
|
const initFacilities = async () => {
|
||||||
@ -129,8 +134,10 @@ onMounted(async () => {
|
|||||||
username: 'admin',
|
username: 'admin',
|
||||||
password: md5('admin_admin123'),
|
password: md5('admin_admin123'),
|
||||||
host: 'http://192.168.110.2:8895/'
|
host: 'http://192.168.110.2:8895/'
|
||||||
});
|
}).then((res) => {
|
||||||
createEarth();
|
createEarth();
|
||||||
|
console.log(res);
|
||||||
|
});
|
||||||
await handletilList();
|
await handletilList();
|
||||||
await initFacilities();
|
await initFacilities();
|
||||||
console.log(YJ);
|
console.log(YJ);
|
||||||
|
628
src/views/gis2D/index2.vue
Normal file
628
src/views/gis2D/index2.vue
Normal file
@ -0,0 +1,628 @@
|
|||||||
|
<template>
|
||||||
|
<div class="earth gis2D" id="earth">
|
||||||
|
<header-top :isShowTab="false" :isShowLog="false"></header-top>
|
||||||
|
<!-- <el-button class="btn" type="primary" @click="gengxin">更新</el-button> -->
|
||||||
|
<div class="left_title_button">
|
||||||
|
<div class="title">{{ projectName }}</div>
|
||||||
|
<div class="btn" @click="updateZhiJiaZhuanDian('zhuangdian')">
|
||||||
|
<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" />
|
||||||
|
<span>桩点-更新高程</span>
|
||||||
|
</div>
|
||||||
|
<div class="btn" @click="updateHighLevel('nibianqi')">
|
||||||
|
<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" />
|
||||||
|
<span>逆变器-更新高程</span>
|
||||||
|
</div>
|
||||||
|
<div class="btn" @click="updateHighLevel('xiangbian')">
|
||||||
|
<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" />
|
||||||
|
<span>箱变-更新高程</span>
|
||||||
|
</div>
|
||||||
|
<div class="btn" @click="updateZhiJiaZhuanDian('zhijia')">
|
||||||
|
<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" />
|
||||||
|
<span>支架-更新高程</span>
|
||||||
|
</div>
|
||||||
|
<div class="btn" @click="centerHeight()">
|
||||||
|
<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" />
|
||||||
|
<span>光伏板-更新高程</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<progressLoading :progress="progress" :tips="progressTips"></progressLoading>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
// import { toRefs, reactive, defineComponent, onMounted, getCurrentInstance, ref, nextTick } from 'vue';
|
||||||
|
// import { ElLoading, ElMessage } from 'element-plus';
|
||||||
|
// import headerTop from '../components/header/index.vue';
|
||||||
|
// import { NextLoading } from '/@/utils/loading';
|
||||||
|
// import { updateProjectId } from '/@/utils/tools';
|
||||||
|
// import { useUserInfo } from '/@/stores/userInfo';
|
||||||
|
// import progressLoading from '/@/components/progressLoading/index.vue';
|
||||||
|
// // 资源接口
|
||||||
|
// import { listQianqiMoxing } from '/@/api/system/qianqiManage/qianqiMoxing';
|
||||||
|
// import { manageAll, updateAll, gisList, gisListZhijia, ZhuangdianEdit_detail, ZhijiaEdit_detail } from '/@/api/gis2D/all';
|
||||||
|
// import { getSysProject } from '/@/api/system/sysProject';
|
||||||
|
// import bottomSvg from '/@/assets/svg/bottom.svg';
|
||||||
|
// // json字符判断
|
||||||
|
// import { typeJSON } from '/@/utils/toolsValidate';
|
||||||
|
// import { renderGuangfubanGlb } from '../utils/treeRender.js';
|
||||||
|
// import zjImage from '/@/assets/images/tree_icon/zhijia.png';
|
||||||
|
// import { Session } from '/@/utils/storage';
|
||||||
|
// import axios from 'axios';
|
||||||
|
// // import sign from '/@/utils/sign.js';
|
||||||
|
import zdImage from '/@/assets/images/tree_icon/zhuangdian.png';
|
||||||
|
let nibianqi = [];
|
||||||
|
let xiangbian = [];
|
||||||
|
let guanfuban = [];
|
||||||
|
let YJ = window.YJ;
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
export default defineComponent({
|
||||||
|
name: 'index',
|
||||||
|
components: {
|
||||||
|
headerTop,
|
||||||
|
progressLoading,
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const stores = useUserInfo();
|
||||||
|
const state = reactive({
|
||||||
|
projectId: stores.$state.userInfos.uprojectId,
|
||||||
|
queryParam: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10000000000,
|
||||||
|
projectId: stores.$state.userInfos.uprojectId,
|
||||||
|
},
|
||||||
|
projectName: '',
|
||||||
|
bottomSvg,
|
||||||
|
tools: null,
|
||||||
|
zhuangdian: {
|
||||||
|
// 桩点更新高层
|
||||||
|
originArr: [] as any[], //源数据数组
|
||||||
|
poiArr: [] as any[], //位置数据数组
|
||||||
|
},
|
||||||
|
zhijia: {
|
||||||
|
// 支架更新高层
|
||||||
|
originArr: [] as any[], //源数据数组
|
||||||
|
poiArr: [] as any[], //位置数据数组
|
||||||
|
},
|
||||||
|
gfbArr: [] as any[],
|
||||||
|
bbtArr: [] as any[],
|
||||||
|
progress: -1, //加载进度
|
||||||
|
progressTips: '数据更新中,请稍后……',
|
||||||
|
loading: null,
|
||||||
|
});
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
// 关闭Loading效果
|
||||||
|
NextLoading.done();
|
||||||
|
createEarth();
|
||||||
|
// 切换项目 项目ID数据同步
|
||||||
|
let channel = new BroadcastChannel('BC-switchProject');
|
||||||
|
channel.addEventListener('message', function (e) {
|
||||||
|
if (e.data !== state.projectId) {
|
||||||
|
//保存更新项目id
|
||||||
|
updateProjectId(e.data);
|
||||||
|
location.reload(); //刷新页面
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
const initData = () => {
|
||||||
|
getRresource();
|
||||||
|
// 获取所有数据
|
||||||
|
getSourceAll();
|
||||||
|
// 项目名称
|
||||||
|
getProList(state.projectId);
|
||||||
|
// 获取桩点
|
||||||
|
getZhiJiaList();
|
||||||
|
getXZhuangDianList();
|
||||||
|
};
|
||||||
|
const commonJson = (item) => {
|
||||||
|
if (!item.detail) {
|
||||||
|
//是否存在
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!typeJSON(item.detail)) {
|
||||||
|
//是否是JSON字符
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
// 渲染倾斜模型
|
||||||
|
const renderModel = (item) => {
|
||||||
|
let Nposition = {
|
||||||
|
lng: 0,
|
||||||
|
lat: 0,
|
||||||
|
alt: 0,
|
||||||
|
};
|
||||||
|
let position = null;
|
||||||
|
if (commonJson(item)) {
|
||||||
|
position = JSON.parse(item.detail).position || Nposition;
|
||||||
|
} else {
|
||||||
|
position = Nposition;
|
||||||
|
}
|
||||||
|
let options = {
|
||||||
|
id: item.sourceId,
|
||||||
|
host: '',
|
||||||
|
position,
|
||||||
|
show: true,
|
||||||
|
};
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
let model = new YJ.Zmkg.Source(options);
|
||||||
|
model.on().then((res) => {
|
||||||
|
if (model.source.tileset) {
|
||||||
|
let bim = model.source.tileset.czmObject;
|
||||||
|
}
|
||||||
|
setTimeout(() => {
|
||||||
|
if (model.id != 'dixing') {
|
||||||
|
model.flyTo();
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const getRresource = () => {
|
||||||
|
getQxModelList();
|
||||||
|
};
|
||||||
|
// 渲染光伏板
|
||||||
|
const redenrGfB = () => {
|
||||||
|
const loading = ElLoading.service({
|
||||||
|
lock: true,
|
||||||
|
text: '加载光伏板中....',
|
||||||
|
background: 'rgba(0, 0, 0, 0.7)',
|
||||||
|
});
|
||||||
|
let batchSize = 100;
|
||||||
|
for (let i = 0; i < guanfuban.length; i += batchSize) {
|
||||||
|
const batch = guanfuban.slice(i, i + batchSize);
|
||||||
|
renderGuangfubanGlb(batch);
|
||||||
|
}
|
||||||
|
loading.close();
|
||||||
|
};
|
||||||
|
// 获取所有的数据
|
||||||
|
const getSourceAll = () => {
|
||||||
|
const loading = ElLoading.service({
|
||||||
|
lock: true,
|
||||||
|
text: '获取数据中...',
|
||||||
|
background: 'rgba(0, 0, 0, 0.7)',
|
||||||
|
});
|
||||||
|
manageAll({ id: state.projectId }).then((res) => {
|
||||||
|
loading.close();
|
||||||
|
const { data } = res;
|
||||||
|
let list = data.data;
|
||||||
|
console.log('listlistlistlist', list);
|
||||||
|
if (list.length > 0) {
|
||||||
|
list.forEach((item: any) => {
|
||||||
|
if (item.type == 18) {
|
||||||
|
nibianqi.push(item);
|
||||||
|
}
|
||||||
|
if (item.type == 23) {
|
||||||
|
xiangbian.push(item);
|
||||||
|
}
|
||||||
|
if (item.type == 15) {
|
||||||
|
guanfuban.push(item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let one = JSON.parse(guanfuban[0].detail);
|
||||||
|
if (one.height) {
|
||||||
|
redenrGfB();
|
||||||
|
} else {
|
||||||
|
ElMessage.warning('请优先更新光伏板');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 删除光伏板数据
|
||||||
|
const removeSources = () => {
|
||||||
|
window['$PROJECT_MAP'].forEach((item) => {
|
||||||
|
// 清空地球上的实例
|
||||||
|
try {
|
||||||
|
item[0].remove();
|
||||||
|
} catch (error) {}
|
||||||
|
});
|
||||||
|
window['$PROJECT_MAP'].clear();
|
||||||
|
};
|
||||||
|
// 数组分组工具方法
|
||||||
|
const groupArr = (array, subGroupLength) => {
|
||||||
|
let index = 0;
|
||||||
|
let newArray = [];
|
||||||
|
while (index < array.length) {
|
||||||
|
newArray.push(array.slice(index, (index += subGroupLength)));
|
||||||
|
}
|
||||||
|
return newArray;
|
||||||
|
};
|
||||||
|
// 根据key去重
|
||||||
|
const duplicateRemoveByKey = (arr: any) => {
|
||||||
|
//根据key去重
|
||||||
|
let arrMap = new Map();
|
||||||
|
for (let item of arr) {
|
||||||
|
if (!arrMap.has(item.id)) {
|
||||||
|
arrMap.set(item.id, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
arr = [...arrMap.values()]; //把map中所有的值取出来放进数组
|
||||||
|
return arr;
|
||||||
|
};
|
||||||
|
// 采样高层
|
||||||
|
const updateZhiJiaZhuanDian = async (type: any) => {
|
||||||
|
console.log(123);
|
||||||
|
|
||||||
|
let loading = null;
|
||||||
|
let load = false;
|
||||||
|
if (type == 'zhuangdian' && window.$PROJECT_MAP) {
|
||||||
|
removeSources();
|
||||||
|
load = true;
|
||||||
|
} else {
|
||||||
|
redenrGfB();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type != 'zhuangdian' && type != 'zhijia') {
|
||||||
|
loading = ElLoading.service({
|
||||||
|
lock: true,
|
||||||
|
text: '正在更新中',
|
||||||
|
background: 'rgba(0, 0, 0, 0.7)',
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
state.progress = 0;
|
||||||
|
}
|
||||||
|
console.log('statestatestatestatestate', state);
|
||||||
|
|
||||||
|
if (state[type].poiArr.length && state[type].originArr.length) {
|
||||||
|
let poiGroupArr = groupArr(state[type].poiArr, 500);
|
||||||
|
let oriGroupArr = groupArr(state[type].originArr, 500);
|
||||||
|
if (poiGroupArr.length) {
|
||||||
|
for (let i in poiGroupArr) {
|
||||||
|
await state.tools!.sampleHeightMostDetailed(poiGroupArr[i]).then((res: any) => {
|
||||||
|
if (res.length === oriGroupArr[i].length) {
|
||||||
|
// 返填重新赋值
|
||||||
|
oriGroupArr[i] = oriGroupArr[i].map((v: any, i: any) => {
|
||||||
|
let position = JSON.parse(v.detail);
|
||||||
|
if (type === 'zhijia') {
|
||||||
|
position.position.height = res[i].height ? res[i].height : 0;
|
||||||
|
} else {
|
||||||
|
position.position.alt = res[i].height ? res[i].height : 0;
|
||||||
|
}
|
||||||
|
v.detail = JSON.stringify(position);
|
||||||
|
return v;
|
||||||
|
});
|
||||||
|
|
||||||
|
state[type].originArr = [...state[type].originArr, ...oriGroupArr[i]];
|
||||||
|
state[type].originArr = duplicateRemoveByKey(state[type].originArr);
|
||||||
|
console.log(state[type].originArr);
|
||||||
|
state.progressTips = `总计${poiGroupArr.length}组数据,正在进行第${Number(i) + 1}组数据采样`;
|
||||||
|
state.progress = Number((((Number(i) + 1) / poiGroupArr.length) * 100).toFixed(2));
|
||||||
|
if (type === 'zhuangdian' || type === 'zhijia') {
|
||||||
|
// 全部采样完才请求接口
|
||||||
|
if (Number(i) - 0 == poiGroupArr.length - 1) {
|
||||||
|
updateAlt(type, loading);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
updateAlt(type, loading);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
loading?.close();
|
||||||
|
ElMessage.success('更新失败');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 更新高层
|
||||||
|
const updateAlt = async (type: any, loading: any = null) => {
|
||||||
|
if (type === 'zhuangdian') {
|
||||||
|
chunkUpdateAlt(type, '/zm/api/v1/system/qianqiGuangfubanIdsZhuangdian/edit_detail');
|
||||||
|
}
|
||||||
|
if (type === 'zhijia') {
|
||||||
|
chunkUpdateAlt(type, '/zm/api/v1/system/qianqiGuangfubanIdsZhijia/edit_detail');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 更新高程 分组请求接口(桩点 支架)
|
||||||
|
const chunkUpdateAlt = async (type: any, url: any) => {
|
||||||
|
state.progress = 0;
|
||||||
|
console.log(state.zhuangdian.originArr);
|
||||||
|
let list = state[type].originArr.map((item: any) => {
|
||||||
|
return JSON.parse(item.detail);
|
||||||
|
});
|
||||||
|
let groupList = groupArr(list, 5000);
|
||||||
|
if (groupList.length) {
|
||||||
|
for (let i in groupList) {
|
||||||
|
state.progressTips = `总计${groupList.length}组数据,正在进行第${Number(i) + 1}组数据更新`;
|
||||||
|
state.progress = Number(((Number(i) / groupList.length) * 100).toFixed(2));
|
||||||
|
await axios({
|
||||||
|
url: url,
|
||||||
|
method: 'put',
|
||||||
|
timeout: 0,
|
||||||
|
headers: {
|
||||||
|
Authorization: 'Bearer ' + `${Session.get('token')}`,
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
...sign({ projectId: state.projectId, list: groupList[i] }),
|
||||||
|
},
|
||||||
|
data: { projectId: state.projectId, list: groupList[i] },
|
||||||
|
})
|
||||||
|
.then((res: any) => {
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
state.progress = 100;
|
||||||
|
ElMessage.success(`第${Number(i) + 1}组数据更新成功,剩余${groupList.length - 1 - Number(i)}组数据`);
|
||||||
|
if (type === 'zhuangdian') {
|
||||||
|
getZhiJiaList();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ElMessage.error(res.data.message);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
ElMessage.error('请求失败');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// 获取支架列表
|
||||||
|
const getZhiJiaList = async () => {
|
||||||
|
state.zhijia.originArr = [];
|
||||||
|
state.zhijia.poiArr = [];
|
||||||
|
await gisListZhijia(state.queryParam).then((res: any) => {
|
||||||
|
console.log('list接口', res);
|
||||||
|
|
||||||
|
if (res.code === 0 && res.data.list) {
|
||||||
|
let arr = res.data.list.map((item, index) => {
|
||||||
|
item.p_id = '106';
|
||||||
|
item.checked = 1;
|
||||||
|
item.is_show = 1;
|
||||||
|
item.layer_index = 0;
|
||||||
|
item.icon = zjImage;
|
||||||
|
item.tree_index = 0;
|
||||||
|
let detail = null;
|
||||||
|
if (commonJson(item)) {
|
||||||
|
detail = JSON.parse(item.detail);
|
||||||
|
state.zhijia.originArr.push(item);
|
||||||
|
state.zhijia.poiArr.push({ lng: detail.position.lng, lat: detail.position.lat });
|
||||||
|
}
|
||||||
|
return item;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 获取桩点的数据
|
||||||
|
const getXZhuangDianList = async () => {
|
||||||
|
await gisList(state.queryParam).then((res: any) => {
|
||||||
|
if (res.code === 0 && res.data.list) {
|
||||||
|
state.zhuangdian.poiArr = [];
|
||||||
|
let arr = res.data.list.map((item: any, index: any) => {
|
||||||
|
item.p_id = '102';
|
||||||
|
item.checked = 1;
|
||||||
|
item.is_show = 1;
|
||||||
|
item.layer_index = 0;
|
||||||
|
item.icon = zdImage;
|
||||||
|
item.tree_index = 0;
|
||||||
|
let detail = null;
|
||||||
|
if (commonJson(item)) {
|
||||||
|
detail = JSON.parse(item.detail);
|
||||||
|
state.zhuangdian.originArr.push(item);
|
||||||
|
state.zhuangdian.poiArr.push({ lng: detail.position.lng, lat: detail.position.lat });
|
||||||
|
}
|
||||||
|
return item;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 获取中心点高程(光伏板)
|
||||||
|
const centerHeight = () => {
|
||||||
|
const loading = ElLoading.service({
|
||||||
|
lock: true,
|
||||||
|
text: '更新高程、中心点...',
|
||||||
|
background: 'rgba(0, 0, 0, 0.7)',
|
||||||
|
});
|
||||||
|
let arr = [];
|
||||||
|
guanfuban.forEach((item) => {
|
||||||
|
arr.push(JSON.parse(item.detail));
|
||||||
|
});
|
||||||
|
let heightAndCenter = window.YJ.Zmkg.Guangfu.CenterHeight(arr);
|
||||||
|
let center = heightAndCenter.center;
|
||||||
|
heightAndCenter.Cartographic.then((Cartographic: any) => {
|
||||||
|
if (Cartographic.length > 0) {
|
||||||
|
loading.close();
|
||||||
|
assemblingPhotovoltaicPanels(center, Cartographic);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 组装高程数据
|
||||||
|
const assemblingPhotovoltaicPanels = async (center: any, height: any) => {
|
||||||
|
guanfuban.forEach((item, index) => {
|
||||||
|
let i = JSON.parse(item.detail);
|
||||||
|
i.height = height[index].height;
|
||||||
|
i.center = center[index];
|
||||||
|
item.detail = JSON.stringify(i);
|
||||||
|
});
|
||||||
|
let data = [...guanfuban];
|
||||||
|
let batchSize = 100000;
|
||||||
|
for (let i = 0; i < data.length; i += batchSize) {
|
||||||
|
const batch = data.slice(i, i + batchSize);
|
||||||
|
await updateElevation(batch);
|
||||||
|
}
|
||||||
|
getSourceAll();
|
||||||
|
};
|
||||||
|
// 更新高程(箱变、逆变器)
|
||||||
|
const updateHighLevel = (str: string) => {
|
||||||
|
let gxArr;
|
||||||
|
if (str == 'nibianqi') {
|
||||||
|
gxArr = nibianqi;
|
||||||
|
}
|
||||||
|
if (str == 'xiangbian') {
|
||||||
|
gxArr = xiangbian;
|
||||||
|
}
|
||||||
|
if (gxArr.length == 0) {
|
||||||
|
ElMessage({
|
||||||
|
message: '数据为空,请确认数据是否上传',
|
||||||
|
type: 'warning',
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let arr = [];
|
||||||
|
gxArr.forEach((item) => {
|
||||||
|
let p = JSON.parse(item.detail).positions[0];
|
||||||
|
arr.push(p);
|
||||||
|
});
|
||||||
|
const loading = ElLoading.service({
|
||||||
|
lock: true,
|
||||||
|
text: '更新高程中...',
|
||||||
|
background: 'rgba(0, 0, 0, 0.7)',
|
||||||
|
});
|
||||||
|
state.tools.sampleHeightMostDetailed(arr).then((Cartographic) => {
|
||||||
|
if (Cartographic.length > 0) {
|
||||||
|
loading.close();
|
||||||
|
assemblyData(gxArr, Cartographic);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 组装数据
|
||||||
|
const assemblyData = (gxArr, arr) => {
|
||||||
|
gxArr.forEach((item, index) => {
|
||||||
|
let i = JSON.parse(item.detail);
|
||||||
|
i.positions[0].alt = arr[index].height;
|
||||||
|
item.detail = JSON.stringify(i);
|
||||||
|
});
|
||||||
|
updateElevation(gxArr);
|
||||||
|
};
|
||||||
|
// 更新高程(更新到后端)
|
||||||
|
const updateElevation = (gxArr) => {
|
||||||
|
const loading = ElLoading.service({
|
||||||
|
lock: true,
|
||||||
|
text: '上传中,请勿关闭页面...',
|
||||||
|
background: 'rgba(0, 0, 0, 0.7)',
|
||||||
|
});
|
||||||
|
updateAll({ Modules: gxArr }).then((res) => {
|
||||||
|
loading.close();
|
||||||
|
if (res.code == 0) {
|
||||||
|
ElMessage({
|
||||||
|
message: '上传成功',
|
||||||
|
type: 'success',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 获取地形数据
|
||||||
|
const getQxModelList = () => {
|
||||||
|
listQianqiMoxing(state.queryParam).then((res: any) => {
|
||||||
|
if (res.code === 0 && res.data.list && res.data.list.length) {
|
||||||
|
res.data.list.forEach((item) => {
|
||||||
|
renderModel(item);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 获取当前项目信息
|
||||||
|
const getProList = (id: any) => {
|
||||||
|
getSysProject(id).then((res: any) => {
|
||||||
|
const data = res.data;
|
||||||
|
state.projectName = data.projectName;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const createEarth = () => {
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
YJ.on().then((res: any) => {
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
let earth = new YJ.YJEarth('earth');
|
||||||
|
// // this.areaShow = true
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
new YJ.Layer.ArcgisWXImagery();
|
||||||
|
// // new YJ.Layer.ArcgisGRAYImagery()
|
||||||
|
// // new YJ.Layer.ArcgisBLUEImagery()
|
||||||
|
// // new YJ.Terrain.Arcgis()
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
new YJ.Layer.GDLWImagery();
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
state.tools = new YJ.Tools();
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
YJ.getEarth().propertyStyle = new Cesium.Cesium3DTileStyle({
|
||||||
|
// let stayle = new Cesium.Cesium3DTileStyle({
|
||||||
|
/*color: {
|
||||||
|
evaluateColor: (feature, result) => {
|
||||||
|
return bimTree.evaluateColor(feature, result)
|
||||||
|
}
|
||||||
|
},*/
|
||||||
|
show: {
|
||||||
|
evaluate: (feature) => {
|
||||||
|
return evaluateShow(feature);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
initData();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 监听模型加载显示隐藏
|
||||||
|
const evaluateShow = (feature: any) => {
|
||||||
|
return true;
|
||||||
|
if (!feature) return true;
|
||||||
|
if (!feature.hasProperty('id')) return true;
|
||||||
|
var fid = feature.getProperty('id');
|
||||||
|
// //获取tileset
|
||||||
|
var tileset = feature.tileset.xbsjTileset;
|
||||||
|
if (!tileset) return true;
|
||||||
|
// //寻找这个tileset上绑定的配置
|
||||||
|
var config = window._visibleConfig.find((f) => f.tileset === tileset);
|
||||||
|
if (!config) return true;
|
||||||
|
//如果配置里包含,那么返回可见性
|
||||||
|
if (config.visibleCach.hasOwnProperty(fid)) {
|
||||||
|
return config.visibleCach[fid];
|
||||||
|
} else return false;
|
||||||
|
//否则返回可见
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
createEarth,
|
||||||
|
evaluateShow,
|
||||||
|
getRresource,
|
||||||
|
getQxModelList,
|
||||||
|
centerHeight,
|
||||||
|
commonJson,
|
||||||
|
updateHighLevel,
|
||||||
|
updateZhiJiaZhuanDian,
|
||||||
|
redenrGfB,
|
||||||
|
...toRefs(state),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.earth {
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.left_title_button {
|
||||||
|
position: absolute;
|
||||||
|
top: 10%;
|
||||||
|
left: 30px;
|
||||||
|
width: 250px;
|
||||||
|
height: 100px;
|
||||||
|
z-index: 1999;
|
||||||
|
|
||||||
|
.title {
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 22px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 100%;
|
||||||
|
height: 50px;
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
|
||||||
|
> span {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 22px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #fff;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
letter-spacing: 3px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -3,13 +3,19 @@
|
|||||||
<div class="max-w-4xl mx-auto">
|
<div class="max-w-4xl mx-auto">
|
||||||
<!-- 顶部按钮区域 -->
|
<!-- 顶部按钮区域 -->
|
||||||
<el-card class="mb-4 rounded-lg shadow-sm bg-white border border-gray-100 transition-all hover:shadow-md">
|
<el-card class="mb-4 rounded-lg shadow-sm bg-white border border-gray-100 transition-all hover:shadow-md">
|
||||||
<approvalButton @submitForm="submitForm" @approvalVerifyOpen="approvalVerifyOpen"
|
<approvalButton
|
||||||
@handleApprovalRecord="handleApprovalRecord" :buttonLoading="buttonLoading" :id="form.mrpBaseBo.id"
|
@submitForm="submitForm"
|
||||||
:status="form.mrpBaseBo.status" :pageType="routeParams.type" />
|
@approvalVerifyOpen="approvalVerifyOpen"
|
||||||
|
@handleApprovalRecord="handleApprovalRecord"
|
||||||
|
:buttonLoading="buttonLoading"
|
||||||
|
:id="form.mrpBaseBo.id"
|
||||||
|
:status="form.mrpBaseBo.status"
|
||||||
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
<el-card
|
<el-card class="rounded-lg shadow-sm bg-white border border-gray-100 transition-all hover:shadow-md overflow-hidden">
|
||||||
class="rounded-lg shadow-sm bg-white border border-gray-100 transition-all hover:shadow-md overflow-hidden">
|
|
||||||
<div class="p-4 bg-gradient-to-r from-blue-50 to-indigo-50 border-b border-gray-100">
|
<div class="p-4 bg-gradient-to-r from-blue-50 to-indigo-50 border-b border-gray-100">
|
||||||
<h3 class="text-lg font-semibold text-gray-800">物资设备批次需求计划</h3>
|
<h3 class="text-lg font-semibold text-gray-800">物资设备批次需求计划</h3>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
@ -20,8 +26,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8" :offset="0">
|
<el-col :span="8" :offset="0">
|
||||||
<el-form-item label="编制日期" prop="mrpBaseBo.preparedDate">
|
<el-form-item label="编制日期" prop="mrpBaseBo.preparedDate">
|
||||||
<el-date-picker v-model="form.mrpBaseBo.preparedDate" type="date" value-format="YYYY-MM-DD" disabled
|
<el-date-picker v-model="form.mrpBaseBo.preparedDate" type="date" value-format="YYYY-MM-DD" disabled placeholder="请选择编制日期" />
|
||||||
placeholder="请选择编制日期" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8" :offset="0">
|
<el-col :span="8" :offset="0">
|
||||||
@ -50,8 +55,14 @@
|
|||||||
<submitVerify ref="submitVerifyRef" :task-variables="taskVariables" @submit-callback="submitCallback" />
|
<submitVerify ref="submitVerifyRef" :task-variables="taskVariables" @submit-callback="submitCallback" />
|
||||||
<approvalRecord ref="approvalRecordRef"></approvalRecord>
|
<approvalRecord ref="approvalRecordRef"></approvalRecord>
|
||||||
<!-- 流程选择对话框 -->
|
<!-- 流程选择对话框 -->
|
||||||
<el-dialog draggable v-model="dialogVisible.visible" :title="dialogVisible.title" :before-close="handleClose"
|
<el-dialog
|
||||||
width="500" class="rounded-lg shadow-lg">
|
draggable
|
||||||
|
v-model="dialogVisible.visible"
|
||||||
|
:title="dialogVisible.title"
|
||||||
|
:before-close="handleClose"
|
||||||
|
width="500"
|
||||||
|
class="rounded-lg shadow-lg"
|
||||||
|
>
|
||||||
<div class="p-4">
|
<div class="p-4">
|
||||||
<p class="text-gray-600 mb-4">请选择要启动的流程:</p>
|
<p class="text-gray-600 mb-4">请选择要启动的流程:</p>
|
||||||
<el-select v-model="flowCode" placeholder="请选择流程" style="width: 100%">
|
<el-select v-model="flowCode" placeholder="请选择流程" style="width: 100%">
|
||||||
@ -60,10 +71,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer p-4 border-t border-gray-100 flex justify-end space-x-3">
|
<div class="dialog-footer p-4 border-t border-gray-100 flex justify-end space-x-3">
|
||||||
<el-button @click="handleClose"
|
<el-button @click="handleClose" class="px-4 py-2 border border-gray-300 rounded-md text-gray-700 hover:bg-gray-50 transition-colors"
|
||||||
class="px-4 py-2 border border-gray-300 rounded-md text-gray-700 hover:bg-gray-50 transition-colors">取消</el-button>
|
>取消</el-button
|
||||||
<el-button type="primary" @click="submitFlow()"
|
>
|
||||||
class="px-4 py-2 bg-primary text-white rounded-md hover:bg-primary/90 transition-colors">确认</el-button>
|
<el-button type="primary" @click="submitFlow()" class="px-4 py-2 bg-primary text-white rounded-md hover:bg-primary/90 transition-colors"
|
||||||
|
>确认</el-button
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.approvalDesign"
|
:status="form.approvalDesign"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -70,6 +70,13 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="备注" align="center" prop="remark" />
|
<el-table-column label="备注" align="center" prop="remark" />
|
||||||
|
<el-table-column label="附件" align="center" prop="attachmentName">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button :href="scope.row.attachmentName" link type="primary" @click="downloadAttachment(scope.row)">{{
|
||||||
|
scope.row.attachmentName
|
||||||
|
}}</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" min-width="120" fixed="right">
|
<el-table-column label="操作" align="center" min-width="120" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <el-button link type="primary" icon="edit" @click="handleUpdate(scope.row)" v-hasPermi="['materials:materialReceive:edit']"
|
<!-- <el-button link type="primary" icon="edit" @click="handleUpdate(scope.row)" v-hasPermi="['materials:materialReceive:edit']"
|
||||||
@ -254,6 +261,11 @@
|
|||||||
<file-upload :isShowTip="false" :fileType="['pdf', 'png', 'jpg', 'jpeg']" v-model="form.licenseCountFileId" />
|
<file-upload :isShowTip="false" :fileType="['pdf', 'png', 'jpg', 'jpeg']" v-model="form.licenseCountFileId" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="附件" prop="attachmentId">
|
||||||
|
<file-upload :isShowTip="false" :fileType="['pdf', 'png', 'jpg', 'jpeg', 'zip']" v-model="form.attachmentId" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<span style="color: #ff0000ab; margin-bottom: 10px; display: block">注意:pdf/png/jpg/jpeg格式文件</span>
|
<span style="color: #ff0000ab; margin-bottom: 10px; display: block">注意:pdf/png/jpg/jpeg格式文件</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -351,6 +363,7 @@ const getInitFormData = (): MaterialReceiveForm => {
|
|||||||
techDocCountFileId: undefined,
|
techDocCountFileId: undefined,
|
||||||
licenseCount: undefined,
|
licenseCount: undefined,
|
||||||
licenseCountFileId: undefined,
|
licenseCountFileId: undefined,
|
||||||
|
attachmentId: undefined,
|
||||||
storageType: '1',
|
storageType: '1',
|
||||||
remark: undefined,
|
remark: undefined,
|
||||||
docId: undefined,
|
docId: undefined,
|
||||||
@ -538,6 +551,17 @@ const handleUpdate = async (row?: MaterialReceiveVO) => {
|
|||||||
proxy?.$modal.msgError('获取详情失败');
|
proxy?.$modal.msgError('获取详情失败');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
//下载附件
|
||||||
|
const downloadAttachment = (row: any) => {
|
||||||
|
if (row.attachmentUrl) {
|
||||||
|
const link = document.createElement('a');
|
||||||
|
link.href = row.attachmentUrl;
|
||||||
|
link.download = row.fileName || 'download';
|
||||||
|
document.body.appendChild(link);
|
||||||
|
link.click();
|
||||||
|
document.body.removeChild(link);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
const submitForm = () => {
|
const submitForm = () => {
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.approvalOrder"
|
:status="form.approvalOrder"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
@ -319,7 +320,9 @@ onMounted(() => {
|
|||||||
.el-input__inner,
|
.el-input__inner,
|
||||||
.el-select .el-input__inner {
|
.el-select .el-input__inner {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
transition: border-color 0.2s, box-shadow 0.2s;
|
transition:
|
||||||
|
border-color 0.2s,
|
||||||
|
box-shadow 0.2s;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
border-color: var(--primary-light);
|
border-color: var(--primary-light);
|
||||||
@ -329,7 +332,9 @@ onMounted(() => {
|
|||||||
|
|
||||||
.el-textarea__inner {
|
.el-textarea__inner {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
transition: border-color 0.2s, box-shadow 0.2s;
|
transition:
|
||||||
|
border-color 0.2s,
|
||||||
|
box-shadow 0.2s;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
border-color: var(--primary-light);
|
border-color: var(--primary-light);
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.approvalPlan"
|
:status="form.approvalPlan"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.auditStatus"
|
:status="form.auditStatus"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.completeAuditStatus"
|
:status="form.completeAuditStatus"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form[0]?.id"
|
:id="form[0]?.id"
|
||||||
:status="form[0]?.planAuditStatus"
|
:status="form[0]?.planAuditStatus"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -781,6 +781,7 @@ const handleCheckRules = async (row?: ProjectVO) => {
|
|||||||
const _id = row?.id || ids.value[0];
|
const _id = row?.id || ids.value[0];
|
||||||
const res = await byProjectIdDetail(_id);
|
const res = await byProjectIdDetail(_id);
|
||||||
if (res.data) {
|
if (res.data) {
|
||||||
|
console.log(res.data);
|
||||||
res.data.weekday = res.data.weekday.split(',');
|
res.data.weekday = res.data.weekday.split(',');
|
||||||
Object.assign(form.value, res.data);
|
Object.assign(form.value, res.data);
|
||||||
}
|
}
|
||||||
@ -794,7 +795,7 @@ const ruleSubmit = async () => {
|
|||||||
let obj = {
|
let obj = {
|
||||||
weekday: form.value.weekday.join(','),
|
weekday: form.value.weekday.join(','),
|
||||||
projectId: projectId.value,
|
projectId: projectId.value,
|
||||||
id: projectId.value,
|
id: form.value.id,
|
||||||
clockInTime: form.value.clockInTime,
|
clockInTime: form.value.clockInTime,
|
||||||
clockOutTime: form.value.clockOutTime,
|
clockOutTime: form.value.clockOutTime,
|
||||||
type: form.value.type
|
type: form.value.type
|
||||||
|
@ -2,13 +2,18 @@
|
|||||||
<div class="leftPage">
|
<div class="leftPage">
|
||||||
<div class="topPage">
|
<div class="topPage">
|
||||||
<Title title="项目公告" />
|
<Title title="项目公告" />
|
||||||
<div class="content">
|
<div
|
||||||
|
class="content"
|
||||||
|
ref="contentRef"
|
||||||
|
id="event_scroll"
|
||||||
|
@mouseenter.native="autoScrollTable(true, false)"
|
||||||
|
@mouseleave.native="autoScrollTable(false, true)"
|
||||||
|
>
|
||||||
<div class="content_item" v-for="item in news" :key="item.id">
|
<div class="content_item" v-for="item in news" :key="item.id">
|
||||||
<img src="@/assets/projectLarge/round.svg" alt="">
|
<img src="@/assets/projectLarge/round.svg" alt="" />
|
||||||
<div class="ellipsis">
|
<div class="ellipsis">
|
||||||
{{ item.title }}
|
{{ item.title }}
|
||||||
<span @click="showNewsDetail(item)" style="color: rgba(138, 149, 165, 1);">{{ item.id === newId ? '关闭' :
|
<span @click="showNewsDetail(item)" style="color: rgba(138, 149, 165, 1)">{{ item.id === newId ? '关闭' : '查看' }}</span>
|
||||||
'查看' }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -22,33 +27,33 @@
|
|||||||
<div class="endPage">
|
<div class="endPage">
|
||||||
<Title title="人员情况" />
|
<Title title="人员情况" />
|
||||||
<div class="map">
|
<div class="map">
|
||||||
<img src="@/assets/projectLarge/map.svg" alt="">
|
<img src="@/assets/projectLarge/map.svg" alt="" />
|
||||||
<!-- <div ref="mapChartRef"></div> -->
|
<!-- <div ref="mapChartRef"></div> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="attendance_tag">
|
<div class="attendance_tag">
|
||||||
<div class="tag_item">
|
<div class="tag_item">
|
||||||
<img src="@/assets/projectLarge/people.svg" alt="">
|
<img src="@/assets/projectLarge/people.svg" alt="" />
|
||||||
<div class="tag_title">出勤人</div>
|
<div class="tag_title">出勤人</div>
|
||||||
<div class="tag_info">
|
<div class="tag_info">
|
||||||
{{ attendanceCount }}
|
{{ attendanceCount }}
|
||||||
<span style="font-size: 14px;">人</span>
|
<span style="font-size: 14px">人</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tag_item">
|
<div class="tag_item">
|
||||||
<img src="@/assets/projectLarge/people.svg" alt="">
|
<img src="@/assets/projectLarge/people.svg" alt="" />
|
||||||
<div class="tag_title">在岗人</div>
|
<div class="tag_title">在岗人</div>
|
||||||
<div class="tag_info">
|
<div class="tag_info">
|
||||||
{{ peopleCount }}
|
{{ peopleCount }}
|
||||||
<span style="font-size: 14px;">人</span>
|
<span style="font-size: 14px">人</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tag_item">
|
<div class="tag_item">
|
||||||
<img src="@/assets/projectLarge/people.svg" alt="">
|
<img src="@/assets/projectLarge/people.svg" alt="" />
|
||||||
<div class="tag_title">出勤率</div>
|
<div class="tag_title">出勤率</div>
|
||||||
<div class="tag_info">
|
<div class="tag_info">
|
||||||
{{ attendanceRate }}
|
{{ attendanceRate }}
|
||||||
<span style="font-size: 14px;">%</span>
|
<span style="font-size: 14px">%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -62,8 +67,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-for="item in teamAttendanceList" :key="item.id" class="attendance_item">
|
<div v-for="item in teamAttendanceList" :key="item.id" class="attendance_item">
|
||||||
<div class="attendance_item_title">{{ item.teamName }}</div>
|
<div class="attendance_item_title">{{ item.teamName }}</div>
|
||||||
<div class="attendance_item_number">{{ item.attendanceNumber }} <span class="subfont">人/{{ item.allNumber
|
<div class="attendance_item_number">
|
||||||
}}</span></div>
|
{{ item.attendanceNumber }} <span class="subfont">人/{{ item.allNumber }}</span>
|
||||||
|
</div>
|
||||||
<div class="attendance_item_rate">{{ item.attendanceRate }} %</div>
|
<div class="attendance_item_rate">{{ item.attendanceRate }} %</div>
|
||||||
<div class="attendance_item_date subfont">{{ item.attendanceTime }}</div>
|
<div class="attendance_item_date subfont">{{ item.attendanceTime }}</div>
|
||||||
</div>
|
</div>
|
||||||
@ -73,10 +79,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from "vue"
|
import { ref } from 'vue';
|
||||||
import Title from './title.vue'
|
import Title from './title.vue';
|
||||||
import { getScreenNews, getScreenPeople } from '@/api/projectScreen';
|
import { getScreenNews, getScreenPeople } from '@/api/projectScreen/index';
|
||||||
import { mapOption } from './optionList'
|
import { mapOption } from './optionList';
|
||||||
import * as echarts from 'echarts';
|
import * as echarts from 'echarts';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@ -84,78 +90,102 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
default: ''
|
default: ''
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
let mapChart = null
|
let mapChart = null;
|
||||||
const mapChartRef = ref<HTMLDivElement | null>(null);
|
const mapChartRef = ref<HTMLDivElement | null>(null);
|
||||||
const news = ref([])
|
const contentRef = ref<HTMLDivElement | null>(null);
|
||||||
|
const news = ref([]);
|
||||||
const newDetail = ref({
|
const newDetail = ref({
|
||||||
title: '',
|
title: '',
|
||||||
content: ''
|
content: ''
|
||||||
})
|
});
|
||||||
const newId = ref('')
|
const newId = ref('');
|
||||||
const attendanceCount = ref(0)
|
const attendanceCount = ref(0);
|
||||||
const attendanceRate = ref(0)
|
const attendanceRate = ref(0);
|
||||||
const peopleCount = ref(0)
|
const peopleCount = ref(0);
|
||||||
const teamAttendanceList = ref([
|
const teamAttendanceList = ref([{ id: '', teamName: '', attendanceNumber: 0, allNumber: 0, attendanceRate: 0, attendanceTime: '' }]);
|
||||||
{ id: "", teamName: "", attendanceNumber: 0, allNumber: 0, attendanceRate: 0, attendanceTime: "" },
|
|
||||||
])
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 显示新闻详情
|
* 显示新闻详情
|
||||||
*/
|
*/
|
||||||
const showNewsDetail = (item: any) => {
|
const showNewsDetail = (item: any) => {
|
||||||
if (newId.value === item.id) {
|
if (newId.value === item.id) {
|
||||||
newId.value = ''
|
newId.value = '';
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
newDetail.value = item
|
newDetail.value = item;
|
||||||
newId.value = item.id
|
newId.value = item.id;
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取项目人员出勤数据
|
* 获取项目人员出勤数据
|
||||||
*/
|
*/
|
||||||
const getPeopleData = async () => {
|
const getPeopleData = async () => {
|
||||||
const res = await getScreenPeople(props.projectId);
|
const res = await getScreenPeople(props.projectId);
|
||||||
const { data, code } = res
|
const { data, code } = res;
|
||||||
if (code === 200) {
|
if (code === 200) {
|
||||||
attendanceCount.value = data.attendanceCount
|
attendanceCount.value = data.attendanceCount;
|
||||||
attendanceRate.value = data.attendanceRate
|
attendanceRate.value = data.attendanceRate;
|
||||||
peopleCount.value = data.peopleCount
|
peopleCount.value = data.peopleCount;
|
||||||
teamAttendanceList.value = data.teamAttendanceList
|
teamAttendanceList.value = data.teamAttendanceList;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取项目新闻数据
|
* 获取项目新闻数据
|
||||||
*/
|
*/
|
||||||
const getNewsData = async () => {
|
const getNewsData = async () => {
|
||||||
const res = await getScreenNews(props.projectId);
|
const res = await getScreenNews(props.projectId);
|
||||||
const { data, code } = res
|
const { data, code } = res;
|
||||||
if (code === 200) {
|
if (code === 200) {
|
||||||
news.value = data
|
news.value = data;
|
||||||
|
autoScrollTable(5);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
var lastTime = 0;
|
||||||
* 初始化地图
|
const state = reactive({
|
||||||
*/
|
events: [],
|
||||||
const initMapChart = () => {
|
outputList: [],
|
||||||
if (!mapChartRef.value) {
|
detialInfoShow: false,
|
||||||
|
notShowPro: [{ id: 37 }, { id: 44 }, { id: 48 }], //模块内容区域不展示的项目(中煤科工 广东户用光伏项目 兴隆光伏)
|
||||||
|
scrolltimerTable: null,
|
||||||
|
flagPause: true //滚动继续滚动
|
||||||
|
});
|
||||||
|
|
||||||
|
const autoScrollTable = (time, flag = true) => {
|
||||||
|
//表格自动滚动
|
||||||
|
const divData = document.getElementById('event_scroll');
|
||||||
|
if (!flag || !state.flagPause) {
|
||||||
|
cancelAnimationFrame(state.scrolltimerTable);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mapChart = echarts.init(mapChartRef.value);
|
if (time - lastTime < 25) {
|
||||||
mapChart.setOption(mapOption);
|
// 50毫秒更新一次
|
||||||
}
|
state.scrolltimerTable = requestAnimationFrame(autoScrollTable);
|
||||||
|
return; // 如果时间未到,则返回,不执行动画更新
|
||||||
|
}
|
||||||
|
lastTime = time;
|
||||||
|
// 元素自增距离顶部1像素
|
||||||
|
divData.scrollTop += 1;
|
||||||
|
// 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
|
||||||
|
if (divData.clientHeight + divData.scrollTop == divData.scrollHeight) {
|
||||||
|
// 重置table距离顶部距离
|
||||||
|
divData.scrollTop = 0;
|
||||||
|
state.scrolltimerTable = requestAnimationFrame(autoScrollTable);
|
||||||
|
} else {
|
||||||
|
state.scrolltimerTable = requestAnimationFrame(autoScrollTable);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
// nextTick(() => {
|
// nextTick(() => {
|
||||||
// initMapChart();
|
// initMapChart();
|
||||||
// });
|
// });
|
||||||
getPeopleData()
|
getPeopleData();
|
||||||
getNewsData()
|
getNewsData();
|
||||||
})
|
});
|
||||||
|
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
// if (mapChart) {
|
// if (mapChart) {
|
||||||
@ -163,7 +193,6 @@ onUnmounted(() => {
|
|||||||
// mapChart = null;
|
// mapChart = null;
|
||||||
// }
|
// }
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
@ -4,11 +4,26 @@ import CesiumImageLabelEntity from '../js/CesiumImageLabelEntity.js';
|
|||||||
import CesiumFlyToRoamingController from '../js/CesiumFlyToRoamingController.js';
|
import CesiumFlyToRoamingController from '../js/CesiumFlyToRoamingController.js';
|
||||||
import { setSelect, getSelectList, getGps } from '@/api/projectScreen/index.ts'
|
import { setSelect, getSelectList, getGps } from '@/api/projectScreen/index.ts'
|
||||||
import videoDialog from "./video.vue"
|
import videoDialog from "./video.vue"
|
||||||
|
import { getToken } from '@/utils/auth';
|
||||||
const defaultExpandedKeys = [1, 2, 3] //默认展开第一级节点
|
const defaultExpandedKeys = [1, 2, 3] //默认展开第一级节点
|
||||||
const defaultCheckedKeys = ref([]) //默认选中节点
|
const defaultCheckedKeys = ref([]) //默认选中节点
|
||||||
const data = ref([]);
|
const data = ref([]);
|
||||||
const deviceId = ref('');
|
const deviceId = ref('');
|
||||||
const videoDialogRef = ref(null);
|
const videoDialogRef = ref(null);
|
||||||
|
let token = 'Bearer '+ getToken()
|
||||||
|
let ws = new ReconnectingWebSocket( import.meta.env.VITE_APP_BASE_WS_API + '?Authorization='+token+'&clientid='+import.meta.env.VITE_APP_CLIENT_ID+'&projectId='+'1897160897167638529');
|
||||||
|
// 连接ws
|
||||||
|
const connectWs = () => {
|
||||||
|
ws.onopen = (e) => {
|
||||||
|
// let message ={
|
||||||
|
// projectId:'1897160897167638529',
|
||||||
|
// }
|
||||||
|
// ws.send(JSON.stringify(message));
|
||||||
|
ws.onmessage = (e) => {
|
||||||
|
console.log('ws', e);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
isHide:{
|
isHide:{
|
||||||
type:Boolean,
|
type:Boolean,
|
||||||
@ -214,6 +229,8 @@ function stopRoaming() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
// 连接ws
|
||||||
|
connectWs();
|
||||||
// 获取选中节点
|
// 获取选中节点
|
||||||
getCheckedNode();
|
getCheckedNode();
|
||||||
// 获取GPS数据
|
// 获取GPS数据
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<el-form :model="queryForm" :inline="true">
|
<el-form :model="queryForm" :inline="true">
|
||||||
<el-form-item label="版本号" prop="versions">
|
<el-form-item label="版本号" prop="versions">
|
||||||
<el-select v-model="queryForm.versions" placeholder="选择版本号" @change="changeVersions">
|
<el-select v-model="queryForm.versions" placeholder="选择版本号" @change="changeVersions">
|
||||||
<el-option v-for="item in options" :key="item.versions" :label="item.versions" :value="item.versions" />
|
<el-option v-for="item in options" :key="item.versions" :label="item.versionsName" :value="item.versions" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="表名" prop="sheet" v-if="activeTab != '3'">
|
<el-form-item label="表名" prop="sheet" v-if="activeTab != '3'">
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.versions"
|
:id="form.versions"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
@ -162,7 +163,7 @@ const { form, rules, tableData } = toRefs(data);
|
|||||||
// form.value = { ...initFormData };
|
// form.value = { ...initFormData };
|
||||||
// leaveFormRef.value?.resetFields();
|
// leaveFormRef.value?.resetFields();
|
||||||
// };
|
// };
|
||||||
|
const projectId = ref('');
|
||||||
/** 获取详情 */
|
/** 获取详情 */
|
||||||
const getInfo = () => {
|
const getInfo = () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@ -170,6 +171,7 @@ const getInfo = () => {
|
|||||||
nextTick(async () => {
|
nextTick(async () => {
|
||||||
const res = await getVersionDetail(routeParams.value.id);
|
const res = await getVersionDetail(routeParams.value.id);
|
||||||
console.log(res);
|
console.log(res);
|
||||||
|
projectId.value = res.data.projectId;
|
||||||
Object.assign(form.value, res.data);
|
Object.assign(form.value, res.data);
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
buttonLoading.value = false;
|
buttonLoading.value = false;
|
||||||
@ -181,7 +183,7 @@ const sheets = ref([]);
|
|||||||
const getSheetName = async () => {
|
const getSheetName = async () => {
|
||||||
try {
|
try {
|
||||||
const params = {
|
const params = {
|
||||||
projectId: currentProject.value?.id,
|
projectId: projectId.value,
|
||||||
versions: form.value.versions
|
versions: form.value.versions
|
||||||
};
|
};
|
||||||
const res = await sheetList(params);
|
const res = await sheetList(params);
|
||||||
@ -201,7 +203,7 @@ const changeSheet = () => {
|
|||||||
//获取列表
|
//获取列表
|
||||||
const getListTable = async () => {
|
const getListTable = async () => {
|
||||||
const res = await getTableList({
|
const res = await getTableList({
|
||||||
projectId: currentProject.value?.id,
|
projectId: projectId.value,
|
||||||
versions: form.value.versions,
|
versions: form.value.versions,
|
||||||
sheet: form.value.sheet,
|
sheet: form.value.sheet,
|
||||||
type: '2'
|
type: '2'
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.versions"
|
:id="form.versions"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
@ -26,11 +27,11 @@
|
|||||||
<el-form-item label="版本号" prop="formNo">
|
<el-form-item label="版本号" prop="formNo">
|
||||||
<el-input :disabled="true" v-model="form.versions" placeholder="请输入文件名称" />
|
<el-input :disabled="true" v-model="form.versions" placeholder="请输入文件名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="表名" prop="sheet">
|
<!-- <el-form-item label="表名" prop="sheet">
|
||||||
<el-select v-model="form.sheet" placeholder="选择表名" @change="changeSheet">
|
<el-select v-model="form.sheet" placeholder="选择表名" @change="changeSheet">
|
||||||
<el-option v-for="item in sheets" :key="item" :label="item" :value="item" />
|
<el-option v-for="item in sheets" :key="item" :label="item" :value="item" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
@ -162,7 +163,7 @@ const { form, rules, tableData } = toRefs(data);
|
|||||||
// form.value = { ...initFormData };
|
// form.value = { ...initFormData };
|
||||||
// leaveFormRef.value?.resetFields();
|
// leaveFormRef.value?.resetFields();
|
||||||
// };
|
// };
|
||||||
|
const projectId = ref('');
|
||||||
/** 获取详情 */
|
/** 获取详情 */
|
||||||
const getInfo = () => {
|
const getInfo = () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@ -170,10 +171,11 @@ const getInfo = () => {
|
|||||||
nextTick(async () => {
|
nextTick(async () => {
|
||||||
const res = await getVersionDetail(routeParams.value.id);
|
const res = await getVersionDetail(routeParams.value.id);
|
||||||
console.log(res);
|
console.log(res);
|
||||||
|
projectId.value = res.data.projectId;
|
||||||
Object.assign(form.value, res.data);
|
Object.assign(form.value, res.data);
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
buttonLoading.value = false;
|
buttonLoading.value = false;
|
||||||
getSheetName();
|
getListTable();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const sheets = ref([]);
|
const sheets = ref([]);
|
||||||
@ -201,9 +203,9 @@ const changeSheet = () => {
|
|||||||
//获取列表
|
//获取列表
|
||||||
const getListTable = async () => {
|
const getListTable = async () => {
|
||||||
const res = await getTableList({
|
const res = await getTableList({
|
||||||
projectId: currentProject.value?.id,
|
projectId: projectId.value,
|
||||||
versions: form.value.versions,
|
versions: form.value.versions,
|
||||||
sheet: form.value.sheet,
|
// sheet: form.value.sheet,
|
||||||
type: '3'
|
type: '3'
|
||||||
});
|
});
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.state"
|
:status="form.state"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
:id="form.id"
|
:id="form.id"
|
||||||
:status="form.status"
|
:status="form.status"
|
||||||
:pageType="routeParams.type"
|
:pageType="routeParams.type"
|
||||||
|
:projectName="routeParams.projectName"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card shadow="never" style="height: 78vh; overflow-y: auto">
|
<el-card shadow="never" style="height: 78vh; overflow-y: auto">
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
|
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="projectName" label="项目名称" :show-overflow-tooltip="true"></el-table-column>
|
||||||
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"></el-table-column>
|
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"></el-table-column>
|
||||||
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
|
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
|
||||||
<el-table-column align="center" prop="version" label="版本号" width="90">
|
<el-table-column align="center" prop="version" label="版本号" width="90">
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
|
|
||||||
<el-table v-loading="loading" border :data="processInstanceList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" border :data="processInstanceList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
|
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="projectName" label="项目名称" :show-overflow-tooltip="true"></el-table-column>
|
||||||
<el-table-column v-if="false" align="center" prop="id" label="id"></el-table-column>
|
<el-table-column v-if="false" align="center" prop="id" label="id"></el-table-column>
|
||||||
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"> </el-table-column>
|
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"> </el-table-column>
|
||||||
<!-- <el-table-column align="center" prop="flowCode" label="流程定义编码"></el-table-column> -->
|
<!-- <el-table-column align="center" prop="flowCode" label="流程定义编码"></el-table-column> -->
|
||||||
@ -248,7 +249,8 @@ const handleOpen = async (row, type) => {
|
|||||||
taskId: row.id,
|
taskId: row.id,
|
||||||
type: type,
|
type: type,
|
||||||
formCustom: row.formCustom,
|
formCustom: row.formCustom,
|
||||||
formPath: row.formPath
|
formPath: row.formPath,
|
||||||
|
projectName: row.projectName
|
||||||
});
|
});
|
||||||
workflowCommon.routerJump(routerJumpVo, proxy);
|
workflowCommon.routerJump(routerJumpVo, proxy);
|
||||||
};
|
};
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
|
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="projectName" label="项目名称" :show-overflow-tooltip="true"></el-table-column>
|
||||||
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"></el-table-column>
|
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"></el-table-column>
|
||||||
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
|
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
|
||||||
<el-table-column align="center" prop="nodeName" label="任务名称"></el-table-column>
|
<el-table-column align="center" prop="nodeName" label="任务名称"></el-table-column>
|
||||||
@ -131,7 +132,8 @@ const handleView = (row) => {
|
|||||||
taskId: row.id,
|
taskId: row.id,
|
||||||
type: 'view',
|
type: 'view',
|
||||||
formCustom: row.formCustom,
|
formCustom: row.formCustom,
|
||||||
formPath: row.formPath
|
formPath: row.formPath,
|
||||||
|
projectName: row.projectName
|
||||||
});
|
});
|
||||||
workflowCommon.routerJump(routerJumpVo, proxy);
|
workflowCommon.routerJump(routerJumpVo, proxy);
|
||||||
};
|
};
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
|
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="projectName" label="项目名称" :show-overflow-tooltip="true"></el-table-column>
|
||||||
<el-table-column align="center" prop="flowName" label="流程名称"></el-table-column>
|
<el-table-column align="center" prop="flowName" label="流程名称"></el-table-column>
|
||||||
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
|
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
|
||||||
<el-table-column align="center" prop="version" label="版本号" width="90">
|
<el-table-column align="center" prop="version" label="版本号" width="90">
|
||||||
@ -164,7 +165,8 @@ const handleView = (row: FlowTaskVO) => {
|
|||||||
taskId: row.id,
|
taskId: row.id,
|
||||||
type: 'view',
|
type: 'view',
|
||||||
formCustom: row.formCustom,
|
formCustom: row.formCustom,
|
||||||
formPath: row.formPath
|
formPath: row.formPath,
|
||||||
|
projectName: row.projectName
|
||||||
});
|
});
|
||||||
workflowCommon.routerJump(routerJumpVo, proxy);
|
workflowCommon.routerJump(routerJumpVo, proxy);
|
||||||
};
|
};
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
|
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="projectName" label="项目名称" :show-overflow-tooltip="true"></el-table-column>
|
||||||
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"></el-table-column>
|
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"></el-table-column>
|
||||||
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
|
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
|
||||||
<el-table-column align="center" prop="nodeName" label="任务名称"></el-table-column>
|
<el-table-column align="center" prop="nodeName" label="任务名称"></el-table-column>
|
||||||
@ -167,7 +168,8 @@ const handleOpen = async (row: FlowTaskVO) => {
|
|||||||
type: 'approval',
|
type: 'approval',
|
||||||
formCustom: row.formCustom,
|
formCustom: row.formCustom,
|
||||||
planMonth: row.businessId.split('_')[1],
|
planMonth: row.businessId.split('_')[1],
|
||||||
formPath: row.formPath
|
formPath: row.formPath,
|
||||||
|
projectName: row.projectName
|
||||||
});
|
});
|
||||||
workflowCommon.routerJump(routerJumpVo, proxy);
|
workflowCommon.routerJump(routerJumpVo, proxy);
|
||||||
};
|
};
|
||||||
|
230
vite.config.ts.timestamp-1757474994354-725e853699762.mjs
Normal file
230
vite.config.ts.timestamp-1757474994354-725e853699762.mjs
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user