ZBFXAnalysisinfo.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. <template>
  2. <div
  3. class="ZTGlobal"
  4. style="width: 100%; padding: 1rem 1rem 0rem 1rem; color: white"
  5. >
  6. <el-row :gutter="10">
  7. <el-col :span="24">
  8. <el-row
  9. :gutter="10"
  10. v-for="DKZBDataList in MXDKZBDataList"
  11. :key="DKZBDataList"
  12. >
  13. <el-col :span="24">
  14. <el-row
  15. :gutter="10"
  16. v-for="DKZBData in DKZBDataList"
  17. :key="DKZBData"
  18. >
  19. <el-col :span="24">
  20. 规划地块:{{ DKZBData.DKBM }}({{ DKZBData.MName }})&nbsp;&nbsp;
  21. <el-button
  22. size="mini"
  23. type="default"
  24. @click="openZBinfo(DKZBData.infoData)"
  25. icon="el-icon-view "
  26. >详情</el-button
  27. >
  28. <el-table
  29. :data="DKZBData.TableData"
  30. :highlight-current-row="true"
  31. style="width: 100%"
  32. >
  33. <el-table-column label="指标" align="center">
  34. <template #default="{ row }">
  35. {{ row.zbmc }}
  36. </template>
  37. </el-table-column>
  38. <el-table-column label="计算书指标" align="center">
  39. <template #default="{ row }">
  40. {{ row.tjfazb }}
  41. </template>
  42. </el-table-column>
  43. <el-table-column label="自动核算指标" align="center">
  44. <template #default="{ row }">
  45. {{ row.fazbyg }}
  46. </template>
  47. </el-table-column>
  48. <el-table-column
  49. label="人工核算指标"
  50. align="center"
  51. width="130"
  52. >
  53. <template #default="{ row }">
  54. <el-input
  55. v-model="row.rghszb"
  56. size="small"
  57. @blur="handleSave(row, DKZBData.TableData)"
  58. ></el-input>
  59. </template>
  60. </el-table-column>
  61. <el-table-column label="控规要求" align="center">
  62. <template #default="{ row }">
  63. {{ row.kgyq }}
  64. </template>
  65. </el-table-column>
  66. <el-table-column label="结论" align="center">
  67. <template #default="{ row }">
  68. <div v-if="row.jl != null">
  69. {{ row.jl ? "合规" : "不合规" }}
  70. </div>
  71. </template>
  72. </el-table-column>
  73. </el-table>
  74. </el-col>
  75. </el-row>
  76. </el-col>
  77. </el-row>
  78. </el-col>
  79. </el-row>
  80. </div>
  81. </template>
  82. <script>
  83. import detailedInfo from "./detailedInfo.vue";
  84. import { v4 as uuidv4 } from "uuid";
  85. import {
  86. getZtProjectModelZb,
  87. addZtProjectModelZb,
  88. updateZtProjectModelZb,
  89. } from "@/api/zt/ztApi.js";
  90. export default {
  91. data() {
  92. return {
  93. //模型地块指标数组
  94. MXDKZBDataList: [],
  95. };
  96. },
  97. props: {
  98. info: {
  99. type: Object,
  100. default: () => {
  101. return {};
  102. },
  103. },
  104. layerid: {
  105. type: String,
  106. default: "",
  107. },
  108. lydata: {
  109. type: Object,
  110. default: () => {
  111. return {};
  112. },
  113. },
  114. lyoption: {
  115. type: Object,
  116. default: () => {
  117. return {};
  118. },
  119. },
  120. },
  121. computed: {},
  122. mounted() {
  123. this.init();
  124. },
  125. methods: {
  126. async init() {
  127. let that = this;
  128. that.MXDKZBDataList = [];
  129. debugger;
  130. for (let index = 0; index < this.info.tableDataList.length; index++) {
  131. const element = this.info.tableDataList[index];
  132. // this.info.tableDataList.forEach((element) => {
  133. let DKZBDataList = [];
  134. for (let Datai = 0; Datai < element.length; Datai++) {
  135. const Data = element[Datai];
  136. let DKZBData = {
  137. infoData: Data.infoData,
  138. MName: Data.Minfo.modelname,
  139. DKBM: Data.KG_Data.DKBM,
  140. };
  141. //人工核算指标
  142. let rgzbData =
  143. (await getZtProjectModelZb(Data.Minfo.id + "" + Data.KG_Data.DKBM))
  144. .data || {};
  145. let rgzbid = rgzbData.id
  146. ? rgzbData.id
  147. : Data.Minfo.id + "" + Data.KG_Data.DKBM;
  148. let rgzb = rgzbData.zbcs ? JSON.parse(rgzbData.zbcs) : {};
  149. let TableData = [];
  150. let YDMJrow = {};
  151. YDMJrow.zbmc = "用地总面积";
  152. YDMJrow.fazbyg = Number(Data.FA_Data.YDMJ).toFixed(2);
  153. YDMJrow.kgyq = Number(Data.KG_Data.YDMJ).toFixed(2);
  154. if (!rgzb.YDMJ) {
  155. rgzb.YDMJ = YDMJrow.fazbyg;
  156. YDMJrow.rghszb = YDMJrow.fazbyg;
  157. YDMJrow.rgzbid = rgzbid;
  158. YDMJrow.rgzbName = "YDMJ";
  159. } else {
  160. YDMJrow.rghszb = rgzb.YDMJ;
  161. YDMJrow.rgzbid = rgzbid;
  162. YDMJrow.rgzbName = "YDMJ";
  163. }
  164. if (YDMJrow.kgyq && YDMJrow.rghszb) {
  165. if (Number(YDMJrow.kgyq) >= Number(YDMJrow.rghszb)) {
  166. YDMJrow.jl = true;
  167. } else {
  168. YDMJrow.jl = false;
  169. }
  170. } else {
  171. YDMJrow.jl = null;
  172. }
  173. TableData.push(YDMJrow);
  174. let JZMJrow = {};
  175. JZMJrow.zbmc = "建筑面积";
  176. JZMJrow.tjfazb = Number(Data.TJFA_Data.JZMJ).toFixed(2);
  177. JZMJrow.fazbyg = Number(Data.FA_Data.JZMJ).toFixed(2);
  178. JZMJrow.kgyq = Number(Data.KG_Data.JZMJ).toFixed(2);
  179. if (!rgzb.JZMJ) {
  180. rgzb.JZMJ = JZMJrow.fazbyg;
  181. JZMJrow.rghszb = JZMJrow.fazbyg;
  182. JZMJrow.rgzbid = rgzbid;
  183. JZMJrow.rgzbName = "JZMJ";
  184. } else {
  185. JZMJrow.rghszb = rgzb.JZMJ;
  186. JZMJrow.rgzbid = rgzbid;
  187. JZMJrow.rgzbName = "JZMJ";
  188. }
  189. if (JZMJrow.kgyq && JZMJrow.rghszb) {
  190. if (Number(JZMJrow.kgyq) >= Number(JZMJrow.rghszb)) {
  191. JZMJrow.jl = true;
  192. } else {
  193. JZMJrow.jl = false;
  194. }
  195. } else {
  196. JZMJrow.jl = null;
  197. }
  198. TableData.push(JZMJrow);
  199. let JDMJrow = {};
  200. JDMJrow.zbmc = "基底面积";
  201. JDMJrow.fazbyg = Number(Data.FA_Data.JDMJ).toFixed(2);
  202. JDMJrow.kgyq = Data.KG_Data.JDMJ;
  203. if (!rgzb.JDMJ) {
  204. rgzb.JDMJ = JDMJrow.fazbyg;
  205. JDMJrow.rghszb = JDMJrow.fazbyg;
  206. JDMJrow.rgzbid = rgzbid;
  207. JDMJrow.rgzbName = "JDMJ";
  208. } else {
  209. JDMJrow.rghszb = rgzb.JDMJ;
  210. JDMJrow.rgzbid = rgzbid;
  211. JDMJrow.rgzbName = "JDMJ";
  212. }
  213. if (JDMJrow.rghszb && JDMJrow.kgyq) {
  214. if (Number(JDMJrow.kgyq) >= Number(JDMJrow.rghszb)) {
  215. JDMJrow.jl = true;
  216. } else {
  217. JDMJrow.jl = false;
  218. }
  219. } else {
  220. JDMJrow.jl = null;
  221. }
  222. TableData.push(JDMJrow);
  223. let JRJZMJrow = {};
  224. JRJZMJrow.zbmc = "计容建筑面积";
  225. JRJZMJrow.tjfazb = Number(Data.TJFA_Data.JRJZMJ).toFixed(2);
  226. JRJZMJrow.fazbyg = Number(Data.FA_Data.JRJZMJ).toFixed(2);
  227. debugger;
  228. if (Data.KG_Data.JRJZMJX && Data.KG_Data.JRJZMJD) {
  229. JRJZMJrow.kgyq = Data.KG_Data.JRJZMJX + "/" + Data.KG_Data.JRJZMJD;
  230. } else {
  231. JRJZMJrow.kgyq = "";
  232. }
  233. if (!rgzb.JRJZMJ) {
  234. rgzb.JRJZMJ = JRJZMJrow.fazbyg;
  235. JRJZMJrow.rghszb = JRJZMJrow.fazbyg;
  236. JRJZMJrow.rgzbid = rgzbid;
  237. JRJZMJrow.rgzbName = "JRJZMJ";
  238. } else {
  239. JRJZMJrow.rghszb = rgzb.JRJZMJ;
  240. JRJZMJrow.rgzbid = rgzbid;
  241. JRJZMJrow.rgzbName = "JRJZMJ";
  242. }
  243. if (JRJZMJrow.rghszb && JRJZMJrow.kgyq) {
  244. if (
  245. Number(JRJZMJrow.rghszb) >= Number(Data.KG_Data.JRJZMJX) &&
  246. Number(JRJZMJrow.rghszb) <= Number(Data.KG_Data.JRJZMJD)
  247. ) {
  248. JRJZMJrow.jl = true;
  249. } else {
  250. JRJZMJrow.jl = false;
  251. }
  252. } else {
  253. JRJZMJrow.jl = null;
  254. }
  255. TableData.push(JRJZMJrow);
  256. let RJLrow = {};
  257. RJLrow.zbmc = "容积率";
  258. RJLrow.fazbyg = Data.FA_Data.RJL;
  259. RJLrow.kgyq = Data.KG_Data.RJLX + "/" + Data.KG_Data.RJLD;
  260. if (!rgzb.RJL) {
  261. rgzb.RJL = RJLrow.fazbyg;
  262. RJLrow.rghszb = RJLrow.fazbyg;
  263. RJLrow.rgzbid = rgzbid;
  264. RJLrow.rgzbName = "RJL";
  265. } else {
  266. RJLrow.rghszb = rgzb.RJL;
  267. RJLrow.rgzbid = rgzbid;
  268. RJLrow.rgzbName = "RJL";
  269. }
  270. if (RJLrow.rghszb && RJLrow.kgyq) {
  271. if (
  272. Number(RJLrow.rghszb) >= Number(Data.KG_Data.RJLX) &&
  273. Number(RJLrow.rghszb) <= Number(Data.KG_Data.RJLD)
  274. ) {
  275. RJLrow.jl = true;
  276. } else {
  277. RJLrow.jl = false;
  278. }
  279. }
  280. TableData.push(RJLrow);
  281. let JZMDrow = {};
  282. JZMDrow.zbmc = "建筑密度";
  283. JZMDrow.fazbyg = Data.FA_Data.JZMD;
  284. JZMDrow.kgyq = Data.KG_Data.JZMDX + "/" + Data.KG_Data.JZMDD;
  285. if (!rgzb.JZMD) {
  286. rgzb.JZMD = JZMDrow.fazbyg;
  287. JZMDrow.rghszb = JZMDrow.fazbyg;
  288. JZMDrow.rgzbid = rgzbid;
  289. JZMDrow.rgzbName = "JZMD";
  290. } else {
  291. JZMDrow.rghszb = rgzb.JZMD;
  292. JZMDrow.rgzbid = rgzbid;
  293. JZMDrow.rgzbName = "JZMD";
  294. }
  295. if (JZMDrow.rghszb && JZMDrow.kgyq) {
  296. if (
  297. Number(JZMDrow.rghszb) >= Number(Data.KG_Data.JZMDX) &&
  298. Number(JZMDrow.rghszb) <= Number(Data.KG_Data.JZMDD)
  299. ) {
  300. JZMDrow.jl = true;
  301. } else {
  302. JZMDrow.jl = false;
  303. }
  304. } else {
  305. JZMDrow.jl = null;
  306. }
  307. TableData.push(JZMDrow);
  308. let JZXGDrow = {};
  309. JZXGDrow.zbmc = "建筑限高";
  310. JZXGDrow.fazbyg = Data.FA_Data.JZGD;
  311. JZXGDrow.kgyq = Data.KG_Data.JZXGX + "/" + Data.KG_Data.JZXGD;
  312. if (!rgzb.JZGD) {
  313. rgzb.JZGD = JZXGDrow.fazbyg;
  314. JZXGDrow.rghszb = JZXGDrow.fazbyg;
  315. JZXGDrow.rgzbid = rgzbid;
  316. JZXGDrow.rgzbName = "JZGD";
  317. } else {
  318. JZXGDrow.rghszb = rgzb.JZGD;
  319. JZXGDrow.rgzbid = rgzbid;
  320. JZXGDrow.rgzbName = "JZGD";
  321. }
  322. if (JZXGDrow.rghszb && JZXGDrow.kgyq) {
  323. if (
  324. Number(JZXGDrow.rghszb) >= Number(Data.KG_Data.JZXGX) &&
  325. Number(JZXGDrow.rghszb) <= Number(Data.KG_Data.JZXGD)
  326. ) {
  327. JZXGDrow.jl = true;
  328. } else {
  329. JZXGDrow.jl = false;
  330. }
  331. } else {
  332. JZXGDrow.jl = null;
  333. }
  334. if (!rgzbData.id) {
  335. rgzbData.id = rgzbid;
  336. rgzbData.zbcs = JSON.stringify(rgzb);
  337. //这里替换为后台添加表,现在纯前台,自动更新更新
  338. // window.project_model_zb.push(rgzb);
  339. await addZtProjectModelZb(rgzbData);
  340. }
  341. // else {
  342. // //这里添加后台修改表,现在纯前台,自动更新更新
  343. // }
  344. TableData.push(JZXGDrow);
  345. DKZBData.TableData = TableData;
  346. DKZBDataList.push(DKZBData);
  347. }
  348. that.MXDKZBDataList.push(DKZBDataList);
  349. // });
  350. }
  351. },
  352. async handleSave(row, TableData) {
  353. debugger;
  354. let rgzb = {};
  355. TableData.forEach((data) => {
  356. rgzb[data.rgzbName] = data.rghszb;
  357. });
  358. await updateZtProjectModelZb({
  359. id: row.rgzbid,
  360. zbcs: JSON.stringify(rgzb),
  361. });
  362. this.init();
  363. // let rgzb = window.project_model_zb.find((c) => c.id == row.id);
  364. // if (rgzb) {
  365. // rgzb[row.rgzbName] = row.rghszb;
  366. // this.init();
  367. // }
  368. },
  369. /**
  370. * 弹窗显示详情
  371. * @param infoData
  372. */
  373. openZBinfo(infoData) {
  374. let w = document.body.offsetWidth;
  375. let h = document.body.offsetHeight;
  376. //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
  377. //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
  378. let left = w - 430 + 430 / 2;
  379. let top = 430 / 2 + 60;
  380. this.$layer.iframe({
  381. id: "ZBdetailedInfo",
  382. content: {
  383. content: detailedInfo, //传递的组件对象
  384. parent: this, //当前的vue对象
  385. data: { info: { infoData } }, //props
  386. },
  387. // offset: [left, top], //left top
  388. area: ["64rem", "40rem"], //宽 高
  389. title: "详细信息",
  390. maxmin: false,
  391. shade: false, //是否显示遮罩
  392. shadeClose: false, //点击遮罩是否关闭
  393. cancel: () => {
  394. //关闭事件
  395. },
  396. });
  397. },
  398. },
  399. beforeDestroy() {},
  400. };
  401. </script>
  402. <style lang="scss">
  403. @import "@/../../zt.scss";
  404. </style>
  405. <style lang="scss" scoped>
  406. .el-card {
  407. border: 0px solid #02a7f0;
  408. }
  409. .el-form-item {
  410. margin-bottom: 0;
  411. }
  412. </style>