fzxz.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591
  1. <template>
  2. <div class="hgxsc">
  3. <el-form
  4. :model="ruleForm"
  5. ref="ruleForm"
  6. label-width="100px"
  7. :rules="rules"
  8. >
  9. <!-- <div class="block-title">基本信息</div> -->
  10. <el-form-item label="选址范围:" prop="xzmj">
  11. <range type="hgxfx" :keys="['hx', 'sc']" class="range" ref="range" />
  12. </el-form-item>
  13. <el-form-item label="项目名称:" prop="xmmc">
  14. <el-input
  15. v-model="ruleForm.xmmc"
  16. size="mini"
  17. placeholder="请输入项目名称"
  18. ></el-input>
  19. </el-form-item>
  20. <el-form-item label="项目类型:" prop="xmlx">
  21. <el-input
  22. v-model="ruleForm.xmlx"
  23. size="mini"
  24. placeholder="请输入项目类型"
  25. ></el-input>
  26. </el-form-item>
  27. <el-form-item label="建设单位:" prop="jsdw">
  28. <el-input
  29. v-model="ruleForm.jsdw"
  30. size="mini"
  31. placeholder="请输入建设单位"
  32. ></el-input>
  33. </el-form-item>
  34. <el-form-item label="数据源:" prop="sjy">
  35. <el-select
  36. v-model="ruleForm.sjy"
  37. placeholder="请选择数据源"
  38. size="mini"
  39. :popper-append-to-body="false"
  40. @change="handleChange2"
  41. >
  42. <el-option
  43. v-for="item in options"
  44. :key="item.bsm"
  45. :label="item.sjymc"
  46. :value="item.bsm"
  47. >
  48. </el-option>
  49. </el-select>
  50. </el-form-item>
  51. <el-form-item label="用地类型:" prop="ydlx">
  52. <el-cascader
  53. ref="Cascader"
  54. v-model="ruleForm.ydlx"
  55. :options="cascaderOptions"
  56. :props="{ expandTrigger: 'hover', checkStrictly: true }"
  57. @change="handleChange"
  58. :show-all-levels="false"
  59. size="mini"
  60. ></el-cascader>
  61. </el-form-item>
  62. <el-form-item label="用地面积" required>
  63. <el-col :span="11">
  64. <el-form-item prop="ydmjbegin">
  65. <el-input
  66. Onkeyup="this.value=this.value.replace(/[^\d^\.]+/g,'').replace(/^0+(\d)/,'$1').replace(/^\./,'0.').match(/\d+.?\d{0,2}/);this.dispatchEvent(new Event('input'))"
  67. v-model="ruleForm.ydmjbegin"
  68. size="mini"
  69. ></el-input>
  70. </el-form-item>
  71. </el-col>
  72. <el-col class="line" :span="2">-</el-col>
  73. <el-col :span="11">
  74. <el-form-item prop="ydmjend">
  75. <el-input
  76. Onkeyup="this.value=this.value.replace(/[^\d^\.]+/g,'').replace(/^0+(\d)/,'$1').replace(/^\./,'0.').match(/\d+.?\d{0,2}/);this.dispatchEvent(new Event('input'))"
  77. v-model="ruleForm.ydmjend"
  78. size="mini"
  79. ></el-input>
  80. </el-form-item>
  81. </el-col>
  82. </el-form-item>
  83. </el-form>
  84. <div class="site-title">
  85. <div class="siteCon">
  86. <div class="site_Icon"></div>
  87. <span>影响因子</span>
  88. </div>
  89. <el-button size="mini" @click="yzpz">配置</el-button>
  90. </div>
  91. <div class="treeDiv">
  92. <el-table :data="tableData" style="width: 100%">
  93. <el-table-column prop="yxyzmc" label="因子名称" show-overflow-tooltip>
  94. </el-table-column>
  95. <el-table-column label="条件" show-overflow-tooltip>
  96. <template slot-scope="scope">
  97. <span>{{ yztj(scope.row.spatial_type) }}</span>
  98. </template>
  99. </el-table-column>
  100. <el-table-column prop="yxz" label="值" show-overflow-tooltip>
  101. </el-table-column>
  102. </el-table>
  103. </div>
  104. <div class="bottomBtns">
  105. <span class="clearBtn" @click="reset">取消</span>
  106. <span class="sureBtn" @click="submitData">确定</span>
  107. </div>
  108. <yxyzPop :tableData="tableData" ref="yxyzPop"></yxyzPop>
  109. </div>
  110. </template>
  111. <script>
  112. import yxyzPop from "./yxyzPop.vue"; ///mapview/range
  113. import range from "@/components/mapview/range.vue"; ///mapview/range
  114. import { GetDldmTree, GetSjyList, AddFzxz } from "../../../api/ghss/ghxz.js";
  115. import hgxfx from "../../../../static/data/ghss/data.js";
  116. export default {
  117. components: {
  118. yxyzPop,
  119. range,
  120. },
  121. props: {
  122. activeTabs: {
  123. type: String,
  124. },
  125. loading: {
  126. type: Boolean,
  127. },
  128. },
  129. data() {
  130. return {
  131. ruleForm: {
  132. xzmj: 0,
  133. xmmc: "",
  134. jsdw: "",
  135. xmlx: "",
  136. ydlx: "",
  137. ydmjbegin: "", //用地面积开始
  138. ydmjend: "", //用地面积结束
  139. sjy: "", //数据源
  140. },
  141. rules: {
  142. xzmj: [{ required: true, message: "请填写范围的数据" }],
  143. // xzmj: [{ required: true, message: "请绘制选址范围" }],
  144. xmmc: [
  145. { required: true, message: "请输入项目名称", trigger: "blur" },
  146. { min: 3, max: 10, message: "长度在 3 到 5 个字符", trigger: "blur" },
  147. ],
  148. jsdw: [{ required: true, message: "请输入建设单位", trigger: "blur" }],
  149. xmlx: [{ required: true, message: "请输入项目类型", trigger: "blur" }],
  150. ydlx: [{ required: true, message: "请输入用地类型", trigger: "blur" }],
  151. ydmjbegin: [
  152. { required: true, message: "请输入用地面积", trigger: "blur" },
  153. ],
  154. ydmjend: [
  155. { required: true, message: "请输入用地面积", trigger: "blur" },
  156. ],
  157. sjy: [{ required: true, message: "请选择数据源", trigger: "change" }],
  158. },
  159. options: [],
  160. tableData: [],
  161. dialogVisible: false, //选址影响因子的弹窗显隐
  162. value: [],
  163. kxyzList: [
  164. {
  165. bsm: "BWG",
  166. yxyzmc: "博物馆",
  167. level: 1,
  168. parent_bsm: "GGFWSS",
  169. has_yxz: true,
  170. spatial_type: "identity",
  171. },
  172. {
  173. bsm: "CZKFBJ",
  174. yxyzmc: "城镇开发边界",
  175. level: 1,
  176. parent_bsm: "DXGK",
  177. has_yxz: false,
  178. spatial_type: "contain",
  179. },
  180. {
  181. bsm: "DL",
  182. yxyzmc: "电力",
  183. level: 2,
  184. parent_bsm: "GX",
  185. has_yxz: true,
  186. spatial_type: "identity",
  187. },
  188. {
  189. bsm: "DX",
  190. yxyzmc: "电信",
  191. level: 2,
  192. parent_bsm: "GX",
  193. has_yxz: true,
  194. spatial_type: "identity",
  195. },
  196. {
  197. bsm: "DXGK",
  198. yxyzmc: "底线管控",
  199. level: 0,
  200. parent_bsm: null,
  201. has_yxz: null,
  202. spatial_type: null,
  203. },
  204. {
  205. bsm: "GGFWSS",
  206. yxyzmc: "公共服务设施",
  207. level: 0,
  208. parent_bsm: null,
  209. has_yxz: null,
  210. spatial_type: null,
  211. },
  212. {
  213. bsm: "GL",
  214. yxyzmc: "公路",
  215. level: 2,
  216. parent_bsm: "JT",
  217. has_yxz: true,
  218. spatial_type: "identity",
  219. },
  220. {
  221. bsm: "GS",
  222. yxyzmc: "供水",
  223. level: 2,
  224. parent_bsm: "GX",
  225. has_yxz: true,
  226. spatial_type: "identity",
  227. },
  228. {
  229. bsm: "GX",
  230. yxyzmc: "管线",
  231. level: 1,
  232. parent_bsm: "SZSS",
  233. has_yxz: null,
  234. spatial_type: null,
  235. },
  236. {
  237. bsm: "GY",
  238. yxyzmc: "公园",
  239. level: 1,
  240. parent_bsm: "GGFWSS",
  241. has_yxz: true,
  242. spatial_type: "identity",
  243. },
  244. {
  245. bsm: "JT",
  246. yxyzmc: "交通",
  247. level: 1,
  248. parent_bsm: "SZSS",
  249. has_yxz: null,
  250. spatial_type: null,
  251. },
  252. {
  253. bsm: "JYZ",
  254. yxyzmc: "加油站",
  255. level: 2,
  256. parent_bsm: "JT",
  257. has_yxz: true,
  258. spatial_type: "identity",
  259. },
  260. {
  261. bsm: "LD",
  262. yxyzmc: "绿地",
  263. level: 1,
  264. parent_bsm: "GGFWSS",
  265. has_yxz: true,
  266. spatial_type: "identity",
  267. },
  268. {
  269. bsm: "LJCLSS",
  270. yxyzmc: "垃圾处理设施",
  271. level: 2,
  272. parent_bsm: "QT",
  273. has_yxz: true,
  274. spatial_type: "identity",
  275. },
  276. {
  277. bsm: "PS",
  278. yxyzmc: "排水",
  279. level: 2,
  280. parent_bsm: "GX",
  281. has_yxz: true,
  282. spatial_type: "identity",
  283. },
  284. {
  285. bsm: "QT",
  286. yxyzmc: "其他",
  287. level: 1,
  288. parent_bsm: "SZSS",
  289. has_yxz: null,
  290. spatial_type: null,
  291. },
  292. {
  293. bsm: "RQ",
  294. yxyzmc: "燃气",
  295. level: 2,
  296. parent_bsm: "GX",
  297. has_yxz: true,
  298. spatial_type: "identity",
  299. },
  300. {
  301. bsm: "STBHHX",
  302. yxyzmc: "生态保护红线",
  303. level: 1,
  304. parent_bsm: "DXGK",
  305. has_yxz: false,
  306. spatial_type: "contain",
  307. },
  308. {
  309. bsm: "SY",
  310. yxyzmc: "输油",
  311. level: 2,
  312. parent_bsm: "GX",
  313. has_yxz: true,
  314. spatial_type: "identity",
  315. },
  316. {
  317. bsm: "SZSS",
  318. yxyzmc: "市政设施",
  319. level: 0,
  320. parent_bsm: null,
  321. has_yxz: null,
  322. spatial_type: null,
  323. },
  324. {
  325. bsm: "TCC",
  326. yxyzmc: "停车场",
  327. level: 2,
  328. parent_bsm: "JT",
  329. has_yxz: true,
  330. spatial_type: "identity",
  331. },
  332. {
  333. bsm: "TL",
  334. yxyzmc: "铁路",
  335. level: 2,
  336. parent_bsm: "JT",
  337. has_yxz: true,
  338. spatial_type: "identity",
  339. },
  340. {
  341. bsm: "TSG",
  342. yxyzmc: "图书馆",
  343. level: 1,
  344. parent_bsm: "GGFWSS",
  345. has_yxz: true,
  346. spatial_type: "identity",
  347. },
  348. {
  349. bsm: "TYG",
  350. yxyzmc: "体育馆",
  351. level: 1,
  352. parent_bsm: "GGFWSS",
  353. has_yxz: true,
  354. spatial_type: "identity",
  355. },
  356. {
  357. bsm: "WSCLC",
  358. yxyzmc: "污水处理厂",
  359. level: 2,
  360. parent_bsm: "QT",
  361. has_yxz: true,
  362. spatial_type: "identity",
  363. },
  364. {
  365. bsm: "XX",
  366. yxyzmc: "学校",
  367. level: 1,
  368. parent_bsm: "GGFWSS",
  369. has_yxz: true,
  370. spatial_type: "identity",
  371. },
  372. {
  373. bsm: "YJJBNT",
  374. yxyzmc: "永久基本农田",
  375. level: 1,
  376. parent_bsm: "DXGK",
  377. has_yxz: false,
  378. spatial_type: "identity",
  379. },
  380. {
  381. bsm: "YY",
  382. yxyzmc: "医院",
  383. level: 1,
  384. parent_bsm: "GGFWSS",
  385. has_yxz: true,
  386. spatial_type: "identity",
  387. },
  388. {
  389. bsm: "ZRWHBHQ",
  390. yxyzmc: "自然文化保护区",
  391. level: 1,
  392. parent_bsm: "DXGK",
  393. has_yxz: false,
  394. spatial_type: "identity",
  395. },
  396. {
  397. bsm: "ZYCRK",
  398. yxyzmc: "主要出入口",
  399. level: 2,
  400. parent_bsm: "JT",
  401. has_yxz: true,
  402. spatial_type: "identity",
  403. },
  404. ],
  405. cascaderOptions: [], //用地性质数据存储数组
  406. sjyBSM: "",
  407. ydlxBSM: "",
  408. };
  409. },
  410. computed: {},
  411. mounted() {
  412. GetDldmTree({
  413. fzbs: "3DDLDM",
  414. }).then((res) => {
  415. //顶级树只有一个
  416. let childArr = res.data;
  417. childArr.forEach((item) => {
  418. let child = item.children;
  419. if (item.children.length < 1) {
  420. item.children = undefined;
  421. } else {
  422. for (var i = 0; i < child.length; i++) {
  423. if (child[i].children.length < 1) {
  424. //判断children的数组长度
  425. child[i].children = undefined;
  426. }
  427. }
  428. }
  429. });
  430. this.cascaderOptions = childArr; //为Cascader的options值
  431. });
  432. // 获取选址数据源
  433. GetSjyList().then((res) => {
  434. this.options = res.data;
  435. this.ruleForm.sjy = res.data[0].sjymc;
  436. this.sjyBSM = res.data[0].value;
  437. });
  438. },
  439. methods: {
  440. handleChange(value) {
  441. console.log(value);
  442. const obj = this.$refs["Cascader"].getCheckedNodes();
  443. this.ydlxBSM = obj[0].value;
  444. },
  445. handleChange2(value) {
  446. console.log(value);
  447. // const obj = this.$refs['Cascader'].getCheckedNodes()
  448. this.sjyBSM = value;
  449. },
  450. submitData() {
  451. //更新范围
  452. var _temp = this.$refs.range.getRange();
  453. // this.ruleForm.xzfw = _temp.xzfw;
  454. this.ruleForm.xzmj = _temp.xzmj || hgxfx.xzmj;
  455. this.$refs.ruleForm.validate((valid) => {
  456. if (valid) {
  457. let obj = {
  458. xzmj: Number(this.ruleForm.xzmj),
  459. xmmc: this.ruleForm.xmmc,
  460. xmlx: this.ruleForm.xmlx,
  461. jsdw: this.ruleForm.jsdw,
  462. ydxz_bsm: this.ydlxBSM, //用地性质标识码
  463. // ydlx: this.ruleForm.ydlx,
  464. ydmjbegin: Number(this.ruleForm.ydmjbegin), //用地面积开始
  465. ydmjend: Number(this.ruleForm.ydmjend), //用地面积结束
  466. sjy: this.sjyBSM, //数据源标识码
  467. geomId: this.$refs.range.fileDataID,
  468. yxyz: this.tableData,
  469. };
  470. console.log(obj, "objobj");
  471. AddFzxz(obj).then((res) => {
  472. console.log(res, "哈哈哈哈哈");
  473. if (res.success) {
  474. // this.bus.$emit("recordBsm", res.data.rwbsm);
  475. const loading = this.$loading({
  476. lock: true,
  477. text: "分析中",
  478. spinner: "el-icon-loading",
  479. background: "rgba(0, 0, 0, 0.7)",
  480. });
  481. setTimeout(() => {
  482. loading.close();
  483. this.activeTabs = "lsju";
  484. this.$emit("updateParent", "activeTabs", "lsju");
  485. this.$message({
  486. message: "分析成功!",
  487. type: "success",
  488. });
  489. this.reset();
  490. }, 2000);
  491. }
  492. });
  493. // const loading = this.$loading({
  494. // lock: true,
  495. // text: "分析中",
  496. // spinner: "el-icon-loading",
  497. // background: "rgba(0, 0, 0, 0.7)",
  498. // });
  499. // setTimeout(() => {
  500. // loading.close();
  501. // this.activeTabs = "lsju";
  502. // this.$emit("updateParent", "activeTabs", "lsju");
  503. // this.$message({
  504. // message: "分析成功!",
  505. // type: "success",
  506. // });
  507. // this.reset();
  508. // }, 2000);
  509. } else {
  510. console.log("error submit!!");
  511. return false;
  512. }
  513. });
  514. },
  515. reset() {
  516. (this.ruleForm = {
  517. xmmc: "",
  518. jsdw: "",
  519. xmlx: "",
  520. ydlx: "",
  521. ydmjbegin: "", //用地面积开始
  522. ydmjend: "", //用地面积结束
  523. sjy: "国土空间总体规划", //数据源
  524. xzmj: 0,
  525. }),
  526. (this.tableData = []);
  527. this.$refs.ruleForm.resetFields();
  528. this.$refs.range.reset();
  529. },
  530. // 影响因子条件展示
  531. yztj(val) {
  532. if (val == "identity") {
  533. return "范围内";
  534. } else if (val == "n_identity") {
  535. return "范围外";
  536. } else if (val == "contain") {
  537. return "距离包含";
  538. } else if (val == "n_contain") {
  539. return "距离不包含";
  540. }
  541. },
  542. yzpz() {
  543. this.$refs.yxyzPop.dialogVisible = true;
  544. },
  545. },
  546. };
  547. </script>
  548. <style lang="scss" scoped>
  549. .hgxsc {
  550. height: 100%;
  551. line-height: 40px;
  552. .rangDiv {
  553. width: 100%;
  554. // height: 100px;
  555. display: flex;
  556. justify-content: space-between;
  557. }
  558. .range {
  559. // flex: 1;
  560. // width: calc(100% - 100px);
  561. // position: absolute;
  562. // left: 100px;
  563. flex: 1;
  564. width: 100%;
  565. }
  566. .treeDiv {
  567. width: 100%;
  568. height: calc(100% - 400px);
  569. // padding: 7px;
  570. margin-bottom: 10px;
  571. overflow-y: auto;
  572. }
  573. }
  574. /deep/ .el-input .el-input--mini .el-input--suffix {
  575. width: 100%;
  576. }
  577. /deep/ .el-select {
  578. width: 100%;
  579. }
  580. /deep/ .el-form-item__error {
  581. top: 32px !important;
  582. }
  583. </style>