Detail.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  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">
  6. <div class="title">项目索引</div>
  7. <div class="content">
  8. <el-input
  9. v-model="detailData.xmbh"
  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.xmmc"
  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.pzwh"
  28. placeholder="请输入批复文号"
  29. clearable
  30. :disabled="!editor"
  31. />
  32. </div>
  33. <div class="title">用地单位</div>
  34. <div class="content">
  35. <el-input
  36. v-model="detailData.yddw"
  37. placeholder="请输入用地单位"
  38. clearable
  39. :disabled="!editor"
  40. />
  41. </div>
  42. <div class="title">批准面积</div>
  43. <div class="content">
  44. <el-input
  45. v-model="detailData.pzmj"
  46. placeholder="请输入批准面积"
  47. clearable
  48. :disabled="!editor"
  49. />
  50. </div>
  51. <div class="title">批准单位</div>
  52. <div class="content">
  53. <el-input
  54. v-model="detailData.pzdw"
  55. placeholder="请输入批准单位"
  56. clearable
  57. :disabled="!editor"
  58. />
  59. </div>
  60. <div class="title">坐落位置</div>
  61. <div class="content">
  62. <el-input
  63. v-model="detailData.zlwz"
  64. placeholder="请输入坐落位置"
  65. clearable
  66. :disabled="!editor"
  67. />
  68. </div>
  69. <div class="title">入库年份</div>
  70. <div class="content">
  71. <el-input
  72. v-model="detailData.rknf"
  73. placeholder="请输入入库年份"
  74. clearable
  75. :disabled="!editor"
  76. />
  77. </div>
  78. <div class="title">批准时间</div>
  79. <div class="content">
  80. <el-date-picker
  81. v-model="detailData.pzsj"
  82. type="date"
  83. value-format="yyyy-MM-dd"
  84. placeholder="请选择批准时间"
  85. />
  86. </div>
  87. <div class="title">到期时间</div>
  88. <div class="content">
  89. <el-date-picker
  90. v-model="detailData.dqsj"
  91. type="date"
  92. value-format="yyyy-MM-dd"
  93. placeholder="请选择到期时间"
  94. />
  95. </div>
  96. <div class="title">入库时间</div>
  97. <div class="content">
  98. <el-date-picker
  99. v-model="detailData.rksj"
  100. type="date"
  101. value-format="yyyy-MM-dd"
  102. placeholder="请输入入库时间"
  103. />
  104. </div>
  105. <div class="title">入库人员</div>
  106. <div class="content">
  107. <el-input
  108. v-model="detailData.rkry"
  109. placeholder="请输入入库人员"
  110. clearable
  111. :disabled="!editor"
  112. />
  113. </div>
  114. <div class="title">备注</div>
  115. <div class="content" style="grid-column: 2 / -1;">
  116. <el-input
  117. v-model="detailData.bz"
  118. placeholder="请输入备注"
  119. clearable
  120. :disabled="!editor"
  121. />
  122. </div>
  123. </div>
  124. <div class="btn-group">
  125. <el-button type="primary" @click="onSavePcHandle">保存</el-button>
  126. </div>
  127. </el-tab-pane>
  128. <el-tab-pane label="查看地图" name="tab2">
  129. <div class="map_box">
  130. <base-map ref="baseMap" v-if="currentTab === 'tab2'" :enableLocation="false" :overlayShow="true" @drawShapeJson="drawShapeJsonEvent" :visibleLayerIds="visibleLayerId"/>
  131. </div>
  132. </el-tab-pane>
  133. </el-tabs>
  134. </div>
  135. </template>
  136. <script>
  137. import BaseMap from "../../../components/common/BaseMap";
  138. export default {
  139. name: "Detail",
  140. components: { BaseMap },
  141. data() {
  142. return {
  143. user: JSON.parse(window.sessionStorage.getItem("yzt-user")),
  144. currentTab: 'tab1',
  145. visibleLayerId:['YHYZT_LSYD'],
  146. detailData: {},
  147. editor: false
  148. };
  149. },
  150. props: {
  151. contentWidth: Number,
  152. contentHeight: Number,
  153. },
  154. methods: {
  155. initDetailData (row, isEditor = false) {
  156. this.currentTab = 'tab1'
  157. this.editor = isEditor
  158. this.queryDetail(row['objectid'])
  159. },
  160. //查询报批项目信息
  161. queryDetail (id) {
  162. if(!id) return
  163. this.$ajax.get(`/api/templand/${id}`, null, this, true).then(res => {
  164. if (res) {
  165. this.detailData = res
  166. }
  167. })
  168. },
  169. onSavePcHandle () {
  170. const sendData = {
  171. ...this.detailData
  172. }
  173. delete sendData['shape']
  174. this.$ajax.postJson('/api/templand/update', sendData, this, true).then(res => {
  175. if (res.data) {
  176. this.$Message.success('更新成功!')
  177. this.$emit('init')
  178. }
  179. })
  180. },
  181. handleTabClick(tab) {
  182. if (tab.name === 'tab2') {
  183. // 切换到地图tab时,调用地块定位,使用objectid
  184. if (this.detailData && this.detailData.objectid) {
  185. this.locationDk(null, { objectid: this.detailData.objectid });
  186. }
  187. }
  188. },
  189. locationDk(index, row) {
  190. if (row.objectid) {
  191. this.detailShow = false;
  192. let arr = [`'${row.objectid}'`];
  193. this.$nextTick(()=>{
  194. this.$refs.baseMap.locationGlobal(this.visibleLayerId[0],`objectid in (${arr.join()})`);
  195. },500);
  196. }
  197. },
  198. drawShapeJsonEvent(json){
  199. if(json){
  200. this.drawShapeJson = json;
  201. this.getBpxmList();
  202. this.$message.success("绘制结束");
  203. }
  204. },
  205. }
  206. };
  207. </script>
  208. <style scoped lang="scss">
  209. .xm-detal {
  210. width: 100%;
  211. .map_box {
  212. width: 100%;
  213. height: 600px;
  214. }
  215. .btn-group {
  216. margin-top: 20px;
  217. text-align: right;
  218. }
  219. $t_w: 155px;
  220. .tables {
  221. display: flex;
  222. flex-wrap: wrap;
  223. justify-content: space-between; /* 可选的对齐方式 */
  224. border-top: 1px solid #d6d6d6;
  225. border-right: 1px solid #d6d6d6;
  226. display: grid;
  227. grid-template-columns: repeat(4, $t_w 1fr);
  228. >div {
  229. border-left: 1px solid #d6d6d6;
  230. border-bottom: 1px solid #d6d6d6;
  231. padding: 8px 10px;
  232. display: inline-block;
  233. color: #1f2f47;
  234. &.title {
  235. width: $t_w;
  236. background: #f4f6f8;
  237. font-family: AlibabaPuHuiTiM;
  238. font-weight: normal;
  239. text-align: center;
  240. }
  241. }
  242. }
  243. }
  244. </style>