feat: 对大屏展示页面添加跳转至对应模块的功能以及修改列表筛选BUG

This commit is contained in:
kun 2024-06-25 15:12:42 +08:00
parent 5cb2a8fc5e
commit cb81521875
23 changed files with 225 additions and 74 deletions

View File

@ -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'
# 上传

View File

@ -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">

View File

@ -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">

View File

@ -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>

View File

@ -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 也应该携带参数

View File

@ -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>

View File

@ -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";

View File

@ -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;

View File

@ -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);

View File

@ -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使labelLine3dsetOption
option.series.push({
name: "pie2d",

View File

@ -136,6 +136,11 @@ onMounted(async () => {
background-size: 100% 100%;
}
}
.leftScreen,
.centerScreen,
.rightScreen {
z-index: 100;
}
.bottomContent {
display: flex;
width: 100%;

View File

@ -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({

View File

@ -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");
};

View File

@ -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();

View File

@ -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 () => {

View File

@ -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;
});

View File

@ -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>

View File

@ -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>

View File

@ -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;
}

View File

@ -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;
});

View File

@ -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;
});

View File

@ -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;
});

View File

@ -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) {