diff --git a/package.json b/package.json index 995dc94..7389f95 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "admin-template", "management-system" ], + "repository": { "type": "git", "url": "https://gitee.com/y_project/RuoYi-Vue.git" @@ -38,9 +39,12 @@ "dependencies": { "@amap/amap-jsapi-loader": "^1.0.1", "@riophae/vue-treeselect": "0.4.0", + "@vue-office/docx": "^1.6.3", + "@vue/composition-api": "^1.7.2", "axios": "0.28.1", "clipboard": "2.0.8", "core-js": "3.37.1", + "docx-preview": "^0.3.5", "echarts": "^5.4.0", "element-ui": "^2.15.13", "file-saver": "2.0.5", @@ -61,6 +65,7 @@ "vue": "2.6.12", "vue-count-to": "1.0.13", "vue-cropper": "0.5.5", + "vue-demi": "^0.14.10", "vue-meta": "2.4.0", "vue-quill-editor": "^3.0.6", "vue-router": "3.4.9", diff --git a/public/docx/单体材料模板.docx b/public/docx/单体材料模板.docx new file mode 100644 index 0000000..5dfadc1 --- /dev/null +++ b/public/docx/单体材料模板.docx @@ -0,0 +1,15 @@ + + XXXXXXX项目单片材料 + + 投资主体简介 + 该项目位于所属功能区,建设地点位于xxxx,由xxxx有限公司,统一信用代码为xxxxx投资,由xxxxx有限公司施工,设计单位是xxx有限公司,建设起止时间于xxxxxx,其重点发展产业为xxxx,该项目的项目标签是xxxxx,整体的项目由xxx负责,联系方式是xxxxxxxxx。 + 规划信息 + 该项目总用地面积约XXXX平方米,容积率占xx,总建筑面积为xxxx万平方米,共有xx栋,标准建筑面积为xxx平方米,建筑密度为x%,最高建筑层数xx层,最高建筑高度xx米,其防火等级为xxx,机动车停车位xx辆和非机动车听车辆xx辆。 + 计划总投资及建设计划 + 该项目投资主体性质是xx,计划投资额度xxx亿元,实际总投资额xxxx万人民币。 + 当前进展情况 + 目前,该项目属于项目现状,于 xxxx日正式施工,截至目前建设进度。 + 企业运营情况 + 目前,该项目入驻企业数量共xx家,入驻企业行业类型为xxxxx,人员数量共计xxx人,入住率为x%,其中已出租面积xxx平方米,空置房屋xxx万平方米,工业厂房平均租金xx元/平方米*月。 + 存在困难问题 + 暂无。 diff --git a/public/docx/苏州工业园区总体报告模板.docx b/public/docx/苏州工业园区总体报告模板.docx new file mode 100644 index 0000000..6e6b63e --- /dev/null +++ b/public/docx/苏州工业园区总体报告模板.docx @@ -0,0 +1,12 @@ + 苏州工业园区工业上楼项目总体分析报告 + XXXX年 + + 一、总体项目概况 + 苏州工业园区积极推进工业上楼模式,截至xxxx年,园区规划工业上楼项目总数共计xx个,总建筑面积约xxxx万平方米,其中已建项目xx个,在建项目xx个,拟建项目xx个,这些项目广泛分布于城市核心区域及郊区新兴产业片区,通过垂直化空间利用,提升土地利用效率,推进产业升级与集聚发展。 + 二、当年项目情况 + xxxx年,苏州工业园区新开工上楼项目总数共计xx个,新开工项目总建筑面积达到xxxx万平方米,已建项目xx个,在建项目xx个,拟建项目xx个,力求为企业提供优质的生产和办公环境,同时在建设标准和质量上提出更高要求。 + 三、功能区情况分析 + 截至xxxx年,项目总数共xx个,其中高端制造与国际贸易区项目数量占xx个,独墅湖科教创新区项目数量占xx个,阳澄湖半岛旅游度假区项目数量占xx个,金鸡湖商务区项目数量占xx个,苏相合作区项目数量占xx个。 + 四、投资主体情况分析 + 截至xxxx年,项目总数共xx个,国企投资占xx个,民企投资占xx个,外企投资占xx个。 + diff --git a/src/api/manageApitwo/index.js b/src/api/manageApitwo/index.js new file mode 100644 index 0000000..b1b74b5 --- /dev/null +++ b/src/api/manageApitwo/index.js @@ -0,0 +1,38 @@ +// src/api/ManageApi/index.js +import request from "@/utils/request"; + +// 根据项目ID分页查询所有标签管理 +export function getallspan(params) { + return request({ + url: "/gysl/bqgl/searchId", + method: "get", + params, + }); +} +//新增数据 +export function addspan(data) { + return request({ + url: "/gysl/bqgl/add", + method: "post", + data, + }); +} +// 修改信息 +export function updatspan(data) { + return request({ + url: "/gysl/bqgl/edit", + method: "post", + data, + }); +} + +// 删除信息 +export function deletespan(idList) { + return request({ + url: "/gysl/bqgl/delete", + method: "delete", + params: { + idList: idList.join(","), // 将数组转换为逗号分隔的字符串 + }, + }); +} diff --git a/src/main.js b/src/main.js index 98b95ec..4612eed 100644 --- a/src/main.js +++ b/src/main.js @@ -1,4 +1,6 @@ import Vue from "vue"; +// 预览docx +import VueCompositionAPI from '@vue/composition-api' import Cookies from "js-cookie"; @@ -55,6 +57,8 @@ import DictData from "@/components/DictData"; //echarts import * as echarts from "echarts"; + + // 全局方法挂载 Vue.prototype.getDicts = getDicts; Vue.prototype.getConfigKey = getConfigKey; @@ -90,6 +94,8 @@ DictData.install(); * Currently MockJs will be used in the production environment, * please remove it before going online! ! ! */ +//预览docx +Vue.use(VueCompositionAPI) Vue.use(Element, { size: Cookies.get("size") || "medium", // set element-ui default size diff --git a/src/views/compilation/handbook/index.vue b/src/views/compilation/handbook/index.vue new file mode 100644 index 0000000..f8c4f1a --- /dev/null +++ b/src/views/compilation/handbook/index.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/views/compilation/knowledge/index.vue b/src/views/compilation/knowledge/index.vue index fe72ed1..17f7aca 100644 --- a/src/views/compilation/knowledge/index.vue +++ b/src/views/compilation/knowledge/index.vue @@ -41,12 +41,18 @@ @@ -59,7 +65,7 @@ - @@ -70,14 +76,22 @@ - + - - - + + + + + @@ -86,7 +100,10 @@ - + + + + @@ -108,8 +125,8 @@ :value="dict.value"> - - + + @@ -164,8 +181,8 @@ export default { detailOpen: false, // 查询参数 queryParams: { - pageNum: 1, - pageSize: 10, + current: 1, + size: 10, name: undefined, lx: undefined }, @@ -177,6 +194,7 @@ export default { fj: undefined, scsj: undefined, scyh: undefined, + wz: undefined, createBy: undefined, createId: undefined, createTime: undefined, @@ -192,6 +210,7 @@ export default { fj: undefined, scsj: undefined, scyh: undefined, + wz: undefined, createBy: undefined, createId: undefined, createTime: undefined, @@ -207,6 +226,9 @@ export default { lx: [ { required: true, message: "文件类型不能为空", trigger: "change" } ], + wz: [ + { required: true, message: "网址不能为空", trigger: "change" } + ], scyh: [ { required: true, message: "上传用户不能为空", trigger: "blur" } ], @@ -220,14 +242,15 @@ export default { 2: "研究报告", 3: "网络信息", 4: "其他", - } + }, + select: 'http' // 默认协议类型 }; }, created() { this.getList(); }, methods: { - //获取文件名字 + // 获取文件名字 getFileName(filePath) { if (filePath) { return filePath.split('/').pop(); @@ -237,7 +260,6 @@ export default { querySearchAsync(queryString, cb) { let results = []; - // 假设 getXmzskPage 是用于文件名称模糊查询的 API getXmzskPage({ name: queryString }).then(res => { res.data.records.forEach(item => { results.push({ @@ -274,6 +296,7 @@ export default { fj: undefined, scsj: undefined, scyh: undefined, + wz: undefined, createBy: undefined, createId: undefined, createTime: undefined, @@ -281,11 +304,12 @@ export default { updateId: undefined, updateTime: undefined }; + this.select = 'http'; // 重置协议类型 this.resetForm("form"); }, /** 搜索按钮操作 */ handleQuery() { - this.queryParams.pageNum = 1; + this.queryParams.current = 1; this.getList(); }, /** 重置按钮操作 */ @@ -310,6 +334,7 @@ export default { this.reset(); const catalogId = row.id; this.form = { ...row }; + this.setProtocolType(this.form.wz); // 设置协议类型 this.open = true; this.title = "修改项目知识库"; }, @@ -357,6 +382,36 @@ export default { }).catch(error => { console.error('API Request Error:', error); }); + }, + // 设置协议类型 + setProtocolType(url) { + if (url) { + if (url.startsWith('https://')) { + this.select = 'https'; + } else if (url.startsWith('http://')) { + this.select = 'http'; + } else { + this.select = 'http'; + this.form.wz = 'http://' + url; + } + } else { + this.select = 'http'; + } + }, + // 协议类型改变时更新网址 + handleProtocolChange() { + if (this.form.wz && !this.form.wz.startsWith(this.select + '://')) { + this.form.wz = this.select + '://' + this.form.wz.replace(/(http|https):\/\//, ''); + } + }, + // 文件类型改变时重置网址 + handleTypeChange() { + if (this.form.lx !== '3') { + this.form.wz = undefined; + this.select = 'http'; + } else { + this.setProtocolType(this.form.wz); + } } } }; diff --git a/src/views/compilation/onecailiao/index.vue b/src/views/compilation/onecailiao/index.vue index 25dbadd..3170964 100644 --- a/src/views/compilation/onecailiao/index.vue +++ b/src/views/compilation/onecailiao/index.vue @@ -1,356 +1,163 @@ \ No newline at end of file diff --git a/src/views/compilation/reporting/index.vue b/src/views/compilation/reporting/index.vue new file mode 100644 index 0000000..f552419 --- /dev/null +++ b/src/views/compilation/reporting/index.vue @@ -0,0 +1,224 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/ProjectDetails/Buildings.vue b/src/views/components/ProjectDetails/Buildings.vue index cbd37a4..79f7abf 100644 --- a/src/views/components/ProjectDetails/Buildings.vue +++ b/src/views/components/ProjectDetails/Buildings.vue @@ -419,21 +419,18 @@ export default { }; }, fetchBuildings() { - console.log('Fetching data for xmId:', this.xmId); + // console.log('Fetching data for xmId:', this.xmId); getjzxxinformationByxmId({ xmId: this.xmId }) .then(response => { - console.log('API response:', response); + // console.log('API response:', response); if (response.code === 200 && response.data) { this.buildings = Object.values(response.data); // 将对象转换为数组 - console.log('Buildings data after assignment:', this.buildings); - + // console.log('Buildings data after assignment:', this.buildings); // 默认选中第一个楼栋 if (this.buildings.length > 0) { this.selectedBuilding = this.buildings[0]; } - } else { - console.error('数据格式不正确:', response); - } + } else {} }) }, diff --git a/src/views/components/ProjectDetails/Companyenter.vue b/src/views/components/ProjectDetails/Companyenter.vue index df1e7c6..6e74055 100644 --- a/src/views/components/ProjectDetails/Companyenter.vue +++ b/src/views/components/ProjectDetails/Companyenter.vue @@ -232,16 +232,14 @@ export default { size: this.pagination.pageSize }; return getqyBasicInformationPage(params).then(response => { - console.log('Fetched Data:', response.data.records); + // console.log('Fetched Data:', response.data.records); this.tableData = response.data.records.map(item => ({ ...item, isEditing: false })); - console.log('Table Data:', this.tableData); + // console.log('Table Data:', this.tableData); this.pagination.total = response.data.total; - }).catch(error => { - console.error('获取数据失败:', error); - }); + }).catch(); }, // 编辑/保存方法 diff --git a/src/views/components/ProjectDetails/Memo.vue b/src/views/components/ProjectDetails/Memo.vue index 71e262d..654449c 100644 --- a/src/views/components/ProjectDetails/Memo.vue +++ b/src/views/components/ProjectDetails/Memo.vue @@ -246,8 +246,7 @@ export default { }, // 获取当前账号的名称 getCurrentUserName() { - // 假设当前账号的名称存储在 Vuex store 中 - return this.$store.state.user.name; // 根据实际情况调整 + return this.$store.state.user.name; }, // 格式化日期时间 formatDateTime(dateTime) { diff --git a/src/views/components/ProjectDetails/Months.vue b/src/views/components/ProjectDetails/Months.vue index e9b427b..a70c8f2 100644 --- a/src/views/components/ProjectDetails/Months.vue +++ b/src/views/components/ProjectDetails/Months.vue @@ -74,7 +74,7 @@ export default { ], currentPage: 1, pageSize: 10, - total: 40, + total: 0, } }, methods: { diff --git a/src/views/components/ProjectDetails/Others.vue b/src/views/components/ProjectDetails/Others.vue index 30151dd..853907a 100644 --- a/src/views/components/ProjectDetails/Others.vue +++ b/src/views/components/ProjectDetails/Others.vue @@ -235,7 +235,7 @@ export default { // 将新数据添加到 anotherInfo 数组中 this.anotherInfo.push({ - id: response.data.id, // 假设响应中包含新增数据的ID + id: response.data.id, zdname: this.form.zdname, zdinfor: this.form.zdinfor }); diff --git a/src/views/components/ProjectDetails/Projectpicture.vue b/src/views/components/ProjectDetails/Projectpicture.vue index c21b3f3..25b52dd 100644 --- a/src/views/components/ProjectDetails/Projectpicture.vue +++ b/src/views/components/ProjectDetails/Projectpicture.vue @@ -41,14 +41,7 @@
-
- - 标签管理: - -
-
-
123
-
+
@@ -56,9 +49,14 @@ - - \ No newline at end of file diff --git a/src/views/components/ProjectDetails/companyenter2.vue b/src/views/components/ProjectDetails/companyenter2.vue deleted file mode 100644 index 9dc9613..0000000 --- a/src/views/components/ProjectDetails/companyenter2.vue +++ /dev/null @@ -1,266 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/components/ProjectDetails/ditubiaodian.vue b/src/views/components/ProjectDetails/ditubiaodian.vue deleted file mode 100644 index 1b0c939..0000000 --- a/src/views/components/ProjectDetails/ditubiaodian.vue +++ /dev/null @@ -1,137 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/components/ProjectDetails/spanmanage.vue b/src/views/components/ProjectDetails/spanmanage.vue new file mode 100644 index 0000000..1110663 --- /dev/null +++ b/src/views/components/ProjectDetails/spanmanage.vue @@ -0,0 +1,425 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/analysis/message.vue b/src/views/components/analysis/message.vue index 45e6715..159b855 100644 --- a/src/views/components/analysis/message.vue +++ b/src/views/components/analysis/message.vue @@ -19,9 +19,9 @@
-
+ diff --git a/src/views/components/analysis/messagecompany.vue b/src/views/components/analysis/messagecompany.vue index 57d1b3b..21a0d84 100644 --- a/src/views/components/analysis/messagecompany.vue +++ b/src/views/components/analysis/messagecompany.vue @@ -19,9 +19,9 @@ -
+ diff --git a/src/views/manage-add/index.vue b/src/views/manage-add/index.vue index 7be620b..c51e741 100644 --- a/src/views/manage-add/index.vue +++ b/src/views/manage-add/index.vue @@ -236,7 +236,6 @@ export default { checkPermi, checkRole, loadData() { - console.log('Loading data for project ID:', this.projectId); getzwBasicInformationById(this.projectId).then(response => { const data = response.data; this.basicInformation = data.basicInformation; @@ -274,7 +273,7 @@ export default { } else { this[dataKey] = updatedData; } - console.log(`接收到 ${dataKey} 更新:`, updatedData); + // console.log(`接收到 ${dataKey} 更新:`, updatedData); }, isDefault(obj, defaultObj) { @@ -289,7 +288,7 @@ export default { saveAll() { this.loading = true; const tempData = this.prepareSubmitData(); // 复用数据准备逻辑 - console.log('准备暂存的完整数据:', JSON.stringify(tempData, null, 2)); // 打印完整数据 + // console.log('准备暂存的完整数据:', JSON.stringify(tempData, null, 2)); // 打印完整数据 tempBasicInformation(tempData) .then(response => { this.$message.success('暂存成功'); @@ -307,7 +306,7 @@ export default { submitAll() { this.loading = true; const submitData = this.prepareSubmitData(); - console.log('准备提交的完整数据:', JSON.stringify(submitData, null, 2)); // 打印完整数据 + // console.log('准备提交的完整数据:', JSON.stringify(submitData, null, 2)); // 打印完整数据 fillBasicInformation(submitData) .then(response => { this.$message.success('提交成功'); @@ -326,7 +325,7 @@ export default { auditBasicInformation(submitData) .then(response => { - console.log('提交成功:', response); + // console.log('提交成功:', response); this.$message.success('审核通过'); this.isSubmitted = true; this.$router.push('/manage'); @@ -342,7 +341,7 @@ export default { auditBasicInformation(submitData) .then(response => { - console.log('提交成功:', response); + // console.log('提交成功:', response); this.$message.success('修改成功'); this.isSubmitted = true; this.$router.push('/manage'); diff --git a/src/views/manage-info/index.vue b/src/views/manage-info/index.vue index c1e267c..6fd1688 100644 --- a/src/views/manage-info/index.vue +++ b/src/views/manage-info/index.vue @@ -287,7 +287,7 @@ export default { saveAll() { this.loading = true; const tempData = this.prepareSubmitData(); // 复用数据准备逻辑 - console.log('准备暂存的完整数据:', JSON.stringify(tempData, null, 2)); // 打印完整数据 + // console.log('准备暂存的完整数据:', JSON.stringify(tempData, null, 2)); // 打印完整数据 tempBasicInformation(tempData) .then(response => { this.$message.success('暂存成功'); @@ -316,7 +316,7 @@ export default { async submitAll() { this.loading = true; - // 校验 wysmxInformations 是否为空或包含 null + // 校验 wysmxInformations if (this.wysmxInformations.length === 0 || this.wysmxInformations.includes(null)) { this.$message.error('请填写模型管理信息'); this.loading = false; @@ -331,7 +331,7 @@ export default { return; } - // 校验 planInformation 的相关字段 + // 校验 planInformation const planRequiredFields = ['zydmj', 'rjl', 'zjzmj', 'jzds', 'zgjzcs', 'fhdj']; const planMissingFields = planRequiredFields.filter(field => !this.planInformation[field]); if (planMissingFields.length > 0) { @@ -340,7 +340,7 @@ export default { return; } - // 校验 basicInformation 的相关字段 + // 校验 basicInformation const basicRequiredFields = ['ssgnq', 'begainTime', 'endTime', 'xzfl', 'jsms']; const basicMissingFields = basicRequiredFields.filter(field => !this.basicInformation[field]); if (basicMissingFields.length > 0) { @@ -351,9 +351,9 @@ export default { - // 如果所有校验通过,则准备数据并提交 + // 准备数据并提交 const submitData = this.prepareSubmitData(); - console.log('准备提交的完整数据:', JSON.stringify(submitData, null, 2)); // 打印完整数据 + // console.log('准备提交的完整数据:', JSON.stringify(submitData, null, 2)); // 打印完整数据 fillBasicInformation(submitData) .then(response => { diff --git a/src/views/models/badlist/index.vue b/src/views/models/badlist/index.vue index 3ff8118..7641169 100644 --- a/src/views/models/badlist/index.vue +++ b/src/views/models/badlist/index.vue @@ -155,7 +155,7 @@ export default { getList() { this.loading = true; - // 确保只查询isFmqd=2的数据 + // 只查询isFmqd=2的数据 const params = { ...this.queryParams, isFmqd: 1 diff --git a/src/views/orientedtwo/bqspan/index.vue b/src/views/orientedtwo/bqspan/index.vue index 5861340..dc45ac3 100644 --- a/src/views/orientedtwo/bqspan/index.vue +++ b/src/views/orientedtwo/bqspan/index.vue @@ -1,6 +1,6 @@