فهرست منبع

中图代码0914版本合并

lkk 8 ماه پیش
والد
کامیت
4a73b15548
19فایلهای تغییر یافته به همراه1256 افزوده شده و 1348 حذف شده
  1. 97 91
      src/api/zt/ztApi.js
  2. 22 0
      src/utils/MapHelper/MapHelper.js
  3. 0 0
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js
  4. 96 71
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.vue
  5. 44 16
      src/views/ConstructionApplication3D/Demolition/CQSetInfo.vue
  6. 379 402
      src/views/ConstructionApplication3D/Demolition/DemolitionList.vue
  7. 16 14
      src/views/ConstructionApplication3D/Demolition/ZDSetInfo.vue
  8. 77 46
      src/views/ConstructionApplication3D/NightscapeAnalysis/NightscapeAnalysis.vue
  9. 13 10
      src/views/ConstructionApplication3D/ZBFXAnalysisinfo/ZBFXAnalysisinfo.vue
  10. 169 6
      src/views/ConstructionApplication3D/billboard/addBillboardPoject.vue
  11. 87 74
      src/views/ConstructionApplication3D/billboard/billboardDesign.vue
  12. 1 48
      src/views/ConstructionApplication3D/billboard/billboarddetail.vue
  13. 30 12
      src/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue
  14. 6 8
      src/views/ConstructionApplication3D/projectManagement/projectManagement.vue
  15. 17 155
      src/views/ConstructionApplication3D/skylineAnalysis/TJXResult.vue
  16. 167 38
      src/views/ConstructionApplication3D/skylineAnalysis/skylineAnalysis.vue
  17. 0 0
      src/views/ConstructionApplication3D/skylineAnalysis/skylineExecute.js
  18. 4 2
      src/views/ConstructionApplication3D/zt.scss
  19. 31 355
      static/Config/config.js

+ 97 - 91
src/api/zt/ztApi.js

@@ -5,14 +5,13 @@ import { tansParams, blobValidate } from "@/utils/ruoyi";
 import cache from "@/plugins/cache";
 import { Notification, MessageBox, Message, Loading } from "element-ui";
 import { saveAs } from "file-saver";
-import { getToken } from "@/utils/auth";
 axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
 // 是否显示重新登录
 export let isReloginShow = false;
 // 创建axios实例
 const request = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
-  baseURL: window.axiosURI,
+  baseURL: window.ZTaxiosURI,
   //baseURL: "http://192.168.100.252:8080",
   // 超时
   timeout: 100000,
@@ -21,8 +20,6 @@ const request = axios.create({
 // request拦截器
 request.interceptors.request.use(
   (config) => {
-    //代码防止重复提交会导致浏览器内存溢出,因此没在这添加判断
-    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
     // 是否需要防止数据重复提交
     const isRepeatSubmit = (config.headers || {}).repeatSubmit === false;
     // get请求映射params参数
@@ -164,7 +161,7 @@ request.interceptors.response.use(
  */
 export async function getJZDJWord(data) {
   let response = await request({
-    url: "/model/exportWord/exportWord4",
+    url: "/sanya/exportWord/exportWord4",
     method: "post",
     responseType: "blob",
     data: data,
@@ -199,7 +196,7 @@ export async function getJZDJWord(data) {
  */
 export async function getZDBCWord(data) {
   let response = await request({
-    url: "/model/exportWord/exportWord3",
+    url: "/sanya/exportWord/exportWord3",
     method: "post",
     responseType: "blob",
     data: data,
@@ -231,7 +228,7 @@ export async function getZDBCWord(data) {
 // 查询项目信息列表
 export async function listProjectinformation(query) {
   return await request({
-    url: "/model/projectinformation/list",
+    url: "/sanya/projectinformation/list",
     method: "get",
     params: query,
   });
@@ -240,7 +237,7 @@ export async function listProjectinformation(query) {
 // 查询项目信息详细
 export async function getProjectinformation(id) {
   return await request({
-    url: "/model/projectinformation/" + id,
+    url: "/sanya/projectinformation/" + id,
     method: "get",
   });
 }
@@ -248,7 +245,7 @@ export async function getProjectinformation(id) {
 // 新增项目信息
 export async function addProjectinformation(data) {
   return await request({
-    url: "/model/projectinformation",
+    url: "/sanya/projectinformation",
     method: "post",
     data: data,
   });
@@ -257,7 +254,7 @@ export async function addProjectinformation(data) {
 // 修改项目信息
 export async function updateProjectinformation(data) {
   return await request({
-    url: "/model/projectinformation",
+    url: "/sanya/projectinformation",
     method: "put",
     data: data,
   });
@@ -266,7 +263,7 @@ export async function updateProjectinformation(data) {
 // 删除项目信息
 export async function delProjectinformation(id) {
   return await request({
-    url: "/model/projectinformation/" + id,
+    url: "/sanya/projectinformation/" + id,
     method: "delete",
   });
 }
@@ -274,7 +271,7 @@ export async function delProjectinformation(id) {
 // 查询报建模型列表
 export async function listConstructionmodel(query) {
   return await request({
-    url: "/model/constructionmodel/list",
+    url: "/sanya/constructionmodel/list",
     method: "get",
     params: query,
   });
@@ -283,7 +280,7 @@ export async function listConstructionmodel(query) {
 // 查询报建模型详细
 export async function getConstructionmodel(id) {
   return await request({
-    url: "/model/constructionmodel/" + id,
+    url: "/sanya/constructionmodel/" + id,
     method: "get",
   });
 }
@@ -291,7 +288,7 @@ export async function getConstructionmodel(id) {
 // 新增报建模型
 export async function addConstructionmodel(data) {
   return await request({
-    url: "/model/constructionmodel",
+    url: "/sanya/constructionmodel",
     method: "post",
     data: data,
   });
@@ -300,7 +297,7 @@ export async function addConstructionmodel(data) {
 // 修改报建模型
 export async function updateConstructionmodel(data) {
   return await request({
-    url: "/model/constructionmodel",
+    url: "/sanya/constructionmodel",
     method: "put",
     data: data,
   });
@@ -309,7 +306,7 @@ export async function updateConstructionmodel(data) {
 // 删除报建模型
 export async function delConstructionmodel(id) {
   return await request({
-    url: "/model/constructionmodel/" + id,
+    url: "/sanya/constructionmodel/" + id,
     method: "delete",
   });
 }
@@ -317,7 +314,7 @@ export async function delConstructionmodel(id) {
 // 查询项目模型指标人工核算值详细
 export async function getZtProjectModelZb(id) {
   return await request({
-    url: "/model/ZtProjectModelZb/" + id,
+    url: "/sanya/ZtProjectModelZb/" + id,
     method: "get",
   });
 }
@@ -325,7 +322,7 @@ export async function getZtProjectModelZb(id) {
 // 新增项目模型指标人工核算值
 export async function addZtProjectModelZb(data) {
   return await request({
-    url: "/model/ZtProjectModelZb",
+    url: "/sanya/ZtProjectModelZb",
     method: "post",
     data: data,
   });
@@ -334,7 +331,7 @@ export async function addZtProjectModelZb(data) {
 // 修改项目模型指标人工核算值
 export async function updateZtProjectModelZb(data) {
   return await request({
-    url: "/model/ZtProjectModelZb",
+    url: "/sanya/ZtProjectModelZb",
     method: "put",
     data: data,
   });
@@ -346,7 +343,7 @@ export async function updateZtProjectModelZb(data) {
 // 基准地价分析
 export async function getAnalyseResult(data) {
   return request({
-    url: "/model/jzdjanalyse/getAnalyseResult",
+    url: "/sanya/jzdjanalyse/getAnalyseResult",
     method: "post",
     data: data,
   });
@@ -355,7 +352,7 @@ export async function getAnalyseResult(data) {
 // 查询基准地价信息列表
 export async function listBenchmarkLandPrices(query) {
   return request({
-    url: "/model/BenchmarkLandPrices/list",
+    url: "/sanya/BenchmarkLandPrices/list",
     method: "get",
     params: query,
   });
@@ -364,7 +361,7 @@ export async function listBenchmarkLandPrices(query) {
 // 查询基准地价信息详细
 export async function getBenchmarkLandPrices(id) {
   return request({
-    url: "/model/BenchmarkLandPrices/" + id,
+    url: "/sanya/BenchmarkLandPrices/" + id,
     method: "get",
   });
 }
@@ -372,7 +369,7 @@ export async function getBenchmarkLandPrices(id) {
 // 新增基准地价信息
 export async function addBenchmarkLandPrices(data) {
   return request({
-    url: "/model/BenchmarkLandPrices",
+    url: "/sanya/BenchmarkLandPrices",
     method: "post",
     data: data,
   });
@@ -381,7 +378,7 @@ export async function addBenchmarkLandPrices(data) {
 // 修改基准地价信息
 export async function updateBenchmarkLandPrices(data) {
   return request({
-    url: "/model/BenchmarkLandPrices",
+    url: "/sanya/BenchmarkLandPrices",
     method: "put",
     data: data,
   });
@@ -390,14 +387,14 @@ export async function updateBenchmarkLandPrices(data) {
 // 删除基准地价信息
 export async function delBenchmarkLandPrices(id) {
   return request({
-    url: "/model/BenchmarkLandPrices/" + id,
+    url: "/sanya/BenchmarkLandPrices/" + id,
     method: "delete",
   });
 }
 // 查询基准地价分析结果列表
 export function listZtBenchmarkLandPriceResults(query) {
   return request({
-    url: "/model/ZtBenchmarkLandPriceResults/list",
+    url: "/sanya/ZtBenchmarkLandPriceResults/list",
     method: "get",
     params: query,
   });
@@ -406,7 +403,7 @@ export function listZtBenchmarkLandPriceResults(query) {
 // 查询基准地价分析结果详细
 export function getZtBenchmarkLandPriceResults(id) {
   return request({
-    url: "/model/ZtBenchmarkLandPriceResults/" + id,
+    url: "/sanya/ZtBenchmarkLandPriceResults/" + id,
     method: "get",
   });
 }
@@ -414,7 +411,7 @@ export function getZtBenchmarkLandPriceResults(id) {
 // 新增基准地价分析结果
 export function addZtBenchmarkLandPriceResults(data) {
   return request({
-    url: "/model/ZtBenchmarkLandPriceResults",
+    url: "/sanya/ZtBenchmarkLandPriceResults",
     method: "post",
     data: data,
   });
@@ -423,7 +420,7 @@ export function addZtBenchmarkLandPriceResults(data) {
 // 修改基准地价分析结果
 export function updateZtBenchmarkLandPriceResults(data) {
   return request({
-    url: "/model/ZtBenchmarkLandPriceResults",
+    url: "/sanya/ZtBenchmarkLandPriceResults",
     method: "put",
     data: data,
   });
@@ -432,7 +429,7 @@ export function updateZtBenchmarkLandPriceResults(data) {
 // 删除基准地价分析结果
 export function delZtBenchmarkLandPriceResults(id) {
   return request({
-    url: "/model/ZtBenchmarkLandPriceResults/" + id,
+    url: "/sanya/ZtBenchmarkLandPriceResults/" + id,
     method: "delete",
   });
 }
@@ -442,7 +439,7 @@ export function delZtBenchmarkLandPriceResults(id) {
 // 01 征地补偿标准列表 list
 export function getZdBcbzList(query) {
   return request({
-    url: "/model/zdbcbz/list",
+    url: "/sanya/zdbcbz/list",
     method: "get",
     params: query,
   });
@@ -450,14 +447,14 @@ export function getZdBcbzList(query) {
 // 征地  补偿标准 getbyid
 export function getZdBcbzById(id) {
   return request({
-    url: "/model/zdbcbz/getInfo/" + id,
+    url: "/sanya/zdbcbz/getInfo/" + id,
     method: "get",
   });
 }
 //添加  征地  补偿标准 add
 export function addZdBcbz(data) {
   return request({
-    url: "/model/zdbcbz/",
+    url: "/sanya/zdbcbz/",
     method: "post",
     data: data,
   });
@@ -465,7 +462,7 @@ export function addZdBcbz(data) {
 // 更新 征地  补偿标准 update
 export function updateZdBcbz(data) {
   return request({
-    url: "/model/zdbcbz/",
+    url: "/sanya/zdbcbz/",
     method: "put",
     data: data,
   });
@@ -473,7 +470,7 @@ export function updateZdBcbz(data) {
 // 删除 征地  补偿标准 delbyid
 export function delZdBcbz(id) {
   return request({
-    url: "/model/zdbcbz/" + id,
+    url: "/sanya/zdbcbz/" + id,
     method: "delete",
   });
 }
@@ -481,7 +478,7 @@ export function delZdBcbz(id) {
 // 02 青苗 补偿标准列表 list
 export function getQmbcbzList(query) {
   return request({
-    url: "/model/qmbcbz/list",
+    url: "/sanya/qmbcbz/list",
     method: "get",
     params: query,
   });
@@ -489,14 +486,14 @@ export function getQmbcbzList(query) {
 // 青苗 补偿标准 getbyid
 export function getQmbcbzById(id) {
   return request({
-    url: "/model/qmbcbz/" + id,
+    url: "/sanya/qmbcbz/" + id,
     method: "get",
   });
 }
 //添加 青苗 补偿标准 add
 export function addQmbcbz(data) {
   return request({
-    url: "/model/qmbcbz",
+    url: "/sanya/qmbcbz",
     method: "post",
     data: data,
   });
@@ -504,7 +501,7 @@ export function addQmbcbz(data) {
 // 更新 青苗 补偿标准 update
 export function updateQmbcbz(data) {
   return request({
-    url: "/model/qmbcbz",
+    url: "/sanya/qmbcbz",
     method: "put",
     data: data,
   });
@@ -512,7 +509,7 @@ export function updateQmbcbz(data) {
 // 删除 青苗 补偿标准 delbyid
 export function delQmbcbz(id) {
   return request({
-    url: "/model/qmbcbz/" + id,
+    url: "/sanya/qmbcbz/" + id,
     method: "delete",
   });
 }
@@ -520,7 +517,7 @@ export function delQmbcbz(id) {
 // 03 拆迁 补偿标准列表 list
 export function getCqBcbzList(query) {
   return request({
-    url: "/model/cqbczd/list",
+    url: "/sanya/cqbczd/list",
     method: "get",
     params: query,
   });
@@ -528,14 +525,14 @@ export function getCqBcbzList(query) {
 // 拆迁 补偿标准 getbyid
 export function getCqBcbzById(id) {
   return request({
-    url: "/model/cqbcbz/" + id,
+    url: "/sanya/cqbcbz/" + id,
     method: "get",
   });
 }
 //添加 拆迁 补偿标准 add
 export function addCqBcbz(data) {
   return request({
-    url: "/model/cqbcbz",
+    url: "/sanya/cqbcbz",
     method: "post",
     data: data,
   });
@@ -543,7 +540,7 @@ export function addCqBcbz(data) {
 // 更新 拆迁 补偿标准 update
 export function updateCqBcbz(data) {
   return request({
-    url: "/model/cqbcbz",
+    url: "/sanya/cqbcbz",
     method: "post",
     data: data,
   });
@@ -551,14 +548,14 @@ export function updateCqBcbz(data) {
 // 删除 拆迁 补偿标准 delbyid
 export function delCqBcbz(id) {
   return request({
-    url: "/model/cqbcbz/" + id,
+    url: "/sanya/cqbcbz/" + id,
     method: "delete",
   });
 }
 // 03-1 拆迁 补偿标准项 list
 export function getCqBcbzItemList(query) {
   return request({
-    url: "/model/cqbcbzitem/list",
+    url: "/sanya/cqbcbzitem/list",
     method: "get",
     params: query,
   });
@@ -566,14 +563,14 @@ export function getCqBcbzItemList(query) {
 // 拆迁 补偿标准项 getbyid
 export function getCqBcbzItemById(id) {
   return request({
-    url: "/model/cqbcbzitem/" + id,
+    url: "/sanya/cqbcbzitem/" + id,
     method: "get",
   });
 }
 //添加 拆迁 补偿标准项 add
 export function addCqBcbzItem(data) {
   return request({
-    url: "/model/cqbcbzitem",
+    url: "/sanya/cqbcbzitem",
     method: "post",
     data: data,
   });
@@ -581,7 +578,7 @@ export function addCqBcbzItem(data) {
 // 更新 拆迁 补偿标准项 update
 export function updateCqBcbzItem(data) {
   return request({
-    url: "/model/cqbcbzitem",
+    url: "/sanya/cqbcbzitem",
     method: "put",
     data: data,
   });
@@ -589,7 +586,7 @@ export function updateCqBcbzItem(data) {
 // 删除 拆迁 补偿标准项 delbyid
 export function delCqBcbzItem(id) {
   return request({
-    url: "/model/cqbcbzitem/" + id,
+    url: "/sanya/cqbcbzitem/" + id,
     method: "delete",
   });
 }
@@ -597,7 +594,7 @@ export function delCqBcbzItem(id) {
 // 04 拆迁 分析结果 列表 list
 export function getCqResultList(query) {
   return request({
-    url: "/model/cqresult/list",
+    url: "/sanya/cqresult/list",
     method: "get",
     params: query,
   });
@@ -605,14 +602,14 @@ export function getCqResultList(query) {
 // 拆迁 分析结果 getbyid
 export function getCqResultById(id) {
   return request({
-    url: "/model/cqresult/" + id,
+    url: "/sanya/cqresult/" + id,
     method: "get",
   });
 }
 //添加 拆迁 分析结果 add
 export function addCqResult(data) {
   return request({
-    url: "/model/cqresult",
+    url: "/sanya/cqresult",
     method: "post",
     data: data,
   });
@@ -620,7 +617,7 @@ export function addCqResult(data) {
 // 更新 拆迁 分析结果 update
 export function updateCqResult(data) {
   return request({
-    url: "/model/cqresult",
+    url: "/sanya/cqresult",
     method: "post",
     data: data,
   });
@@ -628,7 +625,7 @@ export function updateCqResult(data) {
 // 删除 拆迁 分析结果 delbyid
 export function delCqResult(id) {
   return request({
-    url: "/model/cqresult/" + id,
+    url: "/sanya/cqresult/" + id,
     method: "delete",
   });
 }
@@ -636,7 +633,7 @@ export function delCqResult(id) {
 // 05 征地 分析结果 列表 list
 export function getZdResultList(query) {
   return request({
-    url: "/model/zdresult/list",
+    url: "/sanya/zdresult/list",
     method: "get",
     params: query,
   });
@@ -644,14 +641,14 @@ export function getZdResultList(query) {
 // 征地 分析结果 getbyid
 export function getZdResultById(id) {
   return request({
-    url: "/model/zdresult/" + id,
+    url: "/sanya/zdresult/" + id,
     method: "get",
   });
 }
 //添加 征地 分析结果 add
 export function addZdResult(data) {
   return request({
-    url: "/model/zdresult",
+    url: "/sanya/zdresult",
     method: "post",
     data: data,
   });
@@ -659,7 +656,7 @@ export function addZdResult(data) {
 // 更新 征地 分析结果 update
 export function updateZdResult(data) {
   return request({
-    url: "/model/zdresult",
+    url: "/sanya/zdresult",
     method: "post",
     data: data,
   });
@@ -667,7 +664,7 @@ export function updateZdResult(data) {
 // 删除 征地 分析结果 delbyid
 export function delZdResult(id) {
   return request({
-    url: "/model/zdresult/" + id,
+    url: "/sanya/zdresult/" + id,
     method: "delete",
   });
 }
@@ -675,7 +672,7 @@ export function delZdResult(id) {
 // 06 青苗 分析结果 列表 list
 export function getQmResultList(query) {
   return request({
-    url: "/model/qmresult/list",
+    url: "/sanya/qmresult/list",
     method: "get",
     params: query,
   });
@@ -683,14 +680,14 @@ export function getQmResultList(query) {
 // 青苗 分析结果 getbyid
 export function getQmResultById(id) {
   return request({
-    url: "/model/qmresult/" + id,
+    url: "/sanya/qmresult/" + id,
     method: "get",
   });
 }
 //添加 青苗 分析结果 add
 export function addQmResult(data) {
   return request({
-    url: "/model/qmresult",
+    url: "/sanya/qmresult",
     method: "post",
     data: data,
   });
@@ -698,7 +695,7 @@ export function addQmResult(data) {
 // 更新 青苗 分析结果 update
 export function updateQmResult(data) {
   return request({
-    url: "/model/qmresult",
+    url: "/sanya/qmresult",
     method: "post",
     data: data,
   });
@@ -706,14 +703,14 @@ export function updateQmResult(data) {
 // 删除 青苗 分析结果 delbyid
 export function delQmResult(id) {
   return request({
-    url: "/model/qmresult/" + id,
+    url: "/sanya/qmresult/" + id,
     method: "delete",
   });
 }
 // 07 征收补偿项目  列表 list
 export function getZdProjectList(query) {
   return request({
-    url: "/model/zdproject/list",
+    url: "/sanya/zdproject/list",
     method: "get",
     params: query,
   });
@@ -721,14 +718,14 @@ export function getZdProjectList(query) {
 // 征收补偿项目  getbyid
 export function getZdProjectById(id) {
   return request({
-    url: "/model/zdproject/" + id,
+    url: "/sanya/zdproject/" + id,
     method: "get",
   });
 }
 //添加 征收补偿项目  add
 export function addZdProject(data) {
   return request({
-    url: "/model/zdproject",
+    url: "/sanya/zdproject",
     method: "post",
     data: data,
   });
@@ -736,7 +733,7 @@ export function addZdProject(data) {
 // 更新 征收补偿项目 update
 export function updateZdProject(data) {
   return request({
-    url: "/model/zdproject",
+    url: "/sanya/zdproject",
     method: "post",
     data: data,
   });
@@ -744,13 +741,13 @@ export function updateZdProject(data) {
 // 删除 征收补偿项目 delbyid
 export function delZdProject(id) {
   return request({
-    url: "/model/zdproject/" + id,
+    url: "/sanya/zdproject/" + id,
     method: "delete",
   });
 }
 export async function expotZDBCWord(data) {
   let response = await request({
-    url: "/model/zdproject/exportWord",
+    url: "/sanya/zdproject/exportWord",
     method: "post",
     responseType: "blob",
     data: data,
@@ -784,7 +781,7 @@ export async function expotZDBCWord(data) {
 // 08 权属 分析结果 列表 list
 export function getQsResultList(query) {
   return request({
-    url: "/model/qsresult/list",
+    url: "/sanya/qsresult/list",
     method: "get",
     params: query,
   });
@@ -792,14 +789,14 @@ export function getQsResultList(query) {
 // 权属 分析结果 getbyid
 export function getQsResultById(id) {
   return request({
-    url: "/model/qsresult/" + id,
+    url: "/sanya/qsresult/" + id,
     method: "get",
   });
 }
 //添加 权属 分析结果 add
 export function addQsResult(data) {
   return request({
-    url: "/model/qsresult",
+    url: "/sanya/qsresult",
     method: "post",
     data: data,
   });
@@ -807,7 +804,7 @@ export function addQsResult(data) {
 // 更新 权属 分析结果 update
 export function updateQsResult(data) {
   return request({
-    url: "/model/qsresult",
+    url: "/sanya/qsresult",
     method: "post",
     data: data,
   });
@@ -815,7 +812,7 @@ export function updateQsResult(data) {
 // 删除 权属 分析结果 delbyid
 export function delQsResult(id) {
   return request({
-    url: "/model/qsresult/" + id,
+    url: "/sanya/qsresult/" + id,
     method: "delete",
   });
 }
@@ -826,7 +823,7 @@ export function delQsResult(id) {
 // 查询夜景灯光列列表
 export function listZtLightList(query) {
   return request({
-    url: "/model/ZtLightList/list",
+    url: "/sanya/ZtLightList/list",
     method: "get",
     params: query,
   });
@@ -835,7 +832,7 @@ export function listZtLightList(query) {
 // 查询夜景灯光列详细
 export function getZtLightList(id) {
   return request({
-    url: "/model/ZtLightList/" + id,
+    url: "/sanya/ZtLightList/" + id,
     method: "get",
   });
 }
@@ -843,7 +840,7 @@ export function getZtLightList(id) {
 // 新增夜景灯光列
 export function addZtLightList(data) {
   return request({
-    url: "/model/ZtLightList",
+    url: "/sanya/ZtLightList",
     method: "post",
     data: data,
   });
@@ -852,7 +849,7 @@ export function addZtLightList(data) {
 // 修改夜景灯光列
 export function updateZtLightList(data) {
   return request({
-    url: "/model/ZtLightList",
+    url: "/sanya/ZtLightList",
     method: "put",
     data: data,
   });
@@ -861,7 +858,7 @@ export function updateZtLightList(data) {
 // 删除夜景灯光列
 export function delZtLightList(id) {
   return request({
-    url: "/model/ZtLightList/" + id,
+    url: "/sanya/ZtLightList/" + id,
     method: "delete",
   });
 }
@@ -872,7 +869,7 @@ export function delZtLightList(id) {
 // 查询广告项目信息列表
 export function listZtBillboardInfoList(query) {
   return request({
-    url: "/model/ZtBillboardInfoList/list",
+    url: "/sanya/ZtBillboardInfoList/list",
     method: "get",
     params: query,
   });
@@ -881,7 +878,7 @@ export function listZtBillboardInfoList(query) {
 // 查询广告项目信息详细
 export function getZtBillboardInfoList(id) {
   return request({
-    url: "/model/ZtBillboardInfoList/" + id,
+    url: "/sanya/ZtBillboardInfoList/" + id,
     method: "get",
   });
 }
@@ -889,7 +886,7 @@ export function getZtBillboardInfoList(id) {
 // 新增广告项目信息
 export function addZtBillboardInfoList(data) {
   return request({
-    url: "/model/ZtBillboardInfoList",
+    url: "/sanya/ZtBillboardInfoList",
     method: "post",
     data: data,
   });
@@ -898,7 +895,7 @@ export function addZtBillboardInfoList(data) {
 // 修改广告项目信息
 export function updateZtBillboardInfoList(data) {
   return request({
-    url: "/model/ZtBillboardInfoList",
+    url: "/sanya/ZtBillboardInfoList",
     method: "put",
     data: data,
   });
@@ -907,7 +904,7 @@ export function updateZtBillboardInfoList(data) {
 // 删除广告项目信息
 export function delZtBillboardInfoList(id) {
   return request({
-    url: "/model/ZtBillboardInfoList/" + id,
+    url: "/sanya/ZtBillboardInfoList/" + id,
     method: "delete",
   });
 }
@@ -915,7 +912,7 @@ export function delZtBillboardInfoList(id) {
 // 查询广告模型信息列表
 export function listBillboardModelList(query) {
   return request({
-    url: "/model/billboardModelList/list",
+    url: "/sanya/billboardModelList/list",
     method: "get",
     params: query,
   });
@@ -924,7 +921,7 @@ export function listBillboardModelList(query) {
 // 查询广告模型信息详细
 export function getBillboardModelList(id) {
   return request({
-    url: "/model/billboardModelList/" + id,
+    url: "/sanya/billboardModelList/" + id,
     method: "get",
   });
 }
@@ -932,7 +929,16 @@ export function getBillboardModelList(id) {
 // 新增广告模型信息
 export function addBillboardModelList(data) {
   return request({
-    url: "/model/billboardModelList",
+    url: "/sanya/billboardModelList",
+    method: "post",
+    data: data,
+  });
+}
+
+// 批量新增广告模型信息
+export function addBillboardModelLists(data) {
+  return request({
+    url: "/sanya/billboardModelList/adds",
     method: "post",
     data: data,
   });
@@ -941,7 +947,7 @@ export function addBillboardModelList(data) {
 // 修改广告模型信息
 export function updateBillboardModelList(data) {
   return request({
-    url: "/model/billboardModelList",
+    url: "/sanya/billboardModelList",
     method: "put",
     data: data,
   });
@@ -950,7 +956,7 @@ export function updateBillboardModelList(data) {
 // 删除广告模型信息
 export function delBillboardModelList(id) {
   return request({
-    url: "/model/billboardModelList/" + id,
+    url: "/sanya/billboardModelList/" + id,
     method: "delete",
   });
 }

+ 22 - 0
src/utils/MapHelper/MapHelper.js

@@ -44,6 +44,28 @@ export const mapQuery = async (url, queryObj) => {
     return null;
   }
 };
+export const mapanalyzePost = async (url, queryObj) => {
+  let response = await CTservice.post(url, queryObj);
+  debugger;
+  if (response && response.data) {
+    return response.data;
+  } else {
+    return null;
+  }
+};
+export const mapanalyze = async (url, params) => {
+  let response = await CTservice({
+    url: url,
+    method: "get",
+    params: params,
+  });
+
+  if (response && response.data) {
+    return response.data;
+  } else {
+    return null;
+  }
+};
 
 /**
  * 墨卡托转经纬度

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js


+ 96 - 71
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.vue

@@ -76,24 +76,26 @@
                         </el-col>
                       </el-row>
                       <el-row>
-                        <el-col :span="12">
+                        <el-col :span="8">
                           <el-button v-if="itemModel.AnalysisStatus == '完成'" size="mini" type="primary">{{
                             itemModel.AnalysisStatus }}</el-button>
                           <el-button v-if="itemModel.AnalysisStatus == '正在分析'" size="mini" type="success">{{
                             itemModel.AnalysisStatus }}</el-button>
                           <el-button v-if="itemModel.AnalysisStatus == '异常'" size="mini" type="danger">{{
                             itemModel.AnalysisStatus }}</el-button>
-                          <el-button v-if="itemModel.AnalysisStatus == '异常'" size="mini" type="danger">{{
-                            itemModel.AnalysisStatus }}</el-button>
                         </el-col>
                         <el-col :span="12">
-                          <div style="float: right">
+                           <div ><!--style="float: right" -->
                             <!-- <el-button size="mini" type="default">日志</el-button> -->
                             <el-button size="mini" type="default"
                               @click="openAnalyzeResults(itemModel.id)">结果</el-button>
                             <el-button size="mini" type="default" @click="handleGetBG(itemModel.id)">报告</el-button>
                           </div>
                         </el-col>
+                        <el-col :span="4">
+                          <el-button size="mini" type="warning"
+                            @click="deleteAnalyzeResults(itemModel.id)">删除</el-button>
+                        </el-col>
                       </el-row>
                     </el-card>
                   </el-col>
@@ -122,6 +124,7 @@ import BenchmarkLandPrice from "./BenchmarkLandPrice.js";
 import {
   cartesian3ToWGS84,
   mapQuery,
+  mapanalyze,
   flatten,
   mercator2lonLat,
   undergroundMode,
@@ -135,7 +138,7 @@ import {
   midpoint,
   difference,
 } from "@turf/turf";
-import { getJZDJWord, listBenchmarkLandPrices, addBenchmarkLandPrices, updateBenchmarkLandPrices, addZtBenchmarkLandPriceResults, getBenchmarkLandPrices, listZtBenchmarkLandPriceResults, getAnalyseResult } from "@/api/zt/ztApi.js";
+import { getJZDJWord, listBenchmarkLandPrices, addBenchmarkLandPrices, updateBenchmarkLandPrices, addZtBenchmarkLandPriceResults, getBenchmarkLandPrices, listZtBenchmarkLandPriceResults, getAnalyseResult, delBenchmarkLandPrices } from "@/api/zt/ztApi.js";
 let handlerPolygon; var polygonEntity = null;
 export default {
   data() {
@@ -349,7 +352,7 @@ export default {
       that.loading = true;
       this.$refs[formName].validate(async (valid) => {
         if (valid) {
-          var area = that.getRegionArea() / 666.66;
+          var area = await that.getRegionArea() / 666.66;
           if (area > 3000) {
             this.clear();
             that.loading = false;
@@ -510,7 +513,7 @@ export default {
       viewer.flyTo(polygonEntity)
     },
     //范围面积
-    getRegionArea() {
+    async getRegionArea() {
       debugger
       var points1 = this.form.ProjectScope;
       var parts1 = [];
@@ -520,9 +523,31 @@ export default {
       }
       poly1 = polygon([parts1]);
       var textarea = area(poly1) * window.earthRadius;
-      return textarea;
+return textarea;
+      // let sd = { point2Ds: JSON.stringify(points1), unit: 'METER', prjCoordSys: { epsgcode: 4326 } };
+      // let data = await mapanalyze(window.supermapIServerUrl + '/iserver/services/geometry/restjsr/v1/geometry/area.rjson', sd);
+      // if (data) {
+      //   return data.area;
+      // } else {
+      //   return 0
+      // }
+
     },
 
+    /**
+     * 删除基准地价分析结果
+     * @param BenchmarkLandPriceid 基准地价id
+     */
+    async deleteAnalyzeResults(BenchmarkLandPriceid) {
+      let data = await delBenchmarkLandPrices(BenchmarkLandPriceid);
+      if (data.code == 200) {
+        this.$message({
+          message: "删除成功",
+          type: "success",
+        });
+      }
+      this.init();
+    },
     /**
      *  打开分析结果弹窗
      * @param BenchmarkLandPrice 基准地价信息
@@ -722,69 +747,69 @@ export default {
       }
 
     },
-    /**
-     * 与已有的规划地块比较看是否包含
-     * @param points
-     */
-    calculateBooleanContains(points) {
-      let DataPs = points.map((item) => {
-        let xyz = cartesian3ToWGS84(item);
-        return [xyz.lng, xyz.lat];
-      });
-      if (DataPs.length > 0) {
-        if (
-          JSON.stringify(DataPs[0]) != JSON.stringify(DataPs[DataPs.length - 1])
-        ) {
-          DataPs.push(DataPs[0]);
-        }
-        //绘制的图形边界
-        let polygonPs = polygon([DataPs]);
-        //规划地块的范围
-        for (let index = 0; index < this.LayerData.GHDKData.length; index++) {
-          const geometry = this.LayerData.GHDKData[index].geometry;
-
-          let point3ds = [];
-          let pointholes = [];
-          let startindex = 0;
-          for (let index = 0; index < geometry.parts.length; index++) {
-            let thisps = [];
-            const endindex = startindex + geometry.parts[index];
-            let geometryPoints = geometry.points.slice(startindex, endindex);
-            for (
-              let pointindex = 0;
-              pointindex < geometryPoints.length;
-              pointindex++
-            ) {
-              const point = geometryPoints[pointindex];
-              thisps.push([point.x, point.y]);
-            }
-            if (geometry.partTopo[index] === 1) {
-              point3ds.push(thisps);
-            } else {
-              pointholes.push(thisps);
-            }
-
-            startindex = endindex;
-          }
-
-          // 主多边形
-          var mainPolygon = polygon(point3ds);
-
-          // 岛洞多边形
-          var holePolygon = polygon(pointholes);
-
-          // 计算差集 得到有导洞的图形
-          var getdifference = difference(mainPolygon, holePolygon);
-          let areaPs = booleanContains(getdifference, polygonPs);
-          if (areaPs) {
-            return true;
-          }
-        }
-        return false;
-      } else {
-        return false;
-      }
-    },
+    // /**
+    //  * 与已有的规划地块比较看是否包含
+    //  * @param points
+    //  */
+    // calculateBooleanContains(points) {
+    //   let DataPs = points.map((item) => {
+    //     let xyz = cartesian3ToWGS84(item);
+    //     return [xyz.lng, xyz.lat];
+    //   });
+    //   if (DataPs.length > 0) {
+    //     if (
+    //       JSON.stringify(DataPs[0]) != JSON.stringify(DataPs[DataPs.length - 1])
+    //     ) {
+    //       DataPs.push(DataPs[0]);
+    //     }
+    //     //绘制的图形边界
+    //     let polygonPs = polygon([DataPs]);
+    //     //规划地块的范围
+    //     for (let index = 0; index < this.LayerData.GHDKData.length; index++) {
+    //       const geometry = this.LayerData.GHDKData[index].geometry;
+
+    //       let point3ds = [];
+    //       let pointholes = [];
+    //       let startindex = 0;
+    //       for (let index = 0; index < geometry.parts.length; index++) {
+    //         let thisps = [];
+    //         const endindex = startindex + geometry.parts[index];
+    //         let geometryPoints = geometry.points.slice(startindex, endindex);
+    //         for (
+    //           let pointindex = 0;
+    //           pointindex < geometryPoints.length;
+    //           pointindex++
+    //         ) {
+    //           const point = geometryPoints[pointindex];
+    //           thisps.push([point.x, point.y]);
+    //         }
+    //         if (geometry.partTopo[index] === 1) {
+    //           point3ds.push(thisps);
+    //         } else {
+    //           pointholes.push(thisps);
+    //         }
+
+    //         startindex = endindex;
+    //       }
+
+    //       // 主多边形
+    //       var mainPolygon = polygon(point3ds);
+
+    //       // 岛洞多边形
+    //       var holePolygon = polygon(pointholes);
+
+    //       // 计算差集 得到有导洞的图形
+    //       var getdifference = difference(mainPolygon, holePolygon);
+    //       let areaPs = booleanContains(getdifference, polygonPs);
+    //       if (areaPs) {
+    //         return true;
+    //       }
+    //     }
+    //     return false;
+    //   } else {
+    //     return false;
+    //   }
+    // },
 
     clearGHDK() {
       //删除规划地块图层

+ 44 - 16
src/views/ConstructionApplication3D/Demolition/CQSetInfo.vue

@@ -337,15 +337,32 @@ export default {
      * 保存修改
      */
     save() {
-      if (this.bcbz == "") {
-        this.$layer.alert("请选择补偿标准");
+      var that = this;
+      if (that.bcbz == "") {
+        that.$layer.alert("请选择补偿标准");
         return;
       }
+
       debugger;
-      var index = window.ZSBC.CQBCList.findIndex((t) => t.value == this.bcbz);
-      if (index > -1) {
-        window.ZSBC.CQBCList[index] = this.curBCBZ;
-        this.$layer.alert("保存完成");
+      if (window.isUseDB) {
+        var item = {
+          id: that.curBCBZ.id,
+          name: that.curBCBZ.name
+        }
+        updateCqBcbz(item).then((res) => {
+          if (res)
+            that.$layer.alert("保存完成");
+
+        }).catch((err) => {
+          console.log(err)
+        })
+      }
+      else {
+        var index = window.ZSBC.CQBCList.findIndex((t) => t.value == this.bcbz);
+        if (index > -1) {
+          window.ZSBC.CQBCList[index] = this.curBCBZ;
+          this.$layer.alert("保存完成");
+        }
       }
     },
     /***
@@ -377,14 +394,25 @@ export default {
     saveData() {
       debugger;
       var val = (window.ZSBC.CQBCList.length + 1).toString();
+      var that=this;
       var newBCBZ = {
-        label: this.ruleForm.name,
-        value: val,
-        BCBZ: this.curBCBZ.BCBZ,
-      };
-      window.ZSBC.CQBCList.push(newBCBZ);
-      this.bcbzList = window.ZSBC.CQBCList;
-      this.bcbz = val;
+          id: val,
+          name: that.ruleForm.name,
+          bcbz: that.curBCBZ.bcbz,
+        };
+      if (window.isUseDB) {
+        addCqBcbz(newBCBZ).then((res)=>{
+          if(res)
+          that.$layer.alert("保存完成");
+        }).catch((err)=>{
+          console.log(err)
+        })
+      }
+      else {
+        window.ZSBC.CQBCList.push(newBCBZ);
+        that.bcbzList = window.ZSBC.CQBCList;
+        that.bcbz = val;
+      }
     },
     /**
      * 编辑按钮
@@ -400,10 +428,10 @@ export default {
       this.$layer.confirm("确定要删除吗?", {}, function () {
         delCqBcbzItem([row.id]).then((res) => {
           if (res)
-          this.$layer.alert("数据已删除!");
+            this.$layer.alert("数据已删除!");
         }).catch((err) => {
-            console.log(err)
-          })
+          console.log(err)
+        })
 
       }, function () {
         return

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 379 - 402
src/views/ConstructionApplication3D/Demolition/DemolitionList.vue


+ 16 - 14
src/views/ConstructionApplication3D/Demolition/ZDSetInfo.vue

@@ -220,7 +220,9 @@ export default {
 
           if (response && response.code == 200) {
             this.$layer.alert("保存完成");
+            that.getInitData();
           }
+         
         }).catch((err) => {
           console.log(err)
         });
@@ -259,23 +261,23 @@ export default {
     saveData() {
       debugger;
       var val = (window.ZSBC.ZDBCList.length + 1)
+      var that=this;
       var newBCBZ =
       {
-        "azbcbs": this.curBCBZ.azbcbs,
-        "azbcf": this.curBCBZ.azbcf,
-        "bchj": this.curBCBZ.bchj,
+        "azbcbs": that.curBCBZ.azbcbs,
+        "azbcf": that.curBCBZ.azbcf,
+        "bchj": that.curBCBZ.bchj,
         "id": val,
-        "name": this.ruleForm.name,
-        "tbcz": this.curBCBZ.tbcz,
-        "tdbcbs": this.curBCBZ.tdbcbs,
-        "tdbcf": this.curBCBZ.tdbcf,
-
+        "name": that.ruleForm.name,
+        "tbcz": that.curBCBZ.tbcz,
+        "tdbcbs": that.curBCBZ.tdbcbs,
+        "tdbcf": that.curBCBZ.tdbcf,
       };
       if (window.isUseDB) {
-        Model.id = null
         addZdBcbz(newBCBZ).then((response) => {
           if (response && response.code == 200) {
-            this.$layer.alert("保存完成");
+            that.$layer.alert("保存完成");
+            that.getInitData();
           }
         }).catch((err) => {
           console.log(err)
@@ -283,10 +285,10 @@ export default {
       }
       else {
         window.ZSBC.ZDBCList.push(newBCBZ);
-        this.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.ZDBCList));
-        this.bcbz = val;
-        this.curBCBZ = this.bcbzList.find(t => t.id == this.bcbz);
-        this.$layer.alert("保存完成");
+        that.bcbzList = JSON.parse(JSON.stringify(window.ZSBC.ZDBCList));
+        that.bcbz = val;
+        that.curBCBZ = that.bcbzList.find(t => t.id == that.bcbz);
+        that.$layer.alert("保存完成");
       }
 
     },

+ 77 - 46
src/views/ConstructionApplication3D/NightscapeAnalysis/NightscapeAnalysis.vue

@@ -52,18 +52,19 @@
           <el-col :span="24" style="border: 1px solid #fff">
             <el-form
               ref="dgyform"
+              :rules="rules"
               :model="dgyform"
               label-width="80px"
               style="padding: 1rem 1rem 0rem 1rem"
             >
-              <el-form-item label="光源名称">
+              <el-form-item label="光源名称" prop="lightname">
                 <el-input
                   size="mini"
                   v-model="dgyform.lightname"
                   placeholder="请输入光源名称"
                 ></el-input>
               </el-form-item>
-              <el-form-item label="光源类型">
+              <el-form-item label="光源类型" prop="lighttype">
                 <el-select
                   size="mini"
                   v-model="dgyform.lighttype"
@@ -79,6 +80,8 @@
                   size="mini"
                   v-model="dgyform.color"
                 ></el-color-picker>
+              </el-form-item>
+              <el-form-item label="光源位置" prop="location">
                 <el-button size="mini" @click="addPoint"
                   >添加光源位置</el-button
                 >
@@ -133,7 +136,7 @@
               </el-form-item>
             </el-form>
             <div class="SaveCenter">
-              <el-button size="mini" type="primary" @click="onSubmit"
+              <el-button size="mini" type="primary" @click="onSubmit('dgyform')"
                 >保存</el-button
               >
               <el-button size="mini" @click="resetForm">取消</el-button>
@@ -184,6 +187,17 @@ export default {
         //   z: 0,
         // },
       },
+      rules: {
+        lightname: [
+          { required: true, message: "请输入光源名称", trigger: "blur" },
+        ],
+        lighttype: [
+          { required: true, message: "请输入光源类型", trigger: "blur" },
+        ],
+        // location: [
+        //   { required: true, message: "请绘制光源位置", trigger: "blur" },
+        // ],
+      },
     };
   },
   props: {
@@ -267,51 +281,64 @@ export default {
       });
     },
 
-    async onSubmit() {
-      //更新
-      if (this.dgyform.id) {
-        // let gydata = this.gyTableData.find((c) => c.id == this.dgyform.id);
-        // let data = JSON.parse(JSON.stringify(this.dgyform));
-        // gydata.lightname = data.lightname;
-        // gydata.color = data.color;
-        // gydata.cutoffdistance = data.cutoffdistance;
-        // gydata.decay = data.decay;
-        // gydata.intensity = data.intensity;
-        // gydata.location = data.location;
-        // gydata.LightSource = this.dgyform.LightSource;
-        this.dgyform.location = JSON.stringify(this.dgyform.location);
-        var rownum = await updateZtLightList(this.dgyform);
-        this.resetForm();
-        if (rownum.code == 200) {
-          this.$message({
-            message: "修改成功",
-            type: "success",
-          });
-          //更新列表及光源
-          this.getModelLightData();
-        }
+    async onSubmit(formName) {
+      if (!this.dgyform.location || !this.dgyform.location.x) {
+        this.$message({
+          message: "请点击添加光源位置按钮添加光源",
+          type: "warning",
+        });
+        return;
       }
-      //添加
-      else {
-        debugger;
-        this.dgyform.id = uuidv4();
-        // let data = JSON.parse(JSON.stringify(this.dgyform));
-        // data.LightSource = this.dgyform.LightSource;
-        // this.gyTableData.push(this.dgyform);
-        this.dgyform.location = JSON.stringify(this.dgyform.location);
-        this.dgyform.isModelAssociated = true;
-        this.dgyform.modelId = this.info.id;
-        var rownum = await addZtLightList(this.dgyform);
-        this.resetForm();
-        if (rownum.code == 200) {
-          this.$message({
-            message: "添加成功",
-            type: "success",
-          });
-          //更新列表及光源
-          this.getModelLightData();
+      this.$refs[formName].validate(async (valid) => {
+        if (valid) {
+          //更新
+          if (this.dgyform.id) {
+            // let gydata = this.gyTableData.find((c) => c.id == this.dgyform.id);
+            // let data = JSON.parse(JSON.stringify(this.dgyform));
+            // gydata.lightname = data.lightname;
+            // gydata.color = data.color;
+            // gydata.cutoffdistance = data.cutoffdistance;
+            // gydata.decay = data.decay;
+            // gydata.intensity = data.intensity;
+            // gydata.location = data.location;
+            // gydata.LightSource = this.dgyform.LightSource;
+            this.dgyform.location = JSON.stringify(this.dgyform.location);
+            var rownum = await updateZtLightList(this.dgyform);
+            this.resetForm();
+            if (rownum.code == 200) {
+              this.$message({
+                message: "修改成功",
+                type: "success",
+              });
+              //更新列表及光源
+              this.getModelLightData();
+            }
+          }
+          //添加
+          else {
+            debugger;
+            this.dgyform.id = uuidv4();
+            // let data = JSON.parse(JSON.stringify(this.dgyform));
+            // data.LightSource = this.dgyform.LightSource;
+            // this.gyTableData.push(this.dgyform);
+            this.dgyform.location = JSON.stringify(this.dgyform.location);
+            this.dgyform.isModelAssociated = true;
+            this.dgyform.modelId = this.info.id;
+            var rownum = await addZtLightList(this.dgyform);
+            this.resetForm();
+            if (rownum.code == 200) {
+              this.$message({
+                message: "添加成功",
+                type: "success",
+              });
+              //更新列表及光源
+              this.getModelLightData();
+            }
+          }
+        } else {
+          return false;
         }
-      }
+      });
 
       // this.clearLightSource(false);
     },
@@ -720,4 +747,8 @@ export default {
 .el-form-item {
   margin-bottom: 0;
 }
+.el-form-item /deep/.el-form-item__error {
+  line-height: 0 !important;
+  padding-top: 0px !important;
+}
 </style>

+ 13 - 10
src/views/ConstructionApplication3D/ZBFXAnalysisinfo/ZBFXAnalysisinfo.vue

@@ -55,7 +55,7 @@
                       <el-input
                         v-model="row.rghszb"
                         size="small"
-                        @blur="handleSave(row, DKZBData.TableData)"
+                        @change="handleSave(row, DKZBData.TableData)"
                       ></el-input>
                     </template>
                   </el-table-column>
@@ -165,15 +165,18 @@ export default {
             YDMJrow.rgzbid = rgzbid;
             YDMJrow.rgzbName = "YDMJ";
           }
-          if (YDMJrow.kgyq && YDMJrow.rghszb) {
-            if (Number(YDMJrow.kgyq) >= Number(YDMJrow.rghszb)) {
-              YDMJrow.jl = true;
-            } else {
-              YDMJrow.jl = false;
-            }
-          } else {
-            YDMJrow.jl = null;
-          }
+
+          //20240911提出用地面积不进行合规性判断
+          YDMJrow.jl = null;
+          // if (YDMJrow.kgyq && YDMJrow.rghszb) {
+          //   if (Number(YDMJrow.kgyq) >= Number(YDMJrow.rghszb)) {
+          //     YDMJrow.jl = true;
+          //   } else {
+          //     YDMJrow.jl = false;
+          //   }
+          // } else {
+          //   YDMJrow.jl = null;
+          // }
 
           TableData.push(YDMJrow);
 

+ 169 - 6
src/views/ConstructionApplication3D/billboard/addBillboardPoject.vue

@@ -40,7 +40,11 @@
               >
             </el-col>
           </el-form-item> -->
-          <el-form-item label="模型地址" size="mini" prop="url">
+          <el-form-item label="是否报建" size="mini" prop="url">
+            <el-switch v-model="isbjmx" active-text="是" inactive-text="否">
+            </el-switch>
+          </el-form-item>
+          <el-form-item v-show="isbjmx" label="模型地址" size="mini" prop="url">
             <el-col :span="20">
               <el-input
                 size="mini"
@@ -49,7 +53,12 @@
               ></el-input>
             </el-col>
           </el-form-item>
-          <el-form-item label="模型数据地址" size="mini" prop="dataurl">
+          <el-form-item
+            v-show="isbjmx"
+            label="模型数据地址"
+            size="mini"
+            prop="dataurl"
+          >
             <el-col :span="20">
               <el-input
                 size="mini"
@@ -58,7 +67,12 @@
               ></el-input>
             </el-col>
           </el-form-item>
-          <el-form-item label="模型数据源" size="mini" prop="datasourcename">
+          <el-form-item
+            v-show="isbjmx"
+            label="模型数据源"
+            size="mini"
+            prop="datasourcename"
+          >
             <el-col :span="20">
               <el-input
                 size="mini"
@@ -67,7 +81,12 @@
               ></el-input>
             </el-col>
           </el-form-item>
-          <el-form-item label="模型数据集" size="mini" prop="datasetname">
+          <el-form-item
+            v-show="isbjmx"
+            label="模型数据集"
+            size="mini"
+            prop="datasetname"
+          >
             <el-col :span="20">
               <el-input
                 size="mini"
@@ -107,7 +126,10 @@ import {
   mercator2lonLat,
   undergroundMode,
 } from "@/utils/MapHelper/MapHelper.js";
-import { addZtBillboardInfoList } from "@/api/zt/ztApi.js";
+import {
+  addZtBillboardInfoList,
+  addBillboardModelLists,
+} from "@/api/zt/ztApi.js";
 export default {
   data() {
     return {
@@ -142,7 +164,7 @@ export default {
         //   { required: true, message: "请获取项目范围", trigger: "blur" },
         // ],
       },
-
+      isbjmx: false,
       //绘制事件
       handlerPolygon: null,
     };
@@ -180,10 +202,151 @@ export default {
       let that = this;
       this.$refs[formName].validate(async (valid) => {
         if (valid) {
+          if (that.isbjmx) {
+            if (
+              !that.form.url ||
+              !that.form.dataurl ||
+              !that.form.datasourcename ||
+              !that.form.datasetname
+            ) {
+              that.$message({
+                message: "请填写报建模型相关信息",
+                type: "warning",
+              });
+              return;
+            } else {
+            }
+          }
+
           that.form.id = uuidv4();
           // window.billboardInfoList.push(that.form);
           let result = await addZtBillboardInfoList(that.form);
           if (result.code) {
+            if (that.form.dataurl) {
+              let queryBySQLParameters = {
+                getFeatureMode: "SQL",
+                datasetNames: [that.form.datasourcename + ":" + "GGP"],
+                queryParameter: {
+                  attributeFilter: "1=1",
+                },
+                hasGeometry: "true",
+              };
+              let e = await mapQuery(
+                that.form.dataurl + "/featureResults.json?returnContent=true",
+                queryBySQLParameters
+              );
+              if (e && e.totalCount > 0) {
+                let featureDataList = [];
+                e.features.forEach((feature) => {
+                  let featureData = {
+                    id: uuidv4(),
+                    data: [],
+                    geometry: feature.geometry,
+                  };
+
+                  feature.fieldNames.forEach((fieldName, i) => {
+                    let Field = e.datasetInfos
+                      ? e.datasetInfos[0].fieldInfos.find(
+                          (c) =>
+                            c.name &&
+                            c.name.toUpperCase() == fieldName.toUpperCase() &&
+                            c.name.toUpperCase().indexOf("SM") == -1
+                        )
+                      : null;
+                    if (Field) {
+                      featureData.data.push({
+                        label: fieldName,
+                        labelCN: Field ? Field.caption : fieldName,
+                        value: feature.fieldValues[i],
+                      });
+                    }
+                  });
+                  featureDataList.push(featureData);
+                });
+                debugger;
+                let billboardModelList = [];
+                featureDataList.forEach((featureData) => {
+                  let billboardModel = {};
+                  billboardModel.id = uuidv4();
+                  billboardModel.billboardName = featureData.data.find(
+                    (c) => c.label == "MODELNAME"
+                  )
+                    ? featureData.data.find((c) => c.label == "MODELNAME").value
+                    : "";
+                  billboardModel.billboardType = featureData.data.find(
+                    (c) => c.label == "BILLBOARDTYPE"
+                  )
+                    ? featureData.data.find((c) => c.label == "BILLBOARDTYPE")
+                        .value
+                    : "";
+                  billboardModel.isAddModel = true;
+                  billboardModel.billboardInfoId = that.form.id;
+
+                  billboardModel.x = featureData.data.find(
+                    (c) => c.label == "X"
+                  )
+                    ? featureData.data.find((c) => c.label == "X").value
+                    : "";
+                  billboardModel.y = featureData.data.find(
+                    (c) => c.label == "Y"
+                  )
+                    ? featureData.data.find((c) => c.label == "Y").value
+                    : "";
+                  billboardModel.z = featureData.data.find(
+                    (c) => c.label == "Z"
+                  )
+                    ? featureData.data.find((c) => c.label == "Z").value
+                    : "";
+
+                  var billboardModelRule = JSON.parse(
+                    JSON.stringify(
+                      window.billboardModelRuleList.find(
+                        (c) => c.code == "bjModel"
+                      ).template
+                    )
+                  );
+                  this.selectbillboardModelRule =
+                    billboardModelRule.length > 0
+                      ? billboardModelRule[0]
+                      : null;
+                  var template = {
+                    ModelType: "bjModel",
+                    ...that.selectbillboardModelRule,
+                  };
+
+                  billboardModel.template = JSON.stringify(template);
+
+                  billboardModel.templateBottom = "{}";
+                  billboardModel.templateCentre = "{}";
+
+                  var xl = featureData.data.find((c) => c.label == "XL")
+                    ? featureData.data.find((c) => c.label == "XL").value
+                    : "";
+                  var yl = featureData.data.find((c) => c.label == "YL")
+                    ? featureData.data.find((c) => c.label == "YL").value
+                    : "";
+                  var zl = featureData.data.find((c) => c.label == "ZL")
+                    ? featureData.data.find((c) => c.label == "ZL").value
+                    : "";
+                  var templateTop = {
+                    x: billboardModel.x,
+                    y: billboardModel.y,
+                    z: billboardModel.z,
+                    xL: xl,
+                    yL: yl,
+                    zL: zl,
+                  };
+
+                  billboardModel.templateTop = JSON.stringify(templateTop);
+                  billboardModelList.push(billboardModel);
+                });
+
+                if (billboardModelList.length > 0) {
+                  await addBillboardModelLists(billboardModelList);
+                }
+              }
+            }
+
             that.$message({
               message: "添加成功",
               type: "success",

+ 87 - 74
src/views/ConstructionApplication3D/billboard/billboardDesign.vue

@@ -27,7 +27,7 @@
     <el-row>
       <div style="height: 90%">
         <el-row v-for="item in projects" :key="item.id">
-          <el-card class="box-card">
+          <el-card class="box-card card_body_style">
             <el-row>
               <span>{{ item.projectname }}</span></el-row
             >
@@ -43,8 +43,11 @@
                 ></i>
                 <a @click="billboarddetial(item)">详情</a>
               </el-col>
-              <!-- v-if="!item.dataurl" -->
-              <el-col class="con-col hover_style" style="cursor: pointer">
+              <el-col
+                class="con-col hover_style"
+                v-if="!item.dataurl"
+                style="cursor: pointer"
+              >
                 <i
                   style="font-size: 2rem"
                   class="el-icon-folder-add"
@@ -226,14 +229,14 @@ export default {
      * @param Mitem 模型实体
      */
     locationSingleModel(Mitem) {
-      let entitie = viewer.entities.getById("top_billboard_" + Mitem.id);
+      let entitie = viewer.entities.getById("pointBillboard_" + Mitem.id);
       if (entitie) {
         viewer.flyTo(entitie);
       } else {
         //渲染单个广告牌
         // if (billboardModel.id == Mitem.id) {
         this.DrawBillboard(Mitem);
-        let entitie = viewer.entities.getById("top_billboard_" + Mitem.id);
+        let entitie = viewer.entities.getById("pointBillboard_" + Mitem.id);
         viewer.flyTo(entitie);
         // }
       }
@@ -437,14 +440,6 @@ export default {
         billboardModel.y,
         billboardModel.z
       );
-      var orientation = Cesium.Transforms.headingPitchRollQuaternion(
-        newposition,
-        new Cesium.HeadingPitchRoll(
-          Cesium.Math.toRadians(billboardModel.rotateZ),
-          Cesium.Math.toRadians(billboardModel.rotateY),
-          Cesium.Math.toRadians(billboardModel.rotateX)
-        )
-      );
 
       if (billboardModel.template) {
         var imageurl = "../../../../static/ModelData/billboard/1.jpg";
@@ -452,11 +447,19 @@ export default {
         switch (billboardModel.template.ModelType) {
           //矩形广告
           case "rectangleBillboard":
+            var orientation = Cesium.Transforms.headingPitchRollQuaternion(
+              newposition,
+              new Cesium.HeadingPitchRoll(
+                Cesium.Math.toRadians(billboardModel.rotateZ),
+                Cesium.Math.toRadians(billboardModel.rotateY),
+                Cesium.Math.toRadians(billboardModel.rotateX)
+              )
+            );
             //计算当前实体的xyz
             var p = Cesium.Cartesian3.fromDegrees(
-              billboardModel.templateTop.x,
-              billboardModel.templateTop.y,
-              billboardModel.templateTop.z
+              Number(billboardModel.templateTop.x),
+              Number(billboardModel.templateTop.y),
+              Number(billboardModel.templateTop.z)
             );
             var topentity = viewer.entities.add({
               id: "top_billboard_" + billboardModel.id,
@@ -468,9 +471,9 @@ export default {
                */
               box: {
                 dimensions: new Cesium.Cartesian3(
-                  billboardModel.templateTop.xL,
-                  billboardModel.templateTop.zL,
-                  billboardModel.templateTop.yL
+                  Number(billboardModel.templateTop.xL),
+                  Number(billboardModel.templateTop.zL),
+                  Number(billboardModel.templateTop.yL)
                 ),
                 show: true,
                 material: Cesium.Color.LIGHTGREEN,
@@ -482,6 +485,14 @@ export default {
             break;
           // 立杆型广告
           case "postsBillboard":
+            var orientation = Cesium.Transforms.headingPitchRollQuaternion(
+              newposition,
+              new Cesium.HeadingPitchRoll(
+                Cesium.Math.toRadians(billboardModel.rotateZ),
+                Cesium.Math.toRadians(billboardModel.rotateY),
+                Cesium.Math.toRadians(billboardModel.rotateX)
+              )
+            );
             var c_p = Cesium.Cartesian3.fromDegrees(
               billboardModel.templateCentre.x,
               billboardModel.templateCentre.y,
@@ -516,9 +527,9 @@ export default {
             //计算当前实体的xyz
 
             var t_p = Cesium.Cartesian3.fromDegrees(
-              billboardModel.templateTop.x,
-              billboardModel.templateTop.y,
-              billboardModel.templateTop.z
+              Number(billboardModel.templateTop.x),
+              Number(billboardModel.templateTop.y),
+              Number(billboardModel.templateTop.z)
             );
             var topentity = viewer.entities.add({
               id: "top_billboard_" + billboardModel.id,
@@ -530,9 +541,9 @@ export default {
                */
               box: {
                 dimensions: new Cesium.Cartesian3(
-                  billboardModel.templateTop.xL,
-                  billboardModel.templateTop.zL,
-                  billboardModel.templateTop.yL
+                  Number(billboardModel.templateTop.xL),
+                  Number(billboardModel.templateTop.zL),
+                  Number(billboardModel.templateTop.yL)
                 ),
                 material: Cesium.Color.LIGHTGREEN,
                 // outline: false,
@@ -546,6 +557,14 @@ export default {
             break;
           //底座型立杆广告
           case "ColumnWithaseBillboard":
+            var orientation = Cesium.Transforms.headingPitchRollQuaternion(
+              newposition,
+              new Cesium.HeadingPitchRoll(
+                Cesium.Math.toRadians(billboardModel.rotateZ),
+                Cesium.Math.toRadians(billboardModel.rotateY),
+                Cesium.Math.toRadians(billboardModel.rotateX)
+              )
+            );
             var b_p = Cesium.Cartesian3.fromDegrees(
               billboardModel.templateBottom.x,
               billboardModel.templateBottom.y,
@@ -613,9 +632,9 @@ export default {
             entityList.push(Centreentity);
 
             var t_p = Cesium.Cartesian3.fromDegrees(
-              billboardModel.templateTop.x,
-              billboardModel.templateTop.y,
-              billboardModel.templateTop.z
+              Number(billboardModel.templateTop.x),
+              Number(billboardModel.templateTop.y),
+              Number(billboardModel.templateTop.z)
             );
 
             var topentity = viewer.entities.add({
@@ -628,9 +647,9 @@ export default {
                */
               box: {
                 dimensions: new Cesium.Cartesian3(
-                  billboardModel.templateTop.xL,
-                  billboardModel.templateTop.zL,
-                  billboardModel.templateTop.yL
+                  Number(billboardModel.templateTop.xL),
+                  Number(billboardModel.templateTop.zL),
+                  Number(billboardModel.templateTop.yL)
                 ),
                 material: Cesium.Color.LIGHTGREEN,
                 // outline: false,
@@ -644,10 +663,18 @@ export default {
             break;
           //实物型广告(模型型)
           case "ModelBillboard":
+            var orientation = Cesium.Transforms.headingPitchRollQuaternion(
+              newposition,
+              new Cesium.HeadingPitchRoll(
+                Cesium.Math.toRadians(billboardModel.rotateZ),
+                Cesium.Math.toRadians(billboardModel.rotateY),
+                Cesium.Math.toRadians(billboardModel.rotateX)
+              )
+            );
             var p = Cesium.Cartesian3.fromDegrees(
-              billboardModel.templateTop.x,
-              billboardModel.templateTop.y,
-              billboardModel.templateTop.z
+              Number(billboardModel.templateTop.x),
+              Number(billboardModel.templateTop.y),
+              Number(billboardModel.templateTop.z)
             );
             var url = billboardModel.template.templateTopUrl || modelurl;
             var entity = viewer.entities.add({
@@ -668,10 +695,18 @@ export default {
             break;
           //图片型广告
           case "imgBillboard":
+            var orientation = Cesium.Transforms.headingPitchRollQuaternion(
+              newposition,
+              new Cesium.HeadingPitchRoll(
+                Cesium.Math.toRadians(billboardModel.rotateZ),
+                Cesium.Math.toRadians(billboardModel.rotateY),
+                Cesium.Math.toRadians(billboardModel.rotateX)
+              )
+            );
             var p = Cesium.Cartesian3.fromDegrees(
-              billboardModel.templateTop.x,
-              billboardModel.templateTop.y,
-              billboardModel.templateTop.z
+              Number(billboardModel.templateTop.x),
+              Number(billboardModel.templateTop.y),
+              Number(billboardModel.templateTop.z)
             );
             var url = billboardModel.template.templateTopUrl || imageurl;
             var entity = viewer.entities.add({
@@ -684,57 +719,33 @@ export default {
                */
               billboard: {
                 image: url,
-                width: billboardModel.templateTop.xL,
-                height: billboardModel.templateTop.yL,
-                rotation: billboardModel.rotateX,
+                width: Number(billboardModel.templateTop.xL),
+                height: Number(billboardModel.templateTop.yL),
+                rotation: Number(billboardModel.rotateX),
                 sizeInMeters: true,
               },
               orientation: orientation,
             });
             entityList.push(entity);
             break;
-          default:
-            //计算当前实体的xyz
-            var p = Cesium.Cartesian3.fromDegrees(
-              billboardModel.templateTop.x,
-              billboardModel.templateTop.y,
-              billboardModel.templateTop.z
-            );
-            var topentity = viewer.entities.add({
-              id: "top_billboard_" + billboardModel.id,
-              name: "gltf",
-              show: true,
-              position: p,
-              /**
-               * 长方体
-               */
-              box: {
-                dimensions: new Cesium.Cartesian3(
-                  billboardModel.templateTop.xL,
-                  billboardModel.templateTop.zL,
-                  billboardModel.templateTop.yL
-                ),
-                show: true,
-                material: Cesium.Color.LIGHTGREEN,
-              },
-              orientation: orientation,
-            });
-            entityList.push(topentity);
-            break;
         }
 
         var h = 0;
         if (billboardModel.templateTop.yL) {
-          h = billboardModel.templateTop.yL / 2;
+          h = Number(billboardModel.templateTop.yL) / 2;
         }
-
+        viewer.entities.removeById("pointBillboard_" + billboardModel.id);
+        lodash.remove(
+          entityList,
+          (entity) => entity.id === "pointBillboard_" + billboardModel.id
+        );
         const point = viewer.entities.add({
           id: "pointBillboard_" + billboardModel.id,
           //点
           position: Cesium.Cartesian3.fromDegrees(
-            billboardModel.templateTop.x,
-            billboardModel.templateTop.y,
-            billboardModel.templateTop.z + h
+            Number(billboardModel.templateTop.x),
+            Number(billboardModel.templateTop.y),
+            Number(billboardModel.templateTop.z) + h
           ),
           label: {
             text: billboardModel.billboardName, //描述内容
@@ -758,6 +769,7 @@ export default {
             heightReference: Cesium.HeightReference.NONE,
           },
         });
+        entityList.push(point);
       }
 
       // if (billboardModel.isAddModel) {
@@ -928,6 +940,7 @@ export default {
      * @param info
      */
     intoModel(info) {
+      let that = this;
       if (info.url && this.selectBillardId != info.id) {
         this.selectBillardId = info.id;
         this.thislayers.forEach((element) => {
@@ -942,7 +955,7 @@ export default {
                 that.thislayers.push(element.name);
               });
             });
-            this.yp(info);
+            that.yp(info);
           } catch (error) {
             console.log(error);
           }

+ 1 - 48
src/views/ConstructionApplication3D/billboard/billboarddetail.vue

@@ -42,6 +42,7 @@ import {
   undergroundMode,
 } from "@/utils/MapHelper/MapHelper.js";
 import { listBillboardModelList } from "@/api/zt/ztApi.js";
+import { v4 as uuidv4 } from "uuid";
 export default {
   data() {
     return {
@@ -79,59 +80,11 @@ export default {
     async init() {
       let that = this;
       debugger;
-      // if (that.info.projectInfo.dataurl) {
-      //   let queryBySQLParameters = {
-      //     getFeatureMode: "SQL",
-      //     datasetNames: [that.info.projectInfo.datasourcename + ":" + "GGP"],
-      //     queryParameter: {
-      //       attributeFilter: "1=1",
-      //     },
-      //     hasGeometry: "true",
-      //   };
-      //   let e = await mapQuery(
-      //     that.info.projectInfo.dataurl +
-      //       "/featureResults.json?returnContent=true",
-      //     queryBySQLParameters
-      //   );
-      //   if (e && e.totalCount > 0) {
-      //     e.features.forEach((feature) => {
-      //       let featureData = {
-      //         id: uuidv4(),
-      //         data: [],
-      //         geometry: feature.geometry,
-      //       };
-
-      //       feature.fieldNames.forEach((fieldName, i) => {
-      //         let Field = e.datasetInfos
-      //           ? e.datasetInfos[0].fieldInfos.find(
-      //               (c) =>
-      //                 c.name &&
-      //                 c.name.toUpperCase() == fieldName.toUpperCase() &&
-      //                 c.name.toUpperCase().indexOf("SM") == -1
-      //             )
-      //           : null;
-      //         if (Field) {
-      //           featureData.data.push({
-      //             label: fieldName,
-      //             labelCN: Field ? Field.caption : fieldName,
-      //             value: feature.fieldValues[i],
-      //           });
-      //         }
-      //       });
-      //       featureDataList.push(featureData);
-      //     });
-      //     debugger;
-      //     this.billboardModelList = [];
-      //   } else {
-      //     this.billboardModelList = [];
-      //   }
-      // } else {
       let data = await listBillboardModelList({
         billboardInfoId: that.info.projectInfo.id,
       });
       debugger;
       this.billboardModelList = data.rows;
-      // }
 
       // this.billboardModelList = window.billboardModelList.filter(
       //   (c) => c.billboardInfoId == that.info.projectInfo.id

+ 30 - 12
src/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue

@@ -100,7 +100,7 @@
         </el-form>
         <div class="SaveCenter">
           <el-button type="primary" @click="submitForm('ruleForm')"
-            >添加</el-button
+            >完成</el-button
           >
           <el-button @click="resetForm('ruleForm')">重置</el-button>
         </div>
@@ -111,7 +111,10 @@
 
 <script>
 import { v4 as uuidv4 } from "uuid";
-import { addProjectinformation } from "@/api/zt/ztApi.js";
+import {
+  addProjectinformation,
+  updateProjectinformation,
+} from "@/api/zt/ztApi.js";
 export default {
   data() {
     return {
@@ -170,23 +173,38 @@ export default {
   },
   computed: {},
   mounted() {
+    debugger;
     // this.init();
+    if (this.info) {
+      this.form = this.info;
+    }
   },
   methods: {
     submitForm(formName) {
       let that = this;
       this.$refs[formName].validate(async (valid) => {
         if (valid) {
-          that.form.id = uuidv4();
-          that.form.meetingprogress = "0";
-          // window.projectinformation.push(that.form);
-          let result = await addProjectinformation(that.form);
-          if (result.code) {
-            that.$message({
-              message: "添加成功",
-              type: "success",
-            });
-            that.$layer.close(that.layerid);
+          if (this.info) {
+            let result = await updateProjectinformation(that.form);
+            if (result.code) {
+              that.$message({
+                message: "修改成功",
+                type: "success",
+              });
+              that.$layer.close(that.layerid);
+            }
+          } else {
+            that.form.id = uuidv4();
+            that.form.meetingprogress = "0";
+            // window.projectinformation.push(that.form);
+            let result = await addProjectinformation(that.form);
+            if (result.code) {
+              that.$message({
+                message: "添加成功",
+                type: "success",
+              });
+              that.$layer.close(that.layerid);
+            }
           }
           debugger;
           // that.lyoption.cancel();

+ 6 - 8
src/views/ConstructionApplication3D/projectManagement/projectManagement.vue

@@ -1154,7 +1154,7 @@ export default {
           data: { info }, //props
         },
         offset: [left, top], //left top
-        area: ["300px", "250px"],
+        area: ["300px", "450px"],
         title: "天际线分析",
         maxmin: false,
         shade: false, //是否显示遮罩
@@ -2659,20 +2659,18 @@ export default {
             (t) => t.landNo == item.KG_Data.DKBM
           );
           if (land == null) continue;
-          tableDataList[i].FA_Data.JZMJ = land.jrmj;
+          tableDataList[i].FA_Data.JZMJ = land.mj;
           tableDataList[i].FA_Data.JRJZMJ = land.jrmj;
           debugger;
           //20240814改为使用建筑面积计算容积率
+          // tableDataList[i].FA_Data.RJL = (land.jrmj / item.FA_Data.YDMJ).toFixed(2);
           tableDataList[i].FA_Data.RJL = (
-            land.jrmj / item.FA_Data.YDMJ
+            (land.mj - land.dxjzmj) /
+            item.FA_Data.YDMJ
           ).toFixed(2);
-          // tableDataList[i].FA_Data.RJL = (
-          //   (land.mj - land.dxjzmj) /
-          //   item.FA_Data.YDMJ
-          // ).toFixed(2);
           //开发商提交的方案文档指标
           debugger;
-          tableDataList[i].TJFA_Data.JZMJ = land.fajrmj;
+          tableDataList[i].TJFA_Data.JZMJ = land.famj;
           tableDataList[i].TJFA_Data.JRJZMJ = land.fajrmj;
           tableDataList[i].infoData = land;
         }

+ 17 - 155
src/views/ConstructionApplication3D/skylineAnalysis/TJXResult.vue

@@ -1,14 +1,15 @@
 <template>
     <div style="margin: 1rem; padding: 0.5rem; width: 99%;height: 99%;">
         <!-- <img :src="imageData.data" style="height: auto; width: auto;" />"> -->
-        <canvas id="mycan1" ref="mycan1" width="907" height="350" style="background-color: azure;display: none;"></canvas>
-        <canvas id="mycan2" ref="mycan2" width="907" height="350" style="height: 100%;height: 100%;"></canvas>
         <el-button type="primary" @click="download">下载</el-button>
-        <!-- <img id="img"  ref="img" style=" width: 100%;height: :100%;"/> -->
+        <br>
+        <canvas id="mycan1" ref="mycan1" style="height: 100%;height: 100%;background-color: transparent;"></canvas>
+        <!-- <canvas id="mycan2" ref="mycan2" width="907" height="350" style="height: 100%;height: 100%;"></canvas> -->
+
     </div>
 </template>
 <script>
-
+import skylineExecute from './skylineExecute.js'
 export default {
     props: ['imageData'],
     data() {
@@ -22,161 +23,19 @@ export default {
         init() {
             var that = this;
 
-            var image = new Image();
+            //最小高程
             var minH = that.imageData.minH;
+            //绘制的长度和宽度
+            var viewW = that.imageData.width;
+            var viewH = that.imageData.height;
 
-            image.src = this.imageData.data;
-            image.onload = function () {
-                var canvas1 = that.$refs["mycan1"]
-                var canvas2 = that.$refs["mycan2"]
-                var context = canvas2.getContext("2d")
-                canvas2.width = image.width;
-                canvas2.height = image.height;
-                // var dW = image.width
-                // var dh = image.height
-
-                // var xRate = dW / that.imageData.width;
-                // var yRate = dh / that.imageData.height;
-                // var clipH = minH * yRate
-                // var scale = that.imageData.height / (that.imageData.height - minH)
-
-                // var drawScaleY = 350 / image.height;
-                // yRate = canvas2.height / that.imageData.height;
-                // scale = canvas2.height / (canvas2.height - clipH * drawScaleY)
-                context.drawImage(image, 0, 0);// image.width, image.height, 0, 0, canvas2.width, canvas2.height
-                // context.fillStyle = '#fff';
-                // context.fillRect(0, 0, canvas2.width, canvas2.height);
-                // 将canvas的透明背景设置成白色
-                var imageData = context.getImageData(0, 0, canvas2.width, canvas2.height);
-                // 遍历像素点,将彩色像素点转换为黑白像素点
-                var data = imageData.data
-                for (var i = 0; i < data.length; i += 4) {
-                    debugger
-                    var r = data[i];
-                    var g = data[i + 1];
-                    var b = data[i + 2];
-                    // // var a = imageData.data[i + 3];
-                    // if (r == 0 && b == 0 && g == 0) {
-                    //     imageData.data[i] = 132;
-                    //     imageData.data[i + 1] = 180;
-                    //     imageData.data[i + 2] = 237;
-                    // }
-                    if (r + b + g == 0)
-                        data[i + 3] = 0;
-                }
-                context.putImageData(imageData, 0, 0)
-                context.strokeStyle = "rgba(255,0,0,1)";
-                context.lineWidth = 2
-                context.strokeRect(0, 0, canvas2.width, canvas2.height)
-                var xRate = canvas2.width / that.imageData.width;
-                var  yRate = canvas2.height / (that.imageData.height);
-                var dataX = parseInt(that.imageData.width / 50) * 10
-                for (var i = 0; i <= that.imageData.width; i += dataX) {
-                    context.font = "30px serif";
-                    context.strokeText(i, i * xRate, 20);
-                    context.strokeText(i, i * xRate, canvas2.height);
-                }
-                var datay = parseInt(that.imageData.height / 50) * 10
-                for (var j = datay; j <= that.imageData.height; j += datay) {
-                    context.font = "30px serif";
-                    context.strokeText(j, 10, canvas2.height - j * yRate);
-                    context.strokeText(j, canvas2.width - 50, canvas2.height - j * yRate);
-                }
-                //context.scale(1, scale)
-            }
-            // image.onload = function () {
-            //     var canvas1 = that.$refs["mycan1"]
-            //     var canvas2 = that.$refs["mycan2"]
-            //     var ctx = canvas1.getContext("2d");
-
-            //     // canvas1.height = image.height;
-            //     // canvas1.width = image.width;
-            //     var xRate = canvas1.width / that.imageData.width;
-            //     var yRate = canvas1.height / that.imageData.height;
-
-            //     var clipH = minH * yRate;
-
-            //     // canvas1.height -= clipH;
-
-            //     ctx.drawImage(image, 0, 0, image.width, image.height , 0, 0, canvas1.width, canvas1.height);
-
-            //     // var canvasData = ctx.getImageData(0, 0, canvas1.width, canvas1.height); //读取图片数据
-            //     // var lOffset = canvasData.width;
-            //     // var rOffset = 0;
-            //     // var tOffset = canvasData.height;
-            //     // var bOffset = 0;
-            //     // for (var i = 0; i < image.width; i++) {
-            //     //     for (var j = 0; j < image.height; j++) {
-            //     //         // var pos = (i + canvas1.width * j) * 4
-            //     //         var pos = (i + image.width * j) * 4
-            //     //             if (canvasData.data[pos] == 0|| canvasData.data[pos + 1] == 0 || canvasData.data[pos + 2] == 0 || canvasData.data[pos + 3] ==0) {
-            //     //             bOffset = Math.max(j, bOffset); // 找到有色彩的最下端
-            //     //             rOffset = Math.max(i, rOffset); // 找到有色彩的最右端
-            //     //             tOffset = Math.min(j, tOffset); // 找到有色彩的最上端
-            //     //             lOffset = Math.min(i, lOffset); // 找到有色彩的最左端
-            //     //         }
-            //     //     }
-            //     // }
-            //     // for(var j=0;j<image.height;j++)
-            //     // {
-            //     //     for(var i=0;i<image.width;i++)
-            //     //     {
-
-            //     //     }
-            //     // }
+            var skyRgb = that.imageData.rgb
+            var canvas1 = that.$refs["mycan1"]
 
-
-            //     // lOffset++;
-            //     // rOffset++;
-            //     // tOffset++;
-            //     // bOffset++;
-
-            //     // canvas2.width = rOffset - lOffset;
-            //     // canvas2.height = bOffset - tOffset;
-
-            //     // xRate = canvas2.width / that.imageData.width;
-            //     // yRate = canvas2.height / that.imageData.height;
-            //     // debugger
-            //     // var context = canvas2.getContext("2d");
-            //     // var drawScaleY = canvas2.height / canvas1.height;
-
-
-            //     // // context.putImageData(canvasData, lOffset, tOffset, canvas1.width, canvas1.height, 0, 0, canvas2.width, canvas2.height);//绘制
-            //     // context.putImageData(canvasData, lOffset, tOffset)
-            //     // var canvasData2 = context.getImageData(0, 0, canvas2.width, canvas2.height);
-
-            //     // // // 遍历像素点,将彩色像素点转换为黑白像素点
-            //     // // for (var i = 0; i < canvasData2.data.length; i += 4) {
-            //     // //     var r = canvasData2.data[i];
-            //     // //     var g = canvasData2.data[i + 1];
-            //     // //     var b = canvasData2.data[i + 2];
-            //     // //     // var a = imageData.data[i + 3];
-            //     // //     if (r == 0 && b == 0 && g == 0) {
-            //     // //         canvasData2.data[i] = 132;
-            //     // //         canvasData2.data[i + 1] = 180;
-            //     // //         canvasData2.data[i + 2] = 237;
-            //     // //     }
-            //     // // }
-            //     // // context.putImageData(canvasData2, 0, 0)
-
-            //     // context.strokeStyle = "rgba(255,0,0,1)";
-            //     // var dataX = parseInt(that.imageData.width / 50) * 10;
-            //     // for (var i = 0; i <= that.imageData.width; i += dataX) {
-            //     //     context.font = "20px serif";
-            //     //     context.strokeText(i, i * xRate, 20);
-            //     //     context.strokeText(i, i * xRate, canvas2.height);
-            //     // }
-            //     // var datay = parseInt(that.imageData.height / 50) * 10;
-            //     // for (var j = datay; j <= that.imageData.height; j += datay) {
-            //     //     context.font = "20px serif";
-            //     //     context.strokeText(j, 10, canvas2.height - j * yRate);
-            //     //     context.strokeText(j, canvas2.width - 30, canvas2.height - j * yRate);
-            //     // }
-            //     // console.log(canvas2.toDataURL());//得到最终裁剪出来的base64
-            // }
+            skylineExecute.drawCanvas(canvas1, that.imageData.data, viewW, viewH, skyRgb)
         },
         download() {
-            var canvas = this.$refs['mycan2']
+            var canvas = this.$refs['mycan1']
 
             // var context = canvas.getContext("2d")
             var url = canvas.toDataURL("image/png");
@@ -193,4 +52,7 @@ export default {
 .vl-notify-content {
     background-color: white;
 }
-</style>) -->
+</style>
+    background-color: white;
+}
+</style>

+ 167 - 38
src/views/ConstructionApplication3D/skylineAnalysis/skylineAnalysis.vue

@@ -2,15 +2,28 @@
   <div class="ZTGlobal" style="margin: 1rem;">
     <el-form>
       <el-form-item>宽度:
-        <el-input-number min="0" max="1000" :step="1" v-model="faceW" @change="farChange"></el-input-number>
+        <el-input-number min="0" max="5000" :step="1" v-model="faceW" @change="farChange"></el-input-number>
       </el-form-item>
       <el-form-item>高度:
         <el-input-number min="0" max="500" :step="1" v-model="faceH" @change="heightChange"></el-input-number>
       </el-form-item>
       <el-form-item>
-        <el-button @click="draw">绘制范围</el-button>
-        <el-button @click="create">分析</el-button>
-        <el-button @click="clear">取消</el-button>
+        <div style="display:flex;">
+          天空颜色: <el-color-picker v-model="skyColor" show-alpha></el-color-picker>
+        </div>
+      </el-form-item>
+      <el-form-item>
+        <div style="display:flex;">
+          方向:<el-select v-model="slider" @change="sliderChange" style="width:60%">
+            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+      </el-form-item>
+      <el-form-item>
+        <el-button size="small" @click="draw">绘制范围</el-button>
+        <el-button size="small" @click="create">分析</el-button>
+        <el-button size="small" @click="clear">取消</el-button>
       </el-form-item>
     </el-form>
   </div>
@@ -18,24 +31,37 @@
 <script>
 import TJXResult from './TJXResult.vue'
 var drawHandler;
-var facade
+var facade;
+var startPoint;
+var endPoint;
 export default {
   data() {
     return {
+      skyColor: 'rgba(87, 126, 197, 0.23)',
       faceW: 200,
       faceH: 100,
       minH: 0,
-      viewW:0,
-      layerid:null,
+      viewW: 0,
+      layerid: null,
+      slider: 'left',
+      options: [{
+        value: 'left',
+        label: '左侧'
+      }, {
+        value: 'right',
+        label: '右侧'
+      },
+      ]
     }
   },
   mounted() {
     facade = new Cesium.Facade(scene);
     facade.build();
+    
   },
-  beforeDestroy()
-  {
-     this.clear()
+
+  beforeDestroy() {
+    this.clear()
   },
   methods: {
     draw() {
@@ -49,37 +75,111 @@ export default {
         0
       );
       drawHandler.activate()
-      // drawHandler.activeEvt.addEventListener(function (isActive) {
-      // });
-      // drawHandler.movingEvt.addEventListener(function (windowPosition) {
 
-      // });
       drawHandler.drawEvt.addEventListener(function (result) {
         debugger
-        // var averageH = result.object.positions[0].z + result.object.positions[1].z
-        var startPoint = result.object.positions[0];
-        var endPoint = result.object.positions[1];
-
-        // var averageH =(startPoint.z +endPoint.z)/2
-        // startPoint.z = averageH
-        // endPoint.z = averageH
+        startPoint = result.object.positions[0];
+        endPoint = result.object.positions[1];
         var point1 = that.Cartesian2toDegrees(startPoint)
         that.minH = point1[2]
         var point2 = that.Cartesian2toDegrees(endPoint)
         if (point2[2] < that.minH)
           that.minH = point2[2]
 
-      that.  viewW=Math.sqrt((startPoint.y-endPoint.y)*(startPoint.y-endPoint.y)+(startPoint.x-endPoint.x)*(startPoint.x-endPoint.x))
-        // point2[2] += 2
-        // facade.startPoint = Cesium.Cartesian3.fromDegrees(point1[0], point1[1], point1[2]);
-        // facade.endPoint = Cesium.Cartesian3.fromDegrees(point2[0], point2[1], point2[2]);
-        // facade.startPoint = startPoint
-        // facade.endPoint = endPoint
-        facade.setBoundByPoints(startPoint,endPoint)
-        facade.maxHeight = parseFloat(that.faceH)
-        facade.farDistance = parseFloat(that.faceW)
+        that.viewW = Math.sqrt((startPoint.y - endPoint.y) * (startPoint.y - endPoint.y) + (startPoint.x - endPoint.x) * (startPoint.x - endPoint.x))
+        if (that.slider == "left") {
+          facade.setBoundByPoints(startPoint, endPoint);
+        }
+        else {
+          facade.setBoundByPoints(endPoint, startPoint);
+        }
+
+        facade.maxHeight = parseFloat(that.faceH);
+        facade.farDistance = parseFloat(that.faceW);
+        
+       
+       
+        // viewer.entities.add(
+        //   {
+        //     id: "ZDGYQS_",
+        //     show: true,
+        //     position : Cesium.Cartesian3.fromDegrees((point1[0]+point2[0])/2, (point1[1]+point2[1])/2+0.001,100),
+        //     point: {
+        //       color: Cesium.Color.RED,
+        //       pixelSize: 200,
+        //     }
+        //   })
+        drawHandler.deactivate()
       })
     },
+    /***
+     * 计算相机视角
+     */
+    ComputationalPerspective(fromPoint,toPoint) {
+      var point1;
+      var point2;
+
+      if (this.slider=="left") {
+        point1 = [
+        fromPoint[0],
+        fromPoint[1],
+        fromPoint[2],
+        ];
+        point2 = [
+        toPoint[0],
+        toPoint[1],
+        toPoint[2],
+        ];
+      } else {
+        point1 = [
+          [0],
+          toPoint[1],
+          toPoint[2],
+        ];
+        point2 = [
+        fromPoint[0],
+        fromPoint[1],
+        fromPoint[2],
+        ];
+      }
+      var positionA = Cesium.Cartesian3.fromDegrees(
+        point1[0],
+        point1[1],
+        point1[2]
+      );
+      var positionB = Cesium.Cartesian3.fromDegrees(
+        point2[0],
+        point2[1],
+        point2[2]
+      );
+      var midpoint=[(point1[0]+point1[0])/2,(point1[1]+point1[1])/2,(point1[2]+point1[2])/2+2];
+      let finalPosition = new Cesium.Cartesian3();
+      let matrix4 = Cesium.Transforms.eastNorthUpToFixedFrame(positionA);
+      Cesium.Matrix4.inverse(matrix4, matrix4);
+      Cesium.Matrix4.multiplyByPoint(matrix4, positionB, finalPosition);
+      Cesium.Cartesian3.normalize(finalPosition, finalPosition);
+      const resultHead = Cesium.Math.toDegrees(
+        Math.atan2(finalPosition.x, finalPosition.y)
+      );
+      const resultPitch = Cesium.Math.toDegrees(Math.asin(finalPosition.z));
+      viewer.camera.setView({
+        destination: midpoint,
+        orientation: {
+          heading: Cesium.Math.toRadians(resultHead), // east, default value is 0.0 (north)
+          pitch: Cesium.Math.toRadians(resultPitch), // default value (looking down)
+          roll: 0.0, // default value
+        },
+      });
+    },
+    sliderChange() {
+      facade.clear();
+      if (this.slider == "left") {
+        facade.setBoundByPoints(startPoint, endPoint);
+      }
+      else {
+        facade.setBoundByPoints(endPoint, startPoint);
+      }
+    },
     Cartesian2toDegrees(position) {
       var cartographic = Cesium.Cartographic.fromCartesian(position);
       var longitude = Cesium.Math.toDegrees(cartographic.longitude);
@@ -88,20 +188,22 @@ export default {
       return [longitude, latitude, height];
     },
     create() {
+    
       var that = this;
       facade.build();
       facade.readyPromise.then(function (base64data) {
         debugger
-        if( that.layerid)
-        that.$layer.close( that.layerid)
-      that.layerid=  that.$layer.iframe({
+
+        // that.download(base64data)
+        if (that.layerid)
+          that.$layer.close(that.layerid)
+        that.layerid = that.$layer.iframe({
           content: {
             content: TJXResult, //传递的组件对象
             parent: that, //当前的vue对象
-            data: { 'imageData': { 'height': that.faceH, 'width': that.viewW, 'data': base64data,'minH':that.minH } }, //props
+            data: { 'imageData': { 'height': that.faceH, 'width': that.viewW, 'data': base64data, 'minH': that.minH, "rgb": that.skyColor } }, //props
           },
-         
-          area: ["60rem", "30rem"], //宽 高
+          area: ["100rem", "35rem"], //宽 高
           title: "天际线分析结果",
           maxmin: true,
           shade: false, //是否显示遮罩
@@ -112,6 +214,28 @@ export default {
         });
       });
     },
+    convertImageToCanvas(image) {
+      var canvas = document.createElement("canvas");
+      canvas.width = image.width;
+      canvas.height = image.height;
+      canvas.getContext("2d").drawImage(image, 0, 0);
+      return canvas;
+    },
+
+    download(base64data) {
+      var that = this;
+      var image = new Image();
+      image.src = base64data;
+      image.onload = function () {
+        var canvas = that.convertImageToCanvas(image);
+        var url = canvas.toDataURL("image/jpeg");
+        var a = document.createElement('a');
+        var event = new MouseEvent('click');
+        a.download = (new Date()).getTime() + ".jpg"; // 指定下载图片的名称
+        a.href = url;
+        a.dispatchEvent(event); // 触发超链接的点击事件
+      }
+    },
     farChange() {
       facade.farDistance = parseFloat(this.faceW)
     },
@@ -121,10 +245,15 @@ export default {
     clear() {
       viewer.entities.removeAll()
       facade.clear();
-      drawHandler.clear();
+      // drawHandler.clear();
+      viewer.entities.removeAll();
     }
 
   }
 }
 </script>
-<style></style>
+<style scoped>
+.el-color-picker__trigger {
+  width: 100px;
+}
+</style>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
src/views/ConstructionApplication3D/skylineAnalysis/skylineExecute.js


+ 4 - 2
src/views/ConstructionApplication3D/zt.scss

@@ -305,7 +305,8 @@
 .el-icon-share,
 .el-icon-delete,
 .el-icon-folder-add,
-.el-icon-tickets
+.el-icon-tickets,
+.el-icon-edit
 {
   color: #20a0fc;
 }
@@ -315,7 +316,8 @@
 .el-icon-share+a,
 .el-icon-delete+a,
 .el-icon-folder-add+a,
-.el-icon-tickets+a
+.el-icon-tickets+a,
+.el-icon-edit+a
 {
   color: #cddeeb;
 }

+ 31 - 355
static/Config/config.js

@@ -769,159 +769,6 @@ window.bjConfig = {
     tcwType: "",
   },
 };
-/**
- * //项目信息
- * meetingprogress (未上会:0,已上会:1)
- */
-window.projectinformation = [
-  {
-    id: "ertyuiop",
-    meetingprogress: "0",
-    applicant: "三亚投资发展有限公司",
-    projectname: "东岸卓越城项目",
-    projectaddress: "抱坡路",
-    plotnumber: "BP08-03,BP08-11",
-    landarea: "45540平方米",
-    landusenature: "商服用地",
-    projectpositioning: "商业",
-    landsituation: "",
-    totalprojectinvestment: "约19亿元",
-    fundingsource: "企业投资",
-    ztConstructionmodelList: [
-      {
-        id: "hfgdg",
-        projectinformationid: "ertyuiop",
-        modelname: "报建模型1",
-        creationtime: "2024-04-24 17:22:13",
-        url: "http://192.168.60.2:8090/iserver/services/3D-fangan/rest/realspace",
-        dataurl:
-          "http://192.168.60.2:8090/iserver/services/data-fangan/rest/data",
-        datasourcename: "DongAnZhuoYueCheng",
-        datasetname: "建筑轮廓",
-        selectionStatus: false,
-        designunit: "筑博设计股份有限公司",
-        totalarea: "",
-        groundarea: "",
-        groundcapacity: "",
-        buildingarea: "",
-        plandescription:
-          "拟建15栋25-26层安居房、 1栋3层幼儿园、 1栋1层配套用房、 1栋1层开闭所及1个2层整体地下室。总建筑面积约23.81万平方米, 其中计容建筑面积约17.41万平方米, 不计容建筑面积约6.40万平方米。 容积率3.0, 建筑密度17.59%, 建筑高度80米, 绿地率40%, 总户数1552户。机动车停车位1944个(地上154个, 地下1790个) , 非机动车位3270个",
-      },
-      {
-        id: "2hfgddfzg",
-        projectinformationid: "ertyuiop",
-        modelname: "报建模型2",
-        creationtime: "2024-04-24 17:22:13",
-
-        url: "http://192.168.60.2:8090/iserver/services/3D-fangan2/rest/realspace",
-        dataurl:
-          "http://192.168.60.2:8090/iserver/services/data-fangan2/rest/data",
-        datasourcename: "DongAnZhuoYueCheng2",
-        datasetname: "建筑轮廓",
-        selectionStatus: false,
-        designunit: "2筑博设计股份有限公司",
-        totalarea: "",
-        groundarea: "",
-        groundcapacity: "",
-        buildingarea: "",
-        plandescription:
-          "拟建15栋25-26层安居房、 1栋3层幼儿园、 1栋1层配套用房、 1栋1层开闭所及1个2层整体地下室。总建筑面积约23.81万平方米, 其中计容建筑面积约17.41万平方米, 不计容建筑面积约6.40万平方米。 容积率3.0, 建筑密度17.59%, 建筑高度80米, 绿地率40%, 总户数1552户。机动车停车位1944个(地上154个, 地下1790个) , 非机动车位3270个",
-      },
-    ],
-  },
-  {
-    id: "222ertyuiop",
-    projectname: "三亚投资发展有限公司",
-    meetingprogress: "1",
-    applicant: "东岸卓越城项目",
-    projectaddress: "抱坡路",
-    plotnumber: "BP08-03,BP08-11",
-    landarea: "45540平方米",
-    landusenature: "商服用地",
-    projectpositioning: "商业",
-    landsituation: "",
-    totalprojectinvestment: "约19亿元",
-    fundingsource: "企业投资",
-    ztConstructionmodelList: [
-      {
-        id: "hfgdg",
-        projectinformationid: "ertyuiop",
-        modelname: "报建模型1",
-        creationtime: "2024-04-24 17:22:13",
-        url: "http://192.168.60.2:8090/iserver/services/3D-fangan/rest/realspace",
-        dataurl:
-          "http://192.168.60.2:8090/iserver/services/data-fangan/rest/data",
-        datasourcename: "DongAnZhuoYueCheng",
-        datasetname: "建筑轮廓",
-        selectionStatus: true,
-        designunit: "筑博设计股份有限公司",
-        totalarea: "",
-        groundarea: "",
-        groundcapacity: "",
-        buildingarea: "",
-        plandescription:
-          "拟建15栋25-26层安居房、 1栋3层幼儿园、 1栋1层配套用房、 1栋1层开闭所及1个2层整体地下室。总建筑面积约23.81万平方米, 其中计容建筑面积约17.41万平方米, 不计容建筑面积约6.40万平方米。 容积率3.0, 建筑密度17.59%, 建筑高度80米, 绿地率40%, 总户数1552户。机动车停车位1944个(地上154个, 地下1790个) , 非机动车位3270个",
-      },
-      {
-        id: "2hfgddfzg",
-        projectinformationid: "ertyuiop",
-        modelname: "报建模型2",
-        creationtime: "2024-04-24 17:22:13",
-
-        url: "http://192.168.60.2:8090/iserver/services/3D-fangan2/rest/realspace",
-        dataurl:
-          "http://192.168.60.2:8090/iserver/services/data-fangan2/rest/data",
-        datasourcename: "DongAnZhuoYueCheng2",
-        datasetname: "建筑轮廓",
-        selectionStatus: false,
-        designunit: "2筑博设计股份有限公司",
-        totalarea: "",
-        groundarea: "",
-        groundcapacity: "",
-        buildingarea: "",
-        plandescription:
-          "拟建15栋25-26层安居房、 1栋3层幼儿园、 1栋1层配套用房、 1栋1层开闭所及1个2层整体地下室。总建筑面积约23.81万平方米, 其中计容建筑面积约17.41万平方米, 不计容建筑面积约6.40万平方米。 容积率3.0, 建筑密度17.59%, 建筑高度80米, 绿地率40%, 总户数1552户。机动车停车位1944个(地上154个, 地下1790个) , 非机动车位3270个",
-      },
-    ],
-  },
-  {
-    id: "A1",
-    projectname: "榕华四季",
-    meetingprogress: "0",
-    applicant: "榕华四季",
-    projectaddress: "抱坡路",
-    plotnumber: "BP08-11-2",
-    landarea: "",
-    landusenature: "",
-    projectpositioning: "商业",
-    landsituation: "",
-    totalprojectinvestment: "",
-    fundingsource: "企业投资",
-    ztConstructionmodelList: [
-      {
-        // 榕华四季
-        id: "A",
-        projectinformationid: "A1",
-        modelname: "A1",
-        creationtime: "2024-04-24 17:22:13",
-        url: "http://192.168.60.2:8090/iserver/services/3D-RHSJ/rest/realspace",
-        dataurl:
-          "http://192.168.60.2:8090/iserver/services/data-RHSJ/rest/data",
-        datasourcename: "RHSJ",
-        datasetname: "建筑轮廓",
-        selectionStatus: false,
-        designunit: "",
-        totalarea: "",
-        groundarea: "",
-        groundcapacity: "",
-        buildingarea: "",
-        plandescription: "",
-      },
-    ],
-  },
-];
-//项目模型指标人工核算值
-window.project_model_zb = [{ id: "qwertyuiop", dkbm: "" }];
 
 //图层服务查询分组树
 window.layerTree = [
@@ -1821,13 +1668,7 @@ window.dict = {
     { label: "已通过", value: "已通过" },
     { label: "未通过", value: "未通过" },
   ],
-  //基准地价中项目类型
-  // zt_jzdj_ProjectType: [
-  //   { label: "居住建筑", value: "居住建筑" },
-  //   { label: "公共建筑", value: "公共建筑" },
-  //   { label: "工业建筑", value: "工业建筑" },
-  //   { label: "农业建筑", value: "农业建筑" },
-  // ],
+
   //基准地价中土地用途
   zt_jzdj_LandUse: [
     { label: "商服用地", value: "商服用地" },
@@ -1842,70 +1683,6 @@ window.NightViewLayerName = [
   // "抱坡规划区域建筑基底@building",
   // "规划区基底高度@sanyaLAT",
 ];
-//广告项目信息
-window.billboardInfoList = [
-  {
-    id: "1",
-    projectname: "广告项目1",
-    address: "项目地址",
-    checkDate: "2024-01-02 12:00:00",
-    design: "设计单位",
-    description: "简介",
-    url: "http://192.168.60.2:8090/iserver/services/3D-fangan/rest/realspace",
-    dataurl: "http://192.168.60.2:8090/iserver/services/data-fangan/rest/data",
-    datasourcename: "DongAnZhuoYueCheng",
-    datasetname: "建筑轮廓",
-  },
-  {
-    id: "2",
-    projectname: "广告项目2",
-    address: "项目地址",
-    checkDate: "2024-01-02 12:00:00",
-    design: "设计单位",
-    description: "简介",
-    url: "http://192.168.60.2:8090/iserver/services/3D-fangan/rest/realspace",
-    dataurl: "http://192.168.60.2:8090/iserver/services/data-fangan/rest/data",
-    datasourcename: "DongAnZhuoYueCheng",
-    datasetname: "建筑轮廓",
-  },
-];
-//广告模型信息
-window.billboardModelList = [
-  {
-    id: "1",
-    billboardInfoId: "1",
-    billboardName: "GUCCI",
-    billboardType: "附设于建筑一层门楣的广告",
-    x: 109.511396,
-    y: 18.316283,
-    z: 25.18,
-    xL: 40,
-    yL: 1.16,
-    zL: 0.1,
-    rotateX: 102.1,
-    rotateY: 0,
-    rotateZ: 0,
-    ReviewStatus: "",
-    ReviewComments: "",
-  },
-  {
-    id: "3",
-    billboardInfoId: "1",
-    billboardName: "广告模型2",
-    billboardType: "平行建筑主体户外广告",
-    x: 109.511509,
-    y: 18.315612,
-    z: 28.69,
-    xL: 10,
-    yL: 5,
-    zL: 0.1,
-    rotateX: 0,
-    rotateY: 0,
-    rotateZ: 0,
-    ReviewStatus: "",
-    ReviewComments: "",
-  },
-];
 //广告模型审查规则
 window.billboardReviewList = [
   {
@@ -1918,7 +1695,7 @@ window.billboardReviewList = [
         code: "00101",
         billboardType: "平行建筑主体户外广告",
         isAddModel: true,
-        ModelType: "rectangleBillboard",
+        ModelType: "bjModel",
         ReviewItems: [
           {
             id: "4553",
@@ -1930,7 +1707,7 @@ window.billboardReviewList = [
           {
             id: "4534553",
             code: "0010101",
-            ReviewMethod: "动审查",
+            ReviewMethod: "动审查",
             ReviewContent: "户外广告上沿不得突出墙面(包括女儿墙)的外轮廓线",
           },
           {
@@ -1949,7 +1726,7 @@ window.billboardReviewList = [
           {
             id: "453sd4we553",
             code: "0010104",
-            ReviewMethod: "动审查",
+            ReviewMethod: "动审查",
             ReviewContent:
               "广告设施宽度应与墙面相协调,周围不应超出墙面外轮廓线,垂直方向突出墙面距离不宜大于0.5米",
           },
@@ -1979,7 +1756,7 @@ window.billboardReviewList = [
             code: "0010201",
             billboardType: "底层以上没有出挑结构的建筑",
             isAddModel: true,
-            ModelType: "rectangleBillboard",
+            ModelType: "bjModel",
             ReviewItems: [
               {
                 id: "4553",
@@ -2004,7 +1781,7 @@ window.billboardReviewList = [
               {
                 id: "453sd45xcv53",
                 code: "001020103",
-                ReviewMethod: "动审查",
+                ReviewMethod: "动审查",
                 ReviewContent:
                   "户外广告外表面距离墙面不得超过0.3米(霓虹灯户外广告则外表面距离墙面不得超过0.5米)",
               },
@@ -2020,7 +1797,7 @@ window.billboardReviewList = [
                 code: "001020201",
                 billboardType: "附设于建筑一层门楣的广告",
                 isAddModel: true,
-                ModelType: "rectangleBillboard",
+                ModelType: "bjModel",
                 ReviewItems: [
                   {
                     id: "4553",
@@ -2043,16 +1820,10 @@ window.billboardReviewList = [
                     ReviewContent:
                       "一层建筑层高≤4.5m并且广告高度≤1.5m或者一层建筑层高>4.5m并且广告高度小于等于2m",
                   },
-                  // {
-                  //   id: "453sd45xcv53",
-                  //   code: "00102020103",
-                  //   ReviewMethod: "自动审查",
-                  //   ReviewContent: "一层建筑层高>4.5m并且广告高度小于等于2m",
-                  // },
                   {
                     id: "453sd45xcv53",
                     code: "00102020104",
-                    ReviewMethod: "动审查",
+                    ReviewMethod: "手动审查",
                     ReviewContent:
                       "户外广告外表面距离墙面不得超过0.3米(霓虹灯户外广告则外表面距离墙面不得超过0.5米)",
                   },
@@ -2063,7 +1834,7 @@ window.billboardReviewList = [
                 code: "001020202",
                 billboardType: "设于建筑出挑部分的墙面上",
                 isAddModel: true,
-                ModelType: "rectangleBillboard",
+                ModelType: "bjModel",
                 ReviewItems: [
                   {
                     id: "4553",
@@ -2100,7 +1871,7 @@ window.billboardReviewList = [
                   {
                     id: "453sd45xcv53",
                     code: "00102020205",
-                    ReviewMethod: "动审查",
+                    ReviewMethod: "动审查",
                     ReviewContent:
                       "户外广告外表面距离墙面不得超过0.3米(霓虹灯户外广告外表面距离墙面不得超过0.5米)",
                   },
@@ -2115,7 +1886,7 @@ window.billboardReviewList = [
         code: "00103",
         billboardType: "围墙上设置的户外广告",
         isAddModel: true,
-        ModelType: "rectangleBillboard",
+        ModelType: "bjModel",
         ReviewItems: [
           {
             id: "4534553",
@@ -2984,6 +2755,21 @@ window.billboardModelRuleList = [
       },
     ],
   },
+  {
+    id: "wesdwasd",
+    code: "bjModel",
+    billboardType: "报建广告牌",
+    template: [
+      {
+        //模板名称
+        templateName: "矩形广告牌名称1",
+        //缩略图
+        thumbnailUrl: "../../../../static/ModelData/billboard/1.jpg",
+        //模板顶部类型
+        templateTopType: "box",
+      },
+    ],
+  },
   {
     id: "wewasd",
     code: "rectangleBillboard",
@@ -3365,16 +3151,6 @@ window.NightLightUrl = {
   //道路流动线
   dlzxx: {
     url: "static/data/道路中线_1.json",
-    // lddxWidth: 5, //流动线底线线宽
-    // lddxColor: { r: 0 / 255, g: 0 / 255, b: 0 / 255, a: 0.3 }, //流动线底线颜色
-    // ldxWidth: 2, //流动线线宽
-    // ldxOutlineColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.3 }, //流动线轮廓颜色
-    // ldxOutlineWidth: 3, //流动轮廓线宽
-    // ldxOutlineColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.3 }, //流动线轮廓颜色
-    // ldxColor: { r: 127 / 255, g: 255 / 255, b: 0 / 255, a: 1 }, //流动线线型填充颜色
-    // trailLength: 0.3, //流动线在整条线中占比例
-    // period: 1, //尾迹线从起点到终点的运行周期
-
     lddxWidth: 5, //流动线底线线宽
     lddxColor: { r: 0 / 255, g: 0 / 255, b: 212 / 255, a: 0.2 }, //流动线底线颜色
 
@@ -3435,16 +3211,6 @@ window.NightLightUrl = {
   //楼顶流动线
   buildTopLine: {
     url: "static/data/楼顶流动线.json",
-    // lddxWidth: 5, //流动线底线线宽
-    // lddxColor: { r: 0 / 255, g: 0 / 255, b: 0 / 255, a: 0.3 }, //流动线底线颜色
-    // ldxWidth: 2, //流动线线宽
-    // ldxOutlineColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.3 }, //流动线轮廓颜色
-    // ldxOutlineWidth: 3, //流动轮廓线宽
-    // ldxOutlineColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.3 }, //流动线轮廓颜色
-    // ldxColor: { r: 127 / 255, g: 255 / 255, b: 0 / 255, a: 1 }, //流动线线型填充颜色
-    // trailLength: 0.5, //流动线在整条线中占比例
-    // period: 2, //尾迹线从起点到终点的运行周期
-
     lddxWidth: 100, //流动线底线线宽
     lddxColor: { r: 255 / 255, g: 255 / 255, b: 255 / 255, a: 0.2 }, //流动线底线颜色
     ldxWidth: 100, //流动线线宽
@@ -3463,35 +3229,12 @@ window.NightLightUrl = {
     intensity: 1, //强度
   },
 };
-
-/**
- * 基准地价分析列表
- */
-window.BenchmarkLandPriceList = [
-  // {
-  //   id: "wefw",
-  //   ProjectScope: [],
-  //   ProjectName: "基准地价分析1",
-  //   ProjectType: "居住建筑",
-  //   ConstructionUnit: "建设单位名称",
-  //   analysisDate: "2024-06-01 10:11:21",
-  //   AnalysisStatus: "完成",
-  //   ReportPath:""
-  // },
-];
 //基准地价 规划中的用地性质与地价分析中的土地用途对应关系
 window.landUseNatureRelation = [
   {
     tdyt: "商服用地",
     GHDKType: [{ ydxz: "商服用地", ydxzdl: "09" }],
     layerinfo: [
-      // {
-      //   layerCore: "006006",
-      //   tdjbField: "级别_终",
-      //   ydlxTypeField: "",
-      //   ydlxPriceField: "集体楼面单价_终",
-      //   qsTYPE: "JT",
-      // },
       {
         tableName: "C12Sfjb",
         layerCore: "006001",
@@ -3506,13 +3249,6 @@ window.landUseNatureRelation = [
     tdyt: "住宅用地",
     GHDKType: [{ ydxz: "居住用地", ydxzdl: "07" }],
     layerinfo: [
-      // {
-      //   layerCore: "006002",
-      //   tdjbField: "级别_终",
-      //   ydlxTypeField: "",
-      //   ydlxPriceField: "集体楼面单价_终",
-      //   qsTYPE: "JT",
-      // },
       {
         tableName: "C22Zzjb",
         layerCore: "006008",
@@ -3530,13 +3266,6 @@ window.landUseNatureRelation = [
       { ydxz: "仓储用地", ydxzdl: "11" },
     ],
     layerinfo: [
-      // {
-      //   layerCore: "006005",
-      //   tdjbField: "级别_终",
-      //   ydlxTypeField: "",
-      //   ydlxPriceField: "集体楼面单价_终",
-      //   qsTYPE: "JT",
-      // },
       {
         tableName: "C32Gyjb",
         layerCore: "006003",
@@ -3556,13 +3285,6 @@ window.landUseNatureRelation = [
         tdyt: "机关团体用地",
         GHDKType: [{ ydxz: "机关团体用地", ydxzdl: "0801" }],
         layerinfo: [
-          // {
-          //   layerCore: "006009",
-          //   tdjbField: "级别_终",
-          //   ydlxTypeField: "机关团体用地",
-          //   ydlxPriceField: "机关_地价",
-          //   qsTYPE: "JT",
-          // },
           {
             tableName: "C41Gfjb",
             layerCore: "006004",
@@ -3598,13 +3320,6 @@ window.landUseNatureRelation = [
         tdyt: "文化用地",
         GHDKType: [{ ydxz: "文化用地", ydxzdl: "0803" }],
         layerinfo: [
-          // {
-          //   layerCore: "006009",
-          //   tdjbField: "级别_终",
-          //   ydlxTypeField: "文化设施、体育用地",
-          //   ydlxPriceField: "文化_地价",
-          //   qsTYPE: "JT",
-          // },
           {
             tableName: "C41Gfjb",
             layerCore: "006004",
@@ -3619,13 +3334,6 @@ window.landUseNatureRelation = [
         tdyt: "教育用地",
         GHDKType: [{ ydxz: "教育用地", ydxzdl: "0804" }],
         layerinfo: [
-          // {
-          //   layerCore: "006009",
-          //   tdjbField: "级别_终",
-          //   ydlxTypeField: "教育、科研用地",
-          //   ydlxPriceField: "教育_地价",
-          //   qsTYPE: "JT",
-          // },
           {
             tableName: "C41Gfjb",
             layerCore: "006004",
@@ -3640,13 +3348,6 @@ window.landUseNatureRelation = [
         tdyt: "体育用地",
         GHDKType: [{ ydxz: "体育用地", ydxzdl: "0805" }],
         layerinfo: [
-          // {
-          //   layerCore: "006009",
-          //   tdjbField: "级别_终",
-          //   ydlxTypeField: "文化设施、体育用地",
-          //   ydlxPriceField: "文化_地价",
-          //   qsTYPE: "JT",
-          // },
           {
             tableName: "C41Gfjb",
             layerCore: "006004",
@@ -3661,13 +3362,6 @@ window.landUseNatureRelation = [
         tdyt: "医疗卫生用地",
         GHDKType: [{ ydxz: "医疗卫生用地", ydxzdl: "0806" }],
         layerinfo: [
-          // {
-          //   layerCore: "006009",
-          //   tdjbField: "级别_终",
-          //   ydlxTypeField: "医疗卫生、社会福利用地",
-          //   ydlxPriceField: "医疗_地价",
-          //   qsTYPE: "JT",
-          // },
           {
             tableName: "C41Gfjb",
             layerCore: "006004",
@@ -3682,13 +3376,6 @@ window.landUseNatureRelation = [
         tdyt: "社会福利用地",
         GHDKType: [{ ydxz: "社会福利用地", ydxzdl: "0807" }],
         layerinfo: [
-          // {
-          //   layerCore: "006009",
-          //   tdjbField: "级别_终",
-          //   ydlxTypeField: "医疗卫生、社会福利用地",
-          //   ydlxPriceField: "医疗_地价",
-          //   qsTYPE: "JT",
-          // },
           {
             tableName: "C41Gfjb",
             layerCore: "006004",
@@ -3710,13 +3397,6 @@ window.landUseNatureRelation = [
         tdyt: "公共设施用地",
         GHDKType: [{ ydxz: "公共设施用地", ydxzdl: "13" }],
         layerinfo: [
-          // {
-          //   layerCore: "006009",
-          //   tdjbField: "级别_终",
-          //   ydlxTypeField: "公园与绿地、公用设施用地",
-          //   ydlxPriceField: "公园_地价",
-          //   qsTYPE: "JT",
-          // },
           {
             tableName: "C41Gfjb",
             layerCore: "006004",
@@ -3731,13 +3411,6 @@ window.landUseNatureRelation = [
         tdyt: "绿地与开敞空间用地",
         GHDKType: [{ ydxz: "绿地与开敞空间用地", ydxzdl: "14" }],
         layerinfo: [
-          // {
-          //   layerCore: "006009",
-          //   tdjbField: "级别_终",
-          //   ydlxTypeField: "公园与绿地、公用设施用地",
-          //   ydlxPriceField: "公园_地价",
-          //   qsTYPE: "JT",
-          // },
           {
             tableName: "C41Gfjb",
             layerCore: "006004",
@@ -3751,7 +3424,11 @@ window.landUseNatureRelation = [
     ],
   },
 ];
-window.earthRadius = 0.994615737;
+window.earthRadius = 0.994615737 * 1.00061864634552;
+
+window.toLocalCoor = 1.00000209048259;
+window.to4525Coor = 1.00061864634552;
+
 //用于地下模式更改透明度
 //图层名称
 window.QXLayerNames = [
@@ -3763,5 +3440,4 @@ window.QXLayerNames = [
   "DiXing@BaoPo0621N",
 ];
 window.Layeralpha = 0;
-
 window.isUseDB = true;

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است