From a9077cf2715466b12687852dad036a825df67f48 Mon Sep 17 00:00:00 2001 From: yanfeiyong <2060201549@qq.com> Date: Mon, 10 Mar 2025 20:02:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=A6=E7=BB=86=E5=89=8D=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- src/api/ManageApi/index.js | 22 +- src/assets/images/icon-cydxgl.svg | 1 - src/assets/images/icon-cysxmxgl.svg | 1 - src/assets/images/icon-pjdj@2x.png | Bin 0 -> 802 bytes src/assets/images/icon-qxgl.svg | 1 - src/assets/images/icon-tjfx-1.svg | 1 - src/assets/images/icon-xmhbgl.svg | 1 - src/assets/images/icon-xmpjgl.svg | 1 - src/views/components/ProjectDetails/Basic.vue | 460 ++++++++++-------- .../components/ProjectDetails/Programme.vue | 438 +++++++++++------ .../ProjectDetails/Projectpicture.vue | 153 +++++- .../ProjectDetails/Projectpicturetwo.vue | 4 +- src/views/components/dialog/basicinfo.vue | 350 +++++++++++++ src/views/components/dialog/luotu.vue | 0 15 files changed, 1041 insertions(+), 394 deletions(-) delete mode 100644 src/assets/images/icon-cydxgl.svg delete mode 100644 src/assets/images/icon-cysxmxgl.svg create mode 100644 src/assets/images/icon-pjdj@2x.png delete mode 100644 src/assets/images/icon-qxgl.svg delete mode 100644 src/assets/images/icon-tjfx-1.svg delete mode 100644 src/assets/images/icon-xmhbgl.svg delete mode 100644 src/assets/images/icon-xmpjgl.svg create mode 100644 src/views/components/dialog/basicinfo.vue create mode 100644 src/views/components/dialog/luotu.vue diff --git a/.env.development b/.env.development index 930a62e..313d61d 100644 --- a/.env.development +++ b/.env.development @@ -5,7 +5,7 @@ VUE_APP_TITLE = 苏州工业园区工业上楼项目系统 ENV = 'development' # 苏州工业园区工业上楼项目系统/开发环境 -VUE_APP_BASE_API = '/dev-api' +VUE_APP_BASE_API = '' # 路由懒加载 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/src/api/ManageApi/index.js b/src/api/ManageApi/index.js index f2eb4b0..d5af084 100644 --- a/src/api/ManageApi/index.js +++ b/src/api/ManageApi/index.js @@ -10,16 +10,26 @@ export function getBasicInformationById(id) { // 企业--基本信息==修改 export function updateBasicInformation(data) { - return request({ + return request({ url: `/gysl/basicInformation/edit`, method: 'post', - }) + data + }); } // 通过主键查询单条基本信息(企业规划信息) export function getProgrammeInformationById(id) { - return request({ - url: `/gysl/planInformation/{id}`, + return request({ + url: `/gysl/planInformation/${id}`, method: 'get' - }); -} \ No newline at end of file + }); + } + + // 修改规划信息 + export function updateProgrammeInformation(data) { + return request({ + url: `/gysl/planInformation/edit`, + method: 'post', + data + }); + } \ No newline at end of file diff --git a/src/assets/images/icon-cydxgl.svg b/src/assets/images/icon-cydxgl.svg deleted file mode 100644 index 4bbb32a..0000000 --- a/src/assets/images/icon-cydxgl.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/images/icon-cysxmxgl.svg b/src/assets/images/icon-cysxmxgl.svg deleted file mode 100644 index fd3e105..0000000 --- a/src/assets/images/icon-cysxmxgl.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/images/icon-pjdj@2x.png b/src/assets/images/icon-pjdj@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a84cc9d7b8c3e440e06c0af724f908b327873474 GIT binary patch literal 802 zcmV+-1Ks?IP)Px%+(|@1R9HvtmrqC(aTLeDZ`=VZ**{@Y&>>AicNGje2z6MY4nl__I(Uf2*$!O- zC8a|h3kn1~bcl$Zxfy75sDlTgJro@Z64n`(4(8EJ+CK^jI=@$=uFS4GJML<*#Qu)+ zd%t;~`M&qQGefAcMK#8QI*?aI4osnLWw|4%H>bQ3dhH(wP^X%?D6w?k(ENQ~3BC6B z4HUk<)I?2P?HKU`{FD8yED}H8;?G0c}Hl{;SBjodjjd7FJe|lVpt>@xZ{p z1WMaCXF`e?z09~{YJq2^5=PXOaX<{Q5NAz2G+QdBtU_L+d}bimEFTghvf#(FdMIO0 z8v*TRJor4HEUct^h@=<@?EsX}xu0WAk?k1RZFePNRuG$Lh4=VS`*=ug4Eda8gW~psu zlE9Y%_zD4Nk%iTtul?rOv+uMUB(JW$HYZzb3)oy?HJ2oC7XaG|e1I4>;-RO-=XWWz zJqhmtbU1={$s19#8UV!&$P%J8rH2;m{jIXCB$@fqhD_7)IzO2>*hx#fx>F;E`i4wn4v9?Su^5+6V(D$(t9pIncIMv zGvh};^eE}zdIOEf7LPd_d#?)F*3fWRKH>)T+gkkLbndF1dapoUaU?{a(^hI5s8h-I z5@Eu<<}_t${!x41>&f#|<`q{~p)MsIWl6F}-fihdJTO=Xsw?Dpc^6Dsy@vqQr|kdo zp>8GDAtb)%I`+&T4K4U`(-;Rcw?K5>Eq2{Uqu*Zmm%ZX7K~Ivpf9Dsx>UUWspA?nE g)`7g#syT)J0IZD&L;2OO?f?J)07*qoM6N<$f=~5vZ~y=R literal 0 HcmV?d00001 diff --git a/src/assets/images/icon-qxgl.svg b/src/assets/images/icon-qxgl.svg deleted file mode 100644 index 731fa69..0000000 --- a/src/assets/images/icon-qxgl.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/images/icon-tjfx-1.svg b/src/assets/images/icon-tjfx-1.svg deleted file mode 100644 index bcf49f9..0000000 --- a/src/assets/images/icon-tjfx-1.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/images/icon-xmhbgl.svg b/src/assets/images/icon-xmhbgl.svg deleted file mode 100644 index 4367201..0000000 --- a/src/assets/images/icon-xmhbgl.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/images/icon-xmpjgl.svg b/src/assets/images/icon-xmpjgl.svg deleted file mode 100644 index 9905340..0000000 --- a/src/assets/images/icon-xmpjgl.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/views/components/ProjectDetails/Basic.vue b/src/views/components/ProjectDetails/Basic.vue index 7c17a86..bbb319e 100644 --- a/src/views/components/ProjectDetails/Basic.vue +++ b/src/views/components/ProjectDetails/Basic.vue @@ -23,7 +23,9 @@
-
+
+ 项目代表性照片 +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 取 消 - 确 定 - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取 消 + 确 定 + + +
@@ -183,6 +190,9 @@ import { getBasicInformationById, updateBasicInformation } from '@/api/ManageApi/index'; export default { + dicts: [ + 'ssgnq' + ], props: { size: { type: String, @@ -196,28 +206,35 @@ export default { data() { return { descriptions: [], + dialogImageUrl: '', + dialogVisibletwo: false, dialogVisible: false, - title: '编辑项目', + title: '编辑基本信息', form: { name: '', xmfrdwxz: '', - nature: '', + nature: 0, sgdw: '', sjdw: '', - ztze: '', + ztze: 0, ssgnq: '', begainTime: '', - xzfl: '', + xzfl: 0, jsdd: '', prioritize: '', - jsms: '', + jsms: 0, label: '', projectLeader: '', phone: '', issuingTime: '', acceptanceTime: '', unitIntroduction: '', - introduction: '' + introduction: '', + fj: '' + }, + rules: { + name: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }], + jsdd: [{ required: true, message: '建设地点不能为空', trigger: 'blur' }], } }; }, @@ -225,58 +242,83 @@ export default { this.fetchData(); }, methods: { + handleRemove(file, fileList) { + console.log(file, fileList); + }, + handlePictureCardPreview(file) { + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + // 获取数据 fetchData() { getBasicInformationById(this.id) .then(response => { const data = response.data; - - // 处理数据类型转换 - data.nature = String(data.nature); - data.jsms = String(data.jsms); - data.ssgnq = String(data.ssgnq); - data.xzfl = String(data.xzfl); - - this.descriptions = [ - { label: '项目名称', value: data.name }, - { label: '项目法人单位', value: data.xmfrdwxz }, - { label: '项目法人单位性质', value: data.nature }, - { label: '施工单位', value: data.sgdw }, - { label: '设计单位', value: data.sjdw }, - { label: '总投资额(万元)', value: data.ztze }, - { label: '所属功能区', value: data.ssgnq }, - { label: '建设起止时间', value: data.begainTime }, - { label: '现状分类', value: data.xzfl }, - { label: '建设地点', value: data.jsdd }, - { label: '重点发展产业', value: data.prioritize }, - { label: '建设模式', value: data.jsms }, - { label: '项目标签', value: data.label }, - { label: '项目负责人', value: data.projectLeader }, - { label: '联系方式', value: data.phone }, - { label: '施工许可证发放时间', value: data.issuingTime }, - { label: '竣工验收时间', value: data.acceptanceTime }, - { label: '建设进度', value: data.acceptanceTime }, - { label: '项目法人单位简介', value: data.unitIntroduction }, - { label: '项目简介', value: data.introduction } - ]; - - // 初始化表单数据 + this.descriptions = this.formatDescriptions(data); this.form = { ...data }; }) .catch(error => { - console.error('There was an error fetching the data!', error); + console.error('数据获取失败:', error); }); }, - /** 导出按钮操作 */ + // 格式化描述信息 + formatDescriptions(data) { + return [ + { label: '项目名称', value: data.name }, + { label: '项目法人单位', value: data.xmfrdwxz }, + { label: '项目法人单位性质', value: data.nature }, + { label: '施工单位', value: data.sgdw }, + { label: '设计单位', value: data.sjdw }, + { label: '总投资额(万元)', value: data.ztze }, + { label: '所属功能区', value: data.ssgnq }, + { label: '建设起止时间', value: data.begainTime }, + { label: '现状分类', value: data.xzfl }, + { label: '建设地点', value: data.jsdd }, + { label: '重点发展产业', value: data.prioritize }, + { label: '建设模式', value: data.jsms }, + { label: '项目标签', value: data.label }, + { label: '项目负责人', value: data.projectLeader }, + { label: '联系方式', value: data.phone }, + { label: '施工许可证发放时间', value: data.issuingTime }, + { label: '竣工验收时间', value: data.acceptanceTime }, + { label: '建设进度', value: data.acceptanceTime }, + { label: '项目法人单位简介', value: data.unitIntroduction }, + { label: '项目简介', value: data.introduction } + ]; + }, + // 导出操作 handleExport() { this.download('system/post/export', { ...this.queryParams }, `post_${new Date().getTime()}.xlsx`); }, + // 打开编辑对话框 edit() { this.dialogVisible = true; }, + // 保存表单 saveForm() { - const formData = { + this.$refs.form.validate(valid => { + if (valid) { + const formData = this.prepareFormData(); + updateBasicInformation(formData) // 调用接口 + .then(response => { + this.$message.success('数据保存成功!'); + this.dialogVisible = false; + this.fetchData(); // 刷新数据 + }) + .catch(error => { + console.error('数据保存失败:', error); + this.$message.error('数据保存失败,请重试!'); + }); + } else { + this.$message.warning('请填写完整信息!'); + } + }); + }, + // 准备表单数据 + prepareFormData() { + return { id: this.id, name: this.form.name, xmfrdwxz: this.form.xmfrdwxz, @@ -284,8 +326,8 @@ export default { sgdw: this.form.sgdw, sjdw: this.form.sjdw, ztze: parseFloat(this.form.ztze), - ssgnq: parseInt(this.form.ssgnq), - begainTime: this.form.begainTime ? this.formatDateRange(this.form.begainTime) : '', + ssgnq: '', + begainTime: this.formatDateRange(this.form.begainTime), xzfl: parseInt(this.form.xzfl), jsdd: this.form.jsdd, prioritize: this.form.prioritize, @@ -297,41 +339,43 @@ export default { acceptanceTime: this.form.acceptanceTime, unitIntroduction: this.form.unitIntroduction, introduction: this.form.introduction, - createBy: '', - createId: 0, - createTime: '', - fj: '', - updateBy: '', - updateId: 0, - updateTime: '' + fj: this.form.fj, + createBy: '', + createId: 0, + createTime: '', + updateBy: '', + updateId: 0, + updateTime: '' }; - console.log('Sending form data:', formData); - - updateBasicInformation(formData) - .then(response => { - console.log('Data saved successfully:', response.data); - this.$message.success('数据保存成功!'); - this.dialogVisible = false; - // 刷新数据 - this.fetchData(); - }) - .catch(error => { - console.error('There was an error saving the data!', error); - this.$message.error('数据保存失败,请重试!'); - }); }, + // 格式化日期范围 formatDateRange(dateRange) { if (!dateRange || dateRange.length !== 2) return ''; const startDate = dateRange[0].toISOString().split('T')[0]; const endDate = dateRange[1].toISOString().split('T')[0]; return `${startDate} 至 ${endDate}`; + }, + // 处理附件上传成功 + handleAttachmentSuccess(response, file) { + this.form.fj = response.url; + }, + // 上传前验证 + beforeAttachmentUpload(file) { + const isImage = file.type.startsWith('image/'); + const isLt2M = file.size / 1024 / 1024 < 2; + if (!isImage) this.$message.error('只能上传图片文件!'); + if (!isLt2M) this.$message.error('上传图片大小不能超过 2MB!'); + return isImage && isLt2M; + }, + // 删除附件 + removeAttachment() { + this.form.fj = ''; } } }; - \ No newline at end of file diff --git a/src/views/components/ProjectDetails/Programme.vue b/src/views/components/ProjectDetails/Programme.vue index 6cd2c8f..cd05649 100644 --- a/src/views/components/ProjectDetails/Programme.vue +++ b/src/views/components/ProjectDetails/Programme.vue @@ -1,176 +1,308 @@ - - - - + } + \ No newline at end of file diff --git a/src/views/components/ProjectDetails/Projectpicture.vue b/src/views/components/ProjectDetails/Projectpicture.vue index c9377a2..ca6fc19 100644 --- a/src/views/components/ProjectDetails/Projectpicture.vue +++ b/src/views/components/ProjectDetails/Projectpicture.vue @@ -7,9 +7,9 @@ 项目画像
- - 编辑 编辑 @@ -18,30 +18,58 @@
-
+
-
评价等级
+
+ + 评价等级: + 12/60 + +
- - kooriookami - 18100000000 - +
+
+
评价要素
+
+ {{ evaluation.element }} +
+
+
+
评价排名
+
+ {{ evaluation.ranking }} +
+
+
- + + + +.table-container { + display: flex; + width: 100%; +} + +.table-column { + flex: 1; +} + +.table-header { + font-weight: bold; + text-align: center; + background-color: #F2F4F7; + font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; + font-weight: 600; + font-size: 0.88rem; + color: #3D3D3D; + line-height: 2.19rem; + text-align: center; + font-style: normal; + text-transform: none; + padding: .3rem 0; +} + +.table-row { + font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; + font-weight: 400; + font-size: 0.88rem; + color: #3D424C; + line-height: 2.56rem; + text-align: center; + font-style: normal; + text-transform: none; + padding: .3rem 0; +} + +.tablehead { + width: auto; + height: 2.38rem; + display: flex; + align-items: center; + gap: .3rem; +} + +.tablehead img { + width: 1.13rem; + height: 1.13rem; +} + \ No newline at end of file diff --git a/src/views/components/ProjectDetails/Projectpicturetwo.vue b/src/views/components/ProjectDetails/Projectpicturetwo.vue index a7061e7..139961f 100644 --- a/src/views/components/ProjectDetails/Projectpicturetwo.vue +++ b/src/views/components/ProjectDetails/Projectpicturetwo.vue @@ -56,7 +56,7 @@ -
+
diff --git a/src/views/components/dialog/basicinfo.vue b/src/views/components/dialog/basicinfo.vue new file mode 100644 index 0000000..1259a14 --- /dev/null +++ b/src/views/components/dialog/basicinfo.vue @@ -0,0 +1,350 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/dialog/luotu.vue b/src/views/components/dialog/luotu.vue new file mode 100644 index 0000000..e69de29