Detail.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. <template>
  2. <div class="xm-detal">
  3. <el-tabs type="border-card" v-model="currentTab" @tab-click="handleTabClick">
  4. <el-tab-pane label="项目信息" name="tab1">
  5. <div class="tables_grid">
  6. <div class="title">地块索引</div>
  7. <div class="content">
  8. <el-input
  9. v-model="detailData.gdsy"
  10. placeholder="请输入地块索引"
  11. clearable
  12. :disabled="!editor"
  13. />
  14. </div>
  15. <div class="title">项目名称</div>
  16. <div class="content">
  17. <el-input
  18. v-model="detailData.dkMc"
  19. placeholder="请输入项目名称"
  20. clearable
  21. :disabled="!editor"
  22. />
  23. </div>
  24. <div class="title">出让合同/划拨决定书编号</div>
  25. <div class="content">
  26. <el-input
  27. v-model="detailData.htydpzbh"
  28. placeholder="请输入出让合同/划拨决定书编号"
  29. clearable
  30. :disabled="!editor"
  31. />
  32. </div>
  33. <div class="title">项目类型</div>
  34. <div class="content">
  35. <el-select v-model="detailData.djklx">
  36. <el-option label="出让" value="出让"></el-option>
  37. <el-option label="划拨" value="划拨"></el-option>
  38. <el-option label="集体土地" value="集体土地"></el-option>
  39. </el-select>
  40. </div>
  41. <div class="title">批准文号</div>
  42. <div class="content">
  43. <el-input
  44. v-model="detailData.dkBh"
  45. placeholder="请输入批准文号"
  46. clearable
  47. :disabled="!editor"
  48. />
  49. </div>
  50. <div class="title">签订日期</div>
  51. <div class="content">
  52. <el-date-picker
  53. v-model="detailData.htsj"
  54. type="date"
  55. value-format="yyyy-MM-dd"
  56. placeholder="请选择签订日期"
  57. />
  58. </div>
  59. <div class="title">项目面积(公顷)</div>
  60. <div class="content">
  61. <el-input
  62. v-model="detailData.dkMj"
  63. placeholder="请输入项目面积(公顷)"
  64. clearable
  65. :disabled="!editor"
  66. />
  67. </div>
  68. <div class="title">用地单位</div>
  69. <div class="content">
  70. <el-input
  71. v-model="detailData.dwMc"
  72. placeholder="请输入用地单位"
  73. clearable
  74. :disabled="!editor"
  75. />
  76. </div>
  77. <div class="title">土地坐落</div>
  78. <div class="content">
  79. <el-input
  80. v-model="detailData.tdZl"
  81. placeholder="请输入土地坐落"
  82. clearable
  83. :disabled="!editor"
  84. />
  85. </div>
  86. <div class="title">土地用途</div>
  87. <div class="content">
  88. <el-input
  89. v-model="detailData.dkYt"
  90. placeholder="请输入土地用途"
  91. clearable
  92. :disabled="!editor"
  93. />
  94. </div>
  95. <div class="title">所属平台</div>
  96. <div class="content">
  97. <el-input
  98. v-model="detailData.pt"
  99. placeholder="请输入所属平台"
  100. clearable
  101. :disabled="true"
  102. />
  103. </div>
  104. <div class="title">容积率</div>
  105. <div class="content">
  106. <el-input
  107. v-model="detailData.rjl"
  108. placeholder="请输入容积率"
  109. clearable
  110. :disabled="!editor"
  111. />
  112. </div>
  113. <div class="title">出让金/划拨价款(万元)</div>
  114. <div class="content">
  115. <el-input
  116. v-model="detailData.crj"
  117. placeholder="请输入出让金/划拨价款(万元)"
  118. clearable
  119. :disabled="!editor"
  120. />
  121. </div>
  122. <div class="title">约定开工时间</div>
  123. <div class="content">
  124. <el-date-picker
  125. v-model="detailData.ydkgsj"
  126. type="date"
  127. value-format="yyyy-MM-dd"
  128. placeholder="请选择约定开工时间"
  129. />
  130. </div>
  131. <div class="title">约定竣工时间</div>
  132. <div class="content">
  133. <el-date-picker
  134. v-model="detailData.ydjgsj"
  135. type="date"
  136. value-format="yyyy-MM-dd"
  137. placeholder="请选择约定约定竣工时间"
  138. />
  139. </div>
  140. <div class="title">备注</div>
  141. <div class="content">
  142. <el-input
  143. v-model="detailData.bz"
  144. placeholder="请输入备注"
  145. clearable
  146. :disabled="!editor"
  147. />
  148. </div>
  149. </div>
  150. <div class="btn-group">
  151. <el-button type="primary" @click="onSavePcHandle">保存</el-button>
  152. </div>
  153. </el-tab-pane>
  154. <el-tab-pane label="查看地图" name="tab2">
  155. <div class="map_box">
  156. <base-map ref="baseMap" v-if="currentTab === 'tab2'" :overlayShow="true" @drawShapeJson="drawShapeJsonEvent" :visibleLayerIds="visibleLayerId"/>
  157. </div>
  158. </el-tab-pane>
  159. </el-tabs>
  160. </div>
  161. </template>
  162. <script>
  163. import BaseMap from "../../../components/common/BaseMap";
  164. export default {
  165. name: "Detail",
  166. components: { BaseMap },
  167. data() {
  168. return {
  169. user: JSON.parse(window.sessionStorage.getItem("yzt-user")),
  170. currentTab: 'tab1',
  171. visibleLayerId:['YHYZT_ST_GDDK_NEW'],
  172. detailData: {},
  173. editor: false
  174. };
  175. },
  176. props: {
  177. contentWidth: Number,
  178. contentHeight: Number,
  179. project: Object,
  180. },
  181. watch: {
  182. },
  183. methods: {
  184. initDetailData (row, isEditor = false) {
  185. this.currentTab = 'tab1'
  186. this.editor = isEditor
  187. this.detailData = row
  188. this.queryDetail(row['objectid'])
  189. },
  190. //查询报批项目信息
  191. queryDetail (id) {
  192. if(!id) return
  193. this.$ajax.get(`/api/stgddk/${id}`, null, this, true).then(res => {
  194. if (res) {
  195. this.detailData = res
  196. }
  197. })
  198. },
  199. onSavePcHandle () {
  200. const sendData = {
  201. ...this.detailData
  202. }
  203. delete sendData['shape']
  204. this.$ajax.postJson('/api/stgddk/update', sendData, this, true).then(res => {
  205. if (res.data) {
  206. this.$Message.success('更新成功!')
  207. this.$emit('init')
  208. }
  209. })
  210. },
  211. handleTabClick(tab) {
  212. if (tab.name === 'tab2') {
  213. // 切换到地图tab时,调用地块定位,使用objectid
  214. if (this.detailData && this.detailData.objectid) {
  215. this.locationDk(null, { objectid: this.detailData.objectid });
  216. }
  217. }
  218. },
  219. locationDk(index, row) {
  220. if (row.objectid) {
  221. this.detailShow = false;
  222. let arr = [`'${row.objectid}'`];
  223. this.$nextTick(()=>{
  224. this.$refs.baseMap.locationGlobal(this.visibleLayerId[0],`objectid in (${arr.join()})`);
  225. },500);
  226. }
  227. },
  228. drawShapeJsonEvent(json){
  229. if(json){
  230. this.drawShapeJson = json;
  231. this.getBpxmList();
  232. this.$message.success("绘制结束");
  233. }
  234. },
  235. }
  236. };
  237. </script>
  238. <style scoped lang="scss">
  239. .xm-detal {
  240. width: 100%;
  241. .map_box {
  242. width: 100%;
  243. height: 600px;
  244. }
  245. .btn-group {
  246. margin-top: 20px;
  247. text-align: right;
  248. }
  249. $t_w: 155px;
  250. .tables_grid {
  251. display: flex;
  252. flex-wrap: wrap;
  253. justify-content: space-between; /* 可选的对齐方式 */
  254. border-top: 1px solid #d6d6d6;
  255. border-right: 1px solid #d6d6d6;
  256. display: grid;
  257. grid-template-columns: repeat(4, $t_w 1fr);
  258. >div {
  259. border-left: 1px solid #d6d6d6;
  260. border-bottom: 1px solid #d6d6d6;
  261. padding: 8px 10px;
  262. display: inline-block;
  263. color: #1f2f47;
  264. &.title {
  265. width: $t_w;
  266. background: #f4f6f8;
  267. font-family: AlibabaPuHuiTiM;
  268. font-weight: normal;
  269. text-align: center;
  270. }
  271. }
  272. }
  273. }
  274. </style>