管理系统PC端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
1周前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711
  1. <template>
  2. <div class="app-container">
  3. <el-row :gutter="20">
  4. <splitpanes :horizontal="this.$store.getters.device === 'mobile'" class="default-theme">
  5. <!--部门数据-->
  6. <pane size="16">
  7. <el-col>
  8. <div class="head-container">
  9. <el-input v-model="deptName" placeholder="请输入区划名称" clearable size="small" prefix-icon="el-icon-search" style="margin-bottom: 20px" />
  10. </div>
  11. <div class="head-container container_main">
  12. <el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false" :filter-node-method="filterNode" ref="tree" node-key="id" default-expand-all highlight-current @node-click="handleNodeClick" />
  13. </div>
  14. </el-col>
  15. </pane>
  16. <!--用户数据-->
  17. <pane size="84">
  18. <el-col>
  19. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  20. <el-form-item label="地块代码" prop="dkbm">
  21. <el-input v-model="queryParams.dkbm" placeholder="请输入地块代码" clearable @keyup.enter.native="handleQuery"/>
  22. </el-form-item>
  23. <el-form-item label="地块名称" prop="dkmc">
  24. <el-input v-model="queryParams.dkmc" placeholder="请输入地块名称" clearable @keyup.enter.native="handleQuery"/>
  25. </el-form-item>
  26. <!--<el-form-item label="所有权性质" prop="syqxz">
  27. <el-select v-model="queryParams.syqxz" placeholder="请选择所有权性质" clearable>
  28. <el-option v-for="dict in dict.type.ownership_type" :key="dict.value" :label="dict.label" :value="dict.value"/>
  29. </el-select>
  30. </el-form-item>
  31. <el-form-item label="地块类别" prop="dklb">
  32. <el-select v-model="queryParams.dklb" placeholder="请选择地块类别" clearable>
  33. <el-option v-for="dict in dict.type.land_type" :key="dict.value" :label="dict.label" :value="dict.value"/>
  34. </el-select>
  35. </el-form-item>
  36. <el-form-item label="土地利用类型" prop="tdlylx">
  37. <el-select v-model="queryParams.tdlylx" placeholder="请选择土地利用类型" clearable>
  38. <el-option v-for="dict in dict.type.land_use" :key="dict.value" :label="dict.label" :value="dict.value"/>
  39. </el-select>
  40. </el-form-item>
  41. <el-form-item label="地力等级" prop="dldj">
  42. <el-select v-model="queryParams.dldj" placeholder="请选择地力等级" clearable>
  43. <el-option v-for="dict in dict.type.land_grade_type" :key="dict.value" :label="dict.label" :value="dict.value"/>
  44. </el-select>
  45. </el-form-item>
  46. <el-form-item label="土地用途" prop="tdyt">
  47. <el-select v-model="queryParams.tdyt" placeholder="请选择土地用途" clearable>
  48. <el-option v-for="dict in dict.type.land_use_type" :key="dict.value" :label="dict.label" :value="dict.value"/>
  49. </el-select>
  50. </el-form-item>
  51. <el-form-item label="基本农田" prop="sfjbnt">
  52. <el-select v-model="queryParams.sfjbnt" placeholder="请选择是否基本农田" clearable>
  53. <el-option v-for="dict in dict.type.is_common" :key="dict.value" :label="dict.label" :value="dict.value"/>
  54. </el-select>
  55. </el-form-item>-->
  56. <el-form-item label="是账外地" prop="sfzwd">
  57. <el-select v-model="queryParams.sfzwd" placeholder="请选择是否账外地" clearable>
  58. <el-option v-for="dict in dict.type.is_common" :key="dict.value" :label="dict.label" :value="dict.value"/>
  59. </el-select>
  60. </el-form-item>
  61. <el-form-item label="调查状态" prop="surveyStatus">
  62. <el-select v-model="queryParams.surveyStatus" placeholder="请选择调查状态" clearable>
  63. <el-option v-for="dict in dict.type.survey_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
  64. </el-select>
  65. </el-form-item>
  66. <el-form-item label="级联代码" prop="importCode">
  67. <el-input v-model="queryParams.importCode" placeholder="请输入部门级联代码" clearable @keyup.enter.native="handleQuery"/>
  68. </el-form-item>
  69. <el-form-item>
  70. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  71. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  72. </el-form-item>
  73. </el-form>
  74. <el-row :gutter="10" class="mb8">
  75. <el-col :span="1.5">
  76. <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['resource:land:add']">新增</el-button>
  77. </el-col>
  78. <!--
  79. <el-col :span="1.5">
  80. <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['resource:land:edit']">修改</el-button>
  81. </el-col>
  82. <el-col :span="1.5">
  83. <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['resource:land:remove']">删除</el-button>
  84. </el-col>
  85. -->
  86. <el-col :span="1.5">
  87. <el-button type="success" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['resource:land:import']">导入</el-button>
  88. </el-col>
  89. <el-col :span="1.5">
  90. <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['resource:land:export']">导出</el-button>
  91. </el-col>
  92. <el-col :span="1.5">
  93. <el-button type="info" plain icon="el-icon-printer" size="mini" @click="handlePrint()" v-hasPermi="['resource:land:print']">打印</el-button>
  94. </el-col>
  95. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  96. </el-row>
  97. <!-- 数据列表 列属性 min-width="60" show-overflow-tooltip @selection-change="handleSelectionChange" -->
  98. <el-table v-loading="loading" :data="landList" border>
  99. <!--<el-table-column type="selection" width="55" align="center" />
  100. <el-table-column label="fid " align="center" prop="fid" min-width="60"/>-->
  101. <el-table-column label="地块代码" align="center" prop="dkbm" min-width="180" show-overflow-tooltip />
  102. <el-table-column label="地块名称" align="left" prop="dkmc" min-width="120" show-overflow-tooltip />
  103. <!-- <el-table-column label="所有权性质" align="center" prop="syqxz">
  104. <template slot-scope="scope">
  105. <dict-tag :options="dict.type.ownership_type" :value="scope.row.syqxz"/>
  106. </template>
  107. </el-table-column>-->
  108. <el-table-column label="地块类别" align="center" prop="dklb" min-width="80" show-overflow-tooltip>
  109. <template slot-scope="scope">
  110. <dict-tag :options="dict.type.land_type" :value="scope.row.dklb"/>
  111. </template>
  112. </el-table-column>
  113. <!--<el-table-column label="土地利用类型" align="center" prop="tdlylx">
  114. <template slot-scope="scope">
  115. <dict-tag :options="dict.type.land_use" :value="scope.row.tdlylx"/>
  116. </template>
  117. </el-table-column>
  118. <el-table-column label="地力等级" align="center" prop="dldj">
  119. <template slot-scope="scope">
  120. <dict-tag :options="dict.type.land_grade_type" :value="scope.row.dldj"/>
  121. </template>
  122. </el-table-column>
  123. <el-table-column label="土地用途" align="center" prop="tdyt">
  124. <template slot-scope="scope">
  125. <dict-tag :options="dict.type.land_use_type" :value="scope.row.tdyt"/>
  126. </template>
  127. </el-table-column>
  128. <el-table-column label="是否基本农田" align="center" prop="sfjbnt">
  129. <template slot-scope="scope">
  130. <dict-tag :options="dict.type.is_common" :value="scope.row.sfjbnt"/>
  131. </template>
  132. </el-table-column>-->
  133. <el-table-column label="地块四至" align="center">
  134. <el-table-column label="地块东至" align="left" prop="dkdz" min-width="100" show-overflow-tooltip />
  135. <el-table-column label="地块西至" align="left" prop="dkxz" min-width="100" show-overflow-tooltip />
  136. <el-table-column label="地块南至" align="left" prop="dknz" min-width="100" show-overflow-tooltip />
  137. <el-table-column label="地块北至" align="left" prop="dkbz" min-width="100" show-overflow-tooltip />
  138. </el-table-column>
  139. <!--<el-table-column label="备注信息" align="center" prop="dkbzxx" />
  140. <el-table-column label="指界人姓名" align="center" prop="zjrxm" />
  141. <el-table-column label="图显面积 " align="center" prop="txmj" />-->
  142. <el-table-column label="实测面积" align="center" prop="scmjm" min-width="80" show-overflow-tooltip/>
  143. <el-table-column label="调查状态" align="center" prop="surveyStatus" min-width="80" show-overflow-tooltip>
  144. <template slot-scope="scope">
  145. <dict-tag :options="dict.type.survey_status" :value="scope.row.surveyStatus"/>
  146. </template>
  147. </el-table-column>
  148. <!--<el-table-column label="部门级联代码" align="center" prop="importCode" />
  149. <el-table-column label="区域位置名称" align="center" prop="deptName" />-->
  150. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="170">
  151. <template slot-scope="scope">
  152. <el-button size="mini" type="text" icon="el-icon-view" @click="handleLook(scope.row)" v-hasPermi="['resource:land:query']">查看</el-button>
  153. <el-button size="mini" type="text" icon="el-icon-s-promotion" @click="handleMap(scope.row)" v-hasPermi="['resource:land:map']">地图</el-button>
  154. <el-dropdown size="mini" v-hasPermi="['resource:land:remove']">
  155. <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
  156. <el-dropdown-menu slot="dropdown" style="padding: 5px">
  157. <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['resource:land:edit']">修改</el-button>
  158. <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['resource:land:remove']">删除</el-button>
  159. </el-dropdown-menu>
  160. </el-dropdown>
  161. </template>
  162. </el-table-column>
  163. </el-table>
  164. <!-- 分页插件 -->
  165. <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList"/>
  166. </el-col>
  167. </pane>
  168. </splitpanes>
  169. </el-row>
  170. <!-- 导入EXCEL组件 -->
  171. <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
  172. <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
  173. <i class="el-icon-upload"></i>
  174. <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
  175. <div class="el-upload__tip text-left" slot="tip">
  176. <div class="el-upload__tip" slot="tip">
  177. <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的地块属性
  178. </div>
  179. <p style="color: red">1、仅允许导入xls、xlsx格式文件;</p>
  180. <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">下载模板</el-link>
  181. </div>
  182. </el-upload>
  183. <div slot="footer" class="dialog-footer">
  184. <el-button type="primary" @click="submitFileForm">确 定</el-button>
  185. <el-button @click="upload.open = false">取 消</el-button>
  186. </div>
  187. </el-dialog>
  188. <!-- 查看地块属性对话框 -->
  189. <el-dialog :title="title" :visible.sync="viewOpen" width="800px" append-to-body>
  190. <el-descriptions title="地块信息" border :column="2" class="margin-top">
  191. <el-descriptions-item label="区域位置名称">{{ form.deptName }}</el-descriptions-item>
  192. <el-descriptions-item label="标识码">{{ form.bsm }}</el-descriptions-item>
  193. <el-descriptions-item label="要素代码">{{ form.ysdm }}</el-descriptions-item>
  194. <el-descriptions-item label="地块代码">{{ form.dkbm }}</el-descriptions-item>
  195. <el-descriptions-item label="地块名称">{{ form.dkmc }}</el-descriptions-item>
  196. <el-descriptions-item label="所有权性质">{{ form.syqxz }}</el-descriptions-item>
  197. <el-descriptions-item label="地块类别">{{ form.dklb }}</el-descriptions-item>
  198. <el-descriptions-item label="土地利用类型">{{ form.tdlylx }}</el-descriptions-item>
  199. <el-descriptions-item label="地力等级">{{ form.dldj }}</el-descriptions-item>
  200. <el-descriptions-item label="土地用途">{{ form.tdyt }}</el-descriptions-item>
  201. <el-descriptions-item label="是否基本农田">{{ form.sfjbnt }}</el-descriptions-item>
  202. <el-descriptions-item label="地块东至">{{ form.dkdz }}</el-descriptions-item>
  203. <el-descriptions-item label="地块西至">{{ form.dkxz }}</el-descriptions-item>
  204. <el-descriptions-item label="地块南至">{{ form.dknz }}</el-descriptions-item>
  205. <el-descriptions-item label="地块北至">{{ form.dkbz }}</el-descriptions-item>
  206. <el-descriptions-item label="备注信息">{{ form.dkbzxx }}</el-descriptions-item>
  207. <el-descriptions-item label="指界人姓名">{{ form.zjrxm }}</el-descriptions-item>
  208. <el-descriptions-item label="图显面积">{{ form.txmj }}</el-descriptions-item>
  209. <el-descriptions-item label="实测面积">{{ form.scmjm }}</el-descriptions-item>
  210. <el-descriptions-item label="是否账外地">{{ form.sfzwd }}</el-descriptions-item>
  211. </el-descriptions>
  212. <el-descriptions title="经营数据" border :column="2" class="margin-top">
  213. <el-descriptions-item label="经营面积(亩)">{{ form.jymj }}</el-descriptions-item>
  214. <el-descriptions-item label="经营方式">{{ form.jyfs }}</el-descriptions-item>
  215. <el-descriptions-item label="经营对象名称">{{ form.jydxmc }}</el-descriptions-item>
  216. <el-descriptions-item label="经营开始时间">{{ form.jykssj }}</el-descriptions-item>
  217. <el-descriptions-item label="经营结束时间">{{ form.jyjssj }}</el-descriptions-item>
  218. <el-descriptions-item label="承包金额(元)">{{ form.cbje }}</el-descriptions-item>
  219. <el-descriptions-item label="备注">{{ form.bz }}</el-descriptions-item>
  220. <el-descriptions-item label="调查状态">{{ form.surveyStatus }}</el-descriptions-item>
  221. <el-descriptions-item label="实物图">
  222. <div v-if="!!form.dkImg">
  223. <el-tooltip effect="light" :content="item" placement="bottom" v-for="(item, index) in form.dkImg.split(',')" :key="index">
  224. <el-image style="height: 64px; width: 64px; margin: 2px; display: inline-block;" fit="scale-down" :src="this.baseRoutingUrll + item" :preview-src-list="form.dkImg.split(',').map((x) => this.baseRoutingUrll + x)"/>
  225. </el-tooltip>
  226. </div>
  227. </el-descriptions-item>
  228. </el-descriptions>
  229. <!-- 弹框操作按钮 -->
  230. <div slot="footer" class="dialog-footer">
  231. <el-button @click="doPrint">打 印</el-button>
  232. <el-button @click="cancelDetail">关 闭</el-button>
  233. </div>
  234. </el-dialog>
  235. <!-- 添加或修改地块属性对话框 -->
  236. <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
  237. <el-form ref="form" :model="form" :rules="rules" label-width="100px">
  238. <el-form-item label="区域位置" prop="deptName">
  239. <el-input v-model="form.deptName" placeholder="请输入区域位置名称" show-word-limit :maxlength="100"/>
  240. </el-form-item>
  241. <el-form-item label="地块代码" prop="dkbm">
  242. <el-input v-model="form.dkbm" placeholder="地块代码不输入时,系统自动分配" show-word-limit :maxlength="19"/>
  243. </el-form-item>
  244. <el-form-item label="地块名称" prop="dkmc">
  245. <el-input v-model="form.dkmc" placeholder="请输入地块名称" show-word-limit :maxlength="50"/>
  246. </el-form-item>
  247. <el-form-item label="所有权性质" prop="syqxz">
  248. <el-select v-model="form.syqxz" placeholder="请选择所有权性质">
  249. <el-option v-for="dict in dict.type.ownership_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
  250. </el-select>
  251. </el-form-item>
  252. <el-form-item label="地块类别" prop="dklb">
  253. <el-select v-model="form.dklb" placeholder="请选择地块类别">
  254. <el-option v-for="dict in dict.type.land_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
  255. </el-select>
  256. </el-form-item>
  257. <el-form-item label="土地利用类型" prop="tdlylx">
  258. <el-select v-model="form.tdlylx" placeholder="请选择土地利用类型">
  259. <el-option v-for="dict in dict.type.land_use" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
  260. </el-select>
  261. </el-form-item>
  262. <el-form-item label="地力等级" prop="dldj">
  263. <el-select v-model="form.dldj" placeholder="请选择地力等级">
  264. <el-option v-for="dict in dict.type.land_grade_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
  265. </el-select>
  266. </el-form-item>
  267. <el-form-item label="土地用途" prop="tdyt">
  268. <el-select v-model="form.tdyt" placeholder="请选择土地用途">
  269. <el-option v-for="dict in dict.type.land_use_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
  270. </el-select>
  271. </el-form-item>
  272. <el-form-item label="是否基本农田" prop="sfjbnt">
  273. <el-radio-group v-model="form.sfjbnt">
  274. <el-radio v-for="dict in dict.type.is_common" :key="dict.value" :label="dict.value">{{dict.label}}</el-radio>
  275. </el-radio-group>
  276. </el-form-item>
  277. <el-form-item label="地块东至" prop="dkdz">
  278. <el-input v-model="form.dkdz" placeholder="请输入地块东至" show-word-limit :maxlength="50"/>
  279. </el-form-item>
  280. <el-form-item label="地块西至" prop="dkxz">
  281. <el-input v-model="form.dkxz" placeholder="请输入地块西至" show-word-limit :maxlength="50"/>
  282. </el-form-item>
  283. <el-form-item label="地块南至" prop="dknz">
  284. <el-input v-model="form.dknz" placeholder="请输入地块南至" show-word-limit :maxlength="50"/>
  285. </el-form-item>
  286. <el-form-item label="地块北至" prop="dkbz">
  287. <el-input v-model="form.dkbz" placeholder="请输入地块北至" show-word-limit :maxlength="50"/>
  288. </el-form-item>
  289. <el-form-item label="备注信息" prop="dkbzxx">
  290. <el-input v-model="form.dkbzxx" placeholder="请输入备注信息" show-word-limit :maxlength="254"/>
  291. </el-form-item>
  292. <el-form-item label="指界人姓名" prop="zjrxm">
  293. <el-input v-model="form.zjrxm" placeholder="请输入指界人姓名" show-word-limit :maxlength="100"/>
  294. </el-form-item>
  295. <el-form-item label="图显面积" prop="txmj">
  296. <el-input-number v-model="form.txmj" placeholder="请输入图显面积" controls-position="right" :precision="2"/>
  297. </el-form-item>
  298. <el-form-item label="实测面积" prop="scmjm">
  299. <el-input-number v-model="form.scmjm" placeholder="请输入实测面积" controls-position="right" :precision="3"/>
  300. </el-form-item>
  301. <el-form-item label="是否账外地" prop="sfzwd">
  302. <el-radio-group v-model="form.sfzwd">
  303. <el-radio v-for="dict in dict.type.is_common" :key="dict.value" :label="dict.value">{{dict.label}}</el-radio>
  304. </el-radio-group>
  305. </el-form-item>
  306. <el-form-item label="调查状态" prop="surveyStatus">
  307. <el-radio-group v-model="form.surveyStatus">
  308. <el-radio v-for="dict in dict.type.survey_status" :key="dict.value" :label="dict.value">{{dict.label}}</el-radio>
  309. </el-radio-group>
  310. </el-form-item>
  311. </el-form>
  312. <div slot="footer" class="dialog-footer">
  313. <el-button type="primary" @click="submitForm">确 定</el-button>
  314. <el-button @click="cancel">取 消</el-button>
  315. </div>
  316. </el-dialog>
  317. </div>
  318. </template>
  319. <script>
  320. import { listLand, getLand, getLandDetail, getLandDetailByDkbm, delLand, addLand, updateLand, printLand } from "@/api/resource/land"
  321. import { getToken } from "@/utils/auth"
  322. import Treeselect from "@riophae/vue-treeselect";
  323. import { Splitpanes, Pane } from "splitpanes"
  324. import "@riophae/vue-treeselect/dist/vue-treeselect.css"
  325. import "splitpanes/dist/splitpanes.css"
  326. import { deptTreeSelect } from "@/api/system/user"
  327. export default {
  328. name: "Land",
  329. dicts: ['ownership_type', 'land_use_type', 'survey_status', 'is_common', 'land_grade_type', 'land_type', 'land_use'],
  330. components: { Treeselect, Splitpanes, Pane },
  331. data() {
  332. return {
  333. // 遮罩层
  334. loading: true,
  335. // 导出遮罩层
  336. exportLoading: false,
  337. // 选中数组
  338. ids: [],
  339. // 非单个禁用
  340. single: true,
  341. // 非多个禁用
  342. multiple: true,
  343. // 显示搜索条件
  344. showSearch: true,
  345. // 总条数
  346. total: 0,
  347. // 地块属性表格数据
  348. landList: [],
  349. // 弹出层标题
  350. title: "",
  351. // 是否显示弹出层
  352. open: false,
  353. // 详情组件列数
  354. descColumn: 2,
  355. // 详情组件Label所占百分比, 最大={100 / descColumn}. 内容所占百分比={100 / descColumn - descLabelWidth}
  356. descLabelWidth: 15,
  357. // 对话框显示只读的详情
  358. viewOpen: false,
  359. // 项目路径
  360. baseRoutingUrll: process.env.VUE_APP_BASE_API,
  361. // 所有部门树选项
  362. deptOptions: undefined,
  363. // 过滤掉已禁用部门树选项
  364. enabledDeptOptions: undefined,
  365. // 筛选部门名称
  366. deptName: undefined,
  367. // 选中的部门
  368. selectDeptName: null,
  369. defaultProps: {
  370. children: "children",
  371. label: "label"
  372. },
  373. // 查询参数
  374. queryParams: {
  375. pageNum: 1,
  376. pageSize: 10,
  377. // 查询排序
  378. //orderByColumn: "id",
  379. //isAsc: "desc",
  380. // 翻译字典
  381. //toTranslateDict: "1",
  382. dkbm: null,
  383. dkmc: null,
  384. syqxz: null,
  385. dklb: null,
  386. tdlylx: null,
  387. dldj: null,
  388. tdyt: null,
  389. sfjbnt: null,
  390. surveyStatus: null,
  391. importCode: null,
  392. sfzwd: null,
  393. },
  394. // 表单参数
  395. form: {},
  396. // 表单校验
  397. rules: {
  398. dkmc: [
  399. { required: true, message: "地块名称不能为空", trigger: "blur" }
  400. ],
  401. scmjm: [
  402. { required: true, message: "实测面积不能为空", trigger: "blur" }
  403. ],
  404. },
  405. // EXCEL导入
  406. upload: {
  407. // 是否显示弹出层(用户导入)
  408. open: false,
  409. // 弹出层标题(用户导入)
  410. title: "",
  411. // 是否禁用上传
  412. isUploading: false,
  413. // 是否更新已经存在的用户数据
  414. updateSupport: 0,
  415. // 设置上传的请求头部
  416. headers: { Authorization: "Bearer " + getToken() },
  417. // 上传的地址
  418. url: process.env.VUE_APP_BASE_API + "/resource/land/importData"
  419. },
  420. }
  421. },
  422. watch: {
  423. // 根据名称筛选部门树
  424. deptName(val) {
  425. this.$refs.tree.filter(val)
  426. }
  427. },
  428. created() {
  429. this.getDeptTree()
  430. this.getList()
  431. },
  432. methods: {
  433. /** 查询地块属性列表 */
  434. getList() {
  435. this.loading = true
  436. listLand(this.queryParams).then(response => {
  437. this.landList = response.rows
  438. this.total = response.total
  439. this.loading = false
  440. })
  441. },
  442. // 取消按钮
  443. cancel() {
  444. this.open = false
  445. this.reset()
  446. },
  447. cancelDetail() {
  448. this.viewOpen = false
  449. },
  450. // 表单重置
  451. reset() {
  452. this.form = {
  453. bsm: null,
  454. ysdm: '211011',
  455. dkbm: null,
  456. dkmc: null,
  457. syqxz: '30',
  458. dklb: '22',
  459. tdlylx: '011',
  460. dldj: '01',
  461. tdyt: '1',
  462. sfjbnt: '1',
  463. dkdz: null,
  464. dkxz: null,
  465. dknz: null,
  466. dkbz: null,
  467. dkbzxx: null,
  468. zjrxm: null,
  469. txmj: null,
  470. scmjm: null,
  471. theGeom: null,
  472. surveyStatus: '1',
  473. importCode: null,
  474. deptName: null,
  475. sfzwd: '2'
  476. }
  477. this.resetForm("form")
  478. },
  479. /** 搜索按钮操作 */
  480. handleQuery() {
  481. this.queryParams.pageNum = 1
  482. this.getList()
  483. },
  484. /** 重置按钮操作 */
  485. resetQuery() {
  486. this.resetForm("queryForm")
  487. this.handleQuery()
  488. },
  489. // 多选框选中数据
  490. handleSelectionChange(selection) {
  491. this.ids = selection.map(item => item.fid)
  492. this.single = selection.length!==1
  493. this.multiple = !selection.length
  494. },
  495. /** 新增按钮操作 */
  496. handleAdd() {
  497. if(this.selectDeptName == null || this.selectDeptName == ''){
  498. this.$modal.msgWarning("请先选择村/组行政区划!")
  499. return
  500. }
  501. this.reset()
  502. this.form.deptId = this.queryParams.deptId;
  503. this.form.deptName = this.selectDeptName;
  504. this.open = true
  505. this.title = "添加地块属性"
  506. },
  507. /** 修改按钮操作 */
  508. handleUpdate(row) {
  509. this.reset()
  510. const fid = row.fid || this.ids
  511. getLand(fid).then(response => {
  512. this.form = response.data
  513. this.open = true
  514. this.title = "修改地块属性"
  515. })
  516. },
  517. /** 查看按钮操作 */
  518. handleLook(row) {
  519. getLandDetailByDkbm(row.dkbm).then(response => {
  520. this.form = response.data;
  521. this.viewOpen = true;
  522. this.title = "查看地块属性";
  523. });
  524. },
  525. /** 提交按钮 */
  526. submitForm() {
  527. this.$refs["form"].validate(valid => {
  528. if (valid) {
  529. if (this.form.fid != null) {
  530. updateLand(this.form).then(response => {
  531. this.$modal.msgSuccess("修改成功")
  532. this.open = false
  533. this.getList()
  534. })
  535. } else {
  536. addLand(this.form).then(response => {
  537. this.$modal.msgSuccess("新增成功")
  538. this.open = false
  539. this.getList()
  540. })
  541. }
  542. }
  543. })
  544. },
  545. /** 删除按钮操作 */
  546. handleDelete(row) {
  547. const fids = row.fid || this.ids
  548. this.$modal.confirm('是否确认删除地块属性编号为"' + fids + '"的数据项?').then(function() {
  549. return delLand(fids)
  550. }).then(() => {
  551. this.getList()
  552. this.$modal.msgSuccess("删除成功")
  553. }).catch(() => {})
  554. },
  555. /** 导出按钮操作 */
  556. handleExport() {
  557. this.download('resource/land/export', {
  558. ...this.queryParams
  559. }, `地块属性_${new Date().getTime()}.xlsx`)
  560. },
  561. /** 打印表单 */
  562. doPrint() {
  563. const originalTitle = document.title;
  564. try {
  565. document.title = this.title || '打印详情';
  566. const printElement = document.getElementById('printDetail');
  567. const printFrame = document.createElement('iframe');
  568. printFrame.style.position = 'absolute';
  569. printFrame.style.width = '0';
  570. printFrame.style.height = '0';
  571. printFrame.style.border = 'none';
  572. printFrame.style.left = '-9999px';
  573. printFrame.onload = function() {
  574. try {
  575. const frameDoc = printFrame.contentDocument || printFrame.contentWindow.document;
  576. const contentClone = printElement.cloneNode(true);
  577. const style = document.createElement('style');
  578. style.innerHTML = `
  579. @page {
  580. size: auto;
  581. margin: 10mm;
  582. }
  583. body {
  584. font-family: Arial, sans-serif;
  585. line-height: 1.5;
  586. margin: 0;
  587. padding: 0;
  588. }
  589. .el-descriptions {
  590. width: 100% !important;
  591. }
  592. .el-descriptions-item__label {
  593. width: ${this.descLabelWidth}% !important;
  594. }
  595. .el-descriptions-item__content {
  596. width: ${(100 / this.descColumn) - this.descLabelWidth}% !important;
  597. }
  598. /* 确保图片在打印时显示完整 */
  599. img, .el-image {
  600. max-width: 100% !important;
  601. height: auto !important;
  602. }
  603. `;
  604. frameDoc.head.appendChild(style);
  605. frameDoc.body.appendChild(contentClone);
  606. setTimeout(() => {
  607. printFrame.contentWindow.focus();
  608. printFrame.contentWindow.print();
  609. setTimeout(() => {
  610. document.body.removeChild(printFrame);
  611. document.title = originalTitle;
  612. }, 1000);
  613. }, 500);
  614. } catch (e) {
  615. document.body.removeChild(printFrame);
  616. document.title = originalTitle;
  617. this.$message.error('打印过程中发生错误');
  618. }
  619. };
  620. document.body.appendChild(printFrame);
  621. } catch (e) {
  622. document.title = originalTitle;
  623. this.$message.error('打印过程中发生错误');
  624. }
  625. },
  626. /** 打印按钮操作 */
  627. handlePrint() {
  628. printLand(this.queryParams).then(response => {})
  629. },
  630. /* 导入EXCEL组件 */
  631. handleImport() {
  632. this.upload.title = "地块属性导入"
  633. this.upload.open = true
  634. },
  635. /** 下载模板操作 */
  636. importTemplate() {
  637. this.download('resource/land/importTemplate', {
  638. }, `地块属性_template.xlsx`)
  639. },
  640. // 文件上传中处理
  641. handleFileUploadProgress(event, file, fileList) {
  642. this.upload.isUploading = true
  643. },
  644. // 文件上传成功处理
  645. handleFileSuccess(response, file, fileList) {
  646. this.upload.open = false
  647. this.upload.isUploading = false
  648. this.$refs.upload.clearFiles()
  649. this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true })
  650. this.getList()
  651. },
  652. // 提交上传文件
  653. submitFileForm() {
  654. this.$refs.upload.submit()
  655. },
  656. /** 查询部门下拉树结构 */
  657. getDeptTree() {
  658. deptTreeSelect().then(response => {
  659. this.deptOptions = response.data
  660. this.enabledDeptOptions = this.filterDisabledDept(JSON.parse(JSON.stringify(response.data)))
  661. })
  662. },
  663. // 过滤禁用的部门
  664. filterDisabledDept(deptList) {
  665. return deptList.filter(dept => {
  666. if (dept.disabled) {
  667. return false
  668. }
  669. if (dept.children && dept.children.length) {
  670. dept.children = this.filterDisabledDept(dept.children)
  671. }
  672. return true
  673. })
  674. },
  675. // 筛选节点
  676. filterNode(value, data) {
  677. if (!value) return true
  678. return data.label.indexOf(value) !== -1
  679. },
  680. // 节点单击事件
  681. handleNodeClick(data) {
  682. this.queryParams.deptId = data.id
  683. this.selectDeptName = data.label
  684. this.handleQuery()
  685. },
  686. }
  687. }
  688. </script>
  689. <style scoped type="scss">
  690. .container_main{
  691. height: 75vh;
  692. overflow-y: scroll;
  693. }
  694. </style>