feat: 对大屏展示页面添加跳转至对应模块的功能以及修改列表筛选BUG
This commit is contained in:
parent
5cb2a8fc5e
commit
cb81521875
@ -2,11 +2,11 @@
|
||||
NODE_ENV = 'development'
|
||||
|
||||
# 本地环境接口地址(/api/index.ts文件中使用)
|
||||
VITE_API_URL = 'http://192.168.34.155:6688'
|
||||
# VITE_API_URL = 'http://192.168.34.155:6688'
|
||||
# VITE_API_URL = 'http://183.63.230.59:6090'
|
||||
# VITE_API_URL = 'http://2xliv7gs.shenzhuo.vip:55296'
|
||||
VITE_WPAPI_URL = "http://jxjzw.zhgdyun.com:8081"
|
||||
# VITE_API_URL = "http://jxjzw.zhgdyun.com:9013"
|
||||
VITE_API_URL = "http://jxjzw.zhgdyun.com:9013"
|
||||
# VITE_API_URL = 'https://xmglcs.hyjgxt.cn:6090'
|
||||
|
||||
# 上传
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
|
||||
<div class="search-wrapper">
|
||||
<!-- placeholder 应对应 tab 页,可以在 tabs 中一起传入 -->
|
||||
<el-input :prefix-icon="Search" v-model="value" placeholder="请输入" />
|
||||
<el-input :prefix-icon="Search" v-model="value" placeholder="请输入" clearable />
|
||||
<el-button class="search-btn" type="primary" @click="search">搜索</el-button>
|
||||
</div>
|
||||
|
||||
@ -50,6 +50,7 @@ const props = defineProps<{
|
||||
pageable?: { pageNo: number; pageSize: number; total: number };
|
||||
tabs?: string[];
|
||||
activeIndex: number;
|
||||
activeInputVal: string;
|
||||
// leftBack?: boolean;
|
||||
}>();
|
||||
|
||||
@ -62,7 +63,7 @@ const emit = defineEmits<{
|
||||
|
||||
const offsetLeft = ref(70);
|
||||
const width = ref(56);
|
||||
const value = ref("");
|
||||
const value = ref("" as any);
|
||||
const ActiveColor = ref(0);
|
||||
const active = ref(0);
|
||||
// const searchInput = ref(true);
|
||||
@ -99,6 +100,15 @@ watch(
|
||||
ActiveColor.value = value;
|
||||
}
|
||||
);
|
||||
watch(
|
||||
() => props.activeInputVal,
|
||||
async (val: string) => {
|
||||
value.value = val;
|
||||
},
|
||||
{
|
||||
immediate: true
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
@ -67,7 +67,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive } from "vue";
|
||||
import { ref, reactive, watch } from "vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
import type { ResAiProjectPage, ResAiEngineerPage } from "@/api/types/government/AIwaring";
|
||||
import type { FormInstance } from "element-plus";
|
||||
@ -75,7 +75,7 @@ import { addDiaDictionary, editDiaDictionary, deleteDia } from "@/api/modules/jx
|
||||
import { Delete } from "@element-plus/icons-vue";
|
||||
import { useHandleData } from "@/hooks/useHandleData";
|
||||
import { scorePage } from "@/api/modules/huizhou";
|
||||
defineProps<{
|
||||
const props = defineProps<{
|
||||
modelValue: number;
|
||||
records: ResAiProjectPage[] | ResAiEngineerPage[];
|
||||
pageable?: { pageNo: number; pageSize: number; total: number };
|
||||
@ -197,6 +197,15 @@ const changeTab = (e: MouseEvent, i: number) => {
|
||||
const changePage = (e: number) => {
|
||||
emit("changePage", e);
|
||||
};
|
||||
watch(
|
||||
() => props.modelValue,
|
||||
(n, o) => {
|
||||
ActiveColor.value = n;
|
||||
},
|
||||
{
|
||||
immediate: true
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
@ -79,8 +79,13 @@ const placeholder = computed(() => {
|
||||
});
|
||||
|
||||
// 是否有清除按钮 (当搜索项有默认值时,清除按钮不显示)
|
||||
// const clearable = computed(() => {
|
||||
// const search = props.column.search;
|
||||
// return search?.props?.clearable ?? (search?.defaultValue == null || search?.defaultValue == undefined);
|
||||
// });
|
||||
// 是否有清除按钮 (都显示)
|
||||
const clearable = computed(() => {
|
||||
const search = props.column.search;
|
||||
return search?.props?.clearable ?? (search?.defaultValue == null || search?.defaultValue == undefined);
|
||||
return search?.props?.clearable;
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -81,6 +81,7 @@ export const useTable = (
|
||||
state.totalParam = {};
|
||||
// 处理查询参数,可以给查询参数加自定义前缀操作
|
||||
let nowSearchParam: { [key: string]: any } = {};
|
||||
console.log(state.searchParam, 888999);
|
||||
// 防止手动清空输入框携带参数(这里可以自定义查询参数前缀)
|
||||
for (let key in state.searchParam) {
|
||||
// * 某些情况下参数为 false/0 也应该携带参数
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="warning-page">
|
||||
<div class="left-content">
|
||||
<leftMenu2 :records="dicMainData" class="leftMenu" @addData="addData">
|
||||
<leftMenu2 :modelValue="activeMenuTab" :records="dicMainData" class="leftMenu" @addData="addData">
|
||||
<template #default="scope">
|
||||
<div class="leftProject" @click="onSearch(scope.data)">
|
||||
<div class="leftMenu_item">
|
||||
@ -127,7 +127,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, onMounted, watch } from "vue";
|
||||
import { ref, reactive, onMounted, onBeforeMount } from "vue";
|
||||
import leftMenu2 from "@/components/leftMenu2/index.vue";
|
||||
import { ColumnProps } from "@/components/ProTable/interface";
|
||||
import ProTable from "@/components/ProTable/index.vue";
|
||||
@ -141,7 +141,10 @@ import scoreTableNew from "./components/scoreTableNew.vue";
|
||||
import { getDicList } from "@/api/modules/jxjview";
|
||||
import { scorePage, enterpriseList, engineerList, scoreAdd, deleteScoreDetail } from "@/api/modules/huizhou";
|
||||
import { useHandleData } from "@/hooks/useHandleData";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import printJS from "print-js";
|
||||
const route = useRoute();
|
||||
const activeMenuTab = ref(0);
|
||||
const relativeInfo = ref({});
|
||||
const dicMainData = ref([]);
|
||||
const openScore = ref(false);
|
||||
@ -404,7 +407,19 @@ const onSearch = async (params: any) => {
|
||||
};
|
||||
onMounted(async () => {
|
||||
await getDicMainList();
|
||||
companyType.value = dicMainData.value[0];
|
||||
if (route.query.enterpriseType) {
|
||||
let findIndex = dicMainData.value.findIndex((item: any) => {
|
||||
return item.dictLabel == route.query.enterpriseType;
|
||||
});
|
||||
if (findIndex != -1) {
|
||||
companyType.value = dicMainData.value[findIndex];
|
||||
activeMenuTab.value = findIndex;
|
||||
} else {
|
||||
companyType.value = dicMainData.value[0];
|
||||
}
|
||||
} else {
|
||||
companyType.value = dicMainData.value[0];
|
||||
}
|
||||
proTable.value.getTableList();
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -11,6 +11,7 @@
|
||||
:pagination="true"
|
||||
background
|
||||
:isShowSearch="false"
|
||||
:onReset="true"
|
||||
>
|
||||
<!-- <template #formButton="scope">
|
||||
<el-button type="primary" @click="handleAddItem()">新增</el-button>
|
||||
@ -204,9 +205,9 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="tsx" name="governMentCompanyApprove">
|
||||
import { ref, reactive } from "vue";
|
||||
import { ref, reactive, onBeforeMount } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import { User } from "@/api/interface";
|
||||
import { ColumnProps } from "@/components/ProTable/interface";
|
||||
import { ruleForm } from "./index";
|
||||
@ -220,6 +221,7 @@ import { GlobalStore } from "@/stores";
|
||||
import divDialogComponent from "@/components/divDialogComponent/index.vue";
|
||||
const globalStore = GlobalStore();
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const rowObj = ref();
|
||||
const editVisible = ref(false);
|
||||
@ -290,7 +292,7 @@ const columns: ColumnProps[] = [
|
||||
// search: { el: "input" }
|
||||
isShow: false,
|
||||
enum: DicMainList.value,
|
||||
search: { el: "select", props: { filterable: true } },
|
||||
search: { el: "select", props: { filterable: true, clearable: true } },
|
||||
fieldNames: { label: "dictValue", value: "dictLabel" }
|
||||
},
|
||||
{
|
||||
@ -357,6 +359,11 @@ const deleteAccount = async (row: any) => {
|
||||
enterPriseId.value = row.enterpriseId;
|
||||
aproveVisible.value = true;
|
||||
};
|
||||
onBeforeMount(() => {
|
||||
if (route.query.companyType) {
|
||||
columns[3].search.defaultValue = +route.query.companyType;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import "./index.scss";
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="ordersizeCenter">
|
||||
<div v-for="(item, index) in list" :key="index" :class="item.bgimg">
|
||||
<div v-for="(item, index) in list" :key="index" :class="item.bgimg" @click="toProjectList">
|
||||
<div class="listItem">
|
||||
<div class="listNumber">{{ item.number }}</div>
|
||||
<div class="listName">{{ item.name }}</div>
|
||||
@ -12,6 +12,8 @@
|
||||
<script lang="ts" setup>
|
||||
import { ref, onMounted } from "vue";
|
||||
import { getEngineeringAll } from "@/api/modules/largeSreen";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
const router = useRouter();
|
||||
|
||||
onMounted(() => {
|
||||
projectNumber();
|
||||
@ -22,6 +24,10 @@ const list = ref([
|
||||
{ bgimg: "bgImgTwo", number: "19374", name: "今年竣工工程" },
|
||||
{ bgimg: "bgImgThree", number: "2479", name: "重点工程" }
|
||||
]);
|
||||
// 根据类型跳转项目管理列表
|
||||
const toProjectList = () => {
|
||||
router.push("/goverment/huizhou/projectList/index");
|
||||
};
|
||||
const projectNumber = async () => {
|
||||
const { result } = await getEngineeringAll();
|
||||
list.value[0].number = result.newBuild;
|
||||
|
||||
@ -38,28 +38,28 @@
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="realNameSystem">
|
||||
<div :class="projectStatusBlue.bgimg">
|
||||
<div :class="projectStatusBlue.bgimg" @click="toProjectList(1)">
|
||||
<img :src="getImageUrlGit(projectStatusBlue.img)" alt="" />
|
||||
<div class="centerTitle">
|
||||
<div class="titleNumber">{{ projectStatusBlue.number }}</div>
|
||||
<div class="titleName">{{ projectStatusBlue.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="projectStatusGreen.bgimg">
|
||||
<div :class="projectStatusGreen.bgimg" @click="toProjectList(2)">
|
||||
<img :src="getImageUrlGit(projectStatusGreen.img)" alt="" />
|
||||
<div class="centerTitle">
|
||||
<div class="titleNumber">{{ projectStatusGreen.number }}</div>
|
||||
<div class="titleName">{{ projectStatusGreen.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="projectStatusRed.bgimg">
|
||||
<div :class="projectStatusRed.bgimg" @click="toProjectList(4)">
|
||||
<img :src="getImageUrlGit(projectStatusRed.img)" alt="" />
|
||||
<div class="centerTitle">
|
||||
<div class="titleNumber">{{ projectStatusRed.number }}</div>
|
||||
<div class="titleName">{{ projectStatusRed.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="projectStatusRed2.bgimg">
|
||||
<div :class="projectStatusRed2.bgimg" @click="toProjectList(3)">
|
||||
<img :src="getImageUrlGit(projectStatusRed2.img)" alt="" />
|
||||
<div class="centerTitle">
|
||||
<div class="titleNumber">{{ projectStatusRed2.number }}</div>
|
||||
@ -72,7 +72,7 @@
|
||||
</div>
|
||||
<div class="companyAll">
|
||||
<div>
|
||||
<div v-for="(item, index) in companyLeft" :key="index" class="companyItemLeft">
|
||||
<div v-for="(item, index) in companyLeft" :key="index" class="companyItemLeft" @click="toCompanyList(item)">
|
||||
<div class="flex">
|
||||
<div class="leftIcon">
|
||||
<img :src="getImageUrlPng(item.img)" />
|
||||
@ -85,7 +85,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div v-for="(item, index) in companyRight" :key="index" class="companyItemRight">
|
||||
<div v-for="(item, index) in companyRight" :key="index" class="companyItemRight" @click="toCompanyList(item)">
|
||||
<div class="flex">
|
||||
<div class="leftIcon">
|
||||
<img :src="getImageUrlPng(item.img)" />
|
||||
@ -104,6 +104,8 @@
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, onMounted } from "vue";
|
||||
import { getCompanyAll, getProjectNumber, getRealNameSystem, getEngineeringAll } from "@/api/modules/largeSreen";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
const router = useRouter();
|
||||
|
||||
onMounted(() => {
|
||||
projectNumber();
|
||||
@ -116,6 +118,26 @@ const projectNum = reactive({
|
||||
num: "000000",
|
||||
newNum: ["0", "0", "0", "0", "0", "0"]
|
||||
});
|
||||
// 根据类型跳转企业管理列表
|
||||
const toCompanyList = (obj: any) => {
|
||||
if (obj.name == "施工") {
|
||||
router.push("/goverment/huizhou/enterpriseList/index?companyType=3");
|
||||
} else if (obj.name == "监理") {
|
||||
router.push("/goverment/huizhou/enterpriseList/index?companyType=2");
|
||||
} else if (obj.name == "设计") {
|
||||
router.push("/goverment/huizhou/enterpriseList/index?companyType=5");
|
||||
} else if (obj.name == "建设") {
|
||||
router.push("/goverment/huizhou/enterpriseList/index?companyType=1");
|
||||
} else if (obj.name == "勘察") {
|
||||
router.push("/goverment/huizhou/enterpriseList/index?companyType=4");
|
||||
} else if (obj.name == "其他") {
|
||||
router.push("/goverment/huizhou/enterpriseList/index");
|
||||
}
|
||||
};
|
||||
// 根据类型跳转项目管理列表
|
||||
const toProjectList = (type: any) => {
|
||||
router.push("/goverment/huizhou/projectList/index?projectStatus=" + type);
|
||||
};
|
||||
const projectNumber = async () => {
|
||||
const { result } = await getProjectNumber();
|
||||
const stringNum = String(result.total / 1000000);
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<div class="leftBorder">
|
||||
<div class="title">
|
||||
<div class="title" @click="toProjectList">
|
||||
<div class="text">工程数</div>
|
||||
</div>
|
||||
<div class="projectNum">
|
||||
<div class="projectNum" @click="toProjectList">
|
||||
<div v-for="(item, index) in projectNum.newNum" :key="index">
|
||||
<div class="numItem">{{ item }}</div>
|
||||
</div>
|
||||
@ -15,10 +15,10 @@
|
||||
<!-- <div v-for="(item, index) in percentList" :key="index" class="allPercent">
|
||||
<div :class="item.css">{{ item.number }}</div>
|
||||
</div> -->
|
||||
<div class="title">
|
||||
<div class="title" @click="toAlarmLedgerPage">
|
||||
<div class="text">扬尘今日预警</div>
|
||||
</div>
|
||||
<div class="pieBg">
|
||||
<div class="pieBg" @click="toAlarmLedgerPage">
|
||||
<div class="imgbg">
|
||||
<img src="@/assets/images/screenImg/blueCircleBig.gif" alt="" />
|
||||
</div>
|
||||
@ -35,6 +35,9 @@ import "echarts-gl";
|
||||
import { result } from "lodash";
|
||||
import { ResponseSame, ScreenResponse } from "@/api/types/common";
|
||||
import { getDicList } from "@/api/modules/jxjview";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
const router = useRouter();
|
||||
|
||||
onMounted(async () => {
|
||||
projectNumber();
|
||||
await getDicTypeList();
|
||||
@ -46,6 +49,14 @@ const projectNum = reactive({
|
||||
num: "000000",
|
||||
newNum: ["0", "0", "0", "0", "0", "0"]
|
||||
});
|
||||
// 跳转至报警台账
|
||||
const toAlarmLedgerPage = () => {
|
||||
router.push("/hz-enterprise/smartSite/alarmLedger/index");
|
||||
};
|
||||
// 根据类型跳转项目管理列表
|
||||
const toProjectList = () => {
|
||||
router.push("/goverment/huizhou/projectList/index");
|
||||
};
|
||||
const projectNumber = async () => {
|
||||
const { result } = await getEngineeringAll();
|
||||
const stringNum = String(result.total / 1000000);
|
||||
@ -373,17 +384,17 @@ const threeDOption = (val: any[] | ResponseSame<ScreenResponse.ProjectAllRespons
|
||||
}
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
formatter: (params: { seriesName: string; color: any; seriesIndex: string | number }) => {
|
||||
if (params.seriesName !== "mouseoutSeries") {
|
||||
return `${
|
||||
params.seriesName
|
||||
}<br/><span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:${
|
||||
params.color
|
||||
};"></span>${((option.series[params.seriesIndex].pieData.value / allNumber) * 100).toFixed(1)}%`;
|
||||
}
|
||||
}
|
||||
},
|
||||
// tooltip: {
|
||||
// formatter: (params: { seriesName: string; color: any; seriesIndex: string | number }) => {
|
||||
// if (params.seriesName !== "mouseoutSeries") {
|
||||
// return `${
|
||||
// params.seriesName
|
||||
// }<br/><span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:${
|
||||
// params.color
|
||||
// };"></span>${((option.series[params.seriesIndex].pieData.value / allNumber) * 100).toFixed(1)}%`;
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
xAxis3D: {
|
||||
min: -1,
|
||||
max: 1
|
||||
@ -430,6 +441,32 @@ const threeDOption = (val: any[] | ResponseSame<ScreenResponse.ProjectAllRespons
|
||||
// 传入数据生成 option
|
||||
let option = getPie3D(data, 0.65);
|
||||
option && myChart.setOption(option);
|
||||
myChart.on("click", val => {
|
||||
if (val.seriesType == "pie") {
|
||||
if (val.name == "交通工程") {
|
||||
router.push("/goverment/huizhou/projectList/index?projectType=1");
|
||||
} else if (val.name == "桥梁工程") {
|
||||
router.push("/goverment/huizhou/projectList/index?projectType=2");
|
||||
} else if (val.name == "隧道工程") {
|
||||
router.push("/goverment/huizhou/projectList/index?projectType=3");
|
||||
} else if (val.name == "公路工程") {
|
||||
router.push("/goverment/huizhou/projectList/index?projectType=4");
|
||||
} else {
|
||||
router.push("/goverment/huizhou/projectList/index");
|
||||
}
|
||||
}
|
||||
// if (val.name == "完工") {
|
||||
// router.push("/goverment/huizhou/projectList/index?projectStatus=4");
|
||||
// } else if (val.name == "在建") {
|
||||
// router.push("/goverment/huizhou/projectList/index?projectStatus=2");
|
||||
// } else if (val.name == "停工") {
|
||||
// router.push("/goverment/huizhou/projectList/index?projectStatus=3");
|
||||
// } else if (val.name == "未开工") {
|
||||
// router.push("/goverment/huizhou/projectList/index?projectStatus=1");
|
||||
// } else if (val.name == "合计") {
|
||||
// router.push("/goverment/huizhou/projectList/index");
|
||||
// }
|
||||
});
|
||||
//是否需要label指引线,如果要就添加一个透明的2d饼状图并调整角度使得labelLine和3d的饼状图对齐,并再次setOption
|
||||
option.series.push({
|
||||
name: "pie2d",
|
||||
|
||||
@ -136,6 +136,11 @@ onMounted(async () => {
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
}
|
||||
.leftScreen,
|
||||
.centerScreen,
|
||||
.rightScreen {
|
||||
z-index: 100;
|
||||
}
|
||||
.bottomContent {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
<div>省市级项目</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="topsixin">
|
||||
<div class="topsixin" @click="toProjectList('')">
|
||||
<div class="bg2"></div>
|
||||
<div class="titles">
|
||||
<div>{{ projectInfo.importance }}</div>
|
||||
@ -39,21 +39,21 @@
|
||||
<div>里程(km)</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="topsixin">
|
||||
<div class="topsixin" @click="toProjectList(2)">
|
||||
<div class="bg4"></div>
|
||||
<div class="titles">
|
||||
<div>{{ projectInfo.bridge }}</div>
|
||||
<div>桥梁工程</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topsixin">
|
||||
<div class="topsixin" @click="toProjectList(3)">
|
||||
<div class="bg5"></div>
|
||||
<div class="titles">
|
||||
<div>{{ projectInfo.tunnel }}</div>
|
||||
<div>隧道工程</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topsixin">
|
||||
<div class="topsixin" @click="toProjectList(4)">
|
||||
<div class="bg6"></div>
|
||||
<div class="titles">
|
||||
<div>{{ projectInfo.station }}</div>
|
||||
@ -148,7 +148,14 @@ onMounted(async () => {
|
||||
myChamainleto();
|
||||
myChamainlett();
|
||||
});
|
||||
|
||||
// 根据类型跳转项目管理列表
|
||||
const toProjectList = type => {
|
||||
if (type) {
|
||||
router.push("/goverment/huizhou/projectList/index?projectType=" + type);
|
||||
} else {
|
||||
router.push("/goverment/huizhou/projectList/index");
|
||||
}
|
||||
};
|
||||
const myChamainleto = () => {
|
||||
let myChart = echarts.init(mainleto.value);
|
||||
const CubeLeft = echarts.graphic.extendShape({
|
||||
|
||||
@ -5,8 +5,8 @@
|
||||
<div class="tilein" ref="rigttitlein"></div>
|
||||
</div>
|
||||
<div class="jiant"></div>
|
||||
<div class="jjiantcent">月度统计</div>
|
||||
<div class="sixcent">
|
||||
<div class="jjiantcent" @click.stop="toFundingPlanPage">资金计划</div>
|
||||
<div class="sixcent" @click.stop="toFundingPlanPage">
|
||||
<div class="sicentin">
|
||||
<!-- <div class="sicentintop">本月受理请款金额(万元)</div> -->
|
||||
<div class="sicentintop">年初预算(万元)</div>
|
||||
@ -199,6 +199,10 @@ onMounted(async () => {
|
||||
// rigttitlein.value.style.animation = 'slide-rigttitleinb 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) both'
|
||||
// }
|
||||
// })
|
||||
// 跳转至资金计划管理
|
||||
const toFundingPlanPage = () => {
|
||||
router.push("/goverment/huizhou/progressManagement/fundingPlan/index");
|
||||
};
|
||||
const goDataManagement = () => {
|
||||
router.push("/goverment/huizhou/progressManagement/investmentPayment/index");
|
||||
};
|
||||
|
||||
@ -60,7 +60,7 @@
|
||||
:singleWaitTime="3000"
|
||||
:wheel="true"
|
||||
>
|
||||
<div class="scroll_in" v-for="(item, index) in rankList" :key="index">
|
||||
<div class="scroll_in" v-for="(item, index) in rankList" :key="index" @click="toUnitScorePage(item)">
|
||||
<div style="width: 10%" class="scroll_in_div">{{ index + 1 }}</div>
|
||||
<div style="width: 30%" class="scroll_in_div">
|
||||
<div class="scroll_in_div_in">
|
||||
@ -154,6 +154,10 @@ const DicMainList = ref([]);
|
||||
// import pinia from "@/store/index";
|
||||
// import { useStore } from "@/store/module";
|
||||
// const store = useStore(pinia);
|
||||
// 跳转至考核单位评分页面
|
||||
const toUnitScorePage = item => {
|
||||
router.push("/goverment/huizhou/assessmentManagement/unitScore/index?enterpriseType=" + item.enterpriseType);
|
||||
};
|
||||
// input输入切换
|
||||
const inputChange = () => {
|
||||
getAllCountList();
|
||||
|
||||
@ -12,7 +12,6 @@
|
||||
:pagination="true"
|
||||
background
|
||||
:isShowSearch="true"
|
||||
:onReset="true"
|
||||
>
|
||||
<template #formButton="scope">
|
||||
<el-button v-auth="'pre_project_add'" class="btnStyle" @click="handleAddItem">新增</el-button>
|
||||
@ -152,7 +151,7 @@ const columns: ColumnProps[] = [
|
||||
{
|
||||
prop: "engineeringName",
|
||||
label: "项目名称",
|
||||
search: { el: "input" }
|
||||
search: { el: "input", props: { clearable: true } }
|
||||
},
|
||||
{
|
||||
prop: "engineeringCode",
|
||||
@ -282,11 +281,8 @@ const dataCallback = (data: any) => {
|
||||
};
|
||||
};
|
||||
onBeforeMount(() => {
|
||||
if (route.query.projectStatus) {
|
||||
columns[5].search.defaultValue = +route.query.projectStatus;
|
||||
}
|
||||
if (route.query.projectNature) {
|
||||
columns[6].search.defaultValue = +route.query.projectNature;
|
||||
if (route.query.projectName) {
|
||||
columns[1].search.defaultValue = route.query.projectName;
|
||||
}
|
||||
});
|
||||
onMounted(async () => {
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
:tabs="['项目名称', '工程名称']"
|
||||
:records="records"
|
||||
:activeIndex="modelActive"
|
||||
:activeInputVal="modelActiveInput"
|
||||
@change-page="onCurChange"
|
||||
@search="onSearchInput"
|
||||
:pageable="pages"
|
||||
@ -144,6 +145,7 @@ import { sendIframeMessage } from "@/utils/util";
|
||||
import divDialogComponent from "@/components/divDialogComponent/index.vue";
|
||||
const route = useRoute();
|
||||
const modelActive = ref(0);
|
||||
const modelActiveInput = ref("" as any);
|
||||
const detailsDialog = ref(false);
|
||||
const relativeId = ref("");
|
||||
|
||||
@ -469,6 +471,7 @@ const onSearchInput = async (params: string) => {
|
||||
const { result } = await payGovermentEngList({ engineeringName: params, ...pages.value });
|
||||
records.value = result.records;
|
||||
}
|
||||
onSearch(records.value[0]);
|
||||
};
|
||||
// leftMenu页面的分页
|
||||
const onCurChange = async (params: number) => {
|
||||
@ -527,6 +530,8 @@ onMounted(async () => {
|
||||
searchName.value = records.value[0].projectName;
|
||||
searchId.value = records.value[0].id;
|
||||
if (route.query.projectName) {
|
||||
modelActiveInput.value = route.query.projectName;
|
||||
onSearchInput(route.query.projectName);
|
||||
let defaultActive = records.value.findIndex((item: any) => {
|
||||
return route.query.projectName == item.engineeringName;
|
||||
});
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
<div class="overview">
|
||||
<div class="detail-table">
|
||||
<div class="button-title">
|
||||
<el-button class="btnStyle" v-auth="'investment_apply_add'" @click="openAdd">新增</el-button>
|
||||
<el-button class="btnStyle" v-auth="'investment_apply_add'" @click="submitCount">提交</el-button>
|
||||
<el-button class="btnStyle" v-auth="'plan_finish_add'" @click="openAdd">新增</el-button>
|
||||
<el-button class="btnStyle" v-auth="'plan_finish_add'" @click="submitCount">提交</el-button>
|
||||
</div>
|
||||
<div class="table">
|
||||
<el-table
|
||||
@ -17,7 +17,7 @@
|
||||
<el-table-column type="index" label="序号" width="80"> </el-table-column>
|
||||
<el-table-column prop="reportContent" label="汇报内容" align="left"> </el-table-column>
|
||||
<el-table-column prop="totalAmount" label="总工程造价(元)">
|
||||
<template #default="scope" v-auth="'investment_apply_add'">
|
||||
<template #default="scope" v-auth="'plan_finish_add'">
|
||||
<el-input
|
||||
v-if="scope.row.symbolSum && countData"
|
||||
v-model.number="countData[scope.row.key]"
|
||||
@ -32,13 +32,7 @@
|
||||
<el-table-column prop="completeScheduleRatio" label="至本期末完成形象进度(%)" width="220"> </el-table-column> -->
|
||||
<el-table-column align="left" label="操作">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
type="primary"
|
||||
v-auth="'investment_apply_update'"
|
||||
v-if="scope.row.id"
|
||||
link
|
||||
@click="handleEditItem(scope.row)"
|
||||
>
|
||||
<el-button type="primary" v-auth="'plan_finish_update'" v-if="scope.row.id" link @click="handleEditItem(scope.row)">
|
||||
<img src="@/assets/images/tableIcon/updateIcon.png" alt="" class="configureIcon" />
|
||||
<span>编辑</span>
|
||||
</el-button>
|
||||
@ -78,7 +72,7 @@
|
||||
<template #centerContent>
|
||||
<div class="sub-table">
|
||||
<div class="button-optoion">
|
||||
<el-button class="btnStyle" v-auth="'investment_apply_add'" @click="openAdd2">新增</el-button>
|
||||
<el-button class="btnStyle" v-auth="'plan_finish_add'" @click="openAdd2">新增</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="recordItemData"
|
||||
@ -113,7 +107,7 @@
|
||||
<el-table-column prop="remark" label="备注"> </el-table-column>
|
||||
<el-table-column align="left" label="操作" width="200" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" v-auth="'investment_apply_update'" link @click="handleEditItem2(scope.row)">
|
||||
<el-button type="primary" v-auth="'plan_finish_update'" link @click="handleEditItem2(scope.row)">
|
||||
<img src="@/assets/images/tableIcon/updateIcon.png" alt="" class="configureIcon" />
|
||||
<span>编辑</span>
|
||||
</el-button>
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
:onReset="true"
|
||||
>
|
||||
<template #formButton="scope">
|
||||
<el-button v-auth="'investment_apply_add'" class="btnStyle" @click="handleAddItem">新增</el-button>
|
||||
<el-button v-auth="'plan_finish_add'" class="btnStyle" @click="handleAddItem">新增</el-button>
|
||||
</template>
|
||||
<template #investmentPaymentId="scope">
|
||||
<span :style="{ color: scope.row.investmentPaymentId ? 'var(--el-menu-text-color)' : '#F80840' }">{{
|
||||
@ -60,7 +60,7 @@
|
||||
<el-button
|
||||
v-if="row.approvalStatus != 1"
|
||||
type="primary"
|
||||
v-auth="'investment_apply_update'"
|
||||
v-auth="'plan_finish_update'"
|
||||
link
|
||||
@click="handleItemEdit(row)"
|
||||
>
|
||||
@ -71,7 +71,7 @@
|
||||
<img src="@/assets/images/tableIcon/look.png" alt="" class="configureIcon" />
|
||||
<span>查看</span>
|
||||
</el-button>
|
||||
<el-button v-if="row.approvalStatus == 0" type="primary" link @click="auditData(row)"
|
||||
<el-button v-auth="'plan_finish_audit'" v-if="row.approvalStatus == 0" type="primary" link @click="auditData(row)"
|
||||
><img src="@/assets/images/tableIcon/seal.png" alt="" class="configureIcon" /><span>审批</span></el-button
|
||||
>
|
||||
</template>
|
||||
|
||||
@ -12,7 +12,6 @@
|
||||
:pagination="true"
|
||||
background
|
||||
:isShowSearch="true"
|
||||
:onReset="true"
|
||||
>
|
||||
<template #formButton="scope">
|
||||
<el-button v-auth="'project_add'" class="btnStyle" @click="handleAddItem">新增</el-button>
|
||||
@ -166,7 +165,7 @@ const columns: ColumnProps[] = [
|
||||
prop: "engineeringType",
|
||||
label: "项目类型",
|
||||
enum: DicTypeList.value,
|
||||
search: { el: "select", props: { filterable: true } },
|
||||
search: { el: "select", props: { filterable: true, clearable: true } },
|
||||
fieldNames: { label: "dictValue", value: "dictLabel" }
|
||||
},
|
||||
{
|
||||
@ -293,6 +292,9 @@ const dataCallback = (data: any) => {
|
||||
};
|
||||
};
|
||||
onBeforeMount(() => {
|
||||
if (route.query.projectType) {
|
||||
columns[4].search.defaultValue = +route.query.projectType;
|
||||
}
|
||||
if (route.query.projectStatus) {
|
||||
columns[5].search.defaultValue = +route.query.projectStatus;
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
:tabs="['项目名称', '工程名称']"
|
||||
:records="records"
|
||||
:activeIndex="modelActive"
|
||||
:activeInputVal="modelActiveInput"
|
||||
@change-page="onCurChange"
|
||||
@search="onSearchInput"
|
||||
:pageable="pages"
|
||||
@ -136,6 +137,7 @@ import divDialogComponent from "@/components/divDialogComponent/index.vue";
|
||||
import printJS from "print-js";
|
||||
const route = useRoute();
|
||||
const modelActive = ref(0);
|
||||
const modelActiveInput = ref("" as any);
|
||||
const pages = ref({
|
||||
pageNo: 1,
|
||||
pageSize: 7,
|
||||
@ -293,6 +295,7 @@ const onSearchInput = async (params: string) => {
|
||||
const { result } = await getDustengineeringPage({ engineeringName: params, ...pages.value });
|
||||
records.value = result.records;
|
||||
}
|
||||
onSearch(records.value[0]);
|
||||
};
|
||||
// leftMenu页面的分页
|
||||
const onCurChange = async (params: number) => {
|
||||
@ -382,9 +385,11 @@ watch(
|
||||
);
|
||||
onMounted(async () => {
|
||||
await getEngPage();
|
||||
searchSn.value = (records.value as any[])[0].engineeringSn;
|
||||
searchName.value = (records.value as any[])[0].engineeringName;
|
||||
searchSn.value = records.value[0].projectSn;
|
||||
searchName.value = records.value[0].projectName;
|
||||
if (route.query.projectName) {
|
||||
modelActiveInput.value = route.query.projectName;
|
||||
onSearchInput(route.query.projectName);
|
||||
let defaultActive = records.value.findIndex((item: any) => {
|
||||
return route.query.projectName == item.engineeringName;
|
||||
});
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
:tabs="['项目名称', '工程名称']"
|
||||
:records="records"
|
||||
:activeIndex="modelActive"
|
||||
:activeInputVal="modelActiveInput"
|
||||
@change-page="onCurChange"
|
||||
@search="onSearchInput"
|
||||
:pageable="pages"
|
||||
@ -138,6 +139,7 @@ import divDialogComponent from "@/components/divDialogComponent/index.vue";
|
||||
import printJS from "print-js";
|
||||
const route = useRoute();
|
||||
const modelActive = ref(0);
|
||||
const modelActiveInput = ref("" as any);
|
||||
const pages = ref({
|
||||
pageNo: 1,
|
||||
pageSize: 7,
|
||||
@ -295,6 +297,7 @@ const onSearchInput = async (params: string) => {
|
||||
const { result } = await getDustengineeringPage({ engineeringName: params, ...pages.value });
|
||||
records.value = result.records;
|
||||
}
|
||||
onSearch(records.value[0]);
|
||||
};
|
||||
// leftMenu页面的分页
|
||||
const onCurChange = async (params: number) => {
|
||||
@ -382,9 +385,11 @@ watch(
|
||||
);
|
||||
onMounted(async () => {
|
||||
await getEngPage();
|
||||
searchSn.value = (records.value as any[])[0].engineeringSn;
|
||||
searchName.value = (records.value as any[])[0].engineeringName;
|
||||
searchSn.value = records.value[0].projectSn;
|
||||
searchName.value = records.value[0].projectName;
|
||||
if (route.query.projectName) {
|
||||
modelActiveInput.value = route.query.projectName;
|
||||
onSearchInput(route.query.projectName);
|
||||
let defaultActive = records.value.findIndex((item: any) => {
|
||||
return route.query.projectName == item.engineeringName;
|
||||
});
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
:tabs="['项目名称', '工程名称']"
|
||||
:records="records"
|
||||
:activeIndex="modelActive"
|
||||
:activeInputVal="modelActiveInput"
|
||||
@change-page="onCurChange"
|
||||
@search="onSearchInput"
|
||||
:pageable="pages"
|
||||
@ -75,6 +76,7 @@ import { ColumnProps } from "@/components/ProTable/interface";
|
||||
import { getRealTimePage } from "@/api/modules/project";
|
||||
import { sendIframeMessage } from "@/utils/util";
|
||||
const modelActive = ref(0);
|
||||
const modelActiveInput = ref("" as any);
|
||||
const proTable = ref();
|
||||
const route = useRoute();
|
||||
const pages = ref({
|
||||
@ -219,6 +221,7 @@ const onSearchInput = async (params: string) => {
|
||||
const { result } = await getDustengineeringPage({ engineeringName: params, ...pages.value });
|
||||
records.value = result.records;
|
||||
}
|
||||
onSearch(records.value[0]);
|
||||
};
|
||||
// leftMenu页面的分页
|
||||
const onCurChange = async (params: number) => {
|
||||
@ -273,9 +276,11 @@ watch(
|
||||
);
|
||||
onMounted(async () => {
|
||||
await getEngPage();
|
||||
searchSn.value = (records.value as ResAiProjectPage[])[0].engineeringSn;
|
||||
searchName.value = (records.value as ResAiProjectPage[])[0].engineeringSnName;
|
||||
searchSn.value = records.value[0].projectSn;
|
||||
searchName.value = records.value[0].projectName;
|
||||
if (route.query.projectName) {
|
||||
modelActiveInput.value = route.query.projectName;
|
||||
onSearchInput(route.query.projectName);
|
||||
let defaultActive = records.value.findIndex((item: any) => {
|
||||
return route.query.projectName == item.engineeringName;
|
||||
});
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="milestoneBox">
|
||||
<div class="milestoneBox" @click="toPreProjectManagement">
|
||||
<div class="milestone-title">里程碑</div>
|
||||
<div class="milestone-sub-title">
|
||||
<img src="@/assets/images/xmgl/projectScreenIcon.png" alt="" srcset="" />
|
||||
@ -212,6 +212,8 @@
|
||||
import { ref, onMounted } from "vue";
|
||||
import { getEntSubItem } from "@/api/modules/huizhou";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const props = defineProps<{
|
||||
projectData: Object;
|
||||
engineeringSn: String;
|
||||
@ -219,6 +221,11 @@ const props = defineProps<{
|
||||
const leftDistance = ref(0);
|
||||
// 获取里程碑信息
|
||||
let objData = ref({} as any);
|
||||
// 跳转至项目前期管理
|
||||
const toPreProjectManagement = () => {
|
||||
let url = "/goverment/huizhou/preProjectManagement/index?projectName=" + props.projectData.engineering_name;
|
||||
router.push(url);
|
||||
};
|
||||
// 添加偏移距离
|
||||
const addLeftDistance = () => {
|
||||
if (leftDistance.value == 0) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user