From c1512c5a34aab0619a68d06e4b6e7460d51a9e3d Mon Sep 17 00:00:00 2001 From: tcy <1193318383@qq.com> Date: Fri, 22 Aug 2025 11:11:19 +0800 Subject: [PATCH 01/41] =?UTF-8?q?feat(ctr):=20=E4=BC=98=E5=8C=96=E5=90=88?= =?UTF-8?q?=E5=90=8C=E4=BB=98=E6=AC=BE=E6=AF=94=E4=BE=8B=E8=BE=93=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在收入合同列表中添加预付款比例、尾款比例、质保金比例和付款比例列 - 在合同表单中将预付款比例、尾款比例和质保金比例的输入框改为专用的数字输入框 - 新增付款比例计算逻辑,确保四项比例之和为 100% - 优化表单验证逻辑,确保付款比例之和必须等于 100% - 修复了一些与输入格式相关的潜在问题 --- src/views/ctr/incomeContract/index.vue | 4 +++ src/views/ctr/index.vue | 37 +++++++++++++++++--------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/views/ctr/incomeContract/index.vue b/src/views/ctr/incomeContract/index.vue index c9a4ad9..b222822 100644 --- a/src/views/ctr/incomeContract/index.vue +++ b/src/views/ctr/incomeContract/index.vue @@ -64,6 +64,10 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/views/materials/materialsEquipment/materialReceive/index.vue b/src/views/materials/materialsEquipment/materialReceive/index.vue index 6e14b99..ecf7bc1 100644 --- a/src/views/materials/materialsEquipment/materialReceive/index.vue +++ b/src/views/materials/materialsEquipment/materialReceive/index.vue @@ -485,13 +485,15 @@ const addItem = () => { // 监听条目数据变化,自动计算缺件数量 const watchItemChanges = (index: number) => { watch( - () => [form.value.itemList[index].quantity, form.value.itemList[index].acceptedQuantity], + () => [form.value.itemList[index]?.quantity, form.value.itemList[index]?.acceptedQuantity], ([quantity, acceptedQuantity]) => { // 确保数量和验收数量都是数字 const qty = Number(quantity) || 0; const acceptedQty = Number(acceptedQuantity) || 0; // 计算缺件数量(数量 - 验收数量) - form.value.itemList[index].shortageQuantity = qty - acceptedQty; + if (form.value.itemList[index]) { + form.value.itemList[index].shortageQuantity = qty - acceptedQty; + } }, { immediate: true } ); diff --git a/src/views/out/settlementValueSubcontract/index.vue b/src/views/out/settlementValueSubcontract/index.vue index d25c1fd..393c571 100644 --- a/src/views/out/settlementValueSubcontract/index.vue +++ b/src/views/out/settlementValueSubcontract/index.vue @@ -105,7 +105,7 @@ - + @@ -121,7 +121,9 @@ - + + + @@ -138,6 +140,7 @@ + + diff --git a/src/views/tender/plan/index.vue b/src/views/tender/plan/index.vue index 614d97e..3f2eb41 100644 --- a/src/views/tender/plan/index.vue +++ b/src/views/tender/plan/index.vue @@ -28,33 +28,77 @@ + + + + @@ -142,7 +186,7 @@ @@ -159,18 +203,21 @@ - + + + + @@ -180,6 +227,7 @@ import { getDicts } from '@/api/system/dict/data'; import { Plus } from '@element-plus/icons-vue'; import { FormInstance } from 'element-plus'; import information from './comm/planPage.vue'; +import winTheBid from './comm/winTheBid.vue'; import { sheetList, tenderPlanList, @@ -436,12 +484,14 @@ const getTreeList = async () => { treeLoading.value = false; } }; +const subLoading = ref(false); const submitForm = async (formEl: FormInstance | undefined) => { if (!formEl) return; await formEl.validate(async (valid, fields) => { if (valid) { try { + subLoading.value = true; if (selectionData.value.length == 0) { ElMessage({ message: '请选择项目材料', @@ -476,8 +526,10 @@ const submitForm = async (formEl: FormInstance | undefined) => { }); closeDialog(); getList(); + subLoading.value = false; } } catch (error) { + subLoading.value = false; console.log(error); } } else { @@ -485,10 +537,28 @@ const submitForm = async (formEl: FormInstance | undefined) => { } }); }; -//确定修改 +const changeBiddingTime = (value: any, row: any) => { + updateTenderPlan({ + ...row + }).then((res) => { + if (res.code == 200) { + ElMessage({ + message: '修改成功', + type: 'success' + }); + getList(); + } + }); +}; +//上传投标文件 const handleSave = (row: any) => { informationRef.value.open(row, planType.value); }; +const winTheBidRef = ref(); +//上传中标文件 +const handleWinTheBid = (row: any) => { + winTheBidRef.value.open(row, planType.value); +}; //删除 const delHandle = (row: any) => { try { @@ -558,9 +628,10 @@ const delHandlebidd = (row: any) => { } }); }; + //查看文件 -const openPdf = (row: any) => { - window.open(row.url); +const openPdf = (url: any) => { + window.open(url); }; onMounted(() => { From f4cbde8ee2904a9591e2aed3883e92e72dd72fad Mon Sep 17 00:00:00 2001 From: ljx <15723110242@139.com> Date: Fri, 22 Aug 2025 15:57:20 +0800 Subject: [PATCH 04/41] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/tender/plan/comm/planPage.vue | 20 ++++++++--------- src/views/tender/plan/comm/winTheBid.vue | 28 +++++++++++++++--------- src/views/tender/plan/index.vue | 4 +++- 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/views/tender/plan/comm/planPage.vue b/src/views/tender/plan/comm/planPage.vue index a8db316..01f919c 100644 --- a/src/views/tender/plan/comm/planPage.vue +++ b/src/views/tender/plan/comm/planPage.vue @@ -1,9 +1,8 @@ @@ -41,15 +40,14 @@ const ruleForm = ref(); const rules = ref({ costEstimationFile: [{ required: true, message: '请上传招标文件', trigger: ['blur'] }] }); -const emit = defineProps({ - success: { - type: Function - // required: true - } -}); +const emit = defineEmits(['success']); const form = ref({ costEstimationFile: '' }); +const closeDialog = () => { + dialogVisible.value = false; + emit('success'); +}; const open = (rows: any, type: string) => { dialogVisible.value = true; @@ -68,7 +66,7 @@ const submitForm = () => { return; } dialogVisible.value = false; - emit.success(); + emit('success'); }); }; defineExpose({ diff --git a/src/views/tender/plan/comm/winTheBid.vue b/src/views/tender/plan/comm/winTheBid.vue index c606f32..2855123 100644 --- a/src/views/tender/plan/comm/winTheBid.vue +++ b/src/views/tender/plan/comm/winTheBid.vue @@ -1,5 +1,5 @@ @@ -78,6 +71,10 @@ const props = defineProps({ customStyles: { type: Object, default: () => ({}) + }, + showIcon: { + type: Boolean, + default: false } }); @@ -103,22 +100,26 @@ const trendText = computed(() => { display: flex; flex-direction: column; justify-content: space-between; - padding: 20px; + padding: 35px 10px; box-sizing: border-box; border: 1px solid rgba(29, 214, 255, 0.1); border-radius: 4px; // 增加轻微圆角,提升视觉效果 - + text-align: center; + + &__title { font-size: 14px; color: #8FABBF; line-height: 20px; } - + &__value-container { - display: flex; + // display: flex; align-items: baseline; + // align-items: center; + // flex-direction: column; } - + &__value { font-size: 24px; color: #fff; @@ -126,34 +127,34 @@ const trendText = computed(() => { margin-right: 5px; font-weight: bold; } - + &__unit { color: #8FABBF; font-size: 14px; } - + &__footer { display: flex; justify-content: space-between; align-items: center; } - + &__trend { display: flex; align-items: center; } - + &__trend-icon { width: 12px; height: 12px; margin-right: 4px; } - + &__trend-text { font-size: 14px; color: #8FABBF; } - + &__badge { width: 40px; height: 40px; diff --git a/src/views/largeScreen/components/bottomboxconpoent.vue b/src/views/largeScreen/components/bottomboxconpoent.vue index 6735331..7c2b9e7 100644 --- a/src/views/largeScreen/components/bottomboxconpoent.vue +++ b/src/views/largeScreen/components/bottomboxconpoent.vue @@ -1,45 +1,65 @@ \ No newline at end of file diff --git a/src/views/largeScreen/components/centerPage.vue b/src/views/largeScreen/components/centerPage.vue index aee49f0..c70df28 100644 --- a/src/views/largeScreen/components/centerPage.vue +++ b/src/views/largeScreen/components/centerPage.vue @@ -16,14 +16,19 @@ --> - + badgeIcon="top4" period="较上月" /> --> + + + + +
@@ -44,7 +49,7 @@ 成本率
--> - + @@ -59,7 +64,16 @@ import * as echarts from 'echarts'; import china from '@/assets/china.json'; import RevenueContractCard from './RevenueContractCard.vue'; import bottomboxconpoent from './bottomboxconpoent.vue'; -const data = ref({}); +import { totalAmount } from "@/api/largeScreen/index.js" +const bigDataObj = ref({}); + +const getTotalAmount = async () => { + const { data: { incomeTotalAmount, expensesTotalAmount, profitAmount, changeAmount } } = await totalAmount() + bigDataObj.value.incomeTotalAmount = incomeTotalAmount || 0; + bigDataObj.value.expensesTotalAmount = expensesTotalAmount || 0; + bigDataObj.value.profitAmount = profitAmount || 0; + bigDataObj.value.changeAmount = changeAmount || 0; +} // 地图容器引用 const mapRef = ref(null); @@ -181,6 +195,7 @@ const initEcharts = () => { // 组件挂载时初始化 onMounted(() => { + getTotalAmount() // 确保DOM渲染完成 nextTick(() => { initEcharts(); @@ -223,6 +238,6 @@ onUnmounted(() => { height: 60%; } - + } diff --git a/src/views/largeScreen/components/optionList.ts b/src/views/largeScreen/components/optionList.ts index 822fd94..e4b9b01 100644 --- a/src/views/largeScreen/components/optionList.ts +++ b/src/views/largeScreen/components/optionList.ts @@ -862,7 +862,7 @@ export const getBarOptions = (data: any) => { // 收支合同分析 export const getBarOptions2 = (data: any) => { const option = { - color:['#FF932A', '#678FE6', '#1DD6FF', '#00E396'], + color: ['#FF932A', '#678FE6', '#1DD6FF', '#00E396'], title: { text: '数量(个)', subtext: '16', @@ -872,7 +872,7 @@ export const getBarOptions2 = (data: any) => { color: '#9DADB7', fontSize: 16 }, - subtextStyle:{ + subtextStyle: { color: '#707070', fontSize: 32, fontWeight: 'bold' @@ -907,7 +907,7 @@ export const getBarOptions2 = (data: any) => { show: false }, data: [ - { value: 3, name: '100万一下' }, + { value: 3, name: '100万以下' }, { value: 4, name: '100-500万' }, { value: 5, name: '500-1000万' }, { value: 4, name: '1000万以上' }, diff --git a/src/views/largeScreen/components/rightPage.vue b/src/views/largeScreen/components/rightPage.vue index bcde746..8081940 100644 --- a/src/views/largeScreen/components/rightPage.vue +++ b/src/views/largeScreen/components/rightPage.vue @@ -45,38 +45,48 @@ import TitleComponent from './TitleComponent.vue'; import EchartBox from '@/components/EchartBox/index.vue'; import { getLineOption, getBarOptions } from './optionList'; import ProgressComponent from './ProgressComponent.vue'; +import { monthMoney, monthCash } from '@/api/largeScreen'; const lineOption = ref(); const barOption = ref(); -const getCapitalData = (data?: any) => { +const getCapitalData = async () => { + const { data } = await monthMoney() + const month = data.map((item: any) => item.month); + const income = data.map((item: any) => item.incomeAmount); + const expenses = data.map((item: any) => item.expensesAmount); + const profit = data.map((item: any) => item.profitAmount); // const xData = data.map((item) => item.time); // const yData = data.map((item) => item.content); const lineData = { - xLabel: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + xLabel: month, line1: [ - [100, 200, 150, 300, 250, 350, 400, 350, 450, 500, 400, 550], - [220, 250, 230, 280, 270, 300, 350, 320, 380, 400, 450, 500], - [300, 350, 320, 380, 400, 450, 500, 480, 520, 550, 600, 650] + income, + expenses, + profit ] // line2: ['20', '50', '12', '65', '30', '60'] }; lineOption.value = getLineOption(lineData); }; -const getTurnoverList = (data?: any) => { +const getTurnoverList = async () => { // const xData = data.map((item) => item.time); // const yData = data.map((item) => { // // 先将content转换为数字,再调用toFixed // const num = Number(item.content); // return isNaN(num) ? 0 : Number(num.toFixed(2)); // }); - + const { data } = await monthCash() + const month = data.map((item: any) => item.month); + const income = data.map((item: any) => item.incomeAmount); + const expenses = data.map((item: any) => item.expensesAmount); + // const profit = data.map((item: any) => item.profitAmount); const barData = { - name: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + name: month, value: [ - [2, 5, 15, 30, 25, 35, 40, 35, 45, 50, 40, 55], - [4, 3, 6, 11, 15, 22, 30, 14, 48, 22, 25, 60] + income, + expenses ] }; barOption.value = getBarOptions(barData); From 678f10c96b9ad0b5fc3ba1eb1499b6aff057c388 Mon Sep 17 00:00:00 2001 From: tcy <1193318383@qq.com> Date: Fri, 22 Aug 2025 17:18:05 +0800 Subject: [PATCH 06/41] =?UTF-8?q?feat(largeScreen):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=8E=B0=E9=87=91=E6=B5=81=E6=80=BB=E5=92=8C=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=B9=B6=E6=9B=B4=E6=96=B0=E5=8F=B3=E4=BE=A7=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 api/largeScreen/index.js 中添加 cashTotal 接口 - 在 rightPage.vue 中引入 cashTotal 接口并获取数据 - 更新 rightPage.vue 中的现金流数据显示,使用从接口获取的数据 --- src/api/largeScreen/index.js | 8 ++++++++ src/views/largeScreen/components/rightPage.vue | 18 +++++++++++------- src/views/largeScreen/index.vue | 2 ++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/api/largeScreen/index.js b/src/api/largeScreen/index.js index a108295..69bd7e8 100644 --- a/src/api/largeScreen/index.js +++ b/src/api/largeScreen/index.js @@ -20,3 +20,11 @@ export const monthCash = () => { method: 'get', }); }; +// 现金流总和 + +export const cashTotal = () => { + return request({ + url: '/money/big/screen/cashTotal', + method: 'get', + }); +}; \ No newline at end of file diff --git a/src/views/largeScreen/components/rightPage.vue b/src/views/largeScreen/components/rightPage.vue index 8081940..71725c9 100644 --- a/src/views/largeScreen/components/rightPage.vue +++ b/src/views/largeScreen/components/rightPage.vue @@ -11,17 +11,17 @@
现金流入
-
1000000
+
{{ bigDataObj.incomeCash }}
万元
现金流出
-
1000000
+
{{ bigDataObj.expensesCash }}
万元
净现金流
-
1000000
+
{{ bigDataObj.profitCash }}
万元
@@ -45,10 +45,11 @@ import TitleComponent from './TitleComponent.vue'; import EchartBox from '@/components/EchartBox/index.vue'; import { getLineOption, getBarOptions } from './optionList'; import ProgressComponent from './ProgressComponent.vue'; -import { monthMoney, monthCash } from '@/api/largeScreen'; +import { monthMoney, monthCash, cashTotal } from '@/api/largeScreen'; const lineOption = ref(); const barOption = ref(); +const bigDataObj = ref({}); const getCapitalData = async () => { const { data } = await monthMoney() @@ -56,8 +57,7 @@ const getCapitalData = async () => { const income = data.map((item: any) => item.incomeAmount); const expenses = data.map((item: any) => item.expensesAmount); const profit = data.map((item: any) => item.profitAmount); - // const xData = data.map((item) => item.time); - // const yData = data.map((item) => item.content); + const lineData = { xLabel: month, line1: [ @@ -81,7 +81,6 @@ const getTurnoverList = async () => { const month = data.map((item: any) => item.month); const income = data.map((item: any) => item.incomeAmount); const expenses = data.map((item: any) => item.expensesAmount); - // const profit = data.map((item: any) => item.profitAmount); const barData = { name: month, value: [ @@ -91,9 +90,14 @@ const getTurnoverList = async () => { }; barOption.value = getBarOptions(barData); }; +const getTotalAmonunt = async () => { + const { data } = await cashTotal() + bigDataObj.value = data +}; onMounted(() => { getCapitalData(); getTurnoverList(); + getTotalAmonunt(); }); //资金KPI diff --git a/src/views/largeScreen/index.vue b/src/views/largeScreen/index.vue index 8ce47fd..8c47968 100644 --- a/src/views/largeScreen/index.vue +++ b/src/views/largeScreen/index.vue @@ -21,6 +21,7 @@ import leftPage from './components/leftPage.vue'; import centerPage from './components/centerPage.vue'; import rightPage from './components/rightPage.vue'; // import '@/assets/styles/element.scss'; + \ No newline at end of file + diff --git a/src/views/largeScreen/components/RevenueContractCard.vue b/src/views/largeScreen/components/RevenueContractCard.vue index 14154dc..5f194d7 100644 --- a/src/views/largeScreen/components/RevenueContractCard.vue +++ b/src/views/largeScreen/components/RevenueContractCard.vue @@ -2,29 +2,12 @@
{{ title }}
- +
- {{ formattedValue }} + {{ props.value }} {{ unit }}
- - -
@@ -107,18 +90,18 @@ const trendText = computed(() => { box-sizing: border-box; border: 1px solid rgba(29, 214, 255, 0.1); border-radius: 4px; // 增加轻微圆角,提升视觉效果 - + &__title { font-size: 14px; - color: #8FABBF; + color: #8fabbf; line-height: 20px; } - + &__value-container { display: flex; align-items: baseline; } - + &__value { font-size: 24px; color: #fff; @@ -126,34 +109,34 @@ const trendText = computed(() => { margin-right: 5px; font-weight: bold; } - + &__unit { - color: #8FABBF; + color: #8fabbf; font-size: 14px; } - + &__footer { display: flex; justify-content: space-between; align-items: center; } - + &__trend { display: flex; align-items: center; } - + &__trend-icon { width: 12px; height: 12px; margin-right: 4px; } - + &__trend-text { font-size: 14px; - color: #8FABBF; + color: #8fabbf; } - + &__badge { width: 40px; height: 40px; diff --git a/src/views/largeScreen/components/bottomboxconpoent.vue b/src/views/largeScreen/components/bottomboxconpoent.vue index 6735331..661c26c 100644 --- a/src/views/largeScreen/components/bottomboxconpoent.vue +++ b/src/views/largeScreen/components/bottomboxconpoent.vue @@ -1,45 +1,158 @@ \ No newline at end of file +.bottom_box_text { + color: rgba(143, 171, 191, 1); + font-size: 14px; + line-height: 20px; + margin-bottom: 5px; +} + +.bottom_box_bottom { + width: 100%; + height: 8px; + margin: 5px 0; +} + +.cost-item { + color: #fff; + font-size: 14px; + line-height: 26px; + display: flex; + justify-content: space-between; +} + +.cost-label { + color: rgba(143, 171, 191, 1); +} + +.cost-value { + font-weight: 500; + color: #fff; +} + diff --git a/src/views/largeScreen/components/centerPage.vue b/src/views/largeScreen/components/centerPage.vue index aee49f0..c0ba314 100644 --- a/src/views/largeScreen/components/centerPage.vue +++ b/src/views/largeScreen/components/centerPage.vue @@ -1,146 +1,160 @@ diff --git a/src/views/largeScreen/components/leftPage.vue b/src/views/largeScreen/components/leftPage.vue index 683c9a3..325df42 100644 --- a/src/views/largeScreen/components/leftPage.vue +++ b/src/views/largeScreen/components/leftPage.vue @@ -1,56 +1,307 @@ @@ -58,13 +309,20 @@ onMounted(() => { .leftPage { width: 100%; height: 100%; - .kpi_box{ + .kpi_box { margin-bottom: 10px; } - .contract_box{ + .contract_box { height: 35vh; + display: flex; + flex-direction: column; // 按钮区和图表区垂直排列 } - .kpi_box,.contract_box { + .chart-container { + flex: 1; // 占满剩余高度,确保图表容器足够大 + min-height: 200px; // 最小高度,避免容器过矮 + } + .kpi_box, + .contract_box { padding: 10px; box-sizing: border-box; border: 1px solid rgba(29, 214, 255, 0.3); diff --git a/src/views/largeScreen/index.vue b/src/views/largeScreen/index.vue index 8ce47fd..13d939e 100644 --- a/src/views/largeScreen/index.vue +++ b/src/views/largeScreen/index.vue @@ -1,4 +1,4 @@ - @@ -156,6 +176,8 @@ const userStore = useUserStore(); const queryFormRef = ref(); const expensesContractFormRef = ref(); const currentProject = computed(() => userStore.selectedProject); +const detailContent = ref(''); +const detailVisible = ref(false); // 控制承包内容详情对话框的显示 const dialog = reactive({ visible: false, @@ -299,7 +321,10 @@ const handleShowFileList = async (row: ExpensesContractVO) => { }); } - +const handleShowDetail = (data) => { + detailContent.value = data.contractedContent + detailVisible.value = true; +} onMounted(() => { getList(); }); diff --git a/src/views/ctr/incomeContract/index.vue b/src/views/ctr/incomeContract/index.vue index ee2d04e..af3991a 100644 --- a/src/views/ctr/incomeContract/index.vue +++ b/src/views/ctr/incomeContract/index.vue @@ -61,6 +61,12 @@
+ + + @@ -82,10 +88,17 @@ - - 查看附件列表 - +
+ 修改合同 +
+
+ 查看分包内容 +
+
+ 查看附件列表 +
@@ -123,6 +136,17 @@ + + + + + @@ -131,9 +155,12 @@ import { listIncomeContract, getIncomeContract, delIncomeContract, addIncomeCont import { IncomeContractVO, IncomeContractQuery, IncomeContractForm } from '@/api/ctr/incomeContract/types'; import FileList from '@/components/FileList/index.vue'; import useUserStore from '@/store/modules/user'; +import { useRouter } from 'vue-router' + const { proxy } = getCurrentInstance(); const userStore = useUserStore(); const currentProject = computed(() => userStore.selectedProject); +const router = useRouter(); const { expenses_contract_type, income_contract_type } = toRefs( proxy?.useDict('income_contract_type', 'expenses_contract_type') @@ -154,7 +181,8 @@ const dialog = reactive({ visible: false, title: '' }); - +const detailVisible = ref(false); // 控制承包内容详情对话框的显示 +const detailContent = ref(''); const initFormData: IncomeContractForm = { id: undefined, projectId: undefined, @@ -292,7 +320,20 @@ const handleShowFileList = async (row: IncomeContractVO) => { }); } +const handleEdit = (row: IncomeContractVO) => { + // console.log(router); + router.push({ + path: "/ctr/update", + query: { + id: row.id, + } + }) +} +const handleShowDetail = (data) => { + detailContent.value = data.contractedContent + detailVisible.value = true; +} onMounted(() => { getList(); }); diff --git a/src/views/ctr/index.vue b/src/views/ctr/index.vue index 0412f38..25b464d 100644 --- a/src/views/ctr/index.vue +++ b/src/views/ctr/index.vue @@ -33,7 +33,10 @@ - + + + + diff --git a/src/views/ctr/update/index.vue b/src/views/ctr/update/index.vue new file mode 100644 index 0000000..13be196 --- /dev/null +++ b/src/views/ctr/update/index.vue @@ -0,0 +1,246 @@ + + + From 340954167fc9be327372504760fb2b9d1748c377 Mon Sep 17 00:00:00 2001 From: tcy <1193318383@qq.com> Date: Fri, 22 Aug 2025 21:19:19 +0800 Subject: [PATCH 20/41] =?UTF-8?q?refactor(ctr):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E5=92=8C=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 注释掉费用合同和收入合同页面的"合同金额"查询条件 - 修改费用合同页面的"分包内容详情"标题为"合同内容详情" - 修改收入合同页面的"承包内容详情"标题为"合同内容详情" - 调整收入合同页面"查看分包内容"按钮文字为"查看合同内容" --- src/views/ctr/expensesContract/index.vue | 6 +++--- src/views/ctr/incomeContract/index.vue | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/views/ctr/expensesContract/index.vue b/src/views/ctr/expensesContract/index.vue index 91cb795..141c854 100644 --- a/src/views/ctr/expensesContract/index.vue +++ b/src/views/ctr/expensesContract/index.vue @@ -15,9 +15,9 @@ - + 搜索 重置 @@ -93,7 +93,7 @@ v-if="scope.row.isUpdate">修改合同
- 查看分包内容 + 查看合同内容
@@ -136,7 +136,7 @@ - + @@ -69,6 +69,7 @@ :step="1" :controls="false" :disabled="scope.row.bidStatus == 1" + v-hasPermi="['tender:biddingPlan:edit']" /> @@ -80,7 +81,7 @@ link icon="FolderOpened" @click="handleSave(scope.row)" - v-hasPermi="['tender:segmentedIndicatorPlanning:edit']" + v-hasPermi="['tender:biddingPlan:uploadBiddingDocuments']" :disabled="scope.row.bidStatus == 1" >招标上传 @@ -89,7 +90,7 @@ link icon="FolderOpened" @click="handleWinTheBid(scope.row)" - v-hasPermi="['tender:segmentedIndicatorPlanning:edit']" + v-hasPermi="['tender:biddingPlan:uploadBiddingDocuments']" :disabled="scope.row.bidStatus == 1" >中标上传 @@ -102,7 +103,7 @@ icon="View" @click="handleDetail(scope.row)" :disabled="scope.row.bidStatus == 1" - v-hasPermi="['tender:segmentedIndicatorPlanning:getMore']" + v-hasPermi="['tender:biddingPlan:getMore']" >详情 删除 确定 @@ -232,7 +233,15 @@ From 5258b37d07521fb0faf2da5af59fc6a4b5856424 Mon Sep 17 00:00:00 2001 From: taoge1020 Date: Fri, 22 Aug 2025 22:52:29 +0800 Subject: [PATCH 23/41] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- src/components/FileUpload/index.vue | 60 ++++-- .../biddingManagemen/biddingLimit/index.vue | 4 +- .../listOfWinningBids/index.vue | 191 +++++++++++++++--- 4 files changed, 206 insertions(+), 51 deletions(-) diff --git a/.env.development b/.env.development index d905b86..6e07116 100644 --- a/.env.development +++ b/.env.development @@ -5,7 +5,7 @@ VITE_APP_TITLE = 煤科建管平台 VITE_APP_ENV = 'development' # 开发环境 -VITE_APP_BASE_API = 'http://192.168.110.209:8899' +VITE_APP_BASE_API = 'http://192.168.110.149:8899' # 无人机接口地址 diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue index 8bfd847..5011b9d 100644 --- a/src/components/FileUpload/index.vue +++ b/src/components/FileUpload/index.vue @@ -1,11 +1,28 @@