Ssnyd.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. <template>
  2. <div class="page-nzy-manage">
  3. <div class="page-left" :style="{height:contentHeight+'px',width:contentWidth+'px'}">
  4. <div class="nzy-tools">
  5. <el-form label-width="120px" :model="paramsList">
  6. <el-row :gutter="20">
  7. <el-col :span="6">
  8. <el-form-item label="项目名称:">
  9. <el-input v-model="paramsList.xmbh" placeholder="请输入项目名称" clearable></el-input>
  10. </el-form-item>
  11. </el-col>
  12. <el-col :span="6">
  13. <el-form-item label="市:">
  14. <el-input v-model="paramsList.pcmc" placeholder="请输入市" clearable></el-input>
  15. </el-form-item>
  16. </el-col>
  17. <el-col :span="6">
  18. <span></span>
  19. <el-form-item label="县区:">
  20. <el-input v-model="paramsList.pcmc" placeholder="请输入县区" clearable></el-input>
  21. </el-form-item>
  22. </el-col>
  23. <el-col :span="6">
  24. <el-form-item label="备案号:">
  25. <el-input v-model="paramsList.bah" placeholder="请输入备案号" clearable></el-input>
  26. </el-form-item>
  27. </el-col>
  28. <el-col :span="6">
  29. <el-form-item label="备案面积:">
  30. <el-input v-model="paramsList.pcmc" placeholder="请输入备案面积" clearable></el-input>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="6">
  34. <el-form-item label="备案时间:">
  35. <el-date-picker
  36. v-model="basjDateRange"
  37. type="daterange"
  38. value-format="yyyy-MM-dd"
  39. unlink-panels
  40. start-placeholder="备案开始时间"
  41. end-placeholder="备案结束时间"
  42. :shortcuts="shortcuts"
  43. style="width:100%"
  44. />
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="6">
  48. <el-form-item label="用途:">
  49. <el-input v-model="paramsList.yt" placeholder="请输入用途" clearable></el-input>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :span="6">
  53. <div class="btn-group">
  54. <el-button type="primary" @click="queryByPage">查询</el-button>
  55. <div class="panel-dropdown">
  56. <el-dropdown>
  57. <el-button type="success">
  58. 导入文件<i class="el-icon-arrow-down el-icon--right"></i>
  59. </el-button>
  60. <el-dropdown-menu slot="dropdown">
  61. <el-dropdown-item>
  62. <el-upload
  63. class="upload-demo"
  64. action=""
  65. :before-upload="beforeUpload"
  66. multiple
  67. :limit="3"
  68. :on-exceed="2"
  69. accept=".zip">
  70. &nbsp;&nbsp;批量导入&nbsp;&nbsp;
  71. </el-upload>
  72. </el-dropdown-item>
  73. </el-dropdown-menu>
  74. </el-dropdown>
  75. </div>
  76. </div>
  77. </el-col>
  78. </el-row>
  79. </el-form>
  80. </div>
  81. <div class="nzy-table">
  82. <el-table
  83. border
  84. :data="tableData.data"
  85. :height="contentHeight-260"
  86. :header-cell-style="tableHeaderStyle"
  87. :cell-style="tableRowStyle"
  88. ref="report-table"
  89. >
  90. <el-table-column
  91. type="index"
  92. width="80"
  93. label="序号">
  94. </el-table-column>
  95. <el-table-column
  96. prop="xmbh"
  97. label="项目索引">
  98. </el-table-column>
  99. <el-table-column
  100. prop="xmbh"
  101. label="项目名称">
  102. </el-table-column>
  103. <el-table-column
  104. prop="szs"
  105. label="市">
  106. </el-table-column>
  107. <el-table-column
  108. prop="xzq"
  109. label="县区">
  110. </el-table-column>
  111. <el-table-column
  112. prop="bah"
  113. label="备案号">
  114. </el-table-column>
  115. <el-table-column
  116. prop="bamj"
  117. label="备案面积">
  118. </el-table-column>
  119. <el-table-column
  120. prop="pf_wh"
  121. label="备案时间">
  122. </el-table-column>
  123. <el-table-column
  124. prop="yt"
  125. label="备注">
  126. </el-table-column>
  127. <el-table-column
  128. prop="bz"
  129. label="备注">
  130. </el-table-column>
  131. <el-table-column
  132. width="260"
  133. label="操作">
  134. <template slot-scope="scope">
  135. <div style="line-height: 34px;">
  136. <el-button
  137. @click.native.prevent="openDetail(scope.row)"
  138. plain
  139. type="primary"
  140. size="mini">
  141. 查看
  142. </el-button>
  143. <el-button
  144. @click.native.prevent="openDetail(scope.row, true)"
  145. style="margin: 0px 10px;"
  146. plain
  147. type="primary"
  148. size="mini">
  149. 编辑
  150. </el-button>
  151. <el-popconfirm
  152. title="该条数据确定删除吗?"
  153. @confirm="deleteHandle(scope.$index, scope.row)"
  154. >
  155. <el-button
  156. plain
  157. type="danger"
  158. slot="reference"
  159. size="mini">
  160. 删除
  161. </el-button>
  162. </el-popconfirm>
  163. </div>
  164. </template>
  165. </el-table-column>
  166. </el-table>
  167. <Page style="float: right;margin-top: 10px;"
  168. show-total
  169. :total="paramsList.total"
  170. :page-size="paramsList.size"
  171. @on-change="pageChange"
  172. @on-page-size-change="sizeChange"
  173. show-sizer />
  174. </div>
  175. </div>
  176. <el-dialog
  177. :visible.sync="detailShow"
  178. title="项目详情"
  179. top="5vh"
  180. width="80%"
  181. >
  182. <detail ref="details" :contentWidth="contentWidth-menusWidth" :contentHeight="contentHeight" :project="currProject"/>
  183. </el-dialog>
  184. </div>
  185. </template>
  186. <script>
  187. import Detail from "./nzy/Detail";
  188. import JSZip from 'jszip'
  189. import { saveAs } from 'file-saver'
  190. export default {
  191. name: "Nzy",
  192. props:{
  193. contentWidth:Number,
  194. contentHeight:Number
  195. },
  196. components:{Detail},
  197. data() {
  198. return {
  199. compName: 'data-manage',
  200. menus:JSON.parse(window.sessionStorage.getItem('yzt-user')),
  201. menusWidth:700,
  202. detailShow:false,
  203. tableData:{
  204. data:[],
  205. },
  206. currProject:null,
  207. paramsList: { pzwh: '', pcmc: '', page: 1, size: 15, total: 0 },
  208. basjDateRange: [],
  209. searchParam: {
  210. xmbh: '',
  211. ban: '',
  212. yt: '',
  213. xzq: '',
  214. basjStart: '',
  215. basjEnd: '',
  216. current: 1,
  217. size: 10
  218. }
  219. }
  220. },
  221. mounted(){
  222. this.queryByPage();
  223. },
  224. methods: {
  225. pageChange:function (page){
  226. this.searchParam.current=page;
  227. this.queryByPage()
  228. },
  229. sizeChange:function (size){
  230. this.searchParam.size=size;
  231. this.queryByPage()
  232. },
  233. //查询报批项目信息
  234. queryByPage(){
  235. let _this = this;
  236. if (this.basjDateRange.length > 0) {
  237. this.searchParam.basjStart = this.basjDateRange[0]
  238. this.searchParam.basjEnd = this.basjDateRange[1]
  239. }
  240. const params = {
  241. ...this.searchParam
  242. }
  243. this.$ajax.get('/api/templand/page', params, this, true).then(res => {
  244. if (res.status === 200) {
  245. _this.tableData.data= res.records;
  246. _this.tableData.total = res.total;
  247. }
  248. })
  249. },
  250. openDetail(row, isEditor = false){
  251. this.detailShow = true;
  252. this.$nextTick(() => {
  253. this.$refs['details'].initDetailData(row, isEditor)
  254. })
  255. },
  256. deleteHandle (index, row) {
  257. const params = {id: row['objecid']}
  258. this.$ajax.get('/api/ssnyd/delete', params, this, true).then(res => {
  259. if (res) {
  260. this.$Message.success('删除成功!')
  261. this.queryByPage()
  262. }
  263. })
  264. },
  265. locationDk(index,row){
  266. if(row.dk_bh){
  267. this.detailShow = false;
  268. let dkbhArr = row.dk_bh?row.dk_bh.split(","):'';
  269. let arr = dkbhArr.map(i=>{return "'"+i+"'";});
  270. this.$vm.$emit('locationGlobal', 'YHYZT_NZYDK_NEW', `index_id in (${arr.join()})`)
  271. //this.$message.warning("暂无图形")
  272. }
  273. },
  274. tableRowStyle({row, rowIndex}) {
  275. if (rowIndex%2 === 1) {
  276. return 'text-align:center;background:#F7F8FA';
  277. }else{
  278. return 'text-align:center;';
  279. }
  280. },
  281. tableHeaderStyle(){
  282. return 'background:#E5EDFE; font-family:AlibabaPuHuiTiR; font-size:16px; color:rgba(51, 51, 51, 1);text-align:center;';
  283. },
  284. beforeUpload(file){
  285. if(file){
  286. if(file.name.endsWith("zip")){
  287. this.doInput(file)
  288. }
  289. return false;
  290. }
  291. },
  292. doInput(file){
  293. let params = new FormData();
  294. params.append("file",file);
  295. let _this = this;
  296. const loading = this.$loading({
  297. lock: true,
  298. text: '正在导入中',
  299. spinner: 'el-icon-loading',
  300. background: 'rgba(0, 0, 0, 0.7)'
  301. });
  302. this.$ajax.post('/api/data/upload/ssnyd/zip', params, this).then(res => {
  303. loading.close();
  304. if (res) {
  305. this.$Message.error("导入成功!")
  306. }
  307. })
  308. },
  309. saveFileContent(fileContent) {
  310. var zip = new JSZip()
  311. fileContent.forEach(i => {
  312. zip.file(i.filename, i.content)
  313. })
  314. zip.file('农转用项目.cpg', 'UTF-8')
  315. zip.generateAsync({ type: 'blob' }, function updateCallback(metadata) {
  316. var msg = 'progression : ' + metadata.percent.toFixed(2) + ' %'
  317. if (metadata.currentFile) {
  318. msg += ', current file = ' + metadata.currentFile
  319. }
  320. console.log(msg)
  321. }).then((blob) => {
  322. // see FileSaver.js
  323. saveAs(blob, '农转用项目.zip')
  324. console.log('done !')
  325. })
  326. .catch(error => console.error(error.stack))
  327. },
  328. }
  329. }
  330. </script>
  331. <style scoped lang="scss">
  332. .page-nzy-manage{
  333. position: relative;
  334. display: flex;
  335. .page-left{
  336. background: #fff;
  337. border-radius: 0px 0px 0px 0px;
  338. z-index: 99;
  339. padding: 20px;
  340. border-right:2px solid #e9e3e3;
  341. .nzy-tools{
  342. .btn-group {
  343. display: flex;
  344. }
  345. .panel-dropdown{
  346. margin-left: 10px;
  347. border-radius: 4px 4px 4px 4px;
  348. .el-dropdown{
  349. width: 100%;
  350. }
  351. }
  352. }
  353. }
  354. .page-detail{
  355. background: #FFFFFF;
  356. border-radius: 0px 0px 0px 0px;
  357. position: absolute;
  358. z-index: 999;
  359. right: 0px;
  360. }
  361. .page-map{
  362. //position: absolute;
  363. //background:#434;
  364. }
  365. }
  366. </style>