管理系统PC端
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

704 lignes
32 KiB

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