管理系统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.
 
 
 
 

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