Browse Source

Merge branch 'master' of http://114.244.114.158:8802/siwei/real3d-portalsite

maxiaoxiao 3 months ago
parent
commit
faae9b970d
28 changed files with 3143 additions and 784 deletions
  1. 188 96
      src/api/zt/ztApi.js
  2. 0 0
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js
  3. 8 2
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.vue
  4. 31 22
      src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/jzdjfxsmjg.vue
  5. 7 1
      src/views/ConstructionApplication3D/ConstructionModelInfo/addConstructionModelInfo.vue
  6. 99 43
      src/views/ConstructionApplication3D/Demolition/CQSetInfo.vue
  7. 12 9
      src/views/ConstructionApplication3D/Demolition/DemolitionList.vue
  8. 64 17
      src/views/ConstructionApplication3D/Demolition/QMSetInfo.vue
  9. 57 15
      src/views/ConstructionApplication3D/Demolition/ZDSetInfo.vue
  10. 0 0
      src/views/ConstructionApplication3D/Demolition/zdAnalyse.js
  11. 43 1
      src/views/ConstructionApplication3D/MXDBinfo/MXDBinfo.vue
  12. 2 2
      src/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue
  13. 94 10
      src/views/ConstructionApplication3D/ZBFXAnalysisinfo/ZBFXAnalysisinfo.vue
  14. 1 1
      src/views/ConstructionApplication3D/backLineAnalysis/backLineAnalysisinfo.vue
  15. 191 4
      src/views/ConstructionApplication3D/billboard/addBiillboardModel.vue
  16. 105 2
      src/views/ConstructionApplication3D/billboard/addBillboardPoject.vue
  17. 3 3
      src/views/ConstructionApplication3D/billboard/billboardCheckList.vue
  18. 239 236
      src/views/ConstructionApplication3D/billboard/billboardChekInfo.vue
  19. 89 18
      src/views/ConstructionApplication3D/billboard/billboardDesign.vue
  20. 279 0
      src/views/ConstructionApplication3D/billboard/billboardJTList.vue
  21. 133 0
      src/views/ConstructionApplication3D/billboard/billboarddetail.vue
  22. 1091 0
      src/views/ConstructionApplication3D/billboard/editBiillboardModel.vue
  23. 7 1
      src/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue
  24. 0 0
      src/views/ConstructionApplication3D/projectManagement/CheckParkAnalyse.js
  25. 107 2
      src/views/ConstructionApplication3D/projectManagement/projectManagement.vue
  26. 0 0
      src/views/ConstructionApplication3D/skylineAnalysis/skylineExecute.js
  27. 270 281
      src/views/ConstructionApplication3D/zt.scss
  28. 23 18
      static/Config/config.js

+ 188 - 96
src/api/zt/ztApi.js

@@ -5,15 +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,
@@ -22,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参数
@@ -165,7 +161,7 @@ request.interceptors.response.use(
  */
 export async function getJZDJWord(data) {
   let response = await request({
-    url: "/model/exportWord/exportWord4",
+    url: "/exportWord/exportWord4",
     method: "post",
     responseType: "blob",
     data: data,
@@ -200,7 +196,7 @@ export async function getJZDJWord(data) {
  */
 export async function getZDBCWord(data) {
   let response = await request({
-    url: "/model/exportWord/exportWord3",
+    url: "/exportWord/exportWord3",
     method: "post",
     responseType: "blob",
     data: data,
@@ -232,7 +228,15 @@ export async function getZDBCWord(data) {
 // 查询项目信息列表
 export async function listProjectinformation(query) {
   return await request({
-    url: "/model/projectinformation/list",
+    url: "/projectinformation/list",
+    method: "get",
+    params: query,
+  });
+}
+// 查询未关联广告项目信息列表
+export async function NoAssociatedList(query) {
+  return await request({
+    url: "/projectinformation/NoAssociatedList",
     method: "get",
     params: query,
   });
@@ -241,7 +245,7 @@ export async function listProjectinformation(query) {
 // 查询项目信息详细
 export async function getProjectinformation(id) {
   return await request({
-    url: "/model/projectinformation/" + id,
+    url: "/projectinformation/" + id,
     method: "get",
   });
 }
@@ -249,7 +253,7 @@ export async function getProjectinformation(id) {
 // 新增项目信息
 export async function addProjectinformation(data) {
   return await request({
-    url: "/model/projectinformation",
+    url: "/projectinformation",
     method: "post",
     data: data,
   });
@@ -258,7 +262,7 @@ export async function addProjectinformation(data) {
 // 修改项目信息
 export async function updateProjectinformation(data) {
   return await request({
-    url: "/model/projectinformation",
+    url: "/projectinformation",
     method: "put",
     data: data,
   });
@@ -267,7 +271,7 @@ export async function updateProjectinformation(data) {
 // 删除项目信息
 export async function delProjectinformation(id) {
   return await request({
-    url: "/model/projectinformation/" + id,
+    url: "/projectinformation/" + id,
     method: "delete",
   });
 }
@@ -275,7 +279,7 @@ export async function delProjectinformation(id) {
 // 查询报建模型列表
 export async function listConstructionmodel(query) {
   return await request({
-    url: "/model/constructionmodel/list",
+    url: "/constructionmodel/list",
     method: "get",
     params: query,
   });
@@ -284,7 +288,7 @@ export async function listConstructionmodel(query) {
 // 查询报建模型详细
 export async function getConstructionmodel(id) {
   return await request({
-    url: "/model/constructionmodel/" + id,
+    url: "/constructionmodel/" + id,
     method: "get",
   });
 }
@@ -292,7 +296,7 @@ export async function getConstructionmodel(id) {
 // 新增报建模型
 export async function addConstructionmodel(data) {
   return await request({
-    url: "/model/constructionmodel",
+    url: "/constructionmodel",
     method: "post",
     data: data,
   });
@@ -301,7 +305,7 @@ export async function addConstructionmodel(data) {
 // 修改报建模型
 export async function updateConstructionmodel(data) {
   return await request({
-    url: "/model/constructionmodel",
+    url: "/constructionmodel",
     method: "put",
     data: data,
   });
@@ -310,7 +314,7 @@ export async function updateConstructionmodel(data) {
 // 删除报建模型
 export async function delConstructionmodel(id) {
   return await request({
-    url: "/model/constructionmodel/" + id,
+    url: "/constructionmodel/" + id,
     method: "delete",
   });
 }
@@ -318,7 +322,7 @@ export async function delConstructionmodel(id) {
 // 查询项目模型指标人工核算值详细
 export async function getZtProjectModelZb(id) {
   return await request({
-    url: "/model/ZtProjectModelZb/" + id,
+    url: "/ZtProjectModelZb/" + id,
     method: "get",
   });
 }
@@ -326,7 +330,7 @@ export async function getZtProjectModelZb(id) {
 // 新增项目模型指标人工核算值
 export async function addZtProjectModelZb(data) {
   return await request({
-    url: "/model/ZtProjectModelZb",
+    url: "/ZtProjectModelZb",
     method: "post",
     data: data,
   });
@@ -335,7 +339,7 @@ export async function addZtProjectModelZb(data) {
 // 修改项目模型指标人工核算值
 export async function updateZtProjectModelZb(data) {
   return await request({
-    url: "/model/ZtProjectModelZb",
+    url: "/ZtProjectModelZb",
     method: "put",
     data: data,
   });
@@ -347,7 +351,7 @@ export async function updateZtProjectModelZb(data) {
 // 基准地价分析
 export async function getAnalyseResult(data) {
   return request({
-    url: "/model/jzdjanalyse/getAnalyseResult",
+    url: "/jzdjanalyse/getAnalyseResult",
     method: "post",
     data: data,
   });
@@ -356,7 +360,7 @@ export async function getAnalyseResult(data) {
 // 查询基准地价信息列表
 export async function listBenchmarkLandPrices(query) {
   return request({
-    url: "/model/BenchmarkLandPrices/list",
+    url: "/BenchmarkLandPrices/list",
     method: "get",
     params: query,
   });
@@ -365,7 +369,7 @@ export async function listBenchmarkLandPrices(query) {
 // 查询基准地价信息详细
 export async function getBenchmarkLandPrices(id) {
   return request({
-    url: "/model/BenchmarkLandPrices/" + id,
+    url: "/BenchmarkLandPrices/" + id,
     method: "get",
   });
 }
@@ -373,7 +377,7 @@ export async function getBenchmarkLandPrices(id) {
 // 新增基准地价信息
 export async function addBenchmarkLandPrices(data) {
   return request({
-    url: "/model/BenchmarkLandPrices",
+    url: "/BenchmarkLandPrices",
     method: "post",
     data: data,
   });
@@ -382,7 +386,7 @@ export async function addBenchmarkLandPrices(data) {
 // 修改基准地价信息
 export async function updateBenchmarkLandPrices(data) {
   return request({
-    url: "/model/BenchmarkLandPrices",
+    url: "/BenchmarkLandPrices",
     method: "put",
     data: data,
   });
@@ -391,14 +395,14 @@ export async function updateBenchmarkLandPrices(data) {
 // 删除基准地价信息
 export async function delBenchmarkLandPrices(id) {
   return request({
-    url: "/model/BenchmarkLandPrices/" + id,
+    url: "/BenchmarkLandPrices/" + id,
     method: "delete",
   });
 }
 // 查询基准地价分析结果列表
 export function listZtBenchmarkLandPriceResults(query) {
   return request({
-    url: "/model/ZtBenchmarkLandPriceResults/list",
+    url: "/ZtBenchmarkLandPriceResults/list",
     method: "get",
     params: query,
   });
@@ -407,7 +411,7 @@ export function listZtBenchmarkLandPriceResults(query) {
 // 查询基准地价分析结果详细
 export function getZtBenchmarkLandPriceResults(id) {
   return request({
-    url: "/model/ZtBenchmarkLandPriceResults/" + id,
+    url: "/ZtBenchmarkLandPriceResults/" + id,
     method: "get",
   });
 }
@@ -415,7 +419,7 @@ export function getZtBenchmarkLandPriceResults(id) {
 // 新增基准地价分析结果
 export function addZtBenchmarkLandPriceResults(data) {
   return request({
-    url: "/model/ZtBenchmarkLandPriceResults",
+    url: "/ZtBenchmarkLandPriceResults",
     method: "post",
     data: data,
   });
@@ -424,7 +428,7 @@ export function addZtBenchmarkLandPriceResults(data) {
 // 修改基准地价分析结果
 export function updateZtBenchmarkLandPriceResults(data) {
   return request({
-    url: "/model/ZtBenchmarkLandPriceResults",
+    url: "/ZtBenchmarkLandPriceResults",
     method: "put",
     data: data,
   });
@@ -433,7 +437,7 @@ export function updateZtBenchmarkLandPriceResults(data) {
 // 删除基准地价分析结果
 export function delZtBenchmarkLandPriceResults(id) {
   return request({
-    url: "/model/ZtBenchmarkLandPriceResults/" + id,
+    url: "/ZtBenchmarkLandPriceResults/" + id,
     method: "delete",
   });
 }
@@ -443,7 +447,7 @@ export function delZtBenchmarkLandPriceResults(id) {
 // 01 征地补偿标准列表 list
 export function getZdBcbzList(query) {
   return request({
-    url: "/model/zdbcbz/list",
+    url: "/zdbcbz/list",
     method: "get",
     params: query,
   });
@@ -451,14 +455,14 @@ export function getZdBcbzList(query) {
 // 征地  补偿标准 getbyid
 export function getZdBcbzById(id) {
   return request({
-    url: "/model/zdbcbz/" + id,
+    url: "/zdbcbz/" + id,
     method: "get",
   });
 }
 //添加  征地  补偿标准 add
 export function addZdBcbz(data) {
   return request({
-    url: "/model/zdbcbz/",
+    url: "/zdbcbz/",
     method: "post",
     data: data,
   });
@@ -466,7 +470,7 @@ export function addZdBcbz(data) {
 // 更新 征地  补偿标准 update
 export function updateZdBcbz(data) {
   return request({
-    url: "/model/zdbcbz/",
+    url: "/zdbcbz/",
     method: "put",
     data: data,
   });
@@ -474,7 +478,7 @@ export function updateZdBcbz(data) {
 // 删除 征地  补偿标准 delbyid
 export function delZdBcbz(id) {
   return request({
-    url: "/model/zdbcbz/" + id,
+    url: "/zdbcbz/" + id,
     method: "delete",
   });
 }
@@ -482,7 +486,7 @@ export function delZdBcbz(id) {
 // 02 青苗 补偿标准列表 list
 export function getQmbcbzList(query) {
   return request({
-    url: "/model/qmbcbz/list",
+    url: "/qmbcbz/list",
     method: "get",
     params: query,
   });
@@ -490,14 +494,14 @@ export function getQmbcbzList(query) {
 // 青苗 补偿标准 getbyid
 export function getQmbcbzById(id) {
   return request({
-    url: "/model/qmbcbz/" + id,
+    url: "/qmbcbz/" + id,
     method: "get",
   });
 }
 //添加 青苗 补偿标准 add
 export function addQmbcbz(data) {
   return request({
-    url: "/model/qmbcbz",
+    url: "/qmbcbz",
     method: "post",
     data: data,
   });
@@ -505,7 +509,7 @@ export function addQmbcbz(data) {
 // 更新 青苗 补偿标准 update
 export function updateQmbcbz(data) {
   return request({
-    url: "/model/qmbcbz",
+    url: "/qmbcbz",
     method: "put",
     data: data,
   });
@@ -513,7 +517,7 @@ export function updateQmbcbz(data) {
 // 删除 青苗 补偿标准 delbyid
 export function delQmbcbz(id) {
   return request({
-    url: "/model/qmbcbz/" + id,
+    url: "/qmbcbz/" + id,
     method: "delete",
   });
 }
@@ -521,7 +525,7 @@ export function delQmbcbz(id) {
 // 03 拆迁 补偿标准列表 list
 export function getCqBcbzList(query) {
   return request({
-    url: "/model/cqbcbz/list",
+    url: "/cqbczd/list",
     method: "get",
     params: query,
   });
@@ -529,14 +533,14 @@ export function getCqBcbzList(query) {
 // 拆迁 补偿标准 getbyid
 export function getCqBcbzById(id) {
   return request({
-    url: "/model/cqbcbz/" + id,
+    url: "/cqbczd/" + id,
     method: "get",
   });
 }
 //添加 拆迁 补偿标准 add
 export function addCqBcbz(data) {
   return request({
-    url: "/model/cqbcbz",
+    url: "/cqbczd",
     method: "post",
     data: data,
   });
@@ -544,22 +548,22 @@ export function addCqBcbz(data) {
 // 更新 拆迁 补偿标准 update
 export function updateCqBcbz(data) {
   return request({
-    url: "/model/cqbcbz",
-    method: "post",
+    url: "/cqbczd",
+    method: "put",
     data: data,
   });
 }
 // 删除 拆迁 补偿标准 delbyid
-export function delCqBcbz(id) {
+export function delCqBcbz(ids) {
   return request({
-    url: "/model/cqbcbz/" + id,
+    url: "/cqbczd/" + ids,
     method: "delete",
   });
 }
 // 03-1 拆迁 补偿标准项 list
 export function getCqBcbzItemList(query) {
   return request({
-    url: "/model/cqbcbzitem/list",
+    url: "/cqbcbzitem/list",
     method: "get",
     params: query,
   });
@@ -567,14 +571,14 @@ export function getCqBcbzItemList(query) {
 // 拆迁 补偿标准项 getbyid
 export function getCqBcbzItemById(id) {
   return request({
-    url: "/model/cqbcbzitem/" + id,
+    url: "/cqbcbzitem/" + id,
     method: "get",
   });
 }
 //添加 拆迁 补偿标准项 add
 export function addCqBcbzItem(data) {
   return request({
-    url: "/model/cqbcbzitem",
+    url: "/cqbcbzitem",
     method: "post",
     data: data,
   });
@@ -582,15 +586,15 @@ export function addCqBcbzItem(data) {
 // 更新 拆迁 补偿标准项 update
 export function updateCqBcbzItem(data) {
   return request({
-    url: "/model/cqbcbzitem",
+    url: "/cqbcbzitem",
     method: "put",
     data: data,
   });
 }
 // 删除 拆迁 补偿标准项 delbyid
-export function delCqBcbzItem(id) {
+export function delCqBcbzItem(ids) {
   return request({
-    url: "/model/cqbcbzitem/" + id,
+    url: "/cqbcbzitem/" + ids,
     method: "delete",
   });
 }
@@ -598,7 +602,7 @@ export function delCqBcbzItem(id) {
 // 04 拆迁 分析结果 列表 list
 export function getCqResultList(query) {
   return request({
-    url: "/model/cqresult/list",
+    url: "/cqresult/list",
     method: "get",
     params: query,
   });
@@ -606,14 +610,14 @@ export function getCqResultList(query) {
 // 拆迁 分析结果 getbyid
 export function getCqResultById(id) {
   return request({
-    url: "/model/cqresult/" + id,
+    url: "/cqresult/" + id,
     method: "get",
   });
 }
 //添加 拆迁 分析结果 add
 export function addCqResult(data) {
   return request({
-    url: "/model/cqresult",
+    url: "/cqresult",
     method: "post",
     data: data,
   });
@@ -621,7 +625,7 @@ export function addCqResult(data) {
 // 更新 拆迁 分析结果 update
 export function updateCqResult(data) {
   return request({
-    url: "/model/cqresult",
+    url: "/cqresult",
     method: "post",
     data: data,
   });
@@ -629,7 +633,7 @@ export function updateCqResult(data) {
 // 删除 拆迁 分析结果 delbyid
 export function delCqResult(id) {
   return request({
-    url: "/model/cqresult/" + id,
+    url: "/cqresult/" + id,
     method: "delete",
   });
 }
@@ -637,7 +641,7 @@ export function delCqResult(id) {
 // 05 征地 分析结果 列表 list
 export function getZdResultList(query) {
   return request({
-    url: "/model/zdresult/list",
+    url: "/zdresult/list",
     method: "get",
     params: query,
   });
@@ -645,14 +649,14 @@ export function getZdResultList(query) {
 // 征地 分析结果 getbyid
 export function getZdResultById(id) {
   return request({
-    url: "/model/zdresult/" + id,
+    url: "/zdresult/" + id,
     method: "get",
   });
 }
 //添加 征地 分析结果 add
 export function addZdResult(data) {
   return request({
-    url: "/model/zdresult",
+    url: "/zdresult",
     method: "post",
     data: data,
   });
@@ -660,7 +664,7 @@ export function addZdResult(data) {
 // 更新 征地 分析结果 update
 export function updateZdResult(data) {
   return request({
-    url: "/model/zdresult",
+    url: "/zdresult",
     method: "post",
     data: data,
   });
@@ -668,7 +672,7 @@ export function updateZdResult(data) {
 // 删除 征地 分析结果 delbyid
 export function delZdResult(id) {
   return request({
-    url: "/model/zdresult/" + id,
+    url: "/zdresult/" + id,
     method: "delete",
   });
 }
@@ -676,7 +680,7 @@ export function delZdResult(id) {
 // 06 青苗 分析结果 列表 list
 export function getQmResultList(query) {
   return request({
-    url: "/model/qmresult/list",
+    url: "/qmresult/list",
     method: "get",
     params: query,
   });
@@ -684,14 +688,14 @@ export function getQmResultList(query) {
 // 青苗 分析结果 getbyid
 export function getQmResultById(id) {
   return request({
-    url: "/model/qmresult/" + id,
+    url: "/qmresult/" + id,
     method: "get",
   });
 }
 //添加 青苗 分析结果 add
 export function addQmResult(data) {
   return request({
-    url: "/model/qmresult",
+    url: "/qmresult",
     method: "post",
     data: data,
   });
@@ -699,7 +703,7 @@ export function addQmResult(data) {
 // 更新 青苗 分析结果 update
 export function updateQmResult(data) {
   return request({
-    url: "/model/qmresult",
+    url: "/qmresult",
     method: "post",
     data: data,
   });
@@ -707,14 +711,14 @@ export function updateQmResult(data) {
 // 删除 青苗 分析结果 delbyid
 export function delQmResult(id) {
   return request({
-    url: "/model/qmresult/" + id,
+    url: "/qmresult/" + id,
     method: "delete",
   });
 }
 // 07 征收补偿项目  列表 list
 export function getZdProjectList(query) {
   return request({
-    url: "/model/zdproject/list",
+    url: "/zdproject/list",
     method: "get",
     params: query,
   });
@@ -722,14 +726,14 @@ export function getZdProjectList(query) {
 // 征收补偿项目  getbyid
 export function getZdProjectById(id) {
   return request({
-    url: "/model/zdproject/" + id,
+    url: "/zdproject/" + id,
     method: "get",
   });
 }
 //添加 征收补偿项目  add
 export function addZdProject(data) {
   return request({
-    url: "/model/zdproject",
+    url: "/zdproject",
     method: "post",
     data: data,
   });
@@ -737,7 +741,7 @@ export function addZdProject(data) {
 // 更新 征收补偿项目 update
 export function updateZdProject(data) {
   return request({
-    url: "/model/zdproject",
+    url: "/zdproject",
     method: "post",
     data: data,
   });
@@ -745,13 +749,13 @@ export function updateZdProject(data) {
 // 删除 征收补偿项目 delbyid
 export function delZdProject(id) {
   return request({
-    url: "/model/zdproject/" + id,
+    url: "/zdproject/" + id,
     method: "delete",
   });
 }
 export async function expotZDBCWord(data) {
   let response = await request({
-    url: "/model/zdproject/exportWord",
+    url: "/zdproject/exportWord",
     method: "post",
     responseType: "blob",
     data: data,
@@ -785,7 +789,7 @@ export async function expotZDBCWord(data) {
 // 08 权属 分析结果 列表 list
 export function getQsResultList(query) {
   return request({
-    url: "/model/qsresult/list",
+    url: "/qsresult/list",
     method: "get",
     params: query,
   });
@@ -793,14 +797,14 @@ export function getQsResultList(query) {
 // 权属 分析结果 getbyid
 export function getQsResultById(id) {
   return request({
-    url: "/model/qsresult/" + id,
+    url: "/qsresult/" + id,
     method: "get",
   });
 }
 //添加 权属 分析结果 add
 export function addQsResult(data) {
   return request({
-    url: "/model/qsresult",
+    url: "/qsresult",
     method: "post",
     data: data,
   });
@@ -808,7 +812,7 @@ export function addQsResult(data) {
 // 更新 权属 分析结果 update
 export function updateQsResult(data) {
   return request({
-    url: "/model/qsresult",
+    url: "/qsresult",
     method: "post",
     data: data,
   });
@@ -816,7 +820,7 @@ export function updateQsResult(data) {
 // 删除 权属 分析结果 delbyid
 export function delQsResult(id) {
   return request({
-    url: "/model/qsresult/" + id,
+    url: "/qsresult/" + id,
     method: "delete",
   });
 }
@@ -827,7 +831,7 @@ export function delQsResult(id) {
 // 查询夜景灯光列列表
 export function listZtLightList(query) {
   return request({
-    url: "/model/ZtLightList/list",
+    url: "/ZtLightList/list",
     method: "get",
     params: query,
   });
@@ -836,7 +840,7 @@ export function listZtLightList(query) {
 // 查询夜景灯光列详细
 export function getZtLightList(id) {
   return request({
-    url: "/model/ZtLightList/" + id,
+    url: "/ZtLightList/" + id,
     method: "get",
   });
 }
@@ -844,7 +848,7 @@ export function getZtLightList(id) {
 // 新增夜景灯光列
 export function addZtLightList(data) {
   return request({
-    url: "/model/ZtLightList",
+    url: "/ZtLightList",
     method: "post",
     data: data,
   });
@@ -853,7 +857,7 @@ export function addZtLightList(data) {
 // 修改夜景灯光列
 export function updateZtLightList(data) {
   return request({
-    url: "/model/ZtLightList",
+    url: "/ZtLightList",
     method: "put",
     data: data,
   });
@@ -862,7 +866,7 @@ export function updateZtLightList(data) {
 // 删除夜景灯光列
 export function delZtLightList(id) {
   return request({
-    url: "/model/ZtLightList/" + id,
+    url: "/ZtLightList/" + id,
     method: "delete",
   });
 }
@@ -873,7 +877,7 @@ export function delZtLightList(id) {
 // 查询广告项目信息列表
 export function listZtBillboardInfoList(query) {
   return request({
-    url: "/model/ZtBillboardInfoList/list",
+    url: "/ZtBillboardInfoList/list",
     method: "get",
     params: query,
   });
@@ -882,7 +886,7 @@ export function listZtBillboardInfoList(query) {
 // 查询广告项目信息详细
 export function getZtBillboardInfoList(id) {
   return request({
-    url: "/model/ZtBillboardInfoList/" + id,
+    url: "/ZtBillboardInfoList/" + id,
     method: "get",
   });
 }
@@ -890,7 +894,7 @@ export function getZtBillboardInfoList(id) {
 // 新增广告项目信息
 export function addZtBillboardInfoList(data) {
   return request({
-    url: "/model/ZtBillboardInfoList",
+    url: "/ZtBillboardInfoList",
     method: "post",
     data: data,
   });
@@ -899,7 +903,7 @@ export function addZtBillboardInfoList(data) {
 // 修改广告项目信息
 export function updateZtBillboardInfoList(data) {
   return request({
-    url: "/model/ZtBillboardInfoList",
+    url: "/ZtBillboardInfoList",
     method: "put",
     data: data,
   });
@@ -908,7 +912,7 @@ export function updateZtBillboardInfoList(data) {
 // 删除广告项目信息
 export function delZtBillboardInfoList(id) {
   return request({
-    url: "/model/ZtBillboardInfoList/" + id,
+    url: "/ZtBillboardInfoList/" + id,
     method: "delete",
   });
 }
@@ -916,7 +920,7 @@ export function delZtBillboardInfoList(id) {
 // 查询广告模型信息列表
 export function listBillboardModelList(query) {
   return request({
-    url: "/model/billboardModelList/list",
+    url: "/billboardModelList/list",
     method: "get",
     params: query,
   });
@@ -925,7 +929,7 @@ export function listBillboardModelList(query) {
 // 查询广告模型信息详细
 export function getBillboardModelList(id) {
   return request({
-    url: "/model/billboardModelList/" + id,
+    url: "/billboardModelList/" + id,
     method: "get",
   });
 }
@@ -933,7 +937,7 @@ export function getBillboardModelList(id) {
 // 新增广告模型信息
 export function addBillboardModelList(data) {
   return request({
-    url: "/model/billboardModelList",
+    url: "/billboardModelList",
     method: "post",
     data: data,
   });
@@ -942,7 +946,7 @@ export function addBillboardModelList(data) {
 // 批量新增广告模型信息
 export function addBillboardModelLists(data) {
   return request({
-    url: "/model/billboardModelList/adds",
+    url: "/billboardModelList/adds",
     method: "post",
     data: data,
   });
@@ -951,7 +955,7 @@ export function addBillboardModelLists(data) {
 // 修改广告模型信息
 export function updateBillboardModelList(data) {
   return request({
-    url: "/model/billboardModelList",
+    url: "/billboardModelList",
     method: "put",
     data: data,
   });
@@ -960,9 +964,97 @@ export function updateBillboardModelList(data) {
 // 删除广告模型信息
 export function delBillboardModelList(id) {
   return request({
-    url: "/model/billboardModelList/" + id,
+    url: "/billboardModelList/" + id,
     method: "delete",
   });
 }
 
+/**
+ * 广告牌报告
+ * @param {*} data
+ * @returns
+ */
+export async function getGGPWord(data) {
+  let response = await request({
+    url: "/exportWord/exportGGPWord",
+    method: "post",
+    responseType: "blob",
+    data: data,
+  });
+  debugger;
+  var fileName = "分析报告";
+  debugger;
+  const contentDisposition = response.headers["content-disposition"];
+  if (contentDisposition) {
+    fileName = window.decodeURI(
+      response.headers["content-disposition"].split("=")[1],
+      "UTF-8"
+    );
+  }
+  const isBlob = blobValidate(response.data);
+  debugger;
+  if (isBlob) {
+    const blob = new Blob([response.data]);
+    saveAs(blob, fileName);
+  } else {
+    const resText = await response.text();
+    const rspObj = JSON.parse(resText);
+    const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
+    Message.error(errMsg);
+  }
+  return;
+}
+
+// 查询广告牌位置截图列表
+export function listZtBillboardJt(query) {
+  return request({
+    url: "/ZtBillboardJt/list",
+    method: "get",
+    params: query,
+  });
+}
+
+// 查询广告牌位置截图详细
+export function getZtBillboardJt(id) {
+  return request({
+    url: "/ZtBillboardJt/" + id,
+    method: "get",
+  });
+}
+
+// 新增广告牌位置截图
+export function addZtBillboardJt(data) {
+  return request({
+    url: "/ZtBillboardJt",
+    method: "post",
+    data: data,
+  });
+}
+
+// 修改广告牌位置截图
+export function updateZtBillboardJt(data) {
+  return request({
+    url: "/ZtBillboardJt",
+    method: "put",
+    data: data,
+  });
+}
+
+// 删除广告牌位置截图
+export function delZtBillboardJt(id) {
+  return request({
+    url: "/ZtBillboardJt/" + id,
+    method: "delete",
+  });
+}
+
+// 新增广告牌参数历史修改记录
+export function addbillboardModelListHistory(data) {
+  return request({
+    url: "/billboardModelListHistory",
+    method: "post",
+    data: data,
+  });
+}
+
 /*************************广告信息******************** end */

File diff suppressed because it is too large
+ 0 - 0
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.js


+ 8 - 2
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/BenchmarkLandPrice.vue

@@ -46,7 +46,8 @@
             </div>
           </el-tab-pane>
           <el-tab-pane label="分析记录" name="second">
-            <el-row :gutter="10">
+            <div v-loading="data_loading" element-loading-background="rgba(0, 0, 0, 0.8)">
+              <el-row :gutter="10">
               <el-col :span="8">
                 <el-input size="mini" clearable placeholder="请输入项目名称" @change="getBenchmarkLandPriceListBystart()" v-model="input3" class="input-with-select">
                 </el-input>
@@ -106,6 +107,8 @@
                 </el-pagination>
               </el-col>
             </el-row>
+            </div>
+            
           </el-tab-pane>
           <el-tab-pane label="分析结果" name="third">
             <jzdjfxsmjg v-if="iSjzdjfxsmjgShow" :info="{ BenchmarkLandPrice: BenchmarkLandPriceinfo }"></jzdjfxsmjg>
@@ -184,7 +187,8 @@ export default {
         pageNum: 1,
         pageSize: 10,
       },
-      loading: false
+      loading: false,
+      data_loading:false
     };
   },
   components: {
@@ -223,6 +227,7 @@ export default {
      */
     async getBenchmarkLandPriceList() {
       debugger
+      this.data_loading=true;
       let BenchmarkLandPrices = await listBenchmarkLandPrices({
         params: {
           beginTime: this.datevalue ? this.datevalue[0] : '',
@@ -231,6 +236,7 @@ export default {
         ProjectName: this.input3,
         ...this.queryParams
       });
+      this.data_loading=false;
       this.queryParams.total = BenchmarkLandPrices.total;
       this.BenchmarkLandPriceList = BenchmarkLandPrices.rows;
       // this.BenchmarkLandPriceList = window.BenchmarkLandPriceList;

+ 31 - 22
src/views/ConstructionApplication3D/BenchmarkLandPriceAnalysis/jzdjfxsmjg.vue

@@ -118,7 +118,11 @@
         </el-row> -->
       </el-header>
       <el-main height="18rem">
-        <el-tabs v-model="activeName" class="full-height">
+        <el-tabs
+          v-model="activeName"
+          class="full-height"
+          @tab-click="handleClick"
+        >
           <el-tab-pane label="总体情况" name="first" style="height: 100%">
             <div id="echartFGY" ref="echartFGY" class="EchartsWH">
               <div
@@ -192,6 +196,7 @@ import {
   getWord,
   listZtBenchmarkLandPriceResults,
 } from "@/api/zt/ztApi.js";
+
 export default {
   data() {
     return {
@@ -264,6 +269,10 @@ export default {
     }
   },
   methods: {
+    handleClick() {
+      //清除地块高亮
+      this.rowClick();
+    },
     async init() {
       // 设置用地类型图层颜色
       let ghyts = [];
@@ -294,27 +303,6 @@ export default {
      * 渲染绘制范围
      */
     DrawScope() {
-      let ProjectScope = JSON.parse(this.info.BenchmarkLandPrice.ProjectScope);
-      if (ProjectScope.length > 0) {
-        if (ProjectScope[0] != ProjectScope[ProjectScope.length - 1]) {
-          ProjectScope.push(ProjectScope[0]);
-        }
-        let points = ProjectScope.map((obj) => [obj.x, obj.y]).flat();
-        var orangePolygon1 = viewer.entities.add({
-          id: "HZFW",
-          polygon: {
-            hierarchy: Cesium.Cartesian3.fromDegreesArray(points),
-            material: Cesium.Color.WHITE.withAlpha(0.3), //Cesium.Color.RED.withAlpha(0.4),
-            outline: true,
-            outlineColor: Cesium.Color.RED,
-            outlineWidth: 2.0,
-          },
-        });
-      } else {
-        // this.$message.error("请在传入分析范围");
-        console.log("未传入分析范围");
-      }
-
       this.info.BenchmarkLandPrice.ztBenchmarkLandPriceResultsList[0].ghdkDetailedDjList.forEach(
         (ghdkDetailedDj) => {
           let point3ds = [];
@@ -384,6 +372,27 @@ export default {
           }
         }
       );
+
+      let ProjectScope = JSON.parse(this.info.BenchmarkLandPrice.ProjectScope);
+      if (ProjectScope.length > 0) {
+        if (ProjectScope[0] != ProjectScope[ProjectScope.length - 1]) {
+          ProjectScope.push(ProjectScope[0]);
+        }
+        let points = ProjectScope.map((obj) => [obj.x, obj.y]).flat();
+        var orangePolygon1 = viewer.entities.add({
+          id: "HZFW",
+          polygon: {
+            hierarchy: Cesium.Cartesian3.fromDegreesArray(points),
+            material: Cesium.Color.WHITE.withAlpha(0.3), //Cesium.Color.RED.withAlpha(0.4),
+            outline: true,
+            outlineColor: Cesium.Color.RED,
+            outlineWidth: 2.0,
+          },
+        });
+      } else {
+        // this.$message.error("请在传入分析范围");
+        console.log("未传入分析范围");
+      }
     },
 
     initTable() {

+ 7 - 1
src/views/ConstructionApplication3D/ConstructionModelInfo/addConstructionModelInfo.vue

@@ -73,7 +73,10 @@
           </el-form-item>
         </el-form>
         <div class="SaveCenter">
-          <el-button type="primary" @click="submitForm('ruleForm')"
+          <el-button
+            type="primary"
+            @click="submitForm('ruleForm')"
+            :disabled="isWC"
             >添加</el-button
           >
           <el-button @click="resetForm('ruleForm')">重置</el-button>
@@ -90,6 +93,7 @@ import { addConstructionmodel } from "@/api/zt/ztApi.js";
 export default {
   data() {
     return {
+      isWC: false,
       form: {
         id: uuidv4(),
         projectinformationid: "",
@@ -156,6 +160,7 @@ export default {
   methods: {
     submitForm(formName) {
       let that = this;
+      that.isWC = true;
       this.$refs[formName].validate(async (valid) => {
         if (valid) {
           that.form.projectinformationid = that.info.id;
@@ -172,6 +177,7 @@ export default {
             that.$layer.close(that.layerid);
           }
         } else {
+          that.isWC = false;
           return false;
         }
       });

+ 99 - 43
src/views/ConstructionApplication3D/Demolition/CQSetInfo.vue

@@ -87,7 +87,7 @@
       <el-button type="primary" @click="reset()">重置</el-button>
       <el-button type="primary" @click="delBZ()">删除</el-button>
     </el-row>
-    <el-dialog
+    <!-- <el-dialog
       title="标准名称设置"
       :modal="false"
       :visible.sync="dialogFormVisible"
@@ -105,7 +105,7 @@
           >确 定</el-button
         >
       </div>
-    </el-dialog>
+    </el-dialog> -->
     <el-dialog
       title="编辑"
       :modal="false"
@@ -169,6 +169,7 @@ import {
   delCqBcbz,
 } from "@/api/zt/ztApi.js";
 import { v4 as uuidv4 } from "uuid";
+import { debounce } from "lodash-es";
 export default {
   props: {
     cqValue: { type: Object },
@@ -188,6 +189,7 @@ export default {
       } else callback();
     };
     return {
+      TemporarilyDeleteIds: [],
       editFormVisible: false,
       dialogFormVisible: false,
       ruleForm: {
@@ -433,6 +435,7 @@ export default {
     selectZDBZ(key) {
       debugger;
       var that = this;
+      this.TemporarilyDeleteIds = [];
       if (that.bcbz && that.bcbz != "") {
         if (window.isUseDB) {
           that.curBCBZ = {
@@ -471,7 +474,7 @@ export default {
     /**
      * 重置
      */
-    reset() {
+    reset: debounce(function () {
       debugger;
       let that = this;
       if (window.isUseDB) {
@@ -498,12 +501,12 @@ export default {
         debugger;
         this.curBCBZ = item;
       }
-    },
+    }, 500),
 
     /**
      * 保存修改
      */
-    save() {
+    save: debounce(function () {
       var that = this;
       if (that.bcbz == "") {
         that.$layer.alert("请选择补偿标准");
@@ -522,6 +525,13 @@ export default {
               that.cqValue = item.id;
               that.getInitData();
               that.$layer.alert("保存完成");
+              if (that.TemporarilyDeleteIds.length > 0) {
+                delCqBcbzItem(that.TemporarilyDeleteIds)
+                  .then((res) => {})
+                  .catch((err) => {
+                    console.log(err);
+                  });
+              }
             }
           })
           .catch((err) => {
@@ -534,22 +544,35 @@ export default {
           this.$layer.alert("保存完成");
         }
       }
-    },
+    }, 500),
     /***
      * 另存为
      */
     saveAs(formName) {
-      debugger;
-      // if (this.bcbz == "") {
-      //     this.$layer.alert("请选择补偿标准");
-      //     return
-      // }
-      this.dialogFormVisible = true;
-      this.$nextTick(function () {
-        this.$refs[formName].resetFields();
-      });
+      this.$prompt("标准名称", "标准名称设置", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        inputPattern: /\S/,
+        inputErrorMessage: "请输入标准名称",
+        customClass: "biaozhunTC",
+      })
+        .then(({ value }) => {
+          this.ruleForm.name = value;
+          this.saveData();
+        })
+        .catch(() => {});
+
+      // debugger;
+      // // if (this.bcbz == "") {
+      // //     this.$layer.alert("请选择补偿标准");
+      // //     return
+      // // }
+      // this.dialogFormVisible = true;
+      // this.$nextTick(function () {
+      //   this.$refs[formName].resetFields();
+      // });
     },
-    submitForm(formName) {
+    submitForm: debounce(function (formName) {
       this.$refs[formName].validate((valid) => {
         if (valid) {
           // alert('submit!');
@@ -560,7 +583,7 @@ export default {
           return false;
         }
       });
-    },
+    }, 500),
     /**
      * 另存数据
      */
@@ -631,30 +654,36 @@ export default {
       this.oldRow = JSON.parse(JSON.stringify(row));
       this.editFormVisible = true;
     },
+    //临时删除一条
     handleDeleteClick(row) {
+      debugger;
       var that = this;
       if (row == undefined) return;
-      var index = that.curBCBZ.bcbz.findIndex((t) => (t.id = row.id));
-      var formId = that.$layer.confirm(
-        "确定要删除吗?",
-        {},
-        function () {
-          delCqBcbzItem([row.id])
-            .then((res) => {
-              if (res) {
-                that.$message("数据已删除!");
-                if (index > -1) that.curBCBZ.bcbz.splice(index, 1);
-                that.$layer.close(formId);
-              }
-            })
-            .catch((err) => {
-              console.log(err);
-            });
-        },
-        function () {
-          return;
-        }
-      );
+      var index = that.curBCBZ.bcbz.findIndex((t) => t.id == row.id);
+      if (index > -1) {
+        that.TemporarilyDeleteIds.push(row.id);
+        that.curBCBZ.bcbz.splice(index, 1);
+      }
+      // var formId = that.$layer.confirm(
+      //   "确定要删除吗?",
+      //   {},
+      //   function () {
+      //     delCqBcbzItem([row.id])
+      //       .then((res) => {
+      //         if (res) {
+      //           that.$message("数据已删除!");
+      //           if (index > -1) that.curBCBZ.bcbz.splice(index, 1);
+      //           that.$layer.close(formId);
+      //         }
+      //       })
+      //       .catch((err) => {
+      //         console.log(err);
+      //       });
+      //   },
+      //   function () {
+      //     return;
+      //   }
+      // );
     },
     /**
      * 开启行编辑
@@ -736,10 +765,12 @@ export default {
       }
       return true;
     },
-    delBZ() {
+    delBZ: debounce(function () {
       var that = this;
-
-      var formId = that.$layer.confirm("确定要删除吗?", {}, function () {
+      if (that.formId) {
+        that.$layer.close(that.formId);
+      }
+      that.formId = that.$layer.confirm("确定要删除吗?", {}, function () {
         if (window.isUseDB) {
           delCqBcbz(that.bcbz)
             .then((res) => {
@@ -764,14 +795,39 @@ export default {
           that.getInitData();
           that.lyoption.content.parent.initSetting();
         }
-        that.$layer.close(formId);
+        that.$layer.close(that.formId);
       });
-    },
+    }, 500),
   },
 };
 </script>
 <style lang="scss">
 @import "@/../../zt.scss";
+.biaozhunTC {
+  background: transparent !important;
+  background: url(/static/images/popup/background.png) no-repeat !important;
+  background-size: 100% 100% !important;
+  background-position: center !important;
+  border: 0px solid #ebeef5;
+
+  .el-message-box__title {
+    color: white !important;
+  }
+
+  .el-message-box__header {
+    background: url(/static/images/popup/title.png) no-repeat !important;
+    background-size: 100% 100% !important;
+    background-position: center !important;
+  }
+
+  .el-message-box__content {
+    color: white;
+  }
+
+  .el-message-box__headerbtn .el-message-box__close {
+    color: white !important;
+  }
+}
 </style>
 
 <style scoped>

+ 12 - 9
src/views/ConstructionApplication3D/Demolition/DemolitionList.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="ZTGlobal rootele" style="width: 100%;">
-    <el-tabs v-model="activeName" @tab-click="handleClick" style="width: 100%;">
+    <el-tabs v-model="activeName" @tab-click="handleClick" style="width: 100%;height: 100%;">
       <el-tab-pane label="拆迁补偿预估" name="first">
         <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="8rem" class="demo-ruleForm">
           <el-form-item label="项目范围:" prop="">
@@ -69,7 +69,7 @@
          style="height:10rem;border: 0px;color:#ffffff "></el-card> -->
         <!-- element-loading-background="rgba(0, 0, 0, 0.8) -->
       </el-tab-pane>
-      <el-tab-pane label="分析记录" name="second" v-loading="data_loading" element-loading-background="rgba(0, 0, 0, 0.8)">
+      <el-tab-pane label="分析记录" name="second" >
         <el-row>
           <el-col :span="10">
             <el-input size="mini" clearable placeholder="请输入项目名称" @change="queryProjectBystart" v-model="searchName">
@@ -86,7 +86,7 @@
           </el-col>
 
         </el-row>
-        <div>
+        <div style="min-height: 20rem;" v-loading="data_loading"  element-loading-text="正在加载中" element-loading-background="rgba(0, 0, 0, 0.8)">
           <el-card class="box-card" v-for="projectInfo in projectList" :key="projectInfo.id">
             <el-row>
               <el-col :span="14">
@@ -580,6 +580,7 @@ import {
 } from "@/api/zt/ztApi.js";
 import zdAnalyse from './zdAnalyse.js';
 import Popup from "../Popup.js";
+
 var handlerPolygon;
 var handleInput;
 var polygonEntity = null;
@@ -2945,7 +2946,7 @@ export default {
                   parseInt(colorArr[0]) / 255,
                   parseInt(colorArr[1]) / 255,
                   parseInt(colorArr[2]) / 255,
-                  0.2
+                  0.4
                 ),
                 outline: true,
                 outlineColor: Cesium.Color.DEEPPINK,
@@ -2962,7 +2963,7 @@ export default {
                   parseInt(colorArr[0]) / 255,
                   parseInt(colorArr[1]) / 255,
                   parseInt(colorArr[2]) / 255,
-                  0.2
+                  0.4
                 ),
                 outline: true,
                 outlineColor: Cesium.Color.DEEPPINK,
@@ -3188,7 +3189,7 @@ export default {
                   parseInt(colorArr[0]) / 255,
                   parseInt(colorArr[1]) / 255,
                   parseInt(colorArr[2]) / 255,
-                  0.3
+                  0.4
                 ),
                 outline: true,
                 outlineColor: Cesium.Color.FUCHSIA,
@@ -3205,7 +3206,7 @@ export default {
                   parseInt(colorArr[0]) / 255,
                   parseInt(colorArr[1]) / 255,
                   parseInt(colorArr[2]) / 255,
-                  0.3
+                  0.4
                 ),
                 outline: true,
                 outlineColor: Cesium.Color.FUCHSIA,
@@ -3427,7 +3428,7 @@ export default {
                   parseInt(colorArr[0]) / 255,
                   parseInt(colorArr[1]) / 255,
                   parseInt(colorArr[2]) / 255,
-                  0.3
+                  0.4
                 ),
                 outline: true,
                 outlineColor: Cesium.Color.FUCHSIA,
@@ -3443,7 +3444,7 @@ export default {
                   parseInt(colorArr[0]) / 255,
                   parseInt(colorArr[1]) / 255,
                   parseInt(colorArr[2]) / 255,
-                  0.3
+                  0.4
                 ),
                 outline: true,
                 outlineColor: Cesium.Color.FUCHSIA,
@@ -4487,4 +4488,6 @@ input.el-range-input {
 .el-pagination {
   color: #ffffff;
 }
+
+
 </style>

+ 64 - 17
src/views/ConstructionApplication3D/Demolition/QMSetInfo.vue

@@ -67,7 +67,7 @@
       <el-button type="primary" @click="reset()">重置</el-button>
       <el-button type="primary" @click="delBZ()">删除</el-button>
     </el-row>
-    <el-dialog
+    <!-- <el-dialog
       title="标准名称设置"
       :modal="false"
       :visible.sync="dialogFormVisible"
@@ -83,7 +83,7 @@
           >确 定</el-button
         >
       </el-form>
-    </el-dialog>
+    </el-dialog> -->
   </div>
 </template>
 <script>
@@ -94,6 +94,7 @@ import {
   getQmbcbzById,
   delQmbcbz,
 } from "@/api/zt/ztApi.js";
+import { debounce } from "lodash-es";
 export default {
   props: {
     qmValue: { type: Object },
@@ -220,13 +221,14 @@ export default {
     /**
      * 重置
      */
-    reset() {
+    reset: debounce(function () {
       this.getInitData();
-    },
+    }, 500),
     /**
      * 保存修改
      */
-    save() {
+
+    save: debounce(function () {
       var that = this;
       if (that.bcbz == "") {
         that.$layer.alert("请选择补偿标准");
@@ -260,18 +262,35 @@ export default {
           that.$layer.alert("保存完成");
         }
       }
-    },
+    }, 500),
+
     /***
      * 另存为
      */
     saveAs(formName) {
       if (!this.changeBCBZ()) return;
-      this.dialogFormVisible = true;
-      this.$nextTick(function () {
-        this.$refs[formName].resetFields();
-      });
+
+      this.$prompt("标准名称", "标准名称设置", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        inputPattern: /\S/,
+        inputErrorMessage: "请输入标准名称",
+        customClass: "biaozhunTC",
+      })
+        .then(({ value }) => {
+          this.ruleForm.name = value;
+          this.saveData();
+        })
+        .catch(() => {});
+
+      // this.dialogFormVisible = true;
+      // this.$nextTick(function () {
+      //   this.$refs[formName].resetFields();
+      // });
     },
-    submitForm(formName) {
+
+    submitForm: debounce(function (formName) {
+      debugger;
       var that = this;
       that.$refs[formName].validate((valid) => {
         if (valid) {
@@ -285,7 +304,8 @@ export default {
           return false;
         }
       });
-    },
+    }, 500),
+
     /**
      * 另存数据
      */
@@ -306,7 +326,6 @@ export default {
         addQmbcbz(newBCBZ)
           .then((response) => {
             if (response && response.code == 200) {
-              that;
               that.getInitData();
               that.$layer.alert("保存完成");
               that.lyoption.content.parent.initSetting();
@@ -340,13 +359,16 @@ export default {
     inputChange() {
       this.changeBCBZ();
     },
-    delBZ() {
+    delBZ: debounce(function () {
       var that = this;
       if (that.qmValue == null || that.qmValue == "") {
         that.$layer.alert("请选择标准后再删除");
         return;
       }
-      var formId = that.$layer.confirm("确定要删除吗?", {}, function () {
+      if (that.formId) {
+        that.$layer.close(that.formId);
+      }
+      that.formId = that.$layer.confirm("确定要删除吗?", {}, function () {
         if (window.isUseDB) {
           delQmbcbz([that.qmValue])
             .then((res) => {
@@ -370,14 +392,39 @@ export default {
             that.getInitData();
           }
         }
-        that.$layer.close(formId);
+        that.$layer.close(that.formId);
       });
-    },
+    }, 500),
   },
 };
 </script>
 <style lang="scss">
 @import "@/../../zt.scss";
+.biaozhunTC {
+  background: transparent !important;
+  background: url(/static/images/popup/background.png) no-repeat !important;
+  background-size: 100% 100% !important;
+  background-position: center !important;
+  border: 0px solid #ebeef5;
+
+  .el-message-box__title {
+    color: white !important;
+  }
+
+  .el-message-box__header {
+    background: url(/static/images/popup/title.png) no-repeat !important;
+    background-size: 100% 100% !important;
+    background-position: center !important;
+  }
+
+  .el-message-box__content {
+    color: white;
+  }
+
+  .el-message-box__headerbtn .el-message-box__close {
+    color: white !important;
+  }
+}
 </style>
 <style scoped>
 .el-row {

+ 57 - 15
src/views/ConstructionApplication3D/Demolition/ZDSetInfo.vue

@@ -155,6 +155,7 @@ import {
   getZdBcbzById,
   delZdBcbz,
 } from "@/api/zt/ztApi.js";
+import { debounce } from "lodash-es";
 export default {
   props: {
     zdValue: { type: Object },
@@ -335,13 +336,13 @@ export default {
     /**
      * 重置
      */
-    reset() {
+    reset: debounce(function () {
       this.getInitData();
-    },
+    }, 500),
     /**
      * 保存修改
      */
-    save() {
+    save: debounce(function () {
       var that = this;
       if (that.bcbz == "") {
         that.$layer.alert("请选择补偿标准");
@@ -377,19 +378,32 @@ export default {
           that.$layer.alert("保存完成");
         }
       }
-    },
+    }, 500),
     /***
      * 另存为
      */
     saveAs(formName) {
       if (!this.changeZDBZ()) return;
 
-      this.dialogFormVisible = true;
-      this.$nextTick(function () {
-        this.$refs[formName].resetFields();
-      });
+      this.$prompt("标准名称", "标准名称设置", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        inputPattern: /\S/,
+        inputErrorMessage: "请输入标准名称",
+        customClass: "biaozhunTC",
+      })
+        .then(({ value }) => {
+          this.ruleForm.name = value;
+          this.saveData();
+        })
+        .catch(() => {});
+
+      // this.dialogFormVisible = true;
+      // this.$nextTick(function () {
+      //   this.$refs[formName].resetFields();
+      // });
     },
-    submitForm(formName) {
+    submitForm: debounce(function (formName) {
       var that = this;
       if (!that.changeZDBZ()) return false;
       else {
@@ -400,12 +414,11 @@ export default {
             that.saveData();
             // this.$layer.alert("保存完成");
           } else {
-            console.log("error submit!!");
             return false;
           }
         });
       }
-    },
+    }, 500),
     /**
      * 另存数据
      */
@@ -447,13 +460,17 @@ export default {
     inputChange() {
       this.changeZDBZ();
     },
-    delBZ() {
+    delBZ: debounce(function () {
       var that = this;
       if (that.zdValue == null || that.zdValue == "") {
         that.$layer.alert("请选择标准后再删除");
         return;
       }
-      var formId = that.$layer.confirm("确定要删除吗?", {}, function () {
+      if (that.formId) {
+        that.$layer.close(that.formId);
+      }
+
+      that.formId = that.$layer.confirm("确定要删除吗?", {}, function () {
         if (window.isUseDB) {
           delZdBcbz([that.zdValue])
             .then((res) => {
@@ -477,14 +494,39 @@ export default {
             that.getInitData();
           }
         }
-        that.$layer.close(formId);
+        that.$layer.close(that.formId);
       });
-    },
+    }, 500),
   },
 };
 </script>
 <style lang="scss">
 @import "@/../../zt.scss";
+.biaozhunTC {
+  background: transparent !important;
+  background: url(/static/images/popup/background.png) no-repeat !important;
+  background-size: 100% 100% !important;
+  background-position: center !important;
+  border: 0px solid #ebeef5;
+
+  .el-message-box__title {
+    color: white !important;
+  }
+
+  .el-message-box__header {
+    background: url(/static/images/popup/title.png) no-repeat !important;
+    background-size: 100% 100% !important;
+    background-position: center !important;
+  }
+
+  .el-message-box__content {
+    color: white;
+  }
+
+  .el-message-box__headerbtn .el-message-box__close {
+    color: white !important;
+  }
+}
 </style>
 <style scoped>
 .el-row {

File diff suppressed because it is too large
+ 0 - 0
src/views/ConstructionApplication3D/Demolition/zdAnalyse.js


+ 43 - 1
src/views/ConstructionApplication3D/MXDBinfo/MXDBinfo.vue

@@ -153,6 +153,12 @@ export default {
         KG_Data.JZXGX = LandPlanning.data.find((c) => c.label == "JZXGX")
           ? LandPlanning.data.find((c) => c.label == "JZXGX").value
           : "";
+        KG_Data.LDLD = LandPlanning.data.find((c) => c.label == "LDLD")
+          ? LandPlanning.data.find((c) => c.label == "LDLD").value
+          : "";
+        KG_Data.LDLX = LandPlanning.data.find((c) => c.label == "LDLX")
+          ? LandPlanning.data.find((c) => c.label == "LDLX").value
+          : "";
         KG_Data.JRJZMJD = "";
         KG_Data.JRJZMJX = "";
 
@@ -281,6 +287,42 @@ export default {
 
           //建筑密度
           FA_Data.JZMD = (Number(FA_Data.JDMJ / FA_Data.YDMJ) * 100).toFixed(2);
+
+          //计算绿地率
+
+          let queryByGeometryParameters3 = {
+            getFeatureMode: "SQL",
+            datasetNames: [Minfo.datasourcename + ":GREENAREA"],
+            queryParameter: {
+              attributeFilter: "LANDNO = '" + KG_Data.DKBM + "'",
+            },
+            hasGeometry: "true",
+          };
+          let e3 = await mapQuery(
+            Minfo.dataurl + "/featureResults.json?returnContent=true",
+            queryByGeometryParameters3
+          );
+          //绿地率
+          var ldl = 0;
+          var ldmj = 0;
+          if (e3 && e3.totalCount > 0) {
+            e3.features.forEach((feature) => {
+              var AREAIndex = feature.fieldNames.findIndex((c) => c == "AREA");
+              var PROPORTIONIndex = feature.fieldNames.findIndex(
+                (c) => c == "PROPORTION"
+              );
+              if (AREAIndex) {
+                var thisldmj = feature.fieldValues[AREAIndex] || 0;
+                var PROPORTION = 1;
+                if (PROPORTIONIndex) {
+                  PROPORTION = feature.fieldValues[PROPORTIONIndex] || 1;
+                }
+                ldmj += Number(thisldmj) * Number(PROPORTION);
+              }
+            });
+            ldl = ((ldmj / KG_Data.YDMJ) * 100).toFixed(2);
+            FA_Data.LDL = ldl;
+          }
         }
         tableDataList.push({ Minfo, KG_Data, FA_Data, TJFA_Data });
       }
@@ -323,7 +365,7 @@ export default {
     openZBFXInfo(tableDataList) {
       debugger;
       let that = this;
-      let wpx = 650;
+      let wpx = 850;
       let hpx = 430;
       let w = document.body.offsetWidth;
       let h = document.body.offsetHeight;

+ 2 - 2
src/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue

@@ -364,7 +364,7 @@ export default {
               text: "目标点",
               font: "15px sans-serif",
               pixelOffset: new Cesium.Cartesian2(0, -20), //文字偏移
-              fillColor: Cesium.Color.WHITE,
+              fillColor: Cesium.Color.RED,
               // backgroundColor:new Cesium.Color(0, 0, 0, 1),
               distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
                 0,
@@ -406,7 +406,7 @@ export default {
               text: "环视点",
               font: "15px sans-serif",
               pixelOffset: new Cesium.Cartesian2(0, -20), //文字偏移
-              fillColor: Cesium.Color.WHITE,
+              fillColor: Cesium.Color.RED,
               // backgroundColor:new Cesium.Color(0, 0, 0, 1),
               distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
                 0,

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

@@ -41,11 +41,45 @@
                       {{ quNaN(row.tjfazb) }}
                     </template>
                   </el-table-column>
-                  <el-table-column label="自动核算指标" align="center">
+                  <el-table-column
+                    label="自动核算指标"
+                    align="center"
+                    width="220"
+                  >
                     <template #default="{ row }">
-                      {{ quNaN(row.fazbyg) }}
+                      <span
+                        v-if="
+                          row.rgzbName == 'YDMJ' ||
+                          row.rgzbName == 'JZMJ' ||
+                          row.rgzbName == 'JDMJ' ||
+                          row.rgzbName == 'JRJZMJ'
+                        "
+                      >
+                        2000坐标:{{
+                          (quNaN(row.fazbyg) * earthRadius).toFixed(2)
+                        }}<br />
+                        当地坐标:{{
+                          (quNaN(row.fazbyg) * LocalCoorearthRadius).toFixed(2)
+                        }}
+                      </span>
+                      <span v-else>
+                        {{ quNaN(row.fazbyg) }}
+                      </span>
                     </template>
                   </el-table-column>
+                  <!-- <el-table-column label="自动核算指标" align="center">
+                    <el-table-column label="三亚坐标面积" align="center">
+                      <template #default="{ row }">
+                        {{ quNaN(row.fazbyg) * earthRadius }}
+                      </template>
+                    </el-table-column>
+                    <el-table-column label="2000坐标面积" align="center">
+                      <template #default="{ row }">
+                        {{ quNaN(row.fazbyg) }}
+                      </template>
+                    </el-table-column>
+                  </el-table-column> -->
+
                   <el-table-column
                     label="人工核算指标"
                     align="center"
@@ -95,6 +129,8 @@ export default {
     return {
       //模型地块指标数组
       MXDKZBDataList: [],
+      earthRadius: window.earthRadius,
+      LocalCoorearthRadius: 0.994615737 * 1.000006869218412,
     };
   },
   props: {
@@ -175,8 +211,12 @@ export default {
           YDMJrow.kgyq = Number(Data.KG_Data.YDMJ).toFixed(2);
 
           if (!rgzb.YDMJ) {
-            rgzb.YDMJ = YDMJrow.fazbyg;
-            YDMJrow.rghszb = YDMJrow.fazbyg;
+            rgzb.YDMJ = (that.quNaN(YDMJrow.fazbyg) * that.earthRadius).toFixed(
+              2
+            );
+            YDMJrow.rghszb = (
+              that.quNaN(YDMJrow.fazbyg) * that.earthRadius
+            ).toFixed(2);
             YDMJrow.rgzbid = rgzbid;
             YDMJrow.rgzbName = "YDMJ";
           } else {
@@ -206,8 +246,12 @@ export default {
           JZMJrow.kgyq = Number(Data.KG_Data.JZMJ).toFixed(2);
 
           if (!rgzb.JZMJ) {
-            rgzb.JZMJ = JZMJrow.fazbyg;
-            JZMJrow.rghszb = JZMJrow.fazbyg;
+            rgzb.JZMJ = (that.quNaN(JZMJrow.fazbyg) * that.earthRadius).toFixed(
+              2
+            );
+            JZMJrow.rghszb = (
+              that.quNaN(JZMJrow.fazbyg) * that.earthRadius
+            ).toFixed(2);
             JZMJrow.rgzbid = rgzbid;
             JZMJrow.rgzbName = "JZMJ";
           } else {
@@ -232,8 +276,12 @@ export default {
           JDMJrow.fazbyg = Number(Data.FA_Data.JDMJ).toFixed(2);
           JDMJrow.kgyq = Data.KG_Data.JDMJ;
           if (!rgzb.JDMJ) {
-            rgzb.JDMJ = JDMJrow.fazbyg;
-            JDMJrow.rghszb = JDMJrow.fazbyg;
+            rgzb.JDMJ = (that.quNaN(JDMJrow.fazbyg) * that.earthRadius).toFixed(
+              2
+            );
+            JDMJrow.rghszb = (
+              that.quNaN(JDMJrow.fazbyg) * that.earthRadius
+            ).toFixed(2);
             JDMJrow.rgzbid = rgzbid;
             JDMJrow.rgzbName = "JDMJ";
           } else {
@@ -265,8 +313,12 @@ export default {
             JRJZMJrow.kgyq = "";
           }
           if (!rgzb.JRJZMJ) {
-            rgzb.JRJZMJ = JRJZMJrow.fazbyg;
-            JRJZMJrow.rghszb = JRJZMJrow.fazbyg;
+            rgzb.JRJZMJ = (
+              that.quNaN(JRJZMJrow.fazbyg) * that.earthRadius
+            ).toFixed(2);
+            JRJZMJrow.rghszb = (
+              that.quNaN(JRJZMJrow.fazbyg) * that.earthRadius
+            ).toFixed(2);
             JRJZMJrow.rgzbid = rgzbid;
             JRJZMJrow.rgzbName = "JRJZMJ";
           } else {
@@ -375,6 +427,38 @@ export default {
             JZXGDrow.jl = null;
           }
 
+          let LDLrow = {};
+          LDLrow.zbmc = "绿地率";
+          LDLrow.fazbyg = Data.FA_Data.LDL;
+          LDLrow.kgyq =
+            (Data.KG_Data.LDLX || 0) + "/" + (Data.KG_Data.LDLD || 0);
+
+          if (!rgzb.LDL) {
+            rgzb.LDL = LDLrow.fazbyg;
+            LDLrow.rghszb = LDLrow.fazbyg;
+            LDLrow.rgzbid = rgzbid;
+            LDLrow.rgzbName = "LDL";
+          } else {
+            LDLrow.rghszb = rgzb.LDL;
+            LDLrow.rgzbid = rgzbid;
+            LDLrow.rgzbName = "LDL";
+          }
+
+          if (LDLrow.rghszb && LDLrow.kgyq) {
+            if (
+              (Number(LDLrow.rghszb) >= Number(Data.KG_Data.LDLX) ||
+                Number(Data.KG_Data.LDLX) == 0) &&
+              (Number(LDLrow.rghszb) <= Number(Data.KG_Data.LDLD) ||
+                Number(Data.KG_Data.LDLD) == 0)
+            ) {
+              LDLrow.jl = true;
+            } else {
+              LDLrow.jl = false;
+            }
+          }
+
+          TableData.push(LDLrow);
+
           if (!rgzbData.id) {
             rgzbData.id = rgzbid;
             rgzbData.zbcs = JSON.stringify(rgzb);

+ 1 - 1
src/views/ConstructionApplication3D/backLineAnalysis/backLineAnalysisinfo.vue

@@ -123,7 +123,7 @@
                   margin: 0; /* 去除可能的默认margin */
                   padding: 0; /* 去除可能的默认padding */
                 "
-                :style="{ borderTop: '0.3rem solid #FF0000' }"
+                :style="{ borderTop: '0.3rem solid #DB7093' }"
               ></div>
             </div>
           </el-descriptions-item>

+ 191 - 4
src/views/ConstructionApplication3D/billboard/addBiillboardModel.vue

@@ -81,6 +81,7 @@
           </div>
         </el-col>
       </el-row> -->
+
       <el-row>
         <el-col :span="7"><span>添加模型:</span></el-col>
         <!-- <el-col :span="8">
@@ -92,7 +93,39 @@
           >
           </el-switch>
         </el-col> -->
-        <el-col :span="6">
+        <el-col :span="17">
+          <el-upload
+            v-if="
+              selectbillboardModelRule &&
+              selectbillboardModelRule.templateTopType == 'model'
+            "
+            class="upload-demo"
+            ref="upload"
+            :action="uploadUrl"
+            :on-remove="handleRemove"
+            :on-success="handleAvatarSuccess"
+            :before-remove="beforeRemove"
+            :before-upload="beforeAvatarUpload"
+            :on-change="handleFileChange"
+            :on-exceed="handleExceed"
+            :auto-upload="true"
+            :multiple="false"
+            accept=".zip"
+            :limit="1"
+          >
+            <el-button size="small" type="primary">上传广告模型</el-button>
+            <!-- <el-button
+              style="margin-left: 10px"
+              size="small"
+              type="success"
+              @click="submitUpload"
+              >上传到服务器</el-button
+            > -->
+            <div slot="tip" class="el-upload__tip" style="color: #ffffff">
+              请上传包含gltf的zip文件,且不超过50M
+            </div>
+          </el-upload>
+
           <el-button
             size="mini"
             v-show="billboardReview.isAddModel"
@@ -539,7 +572,7 @@ export default {
       type: String,
       default: "",
     },
-    projectId: {
+    project: {
       type: String,
       default: "",
     },
@@ -583,7 +616,7 @@ export default {
         templateCentre: {},
         templateBottom: {},
       },
-      options: window.billboardReviewList.filter((c) => c.id != "wew1"),
+      options: [],
       /**
        * 编辑句柄
        */
@@ -598,10 +631,106 @@ export default {
       billboardReview: { isAddModel: false, ModelType: "box", modelurl: "" },
       billboardModelRule: [],
       selectbillboardModelRule: null,
+      uploadUrl: window.ZTaxiosURI + "/uploadFile/uploadZipFile",
+      thisfileurl: "",
+      fileList: [],
     };
   },
   watch: {},
+  mounted() {
+    this.getGGLX();
+  },
   methods: {
+    submitUpload() {
+      //文件大小校验
+      this.fileList.forEach((file) => {
+        const isLt2M = file.size / 1024 / 1024 < 10;
+        if (!isLt2M) {
+          this.$message.error("图片大小不能超过 2MB!");
+          return false;
+        }
+      });
+
+      //校验添加文件完整性
+      let gltffile = this.fileList.find((c) => c.name.includes(".gltf"));
+      debugger;
+      if (gltffile) {
+        try {
+          var reader = new FileReader();
+          reader.onload = function () {
+            if (reader.result) {
+              debugger;
+              //打印文件内容
+              if (reader.result) {
+                let contentJson = JSON.parse(reader.result);
+              }
+            } else {
+              //清除
+              this.$refs.upload.clearFiles();
+              this.$message.error("gltf文件读取失败!");
+            }
+          };
+          reader.readAsText(gltffile.raw);
+        } catch (error) {
+          console.log(error);
+          //清除
+          this.$refs.upload.clearFiles();
+          this.$message.error("上传文件出现意外的错误!");
+        }
+
+        // this.$refs.upload.submit();
+      } else {
+        this.$message.error("请上传gltf主文件!");
+        //清除
+        this.$refs.upload.clearFiles();
+      }
+    },
+
+    handleFileChange(file, fileList) {
+      this.fileList = fileList;
+    },
+    //文件列表移除文件时的钩子
+    handleRemove(file, fileList) {
+      console.log(file, fileList);
+    },
+    //文件列表超出最大文件个数回调
+    handleExceed() {
+      this.$message.error("请先删除已上传的文件,再上传!");
+    },
+
+    // 删除确认回调
+    beforeRemove(file, fileList) {
+      return true; //this.$confirm(`确定移除 ${file.name}?`);
+    },
+    //文件上传前回调
+    beforeAvatarUpload(file) {
+      const isLt2M = file.size / 1024 / 1024 < 50;
+      if (!isLt2M) {
+        this.$message.error("文件大小不能超过 50MB!");
+        return false;
+      }
+      return true;
+    },
+    //上传成功回调
+    handleAvatarSuccess(res, file) {
+      console.log(res);
+      if (res.data.url.includes(".gltf")) {
+        this.thisfileurl = res.data.url;
+      } else {
+        this.$message.error("请上传包含gltf文件的zip压缩包!");
+        this.$refs.upload.clearFiles();
+      }
+    },
+
+    //过滤广告类型
+    getGGLX() {
+      if (this.project.dataurl) {
+        this.options = window.billboardReviewList.filter((c) => c.id == "wew1");
+      } else {
+        this.options = window.billboardReviewList.filter((c) => c.id != "wew1");
+      }
+    },
+
     /**
      * 点击添加位置
      */
@@ -698,6 +827,8 @@ export default {
               break;
             // 立杆型广告
             case "postsBillboard":
+              that.billboardModel.templateCentre.templateType =
+                that.selectbillboardModelRule.templateCentreType;
               that.billboardModel.templateCentre.x = that.billboardModel.x;
               that.billboardModel.templateCentre.y = that.billboardModel.y;
               that.billboardModel.templateCentre.z =
@@ -734,6 +865,8 @@ export default {
               });
               modelList.push(Centreentity);
 
+              that.billboardModel.templateTop.templateType =
+                that.selectbillboardModelRule.templateTopType;
               //计算当前实体的xyz
               that.billboardModel.templateTop.x = that.billboardModel.x;
               that.billboardModel.templateTop.y = that.billboardModel.y;
@@ -917,6 +1050,12 @@ export default {
                 that.billboardModel.templateTop.z
               );
               var url = that.billboardModelRule.templateTopUrl || modelurl;
+
+              if (that.thisfileurl) {
+                url = window.ZTaxiosURI + that.thisfileurl;
+                that.selectbillboardModelRule.templateTopUrl = that.thisfileurl;
+              }
+              debugger;
               var entity = viewer.entities.add({
                 id: "top_billboard_" + that.GUID,
                 name: "gltf",
@@ -970,6 +1109,45 @@ export default {
               });
               modelList.push(entity);
               break;
+            //上传的广告模型(模型型)
+            // case "bjModel":
+            //   that.billboardModel.templateTop.templateType =
+            //     that.selectbillboardModelRule.templateTopType;
+            //   //计算当前实体的xyz
+            //   that.billboardModel.templateTop.x = that.billboardModel.x;
+            //   that.billboardModel.templateTop.y = that.billboardModel.y;
+            //   that.billboardModel.templateTop.z = that.billboardModel.z;
+            //   var p = Cesium.Cartesian3.fromDegrees(
+            //     that.billboardModel.templateTop.x,
+            //     that.billboardModel.templateTop.y,
+            //     that.billboardModel.templateTop.z
+            //   );
+            //   var url = that.billboardModelRule.templateTopUrl || modelurl;
+            //   if (that.thisfileurl) {
+            //     url = window.ZTaxiosURI + that.thisfileurl;
+            //   }
+
+            //   var entity = viewer.entities.add({
+            //     id: "top_billboard_" + that.GUID,
+            //     name: "gltf",
+            //     show: true,
+            //     position: p,
+            //     /**
+            //      * 模型
+            //      */
+            //     model: {
+            //       uri: url,
+            //       scale: that.billboardModel.templateTop.scaleL,
+            //       shadows: Cesium.ShadowMode.DISABLED,
+            //       // imageBasedLightingFactor: new Cesium.Cartesian2(10, 1),
+            //       lightColor: new Cesium.Cartesian3(10.0, 10.0, 10.0), //解决模型发暗,直接把光增强10倍 //这样就是白光增强到100倍。对Pbr材质有效
+            //     },
+            //     orientation: orientation,
+            //   });
+
+            //   modelList.push(entity);
+            //   break;
+
             default:
               that.billboardModel.templateTop.templateType =
                 that.selectbillboardModelRule.templateTopType;
@@ -1021,6 +1199,7 @@ export default {
      */
     handleChange() {
       var that = this;
+      debugger;
       // modelList.forEach(model => {
 
       // });
@@ -1521,7 +1700,7 @@ export default {
 
       let data = JSON.parse(JSON.stringify(that.billboardModel));
       data.id = uuidv4();
-      data.billboardInfoId = that.projectId;
+      data.billboardInfoId = that.project.id;
       data.template = {
         ModelType: that.billboardReview.ModelType,
         ...that.selectbillboardModelRule,
@@ -1552,6 +1731,14 @@ export default {
         });
         viewer.entities.removeAll();
         // that.lyoption.cancel();
+        //添加截图提醒
+        debugger;
+        if (
+          that.billboardReview.isAddModel &&
+          that.lyoption.content.parent.jttx
+        ) {
+          that.lyoption.content.parent.jttx();
+        }
         that.$layer.close(that.layerid);
       }
 

+ 105 - 2
src/views/ConstructionApplication3D/billboard/addBillboardPoject.vue

@@ -41,9 +41,33 @@
             </el-col>
           </el-form-item> -->
           <el-form-item label="是否报建" size="mini" prop="url">
-            <el-switch v-model="isbjmx" active-text="是" inactive-text="否">
+            <el-switch
+              v-model="isbjmx"
+              active-text="是"
+              inactive-text="否"
+              @change="changeIsbjmx"
+            >
             </el-switch>
           </el-form-item>
+          <el-form-item
+            v-show="isbjmx"
+            label="关联报建项目"
+            size="mini"
+            prop="bjmxid"
+          >
+            <el-col :span="20">
+              <el-cascader
+                ref="bjmxidRef"
+                placeholder="可搜索"
+                :options="options"
+                filterable
+                clearable
+                :props="defaultProps"
+                @change="changebjmxid"
+              ></el-cascader>
+            </el-col>
+          </el-form-item>
+
           <el-form-item v-show="isbjmx" label="模型地址" size="mini" prop="url">
             <el-col :span="20">
               <el-input
@@ -107,7 +131,10 @@
           </el-form-item>
         </el-form>
         <div class="SaveCenter">
-          <el-button type="primary" @click="submitForm('ruleForm')"
+          <el-button
+            type="primary"
+            @click="submitForm('ruleForm')"
+            :disabled="isWC"
             >确定</el-button
           >
           <el-button @click="resetForm('ruleForm')">取消</el-button>
@@ -129,10 +156,12 @@ import {
 import {
   addZtBillboardInfoList,
   addBillboardModelLists,
+  NoAssociatedList,
 } from "@/api/zt/ztApi.js";
 export default {
   data() {
     return {
+      isWC: false,
       tooltip: createTooltip(document.body),
       form: {
         id: "",
@@ -146,6 +175,8 @@ export default {
         dataurl: "",
         datasourcename: "",
         datasetname: "",
+        bjmxid: "",
+        bjmxname: "",
       },
       rules: {
         projectname: [
@@ -167,6 +198,12 @@ export default {
       isbjmx: false,
       //绘制事件
       handlerPolygon: null,
+      defaultProps: {
+        children: "ztConstructionmodelList",
+        label: "name",
+        value: "id",
+      },
+      options: [],
     };
   },
   props: {
@@ -198,12 +235,72 @@ export default {
     // this.init();
   },
   methods: {
+    changebjmxid(sdf) {
+      debugger;
+      let bjmxNode = this.$refs["bjmxidRef"].getCheckedNodes(true);
+      if (bjmxNode.length > 0) {
+        let bjmxid = bjmxNode[0];
+        this.form.bjmxid = bjmxid.value;
+        this.form.bjmxname = "";
+        if (bjmxid.parent) {
+          this.form.bjmxname += bjmxid.parent.label + "/";
+        }
+        this.form.bjmxname += bjmxid.label;
+        this.form.url = bjmxid.data.url;
+        this.form.dataurl = bjmxid.data.dataurl;
+        this.form.datasourcename = bjmxid.data.datasourcename;
+        this.form.datasetname = bjmxid.data.datasetname;
+      } else {
+        this.form.bjmxid = "";
+        this.form.bjmxname = "";
+        this.form.url = "";
+        this.form.dataurl = "";
+        this.form.datasourcename = "";
+        this.form.datasetname = "";
+      }
+    },
+    /**
+     * //获取项目进度
+     * @param meetingprogress
+     */
+    async getshProjectinformations() {
+      let Projectinformations = await NoAssociatedList();
+
+      let data = Projectinformations.rows.map((c) => {
+        if (c.ztConstructionmodelList.length > 0) {
+          c.name = c.projectname;
+          c.ztConstructionmodelList.forEach((element) => {
+            element.name = element.modelname;
+          });
+          return c;
+        }
+      });
+
+      return data;
+    },
+    async changeIsbjmx(val) {
+      debugger;
+      if (val) {
+        this.options = await this.getshProjectinformations();
+        debugger;
+      } else {
+        this.form.bjmxid = "";
+        this.form.bjmxname = "";
+        this.form.url = "";
+        this.form.dataurl = "";
+        this.form.datasourcename = "";
+        this.form.datasetname = "";
+      }
+    },
     submitForm(formName) {
       let that = this;
+      that.isWC = true;
       this.$refs[formName].validate(async (valid) => {
         if (valid) {
           if (that.isbjmx) {
             if (
+              !that.form.bjmxid ||
+              !that.form.bjmxname ||
               !that.form.url ||
               !that.form.dataurl ||
               !that.form.datasourcename ||
@@ -213,6 +310,7 @@ export default {
                 message: "请填写报建模型相关信息",
                 type: "warning",
               });
+              that.isWC = false;
               return;
             } else {
             }
@@ -351,11 +449,16 @@ export default {
               message: "添加成功",
               type: "success",
             });
+            //添加截图提醒
+            if (that.isbjmx && that.lyoption.content.parent.jttx) {
+              that.lyoption.content.parent.jttx();
+            }
             that.$layer.close(that.layerid);
           }
           // that.lyoption.cancel();
           that.$layer.close(that.layerid);
         } else {
+          that.isWC = false;
           return false;
         }
       });

+ 3 - 3
src/views/ConstructionApplication3D/billboard/billboardCheckList.vue

@@ -5,13 +5,13 @@
   >
     <el-row>
       <el-col :span="12">
-        <el-col :span="12">广告位:</el-col>
+        <el-col :span="12">广告位总数:</el-col>
         <el-col :span="12">{{ totalNo }}个</el-col>
       </el-col>
-      <el-col :span="12">
+      <!-- <el-col :span="12">
         <el-col :span="12">禁止建设区:</el-col>
         <el-col :span="12">{{ notAllowedNo }}个</el-col></el-col
-      >
+      > -->
     </el-row>
     <el-row>
       <el-col :span="8">

+ 239 - 236
src/views/ConstructionApplication3D/billboard/billboardChekInfo.vue

@@ -61,6 +61,7 @@ import {
   undergroundMode,
   getGroundPoint,
 } from "@/utils/MapHelper/MapHelper.js";
+import moment from "moment";
 import {
   pointToLineDistance,
   point,
@@ -183,7 +184,7 @@ export default {
 
               //获取到的单个规则,并对规则判断是否合规
               if (ReviewItem.ReviewMethod == "自动审查") {
-                var ruleResult = "true";
+                var ruleResult = "false";
                 //zL 厚度, yL宽/高,xL长
                 switch (ReviewItem.code) {
                   case "001234": //筑高度不超过24米的多层建筑墙面和高层建筑裙楼的主体墙面
@@ -204,53 +205,54 @@ export default {
                     }
 
                     break;
-                  case "0010101": //户外广告上沿不得突出墙面(包括女儿墙)的外轮廓线
-                    var ltData = await this.getloutiData();
-                    //广告上沿高度
-                    var ggsygd =
-                      that.info.templateTop.z -
-                      Elevation +
-                      that.info.templateTop.yL / 2;
-                    //楼高
-                    if (ltData.length > 0) {
-                      //多层高
-                      var MHEIGHT = ltData[0].data.find(
-                        (c) => c.label == "MHEIGHT"
-                      );
-                      if (MHEIGHT && MHEIGHT.value) {
-                        if (ggsygd > Number(MHEIGHT.value)) {
-                          ruleResult = "false";
-                        } else {
-                          ruleResult = "true";
-                        }
-                      }
-                    }
-                    break;
-                  case "0010104": //广告设施宽度应与墙面相协调,周围不应超出墙面外轮廓线,垂直方向突出墙面距离不宜大于0.5米
-                    debugger;
-                    var points = [];
-                    var ltData = await this.getloutiData();
-                    if (ltData.length > 0) {
-                      ltData[0].geometry.points.forEach((point) => {
-                        points.push([point.x, point.y]);
-                      });
-                      var pt = point([this.info.x, this.info.y]);
-                      var line = lineString(points);
-                      var distance = (
-                        pointToLineDistance(pt, line, {
-                          units: "kilometers",
-                        }) * 1000
-                      ).toFixed(4);
-                      var jl =
-                        Number(distance - 0.6) + that.info.templateTop.zL / 2;
-                      if (jl > 0.5) {
-                        ruleResult = "false";
-                      } else {
-                        ruleResult = "true";
-                      }
-                    }
+                  //0010101和0010104改为手动审查
+                  // case "0010101": //户外广告上沿不得突出墙面(包括女儿墙)的外轮廓线
+                  //   var ltData = await this.getloutiData();
+                  //   //广告上沿高度
+                  //   var ggsygd =
+                  //     that.info.templateTop.z -
+                  //     Elevation +
+                  //     that.info.templateTop.yL / 2;
+                  //   //楼高
+                  //   if (ltData.length > 0) {
+                  //     //多层高
+                  //     var MHEIGHT = ltData[0].data.find(
+                  //       (c) => c.label == "MHEIGHT"
+                  //     );
+                  //     if (MHEIGHT && MHEIGHT.value) {
+                  //       if (ggsygd > Number(MHEIGHT.value)) {
+                  //         ruleResult = "false";
+                  //       } else {
+                  //         ruleResult = "true";
+                  //       }
+                  //     }
+                  //   }
+                  //   break;
+                  // case "0010104": //广告设施宽度应与墙面相协调,周围不应超出墙面外轮廓线,垂直方向突出墙面距离不宜大于0.5米
+                  //   debugger;
+                  //   var points = [];
+                  //   var ltData = await this.getloutiData();
+                  //   if (ltData.length > 0) {
+                  //     ltData[0].geometry.points.forEach((point) => {
+                  //       points.push([point.x, point.y]);
+                  //     });
+                  //     var pt = point([this.info.x, this.info.y]);
+                  //     var line = lineString(points);
+                  //     var distance = (
+                  //       pointToLineDistance(pt, line, {
+                  //         units: "kilometers",
+                  //       }) * 1000
+                  //     ).toFixed(4);
+                  //     var jl =
+                  //       Number(distance - 0.6) + that.info.templateTop.zL / 2;
+                  //     if (jl > 0.5) {
+                  //       ruleResult = "false";
+                  //     } else {
+                  //       ruleResult = "true";
+                  //     }
+                  //   }
 
-                    break;
+                  //   break;
                   case "0010105": //户外广告下端距地面净高不得低于3米,且不得防碍行人安全;
                     //广告下沿高度
                     var ggxygd =
@@ -514,200 +516,200 @@ export default {
               } else {
                 debugger;
                 //加载辅助决策
-                switch (ReviewItem.code) {
-                  case "0030109":
-                  case "0030108": //当用地内建筑退让红线距离不得小于15米时,广告仅允许设置于建筑退让红线的距离内,且广告实体或最大水平投影不得超出用地红线;
-                    debugger;
-                    //避免重复加载
-                    if (this.layerDatas.filter((c) => c.includes("JZTX_")) > 0)
-                      break;
-                    var layer = flatten(window.layerTree).find(
-                      (item) => item.core == "004004"
-                    );
-                    if (layer && layer.date_server && layer.date_server.url) {
-                      var queryByGeometryParameters = {
-                        getFeatureMode: "BUFFER",
-                        datasetNames: [
-                          layer.date_server.datasourcename +
-                            ":" +
-                            layer.date_server.datasetname,
-                        ],
-                        geometry: {
-                          parts: [1],
-                          points: [{ y: that.info.y, x: that.info.x }],
-                          type: "POINT",
-                        },
-                        bufferDistance: 0.0005,
-                        hasGeometry: true,
-                      };
+                // switch (ReviewItem.code) {
+                //   case "0030109":
+                //   case "0030108": //当用地内建筑退让红线距离不得小于15米时,广告仅允许设置于建筑退让红线的距离内,且广告实体或最大水平投影不得超出用地红线;
+                //     debugger;
+                //     //避免重复加载
+                //     if (this.layerDatas.filter((c) => c.includes("JZTX_")) > 0)
+                //       break;
+                //     var layer = flatten(window.layerTree).find(
+                //       (item) => item.core == "004004"
+                //     );
+                //     if (layer && layer.date_server && layer.date_server.url) {
+                //       var queryByGeometryParameters = {
+                //         getFeatureMode: "BUFFER",
+                //         datasetNames: [
+                //           layer.date_server.datasourcename +
+                //             ":" +
+                //             layer.date_server.datasetname,
+                //         ],
+                //         geometry: {
+                //           parts: [1],
+                //           points: [{ y: that.info.y, x: that.info.x }],
+                //           type: "POINT",
+                //         },
+                //         bufferDistance: 0.0005,
+                //         hasGeometry: true,
+                //       };
 
-                      var e = await mapQuery(
-                        layer.date_server.url +
-                          "/featureResults.json?returnContent=true",
-                        queryByGeometryParameters
-                      );
+                //       var e = await mapQuery(
+                //         layer.date_server.url +
+                //           "/featureResults.json?returnContent=true",
+                //         queryByGeometryParameters
+                //       );
 
-                      if (e && e.totalCount > 0) {
-                        e.features.forEach((feature) => {
-                          var ps = [];
-                          for (
-                            var index = 0;
-                            index < feature.geometry.points.length;
-                            index++
-                          ) {
-                            const element = feature.geometry.points[index];
-                            ps.push(element.x);
-                            ps.push(element.y);
-                          }
-                          var id = uuidv4();
-                          that.layerids.push(id);
-                          //添加建筑退线线
-                          viewer.entities.add({
-                            id: "JZTX_" + id,
+                //       if (e && e.totalCount > 0) {
+                //         e.features.forEach((feature) => {
+                //           var ps = [];
+                //           for (
+                //             var index = 0;
+                //             index < feature.geometry.points.length;
+                //             index++
+                //           ) {
+                //             const element = feature.geometry.points[index];
+                //             ps.push(element.x);
+                //             ps.push(element.y);
+                //           }
+                //           var id = uuidv4();
+                //           that.layerids.push(id);
+                //           //添加建筑退线线
+                //           viewer.entities.add({
+                //             id: "JZTX_" + id,
 
-                            polyline: {
-                              positions: Cesium.Cartesian3.fromDegreesArray(ps),
-                              width: 4,
-                              material: Cesium.Color.RED,
-                              clampToGround: true,
-                            },
-                            position: Cesium.Cartesian3.fromDegrees(
-                              ps[0],
-                              ps[1]
-                            ),
-                            label: {
-                              text: "建筑退让线", //描述内容
-                              font: "20px Sans-Serif", //字体大小 类型
-                              fillColor: Cesium.Color.RED, //颜色
-                              outlineColor: Cesium.Color.GOLD,
-                              style: Cesium.LabelStyle.CENTER_LABEL,
-                              // 垂直位置
-                              verticalOrigin: Cesium.VerticalOrigin.BUTTON,
-                              // 中心位置
-                              pixelOffset: new Cesium.Cartesian2(0, -10),
-                              //设置背景颜色透明
-                              backgroundColor: new Cesium.Color(
-                                0.0,
-                                0.0,
-                                0.0,
-                                0.0
-                              ),
-                              //打开背景  打开背景 (不会被线段覆盖)
-                              showBackground: true,
-                              clampToGround: true,
-                            },
-                          });
+                //             polyline: {
+                //               positions: Cesium.Cartesian3.fromDegreesArray(ps),
+                //               width: 4,
+                //               material: Cesium.Color.RED,
+                //               clampToGround: true,
+                //             },
+                //             position: Cesium.Cartesian3.fromDegrees(
+                //               ps[0],
+                //               ps[1]
+                //             ),
+                //             label: {
+                //               text: "建筑退让线", //描述内容
+                //               font: "20px Sans-Serif", //字体大小 类型
+                //               fillColor: Cesium.Color.RED, //颜色
+                //               outlineColor: Cesium.Color.GOLD,
+                //               style: Cesium.LabelStyle.CENTER_LABEL,
+                //               // 垂直位置
+                //               verticalOrigin: Cesium.VerticalOrigin.BUTTON,
+                //               // 中心位置
+                //               pixelOffset: new Cesium.Cartesian2(0, -10),
+                //               //设置背景颜色透明
+                //               backgroundColor: new Cesium.Color(
+                //                 0.0,
+                //                 0.0,
+                //                 0.0,
+                //                 0.0
+                //               ),
+                //               //打开背景  打开背景 (不会被线段覆盖)
+                //               showBackground: true,
+                //               clampToGround: true,
+                //             },
+                //           });
 
-                          that.layerDatas.push(id);
-                        });
-                      }
-                    }
-                    break;
-                  case "0030109": //设置立杆型广告的用地,沿城市道路用地面宽不得小于15米
-                    debugger;
-                    //避免重复加载
-                    if (this.layerDatas.filter((c) => c.includes("DLM_")) > 0)
-                      break;
-                    var layer = flatten(window.layerTree).find(
-                      (item) => item.core == "005004"
-                    );
-                    if (layer && layer.date_server && layer.date_server.url) {
-                      var queryByGeometryParameters = {
-                        getFeatureMode: "BUFFER",
-                        datasetNames: [
-                          layer.date_server.datasourcename +
-                            ":" +
-                            layer.date_server.datasetname,
-                        ],
-                        geometry: {
-                          parts: [1],
-                          points: [{ y: that.info.y, x: that.info.x }],
-                          type: "POINT",
-                        },
-                        bufferDistance: 0.0005,
-                        hasGeometry: true,
-                      };
+                //           that.layerDatas.push(id);
+                //         });
+                //       }
+                //     }
+                //     break;
+                //   case "0030109": //设置立杆型广告的用地,沿城市道路用地面宽不得小于15米
+                //     debugger;
+                //     //避免重复加载
+                //     if (this.layerDatas.filter((c) => c.includes("DLM_")) > 0)
+                //       break;
+                //     var layer = flatten(window.layerTree).find(
+                //       (item) => item.core == "005004"
+                //     );
+                //     if (layer && layer.date_server && layer.date_server.url) {
+                //       var queryByGeometryParameters = {
+                //         getFeatureMode: "BUFFER",
+                //         datasetNames: [
+                //           layer.date_server.datasourcename +
+                //             ":" +
+                //             layer.date_server.datasetname,
+                //         ],
+                //         geometry: {
+                //           parts: [1],
+                //           points: [{ y: that.info.y, x: that.info.x }],
+                //           type: "POINT",
+                //         },
+                //         bufferDistance: 0.0005,
+                //         hasGeometry: true,
+                //       };
 
-                      var e = await mapQuery(
-                        layer.date_server.url +
-                          "/featureResults.json?returnContent=true",
-                        queryByGeometryParameters
-                      );
+                //       var e = await mapQuery(
+                //         layer.date_server.url +
+                //           "/featureResults.json?returnContent=true",
+                //         queryByGeometryParameters
+                //       );
 
-                      if (e && e.totalCount > 0) {
-                        e.features.forEach((feature) => {
-                          debugger;
-                          var DLKDindex = feature.fieldNames.findIndex(
-                            (c) => c == "DLKD"
-                          );
-                          var ps = [];
-                          for (
-                            var index = 0;
-                            index < feature.geometry.points.length;
-                            index++
-                          ) {
-                            const element = feature.geometry.points[index];
-                            ps.push([element.x, element.y]);
-                          }
-                          var lk = Number(feature.fieldValues[DLKDindex]);
-                          if (lk < 2) {
-                            lk = 2;
-                          }
+                //       if (e && e.totalCount > 0) {
+                //         e.features.forEach((feature) => {
+                //           debugger;
+                //           var DLKDindex = feature.fieldNames.findIndex(
+                //             (c) => c == "DLKD"
+                //           );
+                //           var ps = [];
+                //           for (
+                //             var index = 0;
+                //             index < feature.geometry.points.length;
+                //             index++
+                //           ) {
+                //             const element = feature.geometry.points[index];
+                //             ps.push([element.x, element.y]);
+                //           }
+                //           var lk = Number(feature.fieldValues[DLKDindex]);
+                //           if (lk < 2) {
+                //             lk = 2;
+                //           }
 
-                          var line = lineString(ps);
+                //           var line = lineString(ps);
 
-                          // 使用turf.buffer生成线的缓冲区,options中的steps和units可以控制缓冲区的形状和单位
-                          // steps参数决定了缓冲区的圆滑程度,units决定了缓冲区的单位(如'kilometers'、'meters'等)
-                          var buffered = buffer(line, lk / 2 / 1000, {
-                            units: "kilometers",
-                          });
-                          var po = buffered.geometry.coordinates[0].flat();
-                          debugger;
-                          var id = uuidv4();
-                          that.layerids.push(id);
-                          //添加道路面
-                          viewer.entities.add({
-                            id: "DLM_" + id,
-                            polygon: {
-                              hierarchy: Cesium.Cartesian3.fromDegreesArray(po),
-                              material: Cesium.Color.DARKGRAY.withAlpha(0.5),
-                            },
-                            position: Cesium.Cartesian3.fromDegrees(
-                              po[0],
-                              po[1]
-                            ),
-                            label: {
-                              text: "道路面", //描述内容
-                              font: "20px Sans-Serif", //字体大小 类型
-                              fillColor: Cesium.Color.RED, //颜色
-                              outlineColor: Cesium.Color.GOLD,
-                              style: Cesium.LabelStyle.CENTER_LABEL,
-                              // 垂直位置
-                              verticalOrigin: Cesium.VerticalOrigin.BUTTON,
-                              // 中心位置
-                              pixelOffset: new Cesium.Cartesian2(0, -10),
-                              //设置背景颜色透明
-                              backgroundColor: new Cesium.Color(
-                                0.0,
-                                0.0,
-                                0.0,
-                                0.0
-                              ),
-                              //打开背景  打开背景 (不会被线段覆盖)
-                              showBackground: true,
-                              clampToGround: true,
-                            },
-                          });
+                //           // 使用turf.buffer生成线的缓冲区,options中的steps和units可以控制缓冲区的形状和单位
+                //           // steps参数决定了缓冲区的圆滑程度,units决定了缓冲区的单位(如'kilometers'、'meters'等)
+                //           var buffered = buffer(line, lk / 2 / 1000, {
+                //             units: "kilometers",
+                //           });
+                //           var po = buffered.geometry.coordinates[0].flat();
+                //           debugger;
+                //           var id = uuidv4();
+                //           that.layerids.push(id);
+                //           //添加道路面
+                //           viewer.entities.add({
+                //             id: "DLM_" + id,
+                //             polygon: {
+                //               hierarchy: Cesium.Cartesian3.fromDegreesArray(po),
+                //               material: Cesium.Color.DARKGRAY.withAlpha(0.5),
+                //             },
+                //             position: Cesium.Cartesian3.fromDegrees(
+                //               po[0],
+                //               po[1]
+                //             ),
+                //             label: {
+                //               text: "道路面", //描述内容
+                //               font: "20px Sans-Serif", //字体大小 类型
+                //               fillColor: Cesium.Color.RED, //颜色
+                //               outlineColor: Cesium.Color.GOLD,
+                //               style: Cesium.LabelStyle.CENTER_LABEL,
+                //               // 垂直位置
+                //               verticalOrigin: Cesium.VerticalOrigin.BUTTON,
+                //               // 中心位置
+                //               pixelOffset: new Cesium.Cartesian2(0, -10),
+                //               //设置背景颜色透明
+                //               backgroundColor: new Cesium.Color(
+                //                 0.0,
+                //                 0.0,
+                //                 0.0,
+                //                 0.0
+                //               ),
+                //               //打开背景  打开背景 (不会被线段覆盖)
+                //               showBackground: true,
+                //               clampToGround: true,
+                //             },
+                //           });
 
-                          that.layerDatas.push(id);
-                        });
-                      }
-                    }
-                    break;
+                //           that.layerDatas.push(id);
+                //         });
+                //       }
+                //     }
+                //     break;
 
-                  default:
-                    break;
-                }
+                //   default:
+                //     break;
+                // }
                 debugger;
                 this.$set(ReviewItem, "ruleResult", "1");
                 // ReviewItem.ruleResult = "1";
@@ -751,6 +753,7 @@ export default {
         ReviewComments: item.ReviewComments,
         ReviewStatus: item.ReviewStatus,
         results: JSON.stringify(that.tableData),
+        review_date: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"),
       });
       debugger;
       if (result.code == 200) {
@@ -767,13 +770,13 @@ export default {
      */
     async getloutiData() {
       this.messageNum = this.messageNum + 1;
-      let info = this.pinfo;
+      let xminfo = this.pinfo;
       debugger;
       if (this.layerDataList.length > 0) {
         return this.layerDataList;
       }
       debugger;
-      if (info.dataurl && info.datasourcename && info.datasetname) {
+      if (xminfo.dataurl && xminfo.datasourcename && xminfo.datasetname) {
         if (this.messageNum > 1) {
           return this.layerDataList;
         }
@@ -781,17 +784,17 @@ export default {
         //获取模型信息
         let queryBySQLParameters = {
           getFeatureMode: "BUFFER",
-          datasetNames: [info.datasourcename + ":" + info.datasetname],
+          datasetNames: [xminfo.datasourcename + ":" + xminfo.datasetname],
           geometry: {
             parts: [1],
-            points: [{ y: info.y, x: info.x }],
+            points: [{ y: this.info.y, x: this.info.x }],
             type: "POINT",
           },
           bufferDistance: 0.000005,
           hasGeometry: true,
         };
         let e = await mapQuery(
-          info.dataurl + "/featureResults.json?returnContent=true",
+          xminfo.dataurl + "/featureResults.json?returnContent=true",
           queryBySQLParameters
         );
         debugger;

+ 89 - 18
src/views/ConstructionApplication3D/billboard/billboardDesign.vue

@@ -30,12 +30,26 @@
       <div style="height: 90%">
         <el-row v-for="item in projects" :key="item.id">
           <el-card class="box-card card_body_style">
+            <el-row type="flex" justify="space-between">
+              <el-col>
+                <span>{{ item.projectname }}</span>
+              </el-col>
+              <el-col :span="6">
+                <span
+                  ><el-button
+                    size="mini"
+                    type="default"
+                    @click="handleGetBG(item)"
+                    >报告</el-button
+                  ></span
+                >
+              </el-col>
+            </el-row>
             <el-row>
-              <span>{{ item.projectname }}</span></el-row
-            >
-            <el-row>
-              <span>{{ item.checkDate }}</span></el-row
-            >
+              <el-col>
+                <span>{{ item.checkDate }}</span>
+              </el-col>
+            </el-row>
             <el-row style="display: flex">
               <el-col class="con-col hover_style" style="cursor: pointer">
                 <i
@@ -45,11 +59,8 @@
                 ></i>
                 <a @click="billboarddetial(item)">详情</a>
               </el-col>
-              <el-col
-                class="con-col hover_style"
-                v-if="!item.dataurl"
-                style="cursor: pointer"
-              >
+              <!-- v-if="!item.dataurl" -->
+              <el-col class="con-col hover_style" style="cursor: pointer">
                 <i
                   style="font-size: 2rem"
                   class="el-icon-folder-add"
@@ -121,6 +132,7 @@ import {
   listBillboardModelList,
   delZtBillboardInfoList,
   getBillboardModelList,
+  getGGPWord,
 } from "@/api/zt/ztApi.js";
 let entityList = [];
 export default {
@@ -144,13 +156,49 @@ export default {
       },
     };
   },
+  props: {
+    info: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    layerid: {
+      type: String,
+      default: "",
+    },
+    lydata: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    lyoption: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
   computed: {},
   mounted() {
     this.initEntitiesHandler();
     // this.init();
-    this.getZtBillboardInfoList();
+    this.getZtBillboardInfoList(this.info.mid);
   },
   methods: {
+    /**
+     * 导出报告
+     * @param item
+     */
+    async handleGetBG(item) {
+      if (item) {
+        await getGGPWord(item);
+      } else {
+        this.$message.error("报告获取错误,请联系管理员!");
+      }
+    },
+
     //页大小触发
     handleSizeChange(val) {
       this.queryParams.pageSize = val;
@@ -166,10 +214,11 @@ export default {
     /**
      * 获取广告项目信息
      */
-    async getZtBillboardInfoList() {
+    async getZtBillboardInfoList(mid) {
       debugger;
       let BenchmarkLandPrices = await listZtBillboardInfoList({
         projectname: this.input3,
+        bjmxid: mid,
         ...this.queryParams,
       });
       this.queryParams.total = BenchmarkLandPrices.total;
@@ -201,6 +250,14 @@ export default {
       });
     },
 
+    /**
+     * 显示添加截图提醒
+     */
+    jttx() {
+      let that = this;
+      this.$layer.alert("添加成功,请打开详情-->添加广告牌截图,继续完善信息");
+    },
+
     /**
      * 渲染,定位
      * @param item
@@ -240,6 +297,7 @@ export default {
           viewer.camera.setView(JSON.parse(Mitem.viewing_angle));
         } else {
           let entitie = viewer.entities.getById("point_Billboard_" + Mitem.id);
+
           if (!entitie) {
             //渲染单个广告牌
             // if (billboardModel.id == Mitem.id) {
@@ -265,7 +323,7 @@ export default {
           data: { info: { projectInfo: item } }, //props
         },
         offset: [720, 400], //left top  左上角(left=430px/2;top=(800px+header高)/2)
-        area: ["300px", "400px"],
+        area: ["500px", "400px"],
         title: "项目详情",
         maxmin: false,
         shade: false, //是否显示遮罩
@@ -357,8 +415,9 @@ export default {
     /**
      * 导入模型(添加广告牌模型)
      */
-    importModel(project) {
-      this.intoModel(project);
+    async importModel(project) {
+      await this.locationModel(project, false);
+      // this.intoModel(project);
       // this.locationModel(project);
       var width = 600;
       var top = 420;
@@ -369,7 +428,7 @@ export default {
         content: {
           content: addBiillboardModel, //传递的组件对象
           parent: this, //当前的vue对象
-          data: { layerId: "addMX", projectId: project.id }, //props
+          data: { layerId: "addMX", project: project }, //props
         },
         offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: ["350px", "720px"],
@@ -379,7 +438,7 @@ export default {
         shadeClose: false, //点击遮罩是否关闭
         cancel: () => {
           //关闭事件
-          this.locationModel(project, false);
+          // this.locationModel(project, false);
         },
       });
     },
@@ -688,6 +747,10 @@ export default {
                 Number(billboardModel.templateTop.z)
               );
               var url = billboardModel.template.templateTopUrl || modelurl;
+
+              if (!url.includes("../../../")) {
+                url = window.ZTaxiosURI + url;
+              }
               var entity = viewer.entities.add({
                 id: "top_billboard_" + billboardModel.id,
                 name: "gltf",
@@ -881,7 +944,6 @@ export default {
       );
       this.getEntitiesHandler.setInputAction(async function (click) {
         var pick = viewer.scene.pick(click.position);
-        debugger;
         //广告牌信息弹窗
         if (pick && pick.id.id && pick.id.id.indexOf("_") !== -1) {
           let id = pick.id.id.split("_")[2];
@@ -954,6 +1016,7 @@ export default {
      * @param isPosition
      */
     intoModel(info, isPosition) {
+      debugger;
       let that = this;
       if (info.url && this.selectBillardId != info.id) {
         this.selectBillardId = info.id;
@@ -982,6 +1045,13 @@ export default {
             console.log(error);
           }
         }, 1000);
+      } else if (this.selectBillardId != info.id) {
+        this.selectBillardId = "";
+        that.qxyp();
+        that.thislayers.forEach((element) => {
+          scene.layers.remove(element);
+        });
+        that.thislayers = [];
       }
     },
 
@@ -1034,6 +1104,7 @@ export default {
     this.$layer.close("GGPMXXQ");
     this.$layer.close("addMX");
     this.$layer.close("billboarddetail");
+    this.$layer.close("GGPMXJT");
 
     if (this.getEntitiesHandler) {
       this.getEntitiesHandler.removeInputAction(

+ 279 - 0
src/views/ConstructionApplication3D/billboard/billboardJTList.vue

@@ -0,0 +1,279 @@
+<template>
+  <div class="ZTGlobal" style="height: 100%; width: 100%; padding: 5px">
+    <el-container style="height: 100%">
+      <el-header height="50px">
+        <el-row :gutter="10" style="display: flex; align-items: center">
+          <el-col :span="6">
+            <el-button size="mini" type="primary" plain @click="addJTInfo"
+              >添加截图</el-button
+            >
+          </el-col>
+          <el-col :span="18">
+            添加位置截图时,系统将自动保存当前视角,请现将当前视角调整到合适为止
+          </el-col>
+        </el-row>
+      </el-header>
+      <el-main>
+        <el-table
+          :data="billboardModelJTList"
+          style="width: 100%; border: 1px solid rgb(81 102 111 / 37%)"
+          height="100%"
+          v-loading="loading"
+          element-loading-text="加载中"
+          element-loading-spinner="el-icon-loading"
+          element-loading-background="rgba(0, 0, 0, 0.8)"
+        >
+          <el-table-column prop="jtName" label="截图名称"> </el-table-column>
+          <el-table-column label="操作">
+            <template slot-scope="scope">
+              <el-button
+                @click="downloadimg(scope.row)"
+                type="text"
+                size="small"
+                style="color: aqua"
+                >下载</el-button
+              >
+              <el-button
+                @click="updateZtBillboardJt(scope.row)"
+                type="text"
+                size="small"
+                style="color: aqua"
+                >修改名称</el-button
+              >
+              <el-button
+                @click="deleteBillardJT(scope.row)"
+                type="text"
+                size="small"
+                style="color: aqua"
+                >删除</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-main>
+      <el-footer height="50px">
+        <!-- :hide-on-single-page="true" -->
+        <el-pagination
+          style="color: white"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :page-size="queryParams.pageSize"
+          layout="prev, pager, next"
+          :total="queryParams.total"
+        >
+        </el-pagination>
+      </el-footer>
+    </el-container>
+  </div>
+</template>
+<script>
+import {
+  listZtBillboardJt,
+  addZtBillboardJt,
+  updateZtBillboardJt,
+  delZtBillboardJt,
+} from "@/api/zt/ztApi.js";
+import { v4 as uuidv4 } from "uuid";
+export default {
+  data() {
+    return {
+      billboardModelJTList: [],
+      loading: false,
+      queryParams: {
+        total: 0,
+        pageNum: 1,
+        pageSize: 5,
+      },
+    };
+  },
+  props: {
+    info: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    layerid: {
+      type: String,
+      default: "",
+    },
+    lydata: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    lyoption: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
+  mounted() {
+    this.getZtBillboardJtList();
+  },
+  methods: {
+    //页大小触发
+    handleSizeChange(val) {
+      this.queryParams.pageSize = val;
+      this.queryParams.pageNum = 1;
+      this.getZtBillboardJtList();
+    },
+    //跳转页触发
+    handleCurrentChange(val) {
+      this.queryParams.pageNum = val;
+      this.getZtBillboardJtList();
+    },
+
+    /**
+     * 获取广告截图信息
+     */
+    async getZtBillboardJtList() {
+      debugger;
+      this.loading = true;
+      let dataList = await listZtBillboardJt({
+        modelid: this.info.id,
+        ...this.queryParams,
+      });
+      this.loading = false;
+      this.queryParams.total = dataList.total;
+      this.billboardModelJTList = dataList.rows;
+    },
+
+    /**
+     * 添加截图
+     */
+    addJTInfo() {
+      let that = this;
+      debugger;
+      var promise = scene.outputSceneToFile();
+      Cesium.when(promise, function (base64data) {
+        if (!that.info.id) {
+          that.$message({
+            message: "未读取到广告牌信息,请关闭窗口后重试",
+            type: "warning",
+          });
+          return;
+        }
+
+        that
+          .$prompt("请输入截图名称", "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            inputPattern: /\S/,
+            inputErrorMessage: "请输入截图名称",
+          })
+          .then(async ({ value }) => {
+            var form = { id: "", modelid: "", jtName: "", jtBase: "" };
+            form.id = uuidv4();
+            form.modelid = that.info.id;
+            form.jtName = value;
+            form.jtBase = base64data;
+
+            let result = await addZtBillboardJt(form);
+            if (result.code) {
+              that.getZtBillboardJtList(that.info.id);
+              that.$message({
+                message: "添加成功",
+                type: "success",
+              });
+            }
+          })
+          .catch(() => {});
+      });
+    },
+    /**
+     * 编辑截图名称
+     */
+    updateZtBillboardJt(row) {
+      let that = this;
+      this.$prompt("请输入截图名称", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        inputPattern: /\S/,
+        inputErrorMessage: "请输入截图名称",
+        inputValue: row.jtName,
+      })
+        .then(async ({ value }) => {
+          var form = { id: "", jtName: "" };
+          form.id = row.id;
+          form.jtName = value;
+
+          let result = await updateZtBillboardJt(form);
+          if (result.code) {
+            that.getZtBillboardJtList(that.info.id);
+            that.$message({
+              message: "修改成功",
+              type: "success",
+            });
+          }
+        })
+        .catch(() => {});
+    },
+    /*
+     *删除广告牌
+     */
+    deleteBillardJT(model) {
+      debugger;
+      var that = this;
+      this.$confirm("确定要删除当前截图, 是否继续?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          debugger;
+          let result = await delZtBillboardJt(model.id);
+          debugger;
+          if (result.code == 200) {
+            that.getZtBillboardJtList(that.info.id);
+            that.$message({
+              message: "删除成功",
+              type: "success",
+            });
+          }
+        })
+        .catch(() => {
+          debugger;
+          this.$message({
+            type: "info",
+            message: "已取消删除",
+          });
+        });
+    },
+
+    /**
+     * 根据图片生成画布
+     */
+    convertImageToCanvas(image) {
+      var canvas = document.createElement("canvas");
+      canvas.width = image.width;
+      canvas.height = image.height;
+      canvas.getContext("2d").drawImage(image, 0, 0);
+      return canvas;
+    },
+    /**
+     * 下载图片
+     */
+    downloadimg(row) {
+      let that = this;
+      var image = new Image();
+      image.src = row.jtBase;
+      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); // 触发超链接的点击事件
+      };
+    },
+  },
+};
+</script>
+<style lang="scss">
+@import "@/../../zt.scss";
+</style>
+<style scoped></style>

+ 133 - 0
src/views/ConstructionApplication3D/billboard/billboarddetail.vue

@@ -52,6 +52,46 @@
           </el-table-column>
           <el-table-column prop="billboardType" label="模型类型">
           </el-table-column>
+          <el-table-column label="操作">
+            <template slot-scope="scope">
+              <el-button
+                v-show="isedit(scope.row)"
+                @click="editGGP(scope.row)"
+                type="text"
+                size="small"
+                style="color: aqua"
+                >编辑</el-button
+              >
+              <el-button
+                v-show="scope.row.isAddModel"
+                @click="locationClick(scope.row)"
+                type="text"
+                size="small"
+                style="color: aqua"
+                >定位</el-button
+              >
+              <el-button
+                v-if="
+                  scope.row.isAddModel &&
+                  scope.row.jtsum != undefined &&
+                  Number(scope.row.jtsum) == 0
+                "
+                @click="maintainjt(scope.row)"
+                type="text"
+                size="small"
+                style="color: aqua"
+                >添加位置截图</el-button
+              >
+              <el-button
+                v-else-if="scope.row.isAddModel"
+                @click="maintainjt(scope.row)"
+                type="text"
+                size="small"
+                style="color: aqua"
+                >编辑位置截图</el-button
+              >
+            </template>
+          </el-table-column>
         </el-table>
       </el-col>
     </el-row>
@@ -66,6 +106,8 @@ import {
   undergroundMode,
 } from "@/utils/MapHelper/MapHelper.js";
 import { listBillboardModelList } from "@/api/zt/ztApi.js";
+import billboardJTList from "@/views/ConstructionApplication3D/billboard/billboardJTList.vue";
+import editBiillboardModel from "@/views/ConstructionApplication3D/billboard/editBiillboardModel.vue";
 import { v4 as uuidv4 } from "uuid";
 export default {
   data() {
@@ -114,6 +156,97 @@ export default {
       //   (c) => c.billboardInfoId == that.info.projectInfo.id
       // );
     },
+
+    // 是否可编辑
+    isedit(row) {
+      if (row.isAddModel) {
+        var templateJson = JSON.parse(row.template);
+        if (templateJson.ModelType && templateJson.ModelType != "bjModel") {
+          return true;
+        }
+      }
+      return false;
+    },
+
+    /**
+     * 编辑广告牌
+     */
+
+    editGGP(row) {
+      // this.intoModel(project);
+      // this.locationModel(project);
+      var width = 600;
+      var top = 420;
+      var left = Math.floor(document.body.clientWidth - width / 2 + 130);
+      var height = 350;
+      this.$layer.iframe({
+        id: "editMX",
+        content: {
+          content: editBiillboardModel, //传递的组件对象
+          parent: this, //当前的vue对象
+          data: { info: row }, //props
+        },
+        offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
+        area: ["350px", "720px"],
+        title: "编辑广告牌",
+        maxmin: false,
+        shade: false, //是否显示遮罩
+        shadeClose: false, //点击遮罩是否关闭
+        cancel: () => {
+          //关闭事件
+        },
+      });
+    },
+    /**
+     * 广告牌定位
+     */
+    locationClick(row) {
+      //用父级的方法
+      this.lyoption.content.parent.locationSingleModel(row);
+    },
+
+    /**
+     * 广告项目渲染定位
+     */
+    locationModel() {
+      //用父级的方法
+      this.lyoption.content.parent.locationModel(this.info.projectInfo, false);
+    },
+
+    /**
+     * 维护广告牌截图位置
+     */
+    maintainjt(row) {
+      debugger;
+
+      let w = document.body.offsetWidth;
+      let h = document.body.offsetHeight;
+      //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
+      //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
+      let left = 430 / 2 + 556;
+      let top = 430 / 2 + 60;
+      this.$layer.iframe({
+        id: "GGPMXJT",
+        content: {
+          content: billboardJTList, //传递的组件对象
+          parent: this, //当前的vue对象
+          data: { info: row }, //props
+        },
+        offset: [left, top], //left top
+        area: ["430px", "430px"], //宽 高
+        title: "截图管理",
+        maxmin: false,
+        shade: false, //是否显示遮罩
+        shadeClose: false, //点击遮罩是否关闭
+        cancel: () => {
+          //关闭事件
+          // alert("关闭iframe");
+        },
+      });
+    },
+  },
+  beforeDestroy() {
+    this.$layer.close("editMX");
   },
 };
 </script>

+ 1091 - 0
src/views/ConstructionApplication3D/billboard/editBiillboardModel.vue

@@ -0,0 +1,1091 @@
+<template>
+  <div
+    class="ZTGlobal"
+    style="width: 100%; padding: 1rem 1rem 0rem 1rem; color: white"
+  >
+    <el-row>
+      <el-col :span="7">
+        <span>模型名称:</span>
+      </el-col>
+      <el-col :span="17"
+        ><el-input
+          size="mini"
+          type="text"
+          placeholder="请输入模型名称"
+          v-model="billboardModel.billboardName"
+        ></el-input
+      ></el-col>
+    </el-row>
+    <el-row>
+      <el-col :span="7"><span>附属信息</span></el-col>
+      <el-col :span="17">
+        <el-input
+          type="textarea"
+          :autosize="{ minRows: 2, maxRows: 6 }"
+          size="mini"
+          v-model="billboardModel.remarks"
+        ></el-input>
+      </el-col>
+    </el-row>
+    <el-row>
+      <el-col :span="7"> <span>广告类型:</span></el-col>
+      <el-col :span="17">
+        <el-cascader
+          ref="billboardTypeCascader"
+          size="mini"
+          placeholder="请选择广告类型"
+          v-model="billboardModel.billboardType"
+          @change="changeBillboardType"
+          :options="options"
+          :show-all-levels="false"
+          disabled
+          :props="{
+            value: 'billboardType',
+            label: 'billboardType',
+            children: 'children',
+            emitPath: false,
+          }"
+        ></el-cascader>
+        <!-- <el-select
+          placeholder="请选择广告类型"
+          v-model="billboardModel.billboardType"
+        >
+          <el-option
+            v-for="item in options"
+            :key="item.value"
+            :value="item.value"
+            :label="item.label"
+            >{{ item.label }}</el-option
+          >
+        </el-select> -->
+      </el-col>
+    </el-row>
+    <div v-show="billboardReview.isAddModel">
+      <!-- <el-row>
+        <el-col :span="7"><span>选择模型样式: </span></el-col>
+        <el-col :span="17">
+          <div class="imgdomf" style="display: flex">
+            <div
+              v-for="thisbillboardModelRule in billboardModelRule"
+              :key="thisbillboardModelRule"
+              class="con-col imgdom hover_style"
+              style="cursor: pointer"
+              @click.stop="selectModeltemplate(thisbillboardModelRule)"
+            >
+              <a>{{ thisbillboardModelRule.templateName }}</a>
+              <el-image
+                style="width: 2rem; height: 2rem"
+                :src="thisbillboardModelRule.thumbnailUrl"
+                fit="fill"
+              ></el-image>
+            </div>
+          </div>
+        </el-col>
+      </el-row> -->
+      <!-- <el-row>
+        <el-col :span="7"><span>添加模型:</span></el-col> 
+        <el-col :span="6">
+          <el-button
+            size="mini"
+            v-show="billboardReview.isAddModel"
+            type="primary"
+            @click="addModel()"
+            >添加广告牌</el-button
+          >
+        </el-col>
+      </el-row> -->
+      <el-row>
+        <el-col :span="7"><span>X坐标(度) </span></el-col>
+        <el-col :span="17">
+          <el-input-number
+            name="x"
+            v-model="billboardModel.x"
+            size="mini"
+            precision="6"
+            :min="108.6"
+            :max="110.5"
+            @change="handleChange"
+            step="0.000001"
+            label="X坐标(度)"
+          ></el-input-number
+        ></el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="7"><span>Y坐标(度):</span></el-col>
+        <el-col :span="17">
+          <el-input-number
+            name="y"
+            v-model="billboardModel.y"
+            size="mini"
+            precision="6"
+            :min="18.16"
+            :max="18.7"
+            @change="handleChange"
+            step="0.000001"
+            label="Y坐标(度)"
+          ></el-input-number>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="7"> <span>Z坐标(米):</span></el-col>
+        <el-col :span="17">
+          <el-input-number
+            name="z"
+            v-model="billboardModel.z"
+            size="mini"
+            precision="2"
+            :min="0"
+            :max="100"
+            step="0.1"
+            @change="handleChange"
+            label="Z坐标(米)"
+          ></el-input-number>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="7"><span>X轴旋转角(度):</span></el-col>
+        <el-col :span="17">
+          <el-input-number
+            name="rotateX"
+            v-model="billboardModel.rotateX"
+            size="mini"
+            precision="1"
+            :min="0"
+            :max="360"
+            step="0.1"
+            @change="handleChange"
+            label="X轴旋转角(度)"
+          ></el-input-number
+        ></el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="7"><span>Y轴旋转角(度):</span></el-col>
+        <el-col :span="17">
+          <el-input-number
+            name="rotateY"
+            v-model="billboardModel.rotateY"
+            size="mini"
+            precision="1"
+            :min="0"
+            :max="360"
+            step="0.1"
+            @change="handleChange"
+            label="Y轴旋转角(度)"
+          ></el-input-number
+        ></el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="7"><span>Z轴旋转角(度):</span></el-col>
+        <el-col :span="17">
+          <el-input-number
+            name="rotateZ"
+            v-model="billboardModel.rotateZ"
+            size="mini"
+            precision="1"
+            :min="0"
+            :max="360"
+            step="0.1"
+            @change="handleChange"
+            label="Z轴旋转角(度)"
+          ></el-input-number
+        ></el-col>
+      </el-row>
+      <!--顶部模型-->
+      <div v-if="JSON.stringify(billboardModel.templateTop) != '{}'">
+        <el-divider v-if="JSON.stringify(billboardModel.templateCentre) != '{}'"
+          >顶部模型参数</el-divider
+        >
+        <el-divider v-else>模型参数</el-divider>
+        <!--如果模型是广告牌类型-->
+        <div
+          v-if="
+            selectbillboardModelRule &&
+            selectbillboardModelRule.templateTopType == 'billboard'
+          "
+        >
+          <el-row>
+            <el-col :span="7"> <span>长(米):</span></el-col>
+            <el-col :span="17">
+              <el-input-number
+                name="xL"
+                v-model="billboardModel.templateTop.xL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                @change="handleChange"
+                label="长(米)"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="7"> <span>高(米):</span></el-col>
+            <el-col :span="17">
+              <el-input-number
+                name="yL"
+                v-model="billboardModel.templateTop.yL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                @change="handleChange"
+                label="高(米)"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="7"
+              ><span style="color: aqua">厚度(米):</span></el-col
+            >
+            <el-col :span="17">
+              <el-input-number
+                name="zL"
+                v-model="billboardModel.templateTop.zL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                label="厚度(米)"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+        </div>
+        <!--如果模型是模型类型-->
+        <div
+          v-if="
+            selectbillboardModelRule &&
+            selectbillboardModelRule.templateTopType == 'model'
+          "
+        >
+          <el-row>
+            <el-col :span="7"> <span>缩放比例:</span></el-col>
+            <el-col :span="17">
+              <el-input-number
+                name="scaleL"
+                v-model="billboardModel.templateTop.scaleL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                @change="handleChange"
+                label="缩放比例:"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="7">
+              <span style="color: aqua">长(米):</span></el-col
+            >
+            <el-col :span="17">
+              <el-input-number
+                name="xL"
+                v-model="billboardModel.templateTop.xL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                label="长(米)"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="7">
+              <span style="color: aqua">高(米):</span></el-col
+            >
+            <el-col :span="17">
+              <el-input-number
+                name="yL"
+                v-model="billboardModel.templateTop.yL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                label="高(米)"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="7"
+              ><span style="color: aqua">厚度(米):</span></el-col
+            >
+            <el-col :span="17">
+              <el-input-number
+                name="zL"
+                v-model="billboardModel.templateTop.zL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                label="厚度(米)"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+        </div>
+        <!--如果模型是box类型-->
+        <div
+          v-if="
+            selectbillboardModelRule &&
+            selectbillboardModelRule.templateTopType == 'box'
+          "
+        >
+          <!--box-->
+          <el-row>
+            <el-col :span="7"> <span>长(米):</span></el-col>
+            <el-col :span="17">
+              <el-input-number
+                name="xL"
+                v-model="billboardModel.templateTop.xL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                @change="handleChange"
+                label="长(米)"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="7"> <span>宽/高(米):</span></el-col>
+            <el-col :span="17">
+              <el-input-number
+                name="yL"
+                v-model="billboardModel.templateTop.yL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="50"
+                step="0.1"
+                @change="handleChange"
+                label=""
+                >宽/高(米)</el-input-number
+              >
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="7"><span>厚度(米):</span></el-col>
+            <el-col :span="17">
+              <el-input-number
+                name="zL"
+                v-model="billboardModel.templateTop.zL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                @change="handleChange"
+                label="厚度(米)"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+          <!--box-->
+        </div>
+      </div>
+      <!--中部模型-->
+      <div v-if="JSON.stringify(billboardModel.templateCentre) != '{}'">
+        <el-divider>中部模型参数</el-divider>
+        <!--如果模型是圆柱类型-->
+        <div
+          v-if="
+            selectbillboardModelRule &&
+            selectbillboardModelRule.templateCentreType == 'cylinder'
+          "
+        >
+          <!--cylinder-->
+          <el-row>
+            <el-col :span="7"> <span>高(米):</span></el-col>
+            <el-col :span="17">
+              <el-input-number
+                name="xL"
+                v-model="billboardModel.templateCentre.yL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                @change="handleChange"
+                label="高(米)"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="7"> <span>半径(米):</span></el-col>
+            <el-col :span="17">
+              <el-input-number
+                name="zL"
+                v-model="billboardModel.templateCentre.rL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="50"
+                step="0.1"
+                @change="handleChange"
+                label=""
+                >半径(米)</el-input-number
+              >
+            </el-col>
+          </el-row>
+          <!--cylinder-->
+        </div>
+      </div>
+      <!--底部模型-->
+      <div v-if="JSON.stringify(billboardModel.templateBottom) != '{}'">
+        <el-divider>底部模型参数</el-divider>
+        <!--如果模型是box类型-->
+        <div
+          v-if="
+            selectbillboardModelRule &&
+            selectbillboardModelRule.templateBottomType == 'box'
+          "
+        >
+          <!--box-->
+          <el-row>
+            <el-col :span="7"> <span>长(米):</span></el-col>
+            <el-col :span="17">
+              <el-input-number
+                name="xL"
+                v-model="billboardModel.templateBottom.xL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                @change="handleChange"
+                label="长(米)"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="7"> <span>宽/高(米):</span></el-col>
+            <el-col :span="17">
+              <el-input-number
+                name="yL"
+                v-model="billboardModel.templateBottom.yL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="50"
+                step="0.1"
+                @change="handleChange"
+                label=""
+                >宽/高(米)</el-input-number
+              >
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="7"><span>厚度(米):</span></el-col>
+            <el-col :span="17">
+              <el-input-number
+                name="zL"
+                v-model="billboardModel.templateBottom.zL"
+                size="mini"
+                precision="2"
+                :min="0"
+                :max="100"
+                step="0.1"
+                @change="handleChange"
+                label="厚度(米)"
+              ></el-input-number>
+            </el-col>
+          </el-row>
+          <!--box-->
+        </div>
+      </div>
+    </div>
+    <el-row>
+      <el-col :span="24">
+        <span
+          >注意:当前视角为保存完成后定位显示视角,请确保当前广告牌观察视角为最佳视角,保存即可
+        </span>
+      </el-col>
+    </el-row>
+    <el-row>
+      <div style="display: inline-flex">
+        <el-button size="mini" type="primary" @click="saveMode()"
+          >保存</el-button
+        >
+        <el-button size="mini" @click="cancle()">取消</el-button>
+      </div>
+    </el-row>
+  </div>
+</template>
+<script>
+import { v4 as uuidv4 } from "uuid";
+
+import {
+  addBillboardModelList,
+  updateBillboardModelList,
+  addbillboardModelListHistory,
+} from "@/api/zt/ztApi.js";
+/**
+ * 添加的模型集合
+ */
+let modelList = [];
+export default {
+  props: {
+    layerid: {
+      type: String,
+      default: "",
+    },
+    projectId: {
+      type: String,
+      default: "",
+    },
+    info: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    lydata: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    lyoption: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
+  data() {
+    return {
+      billboardModel: {
+        id: "",
+        billboardInfoId: "",
+        billboardName: "",
+        billboardType: "",
+        x: 109.56047,
+        y: 18.36254,
+        z: 3,
+        rotateX: 0,
+        rotateY: 0,
+        rotateZ: 90,
+        ReviewStatus: "",
+        ReviewComments: "",
+        isAddModel: false,
+        remarks: "",
+        templateTop: {},
+        templateCentre: {},
+        templateBottom: {},
+      },
+      options: window.billboardReviewList.filter((c) => c.id != "wew1"),
+      /**
+       * 编辑句柄
+       */
+      handlerPoint: null,
+      /**
+       * 当前编辑模型
+       */
+      currentEntity: null,
+
+      point3D: null,
+      GUID: "",
+      billboardReview: { isAddModel: false, ModelType: "box", modelurl: "" },
+      billboardModelRule: [],
+      selectbillboardModelRule: null,
+
+      originalbillboardModel: null,
+    };
+  },
+  watch: {},
+  mounted() {
+    this.originalbillboardModel = JSON.stringify(this.info);
+    this.init();
+  },
+  methods: {
+    /**
+     * 初始化
+     */
+    init() {
+      if (this.info) {
+        this.billboardModel = this.info;
+        this.billboardModel.template = JSON.parse(this.info.template);
+        this.billboardModel.templateBottom = JSON.parse(
+          this.info.templateBottom
+        );
+        this.billboardModel.templateCentre = JSON.parse(
+          this.info.templateCentre
+        );
+        this.billboardModel.templateTop = JSON.parse(this.info.templateTop);
+        this.billboardModel.viewing_angle = JSON.parse(this.info.viewing_angle);
+
+        this.changeBillboardType();
+      }
+    },
+
+    /**
+     * 动态调整模型
+     */
+    handleChange() {
+      var that = this;
+
+      if (that.billboardReview && that.billboardReview.ModelType) {
+        var newposition = Cesium.Cartesian3.fromDegrees(
+          parseFloat(that.billboardModel.x),
+          parseFloat(that.billboardModel.y),
+          parseFloat(that.billboardModel.z)
+        );
+        /**
+         *  旋转
+         */
+        var heading = Cesium.Math.toRadians(that.billboardModel.rotateZ);
+        var pitch = Cesium.Math.toRadians(that.billboardModel.rotateY);
+        var roll = Cesium.Math.toRadians(that.billboardModel.rotateX);
+        var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);
+        var orientation = Cesium.Transforms.headingPitchRollQuaternion(
+          newposition,
+          hpr
+        );
+        switch (that.billboardReview.ModelType) {
+          //矩形广告
+          case "rectangleBillboard":
+            //计算当前实体的xyz
+            that.billboardModel.templateTop.x = that.billboardModel.x;
+            that.billboardModel.templateTop.y = that.billboardModel.y;
+            that.billboardModel.templateTop.z =
+              that.billboardModel.z + that.billboardModel.templateTop.yL / 2;
+            var p = Cesium.Cartesian3.fromDegrees(
+              that.billboardModel.templateTop.x,
+              that.billboardModel.templateTop.y,
+              that.billboardModel.templateTop.z
+            );
+            var topentity = viewer.entities.getById(
+              "top_billboard_" + that.billboardModel.id
+            );
+            topentity.position = p;
+            topentity.box.dimensions = new Cesium.Cartesian3(
+              that.billboardModel.templateTop.xL,
+              that.billboardModel.templateTop.zL,
+              that.billboardModel.templateTop.yL
+            );
+            topentity.orientation = orientation;
+
+            break;
+          // 立杆型广告
+          case "postsBillboard":
+            that.billboardModel.templateCentre.x = that.billboardModel.x;
+            that.billboardModel.templateCentre.y = that.billboardModel.y;
+            that.billboardModel.templateCentre.z =
+              that.billboardModel.z + that.billboardModel.templateCentre.yL / 2;
+            var c_p = Cesium.Cartesian3.fromDegrees(
+              that.billboardModel.templateCentre.x,
+              that.billboardModel.templateCentre.y,
+              that.billboardModel.templateCentre.z
+            );
+            var Centreentity = viewer.entities.getById(
+              "Centre_billboard_" + that.billboardModel.id
+            );
+            Centreentity.position = c_p;
+            Centreentity.cylinder = {
+              length: that.billboardModel.templateCentre.yL, //圆柱体长度
+              topRadius: that.billboardModel.templateCentre.rL, //圆柱顶部半径
+              bottomRadius: that.billboardModel.templateCentre.rL, //圆柱体底部半径
+              material: Cesium.Color.LIGHTGREEN,
+              shadows: Cesium.ShadowMode.DISABLED, //指定圆柱体是否从每个光源投射或接收阴影
+            };
+            Centreentity.orientation =
+              Cesium.Transforms.headingPitchRollQuaternion(
+                newposition,
+                new Cesium.HeadingPitchRoll(
+                  Cesium.Math.toRadians(that.billboardModel.rotateZ),
+                  Cesium.Math.toRadians(0),
+                  Cesium.Math.toRadians(0)
+                )
+              );
+
+            //计算当前实体的xyz
+            that.billboardModel.templateTop.x = that.billboardModel.x;
+            that.billboardModel.templateTop.y = that.billboardModel.y;
+            that.billboardModel.templateTop.z =
+              that.billboardModel.templateCentre.z +
+              that.billboardModel.templateCentre.yL / 2 +
+              that.billboardModel.templateTop.yL / 2;
+
+            if (that.billboardModel.rotateX > 10) {
+              that.billboardModel.templateTop.z =
+                that.billboardModel.templateTop.z -
+                that.billboardModel.templateTop.yL / 2;
+            }
+            var t_p = Cesium.Cartesian3.fromDegrees(
+              that.billboardModel.templateTop.x,
+              that.billboardModel.templateTop.y,
+              that.billboardModel.templateTop.z
+            );
+
+            var topentity = viewer.entities.getById(
+              "top_billboard_" + that.billboardModel.id
+            );
+            topentity.position = t_p;
+            topentity.box.dimensions = new Cesium.Cartesian3(
+              that.billboardModel.templateTop.xL,
+              that.billboardModel.templateTop.zL,
+              that.billboardModel.templateTop.yL
+            );
+            topentity.orientation = orientation;
+
+            break;
+          //底座型立杆广告
+          case "ColumnWithaseBillboard":
+            //计算当前实体的xyz
+            that.billboardModel.templateBottom.x = that.billboardModel.x;
+            that.billboardModel.templateBottom.y = that.billboardModel.y;
+            that.billboardModel.templateBottom.z =
+              that.billboardModel.z + that.billboardModel.templateBottom.yL / 2;
+
+            var b_p = Cesium.Cartesian3.fromDegrees(
+              that.billboardModel.templateBottom.x,
+              that.billboardModel.templateBottom.y,
+              that.billboardModel.templateBottom.z
+            );
+            var bottomentity = viewer.entities.getById(
+              "bottom_billboard_" + that.billboardModel.id
+            );
+            bottomentity.position = b_p;
+            bottomentity.box.dimensions = new Cesium.Cartesian3(
+              that.billboardModel.templateBottom.xL,
+              that.billboardModel.templateBottom.zL,
+              that.billboardModel.templateBottom.yL
+            );
+            bottomentity.orientation =
+              Cesium.Transforms.headingPitchRollQuaternion(
+                newposition,
+                new Cesium.HeadingPitchRoll(
+                  Cesium.Math.toRadians(that.billboardModel.rotateZ),
+                  Cesium.Math.toRadians(0),
+                  Cesium.Math.toRadians(0)
+                )
+              );
+
+            that.billboardModel.templateCentre.x = that.billboardModel.x;
+            that.billboardModel.templateCentre.y = that.billboardModel.y;
+
+            that.billboardModel.templateCentre.z =
+              that.billboardModel.templateBottom.z +
+              that.billboardModel.templateBottom.yL / 2 +
+              that.billboardModel.templateCentre.yL / 2;
+            var c_p = Cesium.Cartesian3.fromDegrees(
+              that.billboardModel.templateCentre.x,
+              that.billboardModel.templateCentre.y,
+              that.billboardModel.templateCentre.z
+            );
+
+            var Centreentity = viewer.entities.getById(
+              "Centre_billboard_" + that.billboardModel.id
+            );
+            Centreentity.position = c_p;
+            Centreentity.cylinder = {
+              length: that.billboardModel.templateCentre.yL, //圆柱体长度
+              topRadius: that.billboardModel.templateCentre.rL, //圆柱顶部半径
+              bottomRadius: that.billboardModel.templateCentre.rL, //圆柱体底部半径
+              material: Cesium.Color.LIGHTGREEN,
+              shadows: Cesium.ShadowMode.DISABLED, //指定圆柱体是否从每个光源投射或接收阴影
+            };
+            Centreentity.orientation =
+              Cesium.Transforms.headingPitchRollQuaternion(
+                newposition,
+                new Cesium.HeadingPitchRoll(
+                  Cesium.Math.toRadians(that.billboardModel.rotateZ),
+                  Cesium.Math.toRadians(0),
+                  Cesium.Math.toRadians(0)
+                )
+              );
+
+            //计算当前实体的xyz
+            that.billboardModel.templateTop.x = that.billboardModel.x;
+            that.billboardModel.templateTop.y = that.billboardModel.y;
+            that.billboardModel.templateTop.z =
+              that.billboardModel.templateCentre.z +
+              that.billboardModel.templateCentre.yL / 2 +
+              that.billboardModel.templateTop.yL / 2;
+            if (that.billboardModel.rotateX > 10) {
+              // var sd =
+              //   (that.billboardModel.templateTop.yL / 2) *
+              //   Math.cos(that.billboardModel.rotateX);
+              // that.billboardModel.templateTop.z =
+              //   that.billboardModel.templateTop.z -
+              //   sd +
+              //   that.billboardModel.templateTop.zL;
+              that.billboardModel.templateTop.z =
+                that.billboardModel.templateTop.z -
+                that.billboardModel.templateTop.yL / 2 +
+                that.billboardModel.templateTop.zL;
+            }
+
+            var t_p = Cesium.Cartesian3.fromDegrees(
+              that.billboardModel.templateTop.x,
+              that.billboardModel.templateTop.y,
+              that.billboardModel.templateTop.z
+            );
+
+            var topentity = viewer.entities.getById(
+              "top_billboard_" + that.billboardModel.id
+            );
+            topentity.position = t_p;
+            topentity.box.dimensions = new Cesium.Cartesian3(
+              that.billboardModel.templateTop.xL,
+              that.billboardModel.templateTop.zL,
+              that.billboardModel.templateTop.yL
+            );
+            topentity.orientation = orientation;
+
+            break;
+          //实物型广告(模型型)
+          case "ModelBillboard":
+            //计算当前实体的xyz
+            that.billboardModel.templateTop.x = that.billboardModel.x;
+            that.billboardModel.templateTop.y = that.billboardModel.y;
+            that.billboardModel.templateTop.z = that.billboardModel.z;
+            var t_p = Cesium.Cartesian3.fromDegrees(
+              that.billboardModel.templateTop.x,
+              that.billboardModel.templateTop.y,
+              that.billboardModel.templateTop.z
+            );
+
+            var topentity = viewer.entities.getById(
+              "top_billboard_" + that.billboardModel.id
+            );
+            topentity.position = t_p;
+            topentity.model.scale = that.billboardModel.templateTop.scaleL;
+            topentity.orientation = orientation;
+
+            break;
+          //图片型广告
+          case "imgBillboard":
+            //计算当前实体的xyz
+            var x = that.billboardModel.x;
+            var y = that.billboardModel.y;
+            var z =
+              that.billboardModel.z + that.billboardModel.templateTop.yL / 2;
+            that.billboardModel.templateTop.x = x;
+            that.billboardModel.templateTop.y = y;
+            that.billboardModel.templateTop.z = z;
+            var t_p = Cesium.Cartesian3.fromDegrees(
+              that.billboardModel.templateTop.x,
+              that.billboardModel.templateTop.y,
+              that.billboardModel.templateTop.z
+            );
+
+            var topentity = viewer.entities.getById(
+              "top_billboard_" + that.billboardModel.id
+            );
+            topentity.position = t_p;
+            topentity.billboard.width = that.billboardModel.templateTop.xL;
+            topentity.billboard.height = that.billboardModel.templateTop.yL;
+            topentity.billboard.rotation = that.billboardModel.rotateX;
+            topentity.orientation = orientation;
+            break;
+          default:
+            //计算当前实体的xyz
+            that.billboardModel.templateTop.x = that.billboardModel.x;
+            that.billboardModel.templateTop.y = that.billboardModel.y;
+            that.billboardModel.templateTop.z =
+              that.billboardModel.z + that.billboardModel.templateTop.yL / 2;
+            var p = Cesium.Cartesian3.fromDegrees(
+              that.billboardModel.templateTop.x,
+              that.billboardModel.templateTop.y,
+              that.billboardModel.templateTop.z
+            );
+            var topentity = viewer.entities.getById(
+              "top_billboard_" + that.billboardModel.id
+            );
+            topentity.position = p;
+            topentity.box.dimensions = new Cesium.Cartesian3(
+              that.billboardModel.templateTop.xL,
+              that.billboardModel.templateTop.zL,
+              that.billboardModel.templateTop.yL
+            );
+            topentity.orientation = orientation;
+
+            break;
+        }
+
+        var h = 0;
+        if (that.billboardModel.templateTop.yL) {
+          h = Number(that.billboardModel.templateTop.yL) / 2;
+        }
+        var pointLabelEntity = viewer.entities.getById(
+          "point_Billboard_" + that.billboardModel.id
+        );
+
+        var pointLabel = Cesium.Cartesian3.fromDegrees(
+          Number(that.billboardModel.templateTop.x),
+          Number(that.billboardModel.templateTop.y),
+          Number(that.billboardModel.templateTop.z) + h
+        );
+
+        pointLabelEntity.position = pointLabel;
+      }
+    },
+
+    /**
+     * 类型修改时触发
+     */
+    changeBillboardType() {
+      debugger;
+      this.billboardReview = {
+        isAddModel: this.billboardModel.isAddModel,
+        ModelType: this.billboardModel.template.ModelType,
+        modelurl: "",
+      };
+      if (this.billboardModel.isAddModel) {
+        this.billboardModelRule = [this.billboardModel.template];
+        this.selectbillboardModelRule =
+          this.billboardModelRule.length > 0
+            ? this.billboardModelRule[0]
+            : null;
+      } else {
+        this.billboardModelRule = null;
+      }
+    },
+
+    /**
+     * 保存编辑
+     */
+    async saveMode() {
+      debugger;
+      let that = this;
+      if (
+        that.billboardModel.billboardName == "" ||
+        that.billboardModel.billboardName == null
+      ) {
+        this.$message.error("请添加模型名称");
+        return;
+      }
+
+      debugger;
+      if (
+        that.billboardReview.ModelType == "ModelBillboard" ||
+        that.billboardReview.ModelType == "imgBillboard"
+      ) {
+        if (
+          !that.billboardModel.templateTop.xL ||
+          !that.billboardModel.templateTop.yL ||
+          !that.billboardModel.templateTop.zL
+        ) {
+          this.$message.error("请输入模型长宽高和厚度参数");
+          return;
+        }
+      }
+      debugger;
+      let data = JSON.parse(JSON.stringify(that.billboardModel));
+
+      data.template = {
+        ModelType: that.billboardReview.ModelType,
+        ...that.selectbillboardModelRule,
+      };
+
+      data.template = JSON.stringify(data.template);
+      data.templateBottom = JSON.stringify(data.templateBottom);
+      data.templateCentre = JSON.stringify(data.templateCentre);
+      data.templateTop = JSON.stringify(data.templateTop);
+      data.viewing_angle = JSON.stringify({
+        destination: viewer.camera.position,
+        orientation: {
+          // 方向
+          heading: viewer.camera.heading,
+          // 视角
+          pitch: viewer.camera.pitch,
+          // 倾斜角度
+          roll: viewer.camera.roll,
+        },
+      });
+      debugger;
+      let result = await updateBillboardModelList(data);
+      debugger;
+      if (result.code) {
+        that.$message({
+          message: "添加成功",
+          type: "success",
+        });
+
+        //历史模型更改记录
+        if (
+          Object.prototype.toString.call(this.originalbillboardModel) ===
+          "[object String]"
+        ) {
+          this.originalbillboardModel = JSON.parse(this.originalbillboardModel);
+        }
+
+        // this.originalbillboardModel.id = uuidv4();
+        await addbillboardModelListHistory(this.originalbillboardModel);
+        debugger;
+
+        if (that.lyoption.content.parent.init) {
+          that.lyoption.content.parent.init();
+        }
+        that.$layer.close(that.layerid);
+      }
+
+      // window.billboardModelList.push(that.billboardModel);
+      // this.$message({
+      //   message: "添加成功",
+      //   type: "success",
+      // });
+    },
+    //取消
+    cancle() {
+      this.removeModel();
+      this.$layer.close(this.layerid);
+    },
+
+    //清除
+    removeModel() {
+      if (this.handlerPoint)
+        this.handlerPoint.removeInputAction(
+          Cesium.ScreenSpaceEventType.LEFT_CLICK
+        );
+      modelList = [];
+      viewer.entities.removeAll();
+    },
+  },
+  beforeDestroy() {
+    this.lyoption.content.parent.locationModel();
+  },
+};
+</script>
+<style lang="scss">
+@import "@/../../zt.scss";
+</style>
+<style lang="scss" scoped>
+.hover_style:hover {
+  border: 1px solid rgba(15, 123, 200, 0.247);
+  background-color: rgba(15, 123, 200, 0.247);
+}
+
+.con-col {
+  border: 1px solid;
+  display: flex;
+  flex-flow: column nowrap;
+  justify-content: center;
+  align-items: center;
+  border-radius: 4px;
+}
+.imgdomf {
+  border: 1px solid rgba(15, 122, 200, 0.4);
+  padding: 4px;
+}
+.imgdom {
+  border: 1px solid rgba(15, 122, 200, 0.4);
+  margin: 4px;
+  padding: 2px;
+}
+.el-divider__text {
+  background-color: #11123bde;
+
+  color: #ffffff;
+}
+
+.el-input.is-disabled .el-input__inner {
+  cursor: not-allowed !important;
+}
+</style>

+ 7 - 1
src/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue

@@ -104,7 +104,10 @@
           </el-form-item>
         </el-form>
         <div class="SaveCenter">
-          <el-button type="primary" @click="submitForm('ruleForm')"
+          <el-button
+            type="primary"
+            :disabled="isWC"
+            @click="submitForm('ruleForm')"
             >完成</el-button
           >
           <el-button @click="resetForm('ruleForm')">重置</el-button>
@@ -123,6 +126,7 @@ import {
 export default {
   data() {
     return {
+      isWC: false,
       form: {
         id: "",
         meetingprogress: "0",
@@ -221,6 +225,7 @@ export default {
     },
     submitForm(formName) {
       let that = this;
+      that.isWC = true;
       this.$refs[formName].validate(async (valid) => {
         if (valid) {
           if (this.info.id) {
@@ -249,6 +254,7 @@ export default {
           debugger;
           // that.lyoption.cancel();
         } else {
+          that.isWC = false;
           return false;
         }
       });

File diff suppressed because it is too large
+ 0 - 0
src/views/ConstructionApplication3D/projectManagement/CheckParkAnalyse.js


+ 107 - 2
src/views/ConstructionApplication3D/projectManagement/projectManagement.vue

@@ -351,6 +351,17 @@
                                 >夜景分析</el-button
                               >
                             </el-col>
+                            <el-col
+                              :span="8"
+                              v-if="itemModel.isggp && itemModel.isggp == true"
+                            >
+                              <el-button
+                                type="primary"
+                                size="mini"
+                                @click.stop="openGGPreview(itemModel)"
+                                >广告审查</el-button
+                              >
+                            </el-col>
                           </el-row>
                           <el-row :gutter="24">
                             <!-- <el-col :span="8">
@@ -716,6 +727,7 @@ import {
   midpoint,
   difference,
 } from "@turf/turf";
+import BillboardDesign from "@/views/ConstructionApplication3D/billboard/billboardDesign.vue";
 import NightscapeAnalysis from "@/views/ConstructionApplication3D/NightscapeAnalysis/NightscapeAnalysis.vue";
 import addProjectInfo from "@/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue";
 import projectInfo from "@/views/ConstructionApplication3D/projectInfo/projectInfo.vue";
@@ -744,6 +756,7 @@ import {
   updateConstructionmodel,
   updateProjectinformation,
   delProjectinformation,
+  listZtBillboardInfoList,
 } from "@/api/zt/ztApi.js";
 var popupBoxs = [];
 export default {
@@ -878,6 +891,13 @@ export default {
         ...queryParams,
       });
       queryParams.total = Projectinformations.total;
+
+      Projectinformations.rows.forEach((element) => {
+        element.ztConstructionmodelList.forEach((elementModel) => {
+          elementModel.isggp = null;
+        });
+      });
+
       return Projectinformations.rows;
       // let Projectinformations = window.projectinformation.filter(
       //   (c) => c.meetingprogress == meetingprogress
@@ -928,7 +948,20 @@ export default {
     //分析列表显隐
     async openAnalyzeList(itemModel) {
       this.SelectConstructionModelHendle(itemModel);
+
       debugger;
+      if (itemModel.isggp == null) {
+        let BenchmarkLandPrices = await listZtBillboardInfoList({
+          bjmxid: itemModel.id,
+        });
+
+        if (BenchmarkLandPrices.total > 0) {
+          itemModel.isggp = true;
+        } else {
+          itemModel.isggp = false;
+        }
+      }
+
       for (let key in this.$refs) {
         if (key.includes("AnalyzeList")) {
           if (key == itemModel.id + "AnalyzeList") {
@@ -2320,7 +2353,7 @@ export default {
               polyline: {
                 positions: Cesium.Cartesian3.fromDegreesArray(ps),
                 width: 5,
-                material: Cesium.Color.RED,
+                material: Cesium.Color.PALEVIOLETRED,
                 clampToGround: true,
               },
             });
@@ -2747,6 +2780,12 @@ export default {
         KG_Data.JZXGX = LandPlanning.data.find((c) => c.label == "JZXGX")
           ? LandPlanning.data.find((c) => c.label == "JZXGX").value
           : "";
+        KG_Data.LDLD = LandPlanning.data.find((c) => c.label == "LDLD")
+          ? LandPlanning.data.find((c) => c.label == "LDLD").value
+          : "";
+        KG_Data.LDLX = LandPlanning.data.find((c) => c.label == "LDLX")
+          ? LandPlanning.data.find((c) => c.label == "LDLX").value
+          : "";
         KG_Data.JRJZMJD = "";
         KG_Data.JRJZMJX = "";
 
@@ -2875,6 +2914,42 @@ export default {
 
           //建筑密度
           FA_Data.JZMD = (Number(FA_Data.JDMJ / FA_Data.YDMJ) * 100).toFixed(2);
+
+          //计算绿地率
+
+          let queryByGeometryParameters3 = {
+            getFeatureMode: "SQL",
+            datasetNames: [Minfo.datasourcename + ":GREENAREA"],
+            queryParameter: {
+              attributeFilter: "LANDNO = '" + KG_Data.DKBM + "'",
+            },
+            hasGeometry: "true",
+          };
+          let e3 = await mapQuery(
+            Minfo.dataurl + "/featureResults.json?returnContent=true",
+            queryByGeometryParameters3
+          );
+          //绿地率
+          var ldl = 0;
+          var ldmj = 0;
+          if (e3 && e3.totalCount > 0) {
+            e3.features.forEach((feature) => {
+              var AREAIndex = feature.fieldNames.findIndex((c) => c == "AREA");
+              var PROPORTIONIndex = feature.fieldNames.findIndex(
+                (c) => c == "PROPORTION"
+              );
+              if (AREAIndex) {
+                var thisldmj = feature.fieldValues[AREAIndex] || 0;
+                var PROPORTION = 1;
+                if (PROPORTIONIndex) {
+                  PROPORTION = feature.fieldValues[PROPORTIONIndex] || 1;
+                }
+                ldmj += Number(thisldmj) * Number(PROPORTION);
+              }
+            });
+            ldl = ((ldmj / KG_Data.YDMJ) * 100).toFixed(2);
+            FA_Data.LDL = ldl;
+          }
         }
         tableDataList.push({ Minfo, KG_Data, FA_Data, TJFA_Data });
       }
@@ -3305,7 +3380,7 @@ export default {
       //   this.$layer.close(this.ZBFXInfolayerid);
       // }
       let that = this;
-      let wpx = 650;
+      let wpx = 850;
       let hpx = 430;
       let w = document.body.offsetWidth;
       let h = document.body.offsetHeight;
@@ -3439,6 +3514,36 @@ export default {
       });
     },
 
+    /**
+     * 广告牌审查跳转
+     */
+    openGGPreview(Minfo) {
+      this.$layer.close("ConstructionApplication3D");
+
+      this.$layer.iframe({
+        id: "BillboardDesign",
+        layerStyle: {
+          padding: "0.3vw 1vw 0.3vw 2.5vw",
+          backgroundImage: "url(/static/images/popup/modal-title.png)",
+          backgroundRepeat: "no-repeat",
+        },
+        content: {
+          content: BillboardDesign, //传递的组件对象
+          parent: this, //当前的vue对象
+          data: { info: { mid: Minfo.id } }, //props
+        },
+        offset: [340, 460], //left top  左上角(left=430px/2;top=(800px+header高)/2)
+        area: ["430px", "800px"],
+        title: "广告牌审查",
+        maxmin: false,
+        shade: false, //是否显示遮罩
+        shadeClose: false, //点击遮罩是否关闭
+        cancel: () => {
+          //关闭事件
+          // alert("关闭iframe");
+        },
+      });
+    },
     /**
      * 压平
      * @param Minfos 模型信息

File diff suppressed because it is too large
+ 0 - 0
src/views/ConstructionApplication3D/skylineAnalysis/skylineExecute.js


+ 270 - 281
src/views/ConstructionApplication3D/zt.scss

@@ -1,346 +1,335 @@
-.ZTGlobal{
+.ZTGlobal {
   .colorPicker {
-  // z-index: 999999 !important;
-}
-
-.el-row {
-  margin-bottom: 1rem;
-
-  &:last-child {
-    margin-bottom: 0;
+    // z-index: 999999 !important;
   }
-}
 
-.el-col {
-  border-radius: 4px;
-}
-
-.bg-purple-dark {
-  background: #99a9bf;
-}
-
-.bg-purple {
-  background: #d3dce6;
-}
-
-.bg-purple-light {
-  background: #e5e9f2;
-}
-
-.grid-content {
-  border-radius: 4px;
-  min-height: 36px;
-}
-
-.row-bg {
-  padding: 10px 0;
-  background-color: #f9fafc;
-}
-
-.xmtabls {
-  background-color: rgba(10, 36, 80, 1);
-  width: 100%;
-}
+  .el-row {
+    margin-bottom: 1rem;
 
-.el-tabs__item {
-  color: white;
-}
+    &:last-child {
+      margin-bottom: 0;
+    }
+  }
 
-.el-collapse-item__header {
-  color: #fff;
-  background-color: #fff0;
-  border-bottom: 0px solid #ebeef5;
-}
+  .el-col {
+    border-radius: 4px;
+  }
 
-.el-collapse-item__wrap {
-  background-color: #fff0;
-  border-bottom: 0px solid #ebeef5;
-  overflow: unset;
-}
+  .bg-purple-dark {
+    background: #99a9bf;
+  }
 
-.el-collapse {
-  // border-top: 0px solid #ebeef5;
-  // border-bottom: 0px solid #ebeef5;
-  border: none;
-}
+  .bg-purple {
+    background: #d3dce6;
+  }
 
-.el-card {
-  color: #fff;
+  .bg-purple-light {
+    background: #e5e9f2;
+  }
 
-  background-color: #fff0;
-}
+  .grid-content {
+    border-radius: 4px;
+    min-height: 36px;
+  }
 
-.el-radio {
-  color: #fff;
-}
+  .row-bg {
+    padding: 10px 0;
+    background-color: #f9fafc;
+  }
 
-.containersd {
-  display: flex;
-  /* 使用Flexbox布局 */
-  flex-direction: column;
-  /* 子标签竖向排列 */
-  justify-content: center;
-  align-items: center;
-  border-radius: 4px;
-}
+  .xmtabls {
+    background-color: rgba(10, 36, 80, 1);
+    width: 100%;
+  }
 
-.none {
-  display: none;
-}
+  .el-tabs__item {
+    color: white;
+  }
 
-.block {
-  display: block;
-}
+  .el-collapse-item__header {
+    color: #fff;
+    background-color: #fff0;
+    border-bottom: 0px solid #ebeef5;
+  }
 
-.el-switch__label {
-  color: #fff;
-}
+  .el-collapse-item__wrap {
+    background-color: #fff0;
+    border-bottom: 0px solid #ebeef5;
+    overflow: unset;
+  }
 
+  .el-collapse {
+    // border-top: 0px solid #ebeef5;
+    // border-bottom: 0px solid #ebeef5;
+    border: none;
+  }
 
+  .el-card {
+    color: #fff;
 
+    background-color: #fff0;
+  }
 
-.el-descriptions {
-  color: #fff;
-}
+  .el-radio {
+    color: #fff;
+  }
 
-.el-descriptions__body {
-  color: #fff;
-  background-color: #fff0;
-}
+  .containersd {
+    display: flex;
+    /* 使用Flexbox布局 */
+    flex-direction: column;
+    /* 子标签竖向排列 */
+    justify-content: center;
+    align-items: center;
+    border-radius: 4px;
+  }
 
-.titleHeader {
-  text-align: left;
-}
+  .none {
+    display: none;
+  }
 
+  .block {
+    display: block;
+  }
 
-.el-table {
+  .el-switch__label {
+    color: #fff;
+  }
 
-  color: #fff;
-}
+  .el-descriptions {
+    color: #fff;
+  }
 
-.el-table {
-  background-color: #fff0 !important;
-}
+  .el-descriptions__body {
+    color: #fff;
+    background-color: #fff0;
+  }
 
-.el-table thead {
-  color: #fff;
-  background-color: #fff0 !important;
-}
+  .titleHeader {
+    text-align: left;
+  }
 
-.el-table__body tr.el-table__row {
-  background-color: #fff0 !important;
-  /* 浅灰色背景 */
-}
+  .el-table {
+    color: #fff;
+  }
 
-// 修改表格背景颜色
-.el-table,
-.el-table__expanded-cell {
-  background-color: #fff0 !important;
-}
+  .el-table {
+    background-color: #fff0 !important;
+  }
 
-// 鼠标悬浮该行时的背景颜色
-.el-table--enable-row-hover .el-table__body tr:hover>td {
-  background-color: #40a0ff42 !important;
-}
+  .el-table thead {
+    color: #fff;
+    background-color: #fff0 !important;
+  }
 
+  .el-table__body tr.el-table__row {
+    background-color: #fff0 !important;
+    /* 浅灰色背景 */
+  }
 
-.el-table th,
-.el-table tr,
-.el-table td {
-  background-color: #fff0 !important;
-}
+  // 修改表格背景颜色
+  .el-table,
+  .el-table__expanded-cell {
+    background-color: #fff0 !important;
+  }
 
-.el-table__body tr.current-row>td {
-  background-color: #40a0ff59 !important;
-}
+  // 鼠标悬浮该行时的背景颜色
+  .el-table--enable-row-hover .el-table__body tr:hover > td {
+    background-color: #40a0ff42 !important;
+  }
 
-.SaveCenter {
-  text-align: center;
-  padding: 1rem 0;
-}
+  .el-table th,
+  .el-table tr,
+  .el-table td {
+    background-color: #fff0 !important;
+  }
 
-.el-checkbox {
-  color: #ffffff;
-}
+  .el-table__body tr.current-row > td {
+    background-color: #40a0ff59 !important;
+  }
 
+  .SaveCenter {
+    text-align: center;
+    padding: 1rem 0;
+  }
 
-.el-table__fixed-right::before{
-  
-   background-color:transparent;
+  .el-checkbox {
+    color: #ffffff;
   }
 
+  .el-table__fixed-right::before {
+    background-color: transparent;
+  }
 
-.el-button.is-plain {
-  background: #0F7AC8;
-  color: #fff;
-}
+  .el-button.is-plain {
+    background: #0f7ac8;
+    color: #fff;
+  }
 
-.el-input>input,
-.el-select-dropdown,
-.el-textarea>textarea {
-  color: #fff !important;
-  background-color: rgba(4, 28, 50, 0.5) !important;
-  border: 1px solid rgba(15, 122, 200, 0.4) !important;
-}
+  .el-input > input,
+  .el-select-dropdown,
+  .el-textarea > textarea {
+    color: #fff !important;
+    background-color: rgba(4, 28, 50, 0.5) !important;
+    border: 1px solid rgba(15, 122, 200, 0.4) !important;
+  }
 
-.el-input .el-input-group__append {
-  color: #fff !important;
-  background-color: rgba(4, 28, 50, 0.5) !important;
-  border: 1px solid rgba(15, 122, 200, 0.4) !important;
-}
+  .el-input .el-input-group__append {
+    color: #fff !important;
+    background-color: rgba(4, 28, 50, 0.5) !important;
+    border: 1px solid rgba(15, 122, 200, 0.4) !important;
+  }
 
-.el-input-group__append>button {
-  color: #fff !important;
-  background-color: rgba(4, 28, 50, 0.5) !important;
-  border: 1px solid rgba(15, 122, 200, 0.4) !important;
-  padding: 6px 20px;
-}
+  .el-input-group__append > button {
+    color: #fff !important;
+    background-color: rgba(4, 28, 50, 0.5) !important;
+    border: 1px solid rgba(15, 122, 200, 0.4) !important;
+    padding: 6px 20px;
+  }
 
-.el-select-dropdown__item {
-  color: #ebebeb !important;
-}
+  .el-select-dropdown__item {
+    color: #ebebeb !important;
+  }
 
-.el-button--primary,
-.notify-btn-primary {
-  background: #0f7ac8 !important;
-  border-color: #0f7ac8 !important;
-  color: #fff !important;
-}
+  .el-button--primary,
+  .notify-btn-primary {
+    background: #0f7ac8 !important;
+    border-color: #0f7ac8 !important;
+    color: #fff !important;
+  }
 
-.el-button--primary:hover,
-.notify-btn-primary:hover {
-  background: #0f7bc8d8 !important;
-  border-color: #0f7bc8d8 !important;
-  color: #fff !important;
-}
+  .el-button--primary:hover,
+  .notify-btn-primary:hover {
+    background: #0f7bc8d8 !important;
+    border-color: #0f7bc8d8 !important;
+    color: #fff !important;
+  }
 
-.el-icon-search {
-  color: #20a0fc !important;
-}
+  .el-icon-search {
+    color: #20a0fc !important;
+  }
 
-.el-button--default,
-.notify-btn-default {
-  background: rgba(63, 147, 245, 0.2) !important;
-  border-color: #3f93f5 !important;
-  color: rgba(182, 224, 255, 1) !important;
-}
+  .el-button--default,
+  .notify-btn-default {
+    background: rgba(63, 147, 245, 0.2) !important;
+    border-color: #3f93f5 !important;
+    color: rgba(182, 224, 255, 1) !important;
+  }
 
-.el-button--default:hover,
-.notify-btn-default:hover {
-  background: rgba(63, 148, 245, 0.432) !important;
-  border-color: #3f93f5 !important;
-  color: rgba(182, 224, 255, 1) !important;
-}
+  .el-button--default:hover,
+  .notify-btn-default:hover {
+    background: rgba(63, 148, 245, 0.432) !important;
+    border-color: #3f93f5 !important;
+    color: rgba(182, 224, 255, 1) !important;
+  }
 
-.el-select-dropdown__item.hover,
-.el-select-dropdown__item:hover {
-  color: #fff !important;
-  background-color: rgba(255, 255, 255, 0.35) !important;
-}
+  .el-select-dropdown__item.hover,
+  .el-select-dropdown__item:hover {
+    color: #fff !important;
+    background-color: rgba(255, 255, 255, 0.35) !important;
+  }
 
-.el-cascader__dropdown,
-.el-picker-panel,
-.el-picker-panel__footer {
-  color: #fff !important;
-  background-color: rgba(4, 28, 50, 0.5) !important;
-  border: 1px solid rgba(15, 122, 200, 0.4) !important;
-}
+  .el-cascader__dropdown,
+  .el-picker-panel,
+  .el-picker-panel__footer {
+    color: #fff !important;
+    background-color: rgba(4, 28, 50, 0.5) !important;
+    border: 1px solid rgba(15, 122, 200, 0.4) !important;
+  }
 
-.el-time-panel {
-  background-color: rgba(4, 28, 50, 0.85) !important;
-}
+  .el-time-panel {
+    background-color: rgba(4, 28, 50, 0.85) !important;
+  }
 
-.el-time-spinner__item {
-  color: #fff !important;
-}
+  .el-time-spinner__item {
+    color: #fff !important;
+  }
 
-.el-time-spinner__item:hover {
-  color: #fff !important;
-  background: rgba(63, 148, 245, 0.432) !important;
-}
+  .el-time-spinner__item:hover {
+    color: #fff !important;
+    background: rgba(63, 148, 245, 0.432) !important;
+  }
 
-.el-time-panel__footer>button:nth-child(1),
-.el-date-table th,
-.el-picker-panel__icon-btn,
-.el-date-picker__header-label {
-  color: #fff !important;
-}
+  .el-time-panel__footer > button:nth-child(1),
+  .el-date-table th,
+  .el-picker-panel__icon-btn,
+  .el-date-picker__header-label {
+    color: #fff !important;
+  }
 
-.el-pagination>button,
-.el-pager li {
-  color: #c2c2c2 !important;
-  background-color: rgba(4, 28, 50, 0.5) !important;
-}
+  .el-pagination > button,
+  .el-pager li {
+    color: #c2c2c2 !important;
+    background-color: rgba(4, 28, 50, 0.5) !important;
+  }
 
-.el-pager li.active {
-  color: #fff !important;
-  background-color: rgba(4, 28, 50, 0.5) !important;
-}
+  .el-pager li.active {
+    color: #fff !important;
+    background-color: rgba(4, 28, 50, 0.5) !important;
+  }
 
-.el-color-picker__panel {
-  background-color: rgba(4, 28, 50, 0.5) !important;
-}
+  .el-color-picker__panel {
+    background-color: rgba(4, 28, 50, 0.5) !important;
+  }
 
-.el-cascader-node {
-  color: #fff !important;
-}
+  .el-cascader-node {
+    color: #fff !important;
+  }
 
-.el-cascader-node:hover {
-  color: #fff !important;
-  background-color: rgba(255, 255, 255, 0.35) !important;
-}
+  .el-cascader-node:hover {
+    color: #fff !important;
+    background-color: rgba(255, 255, 255, 0.35) !important;
+  }
 
-/* .el-cascader-node:not(.is-disabled):hover */
-.el-cascader-node:not(.is-disabled):focus {
-  background-color: rgba(4, 28, 50, 0.5) !important;
-}
+  /* .el-cascader-node:not(.is-disabled):hover */
+  .el-cascader-node:not(.is-disabled):focus {
+    background-color: rgba(4, 28, 50, 0.5) !important;
+  }
 
-.el-checkbox__input>.el-checkbox__inner {
-  border: 1px solid #96a9b7;
-  background-color: rgba(4, 28, 50, 0.6);
-}
+  .el-checkbox__input > .el-checkbox__inner {
+    border: 1px solid #96a9b7;
+    background-color: rgba(4, 28, 50, 0.6);
+  }
 
-.el-icon-s-operation,
-.el-icon-location-outline,
-.el-icon-share,
-.el-icon-delete,
-.el-icon-folder-add,
-.el-icon-tickets,
-.el-icon-edit
-{
-  color: #20a0fc;
-}
+  .el-icon-s-operation,
+  .el-icon-location-outline,
+  .el-icon-share,
+  .el-icon-delete,
+  .el-icon-folder-add,
+  .el-icon-tickets,
+  .el-icon-edit {
+    color: #20a0fc;
+  }
 
-.el-icon-s-operation+a,
-.el-icon-location-outline+a,
-.el-icon-share+a,
-.el-icon-delete+a,
-.el-icon-folder-add+a,
-.el-icon-tickets+a,
-.el-icon-edit+a
-{
-  color: #cddeeb;
-}
+  .el-icon-s-operation + a,
+  .el-icon-location-outline + a,
+  .el-icon-share + a,
+  .el-icon-delete + a,
+  .el-icon-folder-add + a,
+  .el-icon-tickets + a,
+  .el-icon-edit + a {
+    color: #cddeeb;
+  }
 
-.el-pagination__jump {
-  color: #cddeeb !important;
-}
+  .el-pagination__jump {
+    color: #cddeeb !important;
+  }
 
-.el-input-number__decrease,
-.el-input-number__increase {
-  color: #fff !important;
-  background-color: rgba(4, 28, 50, 0.5) !important;
-  border: 1px solid rgba(15, 122, 200, 0.4) !important;
-}
-.el-descriptions .is-bordered .el-descriptions-item__cell{
-  border: 1px solid rgba(15, 122, 200, 0.4);
-}
-.el-descriptions-item__label.is-bordered-label {
-  font-weight: 700;
-  color: #ffffff;
-  background: rgba(4, 28, 50, 0.6);
-}
-.el-date-editor .el-range-input{
-  background-color: rgba(4, 28, 50, 0.5) ;
-}
+  .el-input-number__decrease,
+  .el-input-number__increase {
+    color: #fff !important;
+    background-color: rgba(4, 28, 50, 0.5) !important;
+    border: 1px solid rgba(15, 122, 200, 0.4) !important;
+  }
+  .el-descriptions .is-bordered .el-descriptions-item__cell {
+    border: 1px solid rgba(15, 122, 200, 0.4);
+  }
+  .el-descriptions-item__label.is-bordered-label {
+    font-weight: 700;
+    color: #ffffff;
+    background: rgba(4, 28, 50, 0.6);
+  }
+  .el-date-editor .el-range-input {
+    background-color: rgba(4, 28, 50, 0.5);
+  }
 }

+ 23 - 18
static/Config/config.js

@@ -1703,7 +1703,7 @@ window.billboardReviewList = [
         code: "00101",
         billboardType: "平行建筑主体户外广告",
         isAddModel: true,
-        ModelType: "bjModel",
+        ModelType: "ModelBillboard",
         ReviewItems: [
           {
             id: "4553",
@@ -1764,7 +1764,7 @@ window.billboardReviewList = [
             code: "0010201",
             billboardType: "底层以上没有出挑结构的建筑",
             isAddModel: true,
-            ModelType: "bjModel",
+            ModelType: "ModelBillboard",
             ReviewItems: [
               {
                 id: "4553",
@@ -1805,7 +1805,7 @@ window.billboardReviewList = [
                 code: "001020201",
                 billboardType: "附设于建筑一层门楣的广告",
                 isAddModel: true,
-                ModelType: "bjModel",
+                ModelType: "ModelBillboard",
                 ReviewItems: [
                   {
                     id: "4553",
@@ -1842,7 +1842,7 @@ window.billboardReviewList = [
                 code: "001020202",
                 billboardType: "设于建筑出挑部分的墙面上",
                 isAddModel: true,
-                ModelType: "bjModel",
+                ModelType: "ModelBillboard",
                 ReviewItems: [
                   {
                     id: "4553",
@@ -1894,7 +1894,7 @@ window.billboardReviewList = [
         code: "00103",
         billboardType: "围墙上设置的户外广告",
         isAddModel: true,
-        ModelType: "bjModel",
+        ModelType: "ModelBillboard",
         ReviewItems: [
           {
             id: "4534553",
@@ -1974,7 +1974,7 @@ window.billboardReviewList = [
           {
             id: "4534553",
             code: "0020102",
-            ReviewMethod: "动审查",
+            ReviewMethod: "动审查",
             ReviewContent: "距公交候车亭30米内不得设置其它落地式广告。",
           },
           {
@@ -2043,20 +2043,20 @@ window.billboardReviewList = [
                 code: "0020101",
                 ReviewMethod: "手动审查",
                 ReviewContent:
-                  "公交候车亭原则上只设一组广告牌,每组广告牌不超过3个,且总面积不应超过候车亭立面总面积的60%",
+                  "公共自行车亭原则上只设一组广告牌,每组广告牌不超过3个,且总面积不应超过候车亭立面总面积的60%",
               },
               {
                 id: "4534553",
                 code: "0020102",
-                ReviewMethod: "动审查",
-                ReviewContent: "距公交候车亭30米内不得设置其它落地式广告。",
+                ReviewMethod: "动审查",
+                ReviewContent: "距公共自行车亭30米内不得设置其它落地式广告。",
               },
               {
                 id: "453sd4553",
                 code: "0020103",
                 ReviewMethod: "自动审查",
                 ReviewContent:
-                  "出租车候车牌、公交指示牌牌面单边长度不得大于3.5米,高度不超过1.5米,厚度不得大于0.3米",
+                  "公共自行车亭牌面单边长度不得大于3.5米,高度不超过1.5米,厚度不得大于0.3米",
               },
               {
                 id: "453sd45xcv53",
@@ -2069,20 +2069,20 @@ window.billboardReviewList = [
                 id: "453sd4we553",
                 code: "0020105",
                 ReviewMethod: "手动审查",
-                ReviewContent: "公交候车亭顶部不得设置广告",
+                ReviewContent: "公共自行车亭顶部不得设置广告",
               },
               {
                 id: "4d4we553",
                 code: "0020106",
                 ReviewMethod: "手动审查",
-                ReviewContent: "公交候车亭户外广告不应超过候车亭本身尺寸",
+                ReviewContent: "公共自行车亭户外广告不应超过候车亭本身尺寸",
               },
               {
                 id: "4d4wesd553",
                 code: "0020107",
                 ReviewMethod: "手动审查",
                 ReviewContent:
-                  "公交候车亭户外广告应与公交候车亭建设相结合,统一规划,统一设计,广告应采用灯箱广告形式;同一区域应采用同一种规格的广告形式。",
+                  "公共自行车亭户外广告应与公共自行车亭建设相结合,统一规划,统一设计,广告应采用灯箱广告形式;同一区域应采用同一种规格的广告形式。",
               },
               {
                 id: "4d4wesdsd553",
@@ -3052,11 +3052,13 @@ window.billboardModelRuleList = [
     template: [
       {
         //模板名称
-        templateName: "矩形广告牌名称1",
+        templateName: "gltf模型",
         //缩略图
         thumbnailUrl: "../../../../static/ModelData/billboard/1.jpg",
+        //模板地址
+        templateTopUrl: "../../../../static/ModelData/billboard/box.gltf",
         //模板顶部类型
-        templateTopType: "box",
+        templateTopType: "ModelBillboard",
       },
     ],
   },
@@ -3827,9 +3829,12 @@ window.landUseNatureRelation = [
     ],
   },
 ];
+//2000
 window.earthRadius = 0.994615737 * 1.00061864634552;
-
-window.toLocalCoor = 1.00000209048259;
+//当地坐标
+window.LocalCoorearthRadius = 0.994615737 * 1.000006869218412;
+window.toLocalCoor = 1.000006869218412;
+// window.toLocalCoor = 1.00000209048259;
 window.to4525Coor = 1.00061864634552;
 
 //用于地下模式更改透明度
@@ -3842,5 +3847,5 @@ window.QXLayerNames = [
   "Road@BaoPo0621N",
   "DiXing@BaoPo0621N",
 ];
-window.Layeralpha = 0;
+window.Layeralpha = 0.4;
 window.isUseDB = true;

Some files were not shown because too many files changed in this diff