Explorar el Código

feat:数据报表、节水政策、水权交易、用水协会、基础设施等接口的对接

allen hace 2 años
padre
commit
9871c72e93
Se han modificado 31 ficheros con 1852 adiciones y 1018 borrados
  1. 50 0
      src/api/assoc/index.js
  2. 15 16
      src/api/farmer/list.js
  3. 37 0
      src/api/price/index.js
  4. 26 0
      src/api/statistics/index.js
  5. 43 0
      src/api/subsidypolicy/index.js
  6. 18 0
      src/api/trxrcd/index.js
  7. 14 0
      src/assets/styles/global.scss
  8. 31 32
      src/components/SelectTree/index.vue
  9. 2 0
      src/store/index.js
  10. 23 0
      src/store/modules/tree.js
  11. 34 64
      src/views/dataReport/components/report.vue
  12. 132 31
      src/views/dataReport/intakeWaterAnalysis.vue
  13. 117 45
      src/views/dataReport/saveWaterAnalysis.vue
  14. 105 42
      src/views/dataReport/waterConsumption.vue
  15. 24 16
      src/views/infrastructure/components/ladderLikeWaterPrice.vue
  16. 54 32
      src/views/infrastructure/components/recompose.vue
  17. 172 59
      src/views/infrastructure/components/setAnnualWaterRight.vue
  18. 2 2
      src/views/infrastructure/components/waterPriceSetting.vue
  19. 35 42
      src/views/infrastructure/deviceSetup.vue
  20. 4 0
      src/views/infrastructure/status.js
  21. 245 129
      src/views/infrastructure/waterElectricityPriceSetting.vue
  22. 15 4
      src/views/infrastructure/waterEstablishment.vue
  23. 14 12
      src/views/monitoringMamage/index.vue
  24. 8 1
      src/views/peasantHouseholdManage/index.vue
  25. 9 32
      src/views/waterCardManage/index.vue
  26. 107 61
      src/views/waterManage/component/associationManage.vue
  27. 91 86
      src/views/waterManage/index.vue
  28. 176 70
      src/views/waterMarket/component/waterDeal.vue
  29. 66 79
      src/views/waterMarket/index.vue
  30. 93 93
      src/views/waterSubsidy/components/newPolicy.vue
  31. 90 70
      src/views/waterSubsidy/index.vue

+ 50 - 0
src/api/assoc/index.js

@@ -0,0 +1,50 @@
+import request from '@/utils/request';
+
+// 农户列表
+export const getAssocList = (query) => {
+  return request({
+    url: '/wpr/assoc/list',
+    method: 'get',
+    params: query
+  });
+};
+
+// 新增
+
+export const addAssoc = (data) => {
+  return request({
+    url: '/wpr/assoc/add',
+    method: 'post',
+    data
+  });
+};
+
+// 修改
+
+export const editAssoc = (data) => {
+  return request({
+    url: '/wpr/assoc/edit',
+    method: 'put',
+    data
+  });
+};
+
+// 删除
+
+export const deleteAssoc = (params) => {
+  return request({
+    url: '/wpr/assoc/delete/',
+    method: 'delete',
+    params
+  });
+};
+
+// 详情
+
+export const getFarmerDetail = (query) => {
+  return request({
+    url: '/wpr/farmer/info',
+    method: 'get',
+    params: query
+  });
+};

+ 15 - 16
src/api/farmer/list.js

@@ -1,51 +1,50 @@
-import request from '@/utils/request'
+import request from '@/utils/request';
 
 
 // 农户列表
 // 农户列表
-export const getFarmerList = query => {
+export const getFarmerList = (query) => {
   return request({
   return request({
     url: '/wpr/farmer/list',
     url: '/wpr/farmer/list',
     method: 'get',
     method: 'get',
     params: query
     params: query
   });
   });
-}
+};
 
 
 // 新增
 // 新增
 
 
-export const addFarmer = data => {
+export const addFarmer = (data) => {
   return request({
   return request({
     url: '/wpr/farmer/add',
     url: '/wpr/farmer/add',
     method: 'post',
     method: 'post',
     data
     data
-  }) 
-}
-
+  });
+};
 
 
 // 修改
 // 修改
 
 
-export const editFarmer = data => {
+export const editFarmer = (data) => {
   return request({
   return request({
     url: '/wpr/farmer/edit',
     url: '/wpr/farmer/edit',
     method: 'put',
     method: 'put',
     data
     data
-  }) 
-}
+  });
+};
 
 
 // 删除
 // 删除
 
 
-export const deleteFarmer = farmerIds => {
+export const deleteFarmer = (farmerIds) => {
   return request({
   return request({
     url: '/wpr/farmer/delete/',
     url: '/wpr/farmer/delete/',
     method: 'delete',
     method: 'delete',
     params: farmerIds
     params: farmerIds
-  }) 
-}
+  });
+};
 
 
 // 详情
 // 详情
 
 
-export const getFarmerDetail = query => {
+export const getFarmerDetail = (query) => {
   return request({
   return request({
     url: '/wpr/farmer/info',
     url: '/wpr/farmer/info',
     method: 'get',
     method: 'get',
     params: query
     params: query
-  }) 
-}
+  });
+};

+ 37 - 0
src/api/price/index.js

@@ -0,0 +1,37 @@
+import request from '@/utils/request';
+
+// 列表
+export const getPriceList = (query) => {
+  return request({
+    url: '/wpr/priceconfig/list',
+    method: 'get',
+    params: query
+  });
+};
+
+// 新增
+export const addPrice = (data) => {
+  return request({
+    url: '/wpr/priceconfig/add',
+    method: 'post',
+    data
+  });
+};
+
+// 修改
+export const editPrice = (data) => {
+  return request({
+    url: '/wpr/priceconfig/edit',
+    method: 'put',
+    data
+  });
+};
+
+// 删除
+export const deletePrice = (farmerIds) => {
+  return request({
+    url: '/wpr/priceconfig/delete',
+    method: 'delete',
+    params: farmerIds
+  });
+};

+ 26 - 0
src/api/statistics/index.js

@@ -0,0 +1,26 @@
+import request from '@/utils/request';
+
+// 用水统计组织列表
+export const getAreaList = (query) => {
+  return request({
+    url: '/wpr/stat/area/list',
+    method: 'get',
+    params: query
+  });
+};
+// 用水统计农户列表
+export const getFarmerList = (query) => {
+  return request({
+    url: '/wpr/stat/farmer/list',
+    method: 'get',
+    params: query
+  });
+};
+// 用水统计机井列表
+export const getWaterList = (query) => {
+  return request({
+    url: '/wpr/stat/water/list',
+    method: 'get',
+    params: query
+  });
+};

+ 43 - 0
src/api/subsidypolicy/index.js

@@ -0,0 +1,43 @@
+import request from '@/utils/request';
+
+// 列表
+export const getSubsidyPolicy = (query) => {
+  return request({
+    url: '/wpr/subsidypolicy/list',
+    method: 'get',
+    params: query
+  });
+};
+// 新增
+export const addSubsidyPolicy = (data) => {
+  return request({
+    url: '/wpr/subsidypolicy/add',
+    method: 'post',
+    data
+  });
+};
+// 图片上传
+export const addUploadImg = () => {
+  return request({
+    url: '/wpr/subsidypolicy/preview/upload',
+    method: 'post',
+    data
+  });
+};
+// 修改
+export const editSubsidyPolicy = (data) => {
+  return request({
+    url: '/wpr/subsidypolicy/edit',
+    method: 'put',
+    data
+  });
+};
+
+// 删除
+export const deleteSubsidyPolicy = (farmerIds) => {
+  return request({
+    url: '/wpr/subsidypolicy/delete',
+    method: 'delete',
+    params: farmerIds
+  });
+};

+ 18 - 0
src/api/trxrcd/index.js

@@ -0,0 +1,18 @@
+import request from '@/utils/request';
+
+// 列表
+export const getTrxrcdList = (query) => {
+  return request({
+    url: '/wpr/trxrcd/list',
+    method: 'get',
+    params: query
+  });
+};
+// 新增
+export const addTrxrcd = (data) => {
+  return request({
+    url: '/wpr/trxrcd/add',
+    method: 'post',
+    data
+  });
+};

+ 14 - 0
src/assets/styles/global.scss

@@ -144,4 +144,18 @@
       }
       }
     }
     }
   }
   }
+}
+input::-webkit-inner-spin-button {
+  -webkit-appearance: none !important;
+ 
+}
+ 
+input::-webkit-outer-spin-button{
+  -webkit-appearance: none !important;
+ 
+}
+ 
+input[type="number"]{
+  -moz-appearance: textfield;
+ 
 }
 }

+ 31 - 32
src/components/SelectTree/index.vue

@@ -6,10 +6,12 @@
           :data="treeData"
           :data="treeData"
           :expand-on-click-node="false"
           :expand-on-click-node="false"
           ref="treeForm"
           ref="treeForm"
-          node-key="code"
-          @check="handleNodeCheck"
-          @check-change="handleClick"
+          node-key="cusareaId"
+          :show-checkbox="checkbox"
+          :default-checked-keys="defaultChecked"
+          @check="handleClick"
           @node-click="handleNodeClick"
           @node-click="handleNodeClick"
+          :check-on-click-node="true"
           :props="defaultProps">
           :props="defaultProps">
         </el-tree>
         </el-tree>
       </el-option>
       </el-option>
@@ -27,6 +29,14 @@ export default {
     checkVal: {
     checkVal: {
       type: String,
       type: String,
       default: ''
       default: ''
+    },
+    checkbox: {
+      type: Boolean,
+      default: false
+    },
+    checkedList: {
+      type: String,
+      default: ''
     }
     }
   },
   },
   data() {
   data() {
@@ -38,46 +48,35 @@ export default {
       },
       },
       node: {
       node: {
         cusareaName: this.checkVal
         cusareaName: this.checkVal
-      }
+      },
+      checkList: [],
+      defaultChecked: []
     }
     }
   },
   },
+  mounted() { 
+    this.defaultChecked = this.checkedList.split(',')
+  },
   watch: {
   watch: {
     checkVal: {
     checkVal: {
       handler(val) {
       handler(val) {
         this.node.cusareaName = val
         this.node.cusareaName = val
       }
       }
-    }
+    },
   },
   },
   methods: {
   methods: {
     //点击节点
     //点击节点
-handleNodeClick(data) {
-    this.node = data;
-    this.$emit('handlerClick', data)
-},
-//节点选中状态变化
-handleClick(data, checked, node){
-     if(checked){
-            this.node = data;
-            this.record.parentCode = data.code;
-            this.$refs.treeForm.setCheckedKeys([data.code]);
-     } else {
-            this.node = {};
-            this.record.parentCode = '';
-            this.$refs.treeForm.setCheckedKeys([]);
-     }
-},
-//点击复选框
-handleNodeCheck(data, checked) {
-    if (checked.checkedKeys.length > 0) {
-            this.node = data;
-            this.record.parentCode = data.code;
-            this.$refs.treeForm.setCheckedKeys([data.code]);
-    }else {
-            this.node = {};
-            this.record.parentCode = '';
-            this.$refs.treeForm.setCheckedKeys([]);
+    handleNodeClick(data) {
+      this.node = data;
+      this.$emit('handlerClick', data)
+    },
+    //节点选中状态变化
+    handleClick() {
+      this.checkList = this.$refs.treeForm.getCheckedKeys()
+      const checkNode = this.$refs.treeForm.getCheckedNodes()
+      this.node.cusareaName = checkNode[checkNode.length - 1].cusareaName
+      this.$emit('getCheckTree', this.checkList)
+      this.$emit('getCheckTreeNode', checkNode)
     }
     }
-}
   }
   }
 };
 };
 </script>
 </script>

+ 2 - 0
src/store/index.js

@@ -6,6 +6,7 @@ import user from './modules/user';
 import tagsView from './modules/tagsView';
 import tagsView from './modules/tagsView';
 import permission from './modules/permission';
 import permission from './modules/permission';
 import settings from './modules/settings';
 import settings from './modules/settings';
+import tree from './modules/tree';
 import sso from './modules/sso';
 import sso from './modules/sso';
 import getters from './getters';
 import getters from './getters';
 
 
@@ -19,6 +20,7 @@ const store = new Vuex.Store({
     tagsView,
     tagsView,
     permission,
     permission,
     settings,
     settings,
+    tree,
     sso
     sso
   },
   },
   getters
   getters

+ 23 - 0
src/store/modules/tree.js

@@ -0,0 +1,23 @@
+const state = {
+  treeList: {}
+};
+const mutations = {
+  SET_TREE: (state, payload) => {
+    console.log(state, payload, 'payload');
+    state.treeList = payload;
+  }
+};
+
+const actions = {
+  // 设置树结构
+  setTree({ commit }, data) {
+    commit('SET_TREE', data);
+  }
+};
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions
+};

+ 34 - 64
src/views/dataReport/components/report.vue

@@ -10,41 +10,13 @@
           </div>
           </div>
       </el-col>
       </el-col>
       <el-col :span="24" class="elrow-main__col-bottom">
       <el-col :span="24" class="elrow-main__col-bottom">
-        <img v-if="imgUrl" :src="imgUrl" />
         <b-table
         <b-table
           ref="tableRef"
           ref="tableRef"
           :args="{ 'highlight-current-row': true }"
           :args="{ 'highlight-current-row': true }"
           :data="loadData"
           :data="loadData"
           :columns="columns"
           :columns="columns"
           isShowIndex
           isShowIndex
-          :showPagination="loadData.length"
         >
         >
-          <template #styleImg="scope">
-            <el-image
-              :src="scope.row.imgPreview"
-              :preview-src-list="[scope.row.imgPreview]"
-              slot="error"
-              class="image-slot"
-              style="width: 100px; height: 50px"
-            >
-              <div slot="error" class="image-slot"></div>
-            </el-image>
-          </template>
-          <template #codeNo="scope">
-            <el-link
-              type="primary"
-              :underline="false"
-              @click="goDetail(scope.row)"
-              >{{ scope.row.traceCodeApplyConcat }}</el-link
-            >
-          </template>
-          <template #useNumber="scope">
-            {{ scope.row.useNumber + '/' + scope.row.totalNumber }}
-          </template>
-          <template #finishGoodName="scope">
-            {{ scope.row.finishGoodName&&scope.row.finishgoodNo?scope.row.finishGoodName + '-' + scope.row.finishgoodNo:'' }}
-          </template>
-
           <template #operate="scope">
           <template #operate="scope">
             <el-link
             <el-link
               size="small"
               size="small"
@@ -70,8 +42,8 @@
 </template>
 </template>
 
 
 <script>
 <script>
+import { getAreaList } from '@/api/statistics/index.js'
 import BTable from '@/components/Table/index.vue';
 import BTable from '@/components/Table/index.vue';
-import { assign, omit } from 'lodash-es';
 
 
 export default {
 export default {
   name:"report",
   name:"report",
@@ -79,57 +51,55 @@ export default {
     columns:{
     columns:{
       type: Array,
       type: Array,
       default: []
       default: []
+    },
+    currentClickId: {
+      type: Number | String
+    },
+    currentYear: {
+      type: Number | String
     }
     }
   },
   },
   components: { BTable },
   components: { BTable },
   data() {
   data() {
     return {
     return {
-      imgUrl: '',
-      baseImageUrl: process.env.VUE_APP_BASE_RESOURCE_PREFIX,
-      form: {
-        productName: ''
-      },
       loading: false,
       loading: false,
       associationManageShow: false,
       associationManageShow: false,
     };
     };
   },
   },
-  created() {},
   methods: {
   methods: {
     addAssociation() {
     addAssociation() {
       this.associationManageShow = true
       this.associationManageShow = true
     },
     },
-    loadData(parameter) {
-      const queryform = this.form;
-      const payload = omit(assign({}, parameter, queryform, {orderByColumn:'tarcecodeapplyCreateddate',isAsc:'desc'}), []);
-      return this.getTableData(payload);
+    loadData() {
+      return this.getTableData();
     },
     },
-    getTableData(payload) {
+    getTableData() {
       return Promise.resolve({
       return Promise.resolve({
         data: [{
         data: [{
-            person:"王大虎",
-            area: '2016-05-02',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1518 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-04',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1517 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-01',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1519 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-03',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1516 弄'
-          }]
+          person:"王大虎",
+          area: '2016-05-02',
+          name: '王小虎',
+          phone: 1588888888,
+          address: '上海市普陀区金沙江路 1518 弄'
+        }, {
+          person:"王大虎",
+          area: '2016-05-04',
+          name: '王小虎',
+          phone: 1588888888,
+          address: '上海市普陀区金沙江路 1517 弄'
+        }, {
+          person:"王大虎",
+          area: '2016-05-01',
+          name: '王小虎',
+          phone: 1588888888,
+          address: '上海市普陀区金沙江路 1519 弄'
+        }, {
+          person:"王大虎",
+          area: '2016-05-03',
+          name: '王小虎',
+          phone: 1588888888,
+          address: '上海市普陀区金沙江路 1516 弄'
+        }]
       })
       })
     },
     },
     handleSearch() {
     handleSearch() {

+ 132 - 31
src/views/dataReport/intakeWaterAnalysis.vue

@@ -5,35 +5,60 @@
       style="height:100%;padding-bottom:32px;"
       style="height:100%;padding-bottom:32px;"
     >
     >
     <el-card style="margin:16px;height: 100%; overflow-y: auto">
     <el-card style="margin:16px;height: 100%; overflow-y: auto">
-      <data-report-left></data-report-left>
+      <data-report-left
+        @setCurrentData="setCurrentData"
+        :treeData="treeData"
+      ></data-report-left>
     </el-card>
     </el-card>
     </el-col>
     </el-col>
     <el-col
     <el-col
       :span="20"
       :span="20"
       style="padding: 16px 16px 16px 0; height: 100%;"
       style="padding: 16px 16px 16px 0; height: 100%;"
     >
     >
-    <Report :columns="columns" style="height:100%;">
-      <template slot="headerLeft">
-        <el-input
-          v-model="form.tarcecodeapplyno"
-          style="width: 250px;margin-right: 16px;"
-          placeholder="请输入溯源码编号"
-          @keyup.enter.native="handleSearch"
-          clearable
-        />
-        <el-button
-          type="primary"
-          size="small"
-          @click="handleSearch"
-          >查询</el-button
-        > 
-      </template>
-    </Report>
+    <el-card style="height: 100%; overflow-y: auto">
+      <el-col :span="24" class="elrow-main__col-top">
+        <div>
+          <el-select
+            v-model="currentYear"
+            style="width: 250px;margin-right: 16px;"
+          >
+            <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
+          <el-button
+            type="primary"
+            size="small"
+            @click="handleSearch"
+            >查询</el-button
+          > 
+        </div>
+        <i
+          class="el-icon-download"
+          @click="downloadHandler"
+        ></i>
+      </el-col>
+      <el-col :span="24" class="elrow-main__col-bottom">
+        <b-table
+          ref="tableRef"
+          :args="{ 'highlight-current-row': true }"
+          :data="loadData"
+          :columns="columns"
+          isShowIndex
+        >
+        </b-table>
+      </el-col>
+    </el-card>
     </el-col>
     </el-col>
   </el-row>
   </el-row>
 </template>
 </template>
 
 
 <script>
 <script>
+import { getAreaList } from '@/api/statistics/index.js'
+import { getTree } from '@/api/tree.js'
 import BTable from '@/components/Table/index.vue';
 import BTable from '@/components/Table/index.vue';
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import Report from './components/report.vue'
 import Report from './components/report.vue'
@@ -44,33 +69,53 @@ export default {
   data() {
   data() {
     return {
     return {
       activeName:'first',
       activeName:'first',
-      form: {
-        productName: ''
-      },
+      currentYear: '',
       loading: false,
       loading: false,
       associationManageShow: false,
       associationManageShow: false,
+      treeData: [],
+      currentClickId: '',
+      options: [],
+      queryParams: {},
       columns: [
       columns: [
         {
         {
-          label: '机井名称',
-          prop: 'person',
+          label: '区域名称',
+          prop: 'cusareaName',
+          customRender: '',
+          align: 'center'
+        },
+        {
+          label: '实际用水量(m³)',
+          prop: 'waterNumTotal',
+          customRender: '',
+          align: 'center'
+        },
+        {
+          label: '额定用水量(m³)',
+          prop: 'waterrightAmount',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
-          label: '累计用水量(m³)',
-          prop: 'area',
+          label: '面积',
+          prop: 'waterrightAreasize',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
-          label: '灌溉次数',
-          prop: 'name',
+          label: '实际亩均用水量(m³)',
+          prop: 'actualPerMuWater',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
-          label: '累计用电量(°)',
-          prop: 'phone',
+          label: '额定亩均水量(m³)',
+          prop: 'ratedPerMuWater',
+          customRender: '',
+          align: 'center'
+        },
+        {
+          label: '使用占计划比(%)',
+          prop: 'proportion',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         }
         }
@@ -78,8 +123,59 @@ export default {
     };
     };
   },
   },
   methods: {
   methods: {
-    handleClick(){},
-    handleSearch() {},
+    handleSearch() {
+      this.$refs.tableRef.refresh(true);
+    },
+    async loadData() {
+      this.setYear()
+      if (!this.currentClickId) {
+        const treeList = this.$store.state.tree.treeList
+        let res = []
+        if (treeList.code === '000000') {
+          res = treeList
+        } else { 
+          res = await getTree()
+          this.$store.dispatch('tree/setTree',res)
+        }
+        this.treeData = res?.data
+        this.currentClick = res?.data[0]
+        this.currentClickId = this.currentClick?.cusareaId
+      }
+      return this.getTableData(this.currentClickId);
+    },
+    downloadHandler() {
+      this.download(
+        'wpr/stat/area/export',
+        {
+          ...this.queryParams
+        },
+        `FmsCrop_${new Date().getTime()}.xlsx`
+      );
+    },
+    getTableData(areaId) {
+      this.queryParams = {
+        areaId,
+        year: this.currentYear
+      }
+      return getAreaList({
+        ...this.queryParams
+      })
+    },
+    setYear() {
+      let date = new Date
+      let currentYear = date.getFullYear()
+      this.currentYear = currentYear
+      for (let i = 0; i < 5; i++) {
+        this.options.push({
+          label: currentYear - i,
+          value: currentYear - i
+        })  
+      }
+    },
+   setCurrentData(areaId) {
+      this.currentClickId = areaId
+      this.$refs.tableRef.refresh(false);
+    },
   }
   }
 };
 };
 </script>
 </script>
@@ -104,5 +200,10 @@ export default {
       margin-right: 5px;
       margin-right: 5px;
     }
     }
   }
   }
+  .el-icon-download{
+    font-size:26px;
+    color:#14A478;
+    cursor: pointer;
+  }
 }
 }
 </style>
 </style>

+ 117 - 45
src/views/dataReport/saveWaterAnalysis.vue

@@ -1,76 +1,105 @@
 <template>
 <template>
   <el-row class="el-row-container" v-loading="loading">
   <el-row class="el-row-container" v-loading="loading">
-    <el-col
-      :span="4"
-      style="height:100%;padding-bottom:32px;"
-    >
-    <el-card style="margin:16px;height: 100%; overflow-y: auto">
-      <data-report-left></data-report-left>
-    </el-card>
+    <el-col :span="4" style="height:100%;padding-bottom:32px;">
+      <el-card style="margin:16px;height: 100%; overflow-y: auto">
+        <data-report-left @setCurrentData="setCurrentData" :treeData="treeData"></data-report-left>
+      </el-card>
     </el-col>
     </el-col>
-    <el-col
-      :span="20"
-      style="padding: 16px 16px 16px 0; height: 100%;"
-    >
-    <Report :columns="columns" style="height:100%;">
-      <template slot="headerLeft">
-        <el-input
-          v-model="form.tarcecodeapplyno"
-          style="width: 250px;margin-right:16px;"
-          placeholder="请输入溯源码编号"
-          @keyup.enter.native="handleSearch"
-          clearable
-        />
-        <el-button
-          type="primary"
-          size="small"
-          @click="handleSearch"
-          >查询</el-button
-        > 
-      </template>
-    </Report>
+    <el-col :span="20" style="padding: 16px 16px 16px 0; height: 100%;">
+      <el-card style="height: 100%; overflow-y: auto">
+        <el-col :span="24" class="elrow-main__col-top">
+          <div style="display:flex">
+            <el-select v-model="currentYear" style="width: 250px;margin-right: 16px;">
+              <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+              </el-option>
+            </el-select>
+            <el-input style="width: 250px;margin-right: 16px;"
+              placeholder="请输入农户编号/姓名/电话"
+              v-model="keyword"
+            />
+            <el-button type="primary" size="small" @click="handleSearch">查询</el-button>
+          </div>
+        </el-col>
+        <el-col :span="24" class="elrow-main__col-bottom">
+          <b-table
+            ref="tableRef"
+            :args="{ 'highlight-current-row': true }"
+            :data="loadData"
+            :columns="columns"
+            isShowIndex
+          >
+          </b-table>
+        </el-col>
+      </el-card>
     </el-col>
     </el-col>
   </el-row>
   </el-row>
 </template>
 </template>
 
 
 <script>
 <script>
+import { getFarmerList } from '@/api/statistics/index.js'
+import { getTree } from '@/api/tree.js'
 import BTable from '@/components/Table/index.vue';
 import BTable from '@/components/Table/index.vue';
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import Report from './components/report.vue'
 import Report from './components/report.vue'
 
 
 export default {
 export default {
-  name:"waterManage",
-  components: { BTable,DataReportLeft,Report},
+  name: "waterManage",
+  components: { BTable, DataReportLeft, Report },
   data() {
   data() {
     return {
     return {
-      activeName:'first',
-      form: {
-        productName: ''
-      },
+      activeName: 'first',
+      currentYear: '',
+      keyword: '',
       loading: false,
       loading: false,
       associationManageShow: false,
       associationManageShow: false,
+      treeData: [],
+      currentClickId: '',
+      options: [],
       columns: [
       columns: [
         {
         {
-          label: '机井名称',
-          prop: 'person',
+          label: '年度',
+          prop: 'year',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
-          label: '累计用水量(m³)',
-          prop: 'area',
+          label: '区域',
+          prop: 'cusareaName',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
-          label: '灌溉次数',
-          prop: 'name',
+          label: '农户',
+          prop: 'farmerName',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
-          label: '累计用电量(°)',
-          prop: 'phone',
+          label: '额定水权',
+          prop: 'farmerWramount',
+          customRender: '',
+          align: 'center'
+        },
+        {
+          label: '已用水权',
+          prop: 'waterNumTotal',
+          customRender: '',
+          align: 'center'
+        },
+        {
+          label: '去年同期节水比率',
+          prop: 'proportion',
+          customRender: '',
+          align: 'center'
+        },
+        {
+          label: '土地面积(亩)',
+          prop: 'farmerAreasize',
+          customRender: '',
+          align: 'center'
+        }, {
+          label: '剩余水权(立方)',
+          prop: 'farmerWrbalance',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         }
         }
@@ -78,25 +107,68 @@ export default {
     };
     };
   },
   },
   methods: {
   methods: {
-    handleClick(){},
-    handleSearch() {},
+    handleSearch() {
+      this.$refs.tableRef.refresh(true);
+    },
+    async loadData() {
+      this.setYear()
+      if (!this.currentClickId) {
+        const treeList = this.$store.state.tree.treeList
+        let res = []
+        if (treeList.code === '000000') {
+          res = treeList
+        } else {
+          res = await getTree()
+          this.$store.dispatch('tree/setTree', res)
+        }
+        this.treeData = res?.data
+        this.currentClick = res?.data[0]
+        this.currentClickId = this.currentClick?.cusareaId
+      }
+      return this.getTableData(this.currentClickId);
+    },
+    getTableData(areaId) {
+      return getFarmerList({
+        areaId,
+        year: this.currentYear,
+        keyword: this.keyword
+      })
+    },
+    setYear() {
+      let date = new Date
+      let currentYear = date.getFullYear()
+      this.currentYear = currentYear
+      for (let i = 0; i < 5; i++) {
+        this.options.push({
+          label: currentYear - i,
+          value: currentYear - i
+        })
+      }
+    },
+    setCurrentData(areaId) {
+      this.currentClickId = areaId
+      this.$refs.tableRef.refresh(false);
+    },
   }
   }
 };
 };
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-.el-row-container{
+.el-row-container {
   height: 100%;
   height: 100%;
 }
 }
+
 .elrow-main__col-top {
 .elrow-main__col-top {
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
   justify-content: space-between;
   justify-content: space-between;
   margin-bottom: 15px;
   margin-bottom: 15px;
+
   .top-left {
   .top-left {
     height: 100%;
     height: 100%;
     display: flex;
     display: flex;
     align-items: center;
     align-items: center;
+
     i {
     i {
       background-color: #40d5ec;
       background-color: #40d5ec;
       height: 45%;
       height: 45%;

+ 105 - 42
src/views/dataReport/waterConsumption.vue

@@ -1,76 +1,91 @@
 <template>
 <template>
   <el-row class="el-row-container" v-loading="loading">
   <el-row class="el-row-container" v-loading="loading">
-    <el-col
-      :span="4"
-      style="height:100%;padding-bottom:32px;"
-    >
-    <el-card style="margin:16px;height: 100%; overflow-y: auto">
-      <data-report-left></data-report-left>
-    </el-card>
+    <el-col :span="4" style="height:100%;padding-bottom:32px;">
+      <el-card style="margin:16px;height: 100%; overflow-y: auto">
+        <data-report-left @setCurrentData="setCurrentData" :treeData="treeData"></data-report-left>
+      </el-card>
     </el-col>
     </el-col>
-    <el-col
-      :span="20"
-      style="padding: 16px 16px 16px 0; height: 100%;"
-    >
-    <Report :columns="columns" style="height:100%;">
-      <template slot="headerLeft">
-        <el-input
-          v-model="form.tarcecodeapplyno"
-          style="width: 250px;margin-right:16px;"
-          placeholder="请输入溯源码编号"
-          @keyup.enter.native="handleSearch"
-          clearable
-        />
-        <el-button
-          type="primary"
-          size="small"
-          @click="handleSearch"
-          >查询</el-button
-        > 
-      </template>
-    </Report>
+    <el-col :span="20" style="padding: 16px 16px 16px 0; height: 100%;">
+      <el-card style="height: 100%; overflow-y: auto">
+        <el-col :span="24" class="elrow-main__col-top">
+          <div style="display:flex;width:100%;justify-content:space-between;align-items:center">
+            <div>
+              <el-date-picker
+                v-model="dateValue"
+                type="daterange"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                :default-time="['00:00:00', '23:59:59']"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                style="width: 300px; margin-right: 20px"
+              >
+              </el-date-picker>
+              <el-input style="width: 250px;margin-right: 16px;" placeholder="请输入机井名称" v-model="keyword" />
+              <el-button type="primary" size="small" @click="handleSearch">查询</el-button>
+            </div>
+            <i
+              class="el-icon-download"
+              @click="downloadHandler"
+            ></i>
+          </div>
+        </el-col>
+        <el-col :span="24" class="elrow-main__col-bottom">
+          <b-table ref="tableRef" :args="{ 'highlight-current-row': true }" :data="loadData" :columns="columns"
+            isShowIndex>
+          </b-table>
+        </el-col>
+      </el-card>
     </el-col>
     </el-col>
   </el-row>
   </el-row>
 </template>
 </template>
 
 
 <script>
 <script>
+import { getWaterList } from '@/api/statistics/index.js'
+import { getTree } from '@/api/tree.js'
 import BTable from '@/components/Table/index.vue';
 import BTable from '@/components/Table/index.vue';
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import Report from './components/report.vue'
 import Report from './components/report.vue'
 
 
 export default {
 export default {
-  name:"waterManage",
-  components: { BTable,DataReportLeft,Report},
+  name: "waterConsumption",
+  components: { BTable, DataReportLeft, Report },
   data() {
   data() {
     return {
     return {
-      activeName:'first',
-      form: {
-        productName: ''
-      },
+      currentYear: '',
+      keyword: '',
       loading: false,
       loading: false,
-      associationManageShow: false,
+      treeData: [],
+      currentClickId: '',
+      dateValue: [],
+      areaId: '',
+      queryParams: {},
       columns: [
       columns: [
         {
         {
           label: '机井名称',
           label: '机井名称',
-          prop: 'person',
+          prop: 'waterName',
+          customRender: '',
+          align: 'center'
+        }, {
+          label: '终端编号',
+          prop: 'waterNum',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '累计用水量(m³)',
           label: '累计用水量(m³)',
-          prop: 'area',
+          prop: 'waterNumTotal',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '灌溉次数',
           label: '灌溉次数',
-          prop: 'name',
+          prop: 'count',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '累计用电量(°)',
           label: '累计用电量(°)',
-          prop: 'phone',
+          prop: 'elecNumTotal',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         }
         }
@@ -78,25 +93,68 @@ export default {
     };
     };
   },
   },
   methods: {
   methods: {
-    handleClick(){},
-    handleSearch() {},
+    handleSearch() {
+      this.$refs.tableRef.refresh(true);
+    },
+    downloadHandler() {
+      this.download(
+        'wpr/stat/water/export',
+        {
+          ...this.queryParams
+        },
+        `FmsCrop_${new Date().getTime()}.xlsx`
+      );
+    },
+    async loadData() {
+      if (!this.currentClickId) {
+        const treeList = this.$store.state.tree.treeList
+        let res = []
+        if (treeList.code === '000000') {
+          res = treeList
+        } else {
+          res = await getTree()
+          this.$store.dispatch('tree/setTree', res)
+        }
+        this.treeData = res?.data
+        this.currentClick = res?.data[0]
+        this.currentClickId = this.currentClick?.cusareaId
+      }
+      return this.getTableData(this.currentClickId);
+    },
+    getTableData(areaId) {
+      const [startTime, endTime] = this.dateValue ??= []
+      this.queryParams = {
+        areaId,
+        startTime,
+        endTime,
+        keyword: this.keyword
+      }
+      return getWaterList({...this.queryParams })
+    },
+    setCurrentData(areaId) {
+      this.currentClickId = areaId
+      this.$refs.tableRef.refresh(false);
+    },
   }
   }
 };
 };
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-.el-row-container{
+.el-row-container {
   height: 100%;
   height: 100%;
 }
 }
+
 .elrow-main__col-top {
 .elrow-main__col-top {
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
   justify-content: space-between;
   justify-content: space-between;
   margin-bottom: 15px;
   margin-bottom: 15px;
+
   .top-left {
   .top-left {
     height: 100%;
     height: 100%;
     display: flex;
     display: flex;
     align-items: center;
     align-items: center;
+
     i {
     i {
       background-color: #40d5ec;
       background-color: #40d5ec;
       height: 45%;
       height: 45%;
@@ -104,5 +162,10 @@ export default {
       margin-right: 5px;
       margin-right: 5px;
     }
     }
   }
   }
+  .el-icon-download{
+    font-size:26px;
+    color:#14A478;
+    cursor: pointer;
+  }
 }
 }
 </style>
 </style>

+ 24 - 16
src/views/infrastructure/components/ladderLikeWaterPrice.vue

@@ -3,27 +3,32 @@
     <el-col :span="24">
     <el-col :span="24">
       <el-form-item
       <el-form-item
         v-for="(item,index) in list"
         v-for="(item,index) in list"
-        :key="item.serial"
-        :label="item.label">
+        :key="index"
+        :label="'第'+(index+1) +'阶梯'"
+        >
         <el-row>
         <el-row>
           <el-col :span="24">
           <el-col :span="24">
             <el-row>
             <el-row>
               <el-col :span="4">
               <el-col :span="4">
-                <el-input disabled/>
+                <el-input disabled v-model="item.pricestepUsagemin"/>
               </el-col>
               </el-col>
               <el-col :span="2" style="display: flex;align-items:center">
               <el-col :span="2" style="display: flex;align-items:center">
                 <div class="divider_center"></div>
                 <div class="divider_center"></div>
               </el-col>
               </el-col>
               <el-col :span="4" style="display:flex;align-items:center">
               <el-col :span="4" style="display:flex;align-items:center">
-                <el-input/>
+                <el-input
+                  type="number"
+                  v-model="item.pricestepUsagemax"
+                  @change="(val) => changeMaxHandler(val,index)"
+                />
               </el-col>
               </el-col>
               <el-col :span="2">
               <el-col :span="2">
                 <span style="margin:0 10px;">吨</span>
                 <span style="margin:0 10px;">吨</span>
               </el-col>
               </el-col>
               <el-col :span="8" style="display:flex">
               <el-col :span="8" style="display:flex">
-                <el-input style="width: 50%;margin-right:10px;"/>元/吨
+                <el-input type="number" v-model="item.pricestepUnitprice" style="width: 50%;margin-right:10px;"/>元/吨
               </el-col>
               </el-col>
-              <el-col :span="2" v-if="item.isCanDelete">
+              <el-col :span="2" v-if="index + 1 == list.length && list.length > 2">
                 <span style="margin: 0 10px;">
                 <span style="margin: 0 10px;">
                   <i class="el-icon-delete-solid delete-icon" @click="() => handlerDeleteIcon(index)"></i>
                   <i class="el-icon-delete-solid delete-icon" @click="() => handlerDeleteIcon(index)"></i>
                 </span>
                 </span>
@@ -32,7 +37,7 @@
           </el-col>
           </el-col>
         </el-row>
         </el-row>
       </el-form-item>
       </el-form-item>
-      <div class="add" @click="handlerShowThree" v-if="!shouldShowThree">
+      <div class="add" @click="handlerShowThree" v-if="this.list.length < 3">
         <i class="el-icon-circle-plus-outline add-icon"></i>
         <i class="el-icon-circle-plus-outline add-icon"></i>
         添加
         添加
       </div>
       </div>
@@ -42,13 +47,17 @@
 <script>
 <script>
 export default {
 export default {
   name: 'ladderLikeWaterPrice',
   name: 'ladderLikeWaterPrice',
-  props:[ 'type','list' ],
+  props: ['list','type'],
   data() {
   data() {
     return {
     return {
-      shouldShowThree: false,
+      shouldShowThree: this.list.length == 3,
     }
     }
   },
   },
   methods: {
   methods: {
+    changeMaxHandler(row,index) { 
+      this.$emit('changeList', this.list,this.type, row, index)
+      // Vue.set(this.list)
+    },
     handlerDeleteIcon(index){
     handlerDeleteIcon(index){
       this.shouldShowThree = false
       this.shouldShowThree = false
       this.list.splice(index,1)
       this.list.splice(index,1)
@@ -59,13 +68,12 @@ export default {
     },
     },
     // 打开第三阶梯
     // 打开第三阶梯
     handlerShowThree() {
     handlerShowThree() {
-      this.$emit("addShow",this.type)
-      // this.list.push({
-      //   serial:3,
-      //   label: '第3阶梯水价',
-      //   isCanDelete: true,
-      //   isShow: true
-      // })
+      this.list.push({
+        pricestepUsagemin: this.list[this.list.length - 1].pricestepUsagemax || '',
+        pricestepUsagemax: '',
+        pricestepUnitprice: '',
+        pricestepNum: '0'
+      })
       this.shouldShowThree = true
       this.shouldShowThree = true
     },
     },
   }
   }

+ 54 - 32
src/views/infrastructure/components/recompose.vue

@@ -37,15 +37,15 @@
         </el-form-item>
         </el-form-item>
       </el-row>
       </el-row>
       <el-row>
       <el-row>
-        <el-form-item label="" prop="productName">
-          <span>(上级组织:xxxx镇 总面积:56665亩 额定水权:6555m³ 剩余水权:6544)</span>
+        <el-form-item label="">
+          <span>(上级组织:{{ infoData.cusareaName }} 总面积:{{ infoData.areasizeResidue || 0 }} 亩 额定水权:{{ infoData.waterrightAmount || 0 }} m³ 剩余水权:{{ infoData.amountResidue || 0 }})</span>
         </el-form-item>
         </el-form-item>
       </el-row>
       </el-row>
       <el-row>
       <el-row>
-        <el-form-item label="面积:" prop="productName">
+        <el-form-item label="面积:" prop="area">
           <el-input
           <el-input
             placeholder="请输入"
             placeholder="请输入"
-            v-model="textarea"
+            v-model="baseForm.area"
             style="width:250px;"
             style="width:250px;"
           >
           >
           </el-input>
           </el-input>
@@ -53,18 +53,23 @@
         </el-form-item>
         </el-form-item>
       </el-row>
       </el-row>
       <el-row>
       <el-row>
-        <el-form-item label="额定水权:" prop="productName">
+        <el-form-item label="额定水权:" prop="ratedWater">
           <el-input
           <el-input
             placeholder="请输入"
             placeholder="请输入"
             style="width:250px;"
             style="width:250px;"
-            v-model="textarea">
+            v-model="baseForm.ratedWater">
           </el-input>
           </el-input>
           <span style="margin-left:5px">m³ </span>
           <span style="margin-left:5px">m³ </span>
         </el-form-item>
         </el-form-item>
       </el-row>
       </el-row>
       <el-row>
       <el-row>
-        <el-form-item label="" prop="productName">
-          <span>(上年实际用水量:65546m³ 剩余水权:6555m³)</span>
+        <el-form-item label="">
+          <span>(上年实际用水量:65546m³)</span>
+        </el-form-item>
+      </el-row>
+      <el-row>
+        <el-form-item label="">
+          <span>(首次新增时0、第二年新增时默认上一年)</span>
         </el-form-item>
         </el-form-item>
       </el-row>
       </el-row>
       <el-row>
       <el-row>
@@ -72,7 +77,8 @@
           <el-input
           <el-input
             placeholder="请输入"
             placeholder="请输入"
             style="width:250px;"
             style="width:250px;"
-            v-model="textarea">
+            disabled
+            v-model="averageWater">
           </el-input>
           </el-input>
           <span style="margin-left:5px">亩/m³</span>
           <span style="margin-left:5px">亩/m³</span>
         </el-form-item>
         </el-form-item>
@@ -80,8 +86,7 @@
     </el-form>
     </el-form>
 
 
     <div style="text-align: right">
     <div style="text-align: right">
-      <el-button type="info" plain @click="resetForm('baseForm')"
-        >取消</el-button
+      <el-button type="info" plain @click="resetForm('baseForm')">取消</el-button
       >
       >
       <el-button
       <el-button
         type="primary"
         type="primary"
@@ -97,7 +102,7 @@
 
 
 <script>
 <script>
 import { assign } from 'lodash-es';
 import { assign } from 'lodash-es';
-import { getWaterrightUpareaInfo } from '@/api/waterright/index.js'
+import { getWaterrightUpareaInfo, editWaterright } from '@/api/waterright/index.js'
 
 
 export default {
 export default {
   name: 'recompose',
   name: 'recompose',
@@ -120,23 +125,19 @@ export default {
     return {
     return {
       dialogSubmitLoading: false,
       dialogSubmitLoading: false,
       dialogVisible: false,
       dialogVisible: false,
-      baseForm: { },
+      baseForm: {
+        area: '',
+        ratedWater: '',
+      },
+      averageWater: 0,
+      infoData: {},
       hasFetched: false,
       hasFetched: false,
       rules: {
       rules: {
-        stockAmount: [
-          { required: true, message: '请选择负责人', trigger: 'blur' }
-        ],
-        sourceinfoId: [
-          { required: true, message: '请选择管辖范围', trigger: 'blur' }
-        ],
-        productName: [
-          { required: true, message: '请输入协会名称', trigger: 'blur' }
-        ],
-        supplierId: [
-          { required: false, message: '请输入协会介绍', trigger: 'blur' }
+        area: [
+          { required: true, message: '请选输入面积', trigger: 'blur' }
         ],
         ],
-        goodsSpecValue: [
-          { required: true, message: '请选择规格', trigger: 'blur' }
+        ratedWater: [
+          { required: true, message: '请选输入额定水权', trigger: 'blur' }
         ]
         ]
       }
       }
     };
     };
@@ -158,29 +159,50 @@ export default {
         this.visible && this.getWaterrightUpareaList(val)
         this.visible && this.getWaterrightUpareaList(val)
       },
       },
       deep: true
       deep: true
-    }
+    },
+    baseForm: {
+      handler(val) { 
+        const { area, ratedWater } = val
+        if (area && ratedWater) {
+          this.averageWater =  (+ratedWater / +area).toFixed(2)
+        }
+      },
+      deep: true
+     }
   },
   },
   methods: {
   methods: {
     async getWaterrightUpareaList(row) {
     async getWaterrightUpareaList(row) {
       const { waterrightId } = row
       const { waterrightId } = row
-      console.log(waterrightId,'waterrightIdwaterrightId')
-      await getWaterrightUpareaInfo({
+      const res = await getWaterrightUpareaInfo({
         waterrightId
         waterrightId
       })
       })
+      this.infoData = res?.data
     },
     },
-    resetForm(formName) {
+    resetForm() {
       this.dialogVisible = false;
       this.dialogVisible = false;
     },
     },
+    async editRecompose() { 
+      const { waterrightId } = this.editRow
+      const { area: waterrightAreasize, ratedWater: waterrightAmount } = this.baseForm
+      const params = {
+        waterrightId,
+        waterrightAreasize,
+        waterrightAmount
+      }
+      const res = await editWaterright(params)
+      this.handleClose()
+      this.$emit('refresh')
+    },
     submitForm(formName) {
     submitForm(formName) {
       this.$refs[formName].validate((valid) => {
       this.$refs[formName].validate((valid) => {
-        console.log(valid)
+        valid && this.editRecompose(formName)
       })
       })
     },
     },
 
 
     handleClose() {
     handleClose() {
       this.$emit('update:visible', false);
       this.$emit('update:visible', false);
       this.$emit('resetEdit');
       this.$emit('resetEdit');
-      this.resetForm('baseForm');
+      this.resetForm();
     },
     },
   }
   }
 };
 };

+ 172 - 59
src/views/infrastructure/components/setAnnualWaterRight.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <el-dialog
   <el-dialog
-    title="新增"
+    title="修改"
     :visible.sync="dialogVisible"
     :visible.sync="dialogVisible"
     :close-on-click-modal="false"
     :close-on-click-modal="false"
     :close-on-press-escape="false"
     :close-on-press-escape="false"
@@ -21,7 +21,6 @@
       label-position="right"
       label-position="right"
       label-width="100px"
       label-width="100px"
       :model="baseForm"
       :model="baseForm"
-      :rules="rules"
       size="small"
       size="small"
     >
     >
     <el-row>
     <el-row>
@@ -29,8 +28,12 @@
         <el-form-item label="所属区域">
         <el-form-item label="所属区域">
           <el-row>
           <el-row>
             <el-col :span="24">
             <el-col :span="24">
-              <el-select style="width: 100%" placeholder="请选择您的行政区">
-              </el-select>
+              <el-input
+                style="width: 100%"
+                placeholder="请选择您的行政区"
+                disabled
+                v-model="editRow.cusareaName"
+              />
             </el-col>
             </el-col>
           </el-row>
           </el-row>
         </el-form-item>
         </el-form-item>
@@ -42,23 +45,31 @@
         <el-form-item label="水价计费方式">
         <el-form-item label="水价计费方式">
           <el-row>
           <el-row>
             <el-col :span="18">
             <el-col :span="18">
-              <el-radio v-model="constantWaterPrice" label="1">恒定水价</el-radio>
-              <el-radio v-model="constantWaterPrice" label="2">阶梯水价</el-radio>
+              <el-radio v-model="constantWaterPrice" label="0">恒定水价</el-radio>
+              <el-radio v-model="constantWaterPrice" label="1">阶梯水价</el-radio>
             </el-col>
             </el-col>
           </el-row>
           </el-row>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="水价" v-if="constantWaterPrice == 1">
+        <el-form-item label="水价" 
+          v-if="constantWaterPrice == 0" 
+          prop="priceconfigWaterunitprice"
+          :rules="[{ required: true, message: '请选择您的恒定水价', trigger: 'blur' }]"
+        >
           <el-row>
           <el-row>
             <el-col :span="18">
             <el-col :span="18">
-              <el-input style="width: 50%" />
+              <el-input
+                style="width: 50%"
+                type="number"
+                v-model="baseForm.priceconfigWaterunitprice"
+              />
             </el-col>
             </el-col>
           </el-row>
           </el-row>
         </el-form-item>
         </el-form-item>
         <ladderLikeWaterPrice
         <ladderLikeWaterPrice
           v-else
           v-else
           :type="'water'"
           :type="'water'"
-          @addShow="addShowHandler"
-          :list="waterlist"
+          @changeList="changeList"
+          :list="baseForm.waterPriceSteps || []"
         />
         />
       </el-col>
       </el-col>
     </el-row>
     </el-row>
@@ -68,15 +79,24 @@
         <el-form-item label="电价计费方式">
         <el-form-item label="电价计费方式">
           <el-row>
           <el-row>
             <el-col :span="18">
             <el-col :span="18">
-              <el-radio v-model="ladderLikeWaterPrice" label="1">恒定电价</el-radio>
-              <el-radio v-model="ladderLikeWaterPrice" label="2">阶梯电价</el-radio>
+              <el-radio v-model="ladderLikeWaterPrice" label="0">恒定电价</el-radio>
+              <el-radio v-model="ladderLikeWaterPrice" label="1">阶梯电价</el-radio>
             </el-col>
             </el-col>
           </el-row>
           </el-row>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="电价" v-if="ladderLikeWaterPrice == 1">
+        <el-form-item
+          label="电价"
+          v-if="ladderLikeWaterPrice == 0"
+          :rules="[{ required: true, message: '请选择您的恒定电价', trigger: 'blur' }]"
+          prop="priceconfigElectricityunitprice"
+        >
           <el-row>
           <el-row>
             <el-col :span="18">
             <el-col :span="18">
-              <el-input style="width: 50%" />
+              <el-input 
+                style="width: 50%" 
+                type="number"
+                v-model="baseForm.priceconfigElectricityunitprice"
+              />
               <span style="display:inline-block;margin-left:5px">元/度</span>
               <span style="display:inline-block;margin-left:5px">元/度</span>
             </el-col>
             </el-col>
           </el-row>
           </el-row>
@@ -84,8 +104,8 @@
         <ladderLikeWaterPrice 
         <ladderLikeWaterPrice 
           v-else
           v-else
           :type="'electricity'"
           :type="'electricity'"
-          @addShow="addShowHandler"
-          :list="electricitylist"
+          @changeList="changeList"
+          :list="baseForm.elecPriceSteps || []"
         />
         />
       </el-col>
       </el-col>
     </el-row>
     </el-row>
@@ -109,7 +129,9 @@
 
 
 <script>
 <script>
 import { assign } from 'lodash-es';
 import { assign } from 'lodash-es';
+import { Message  } from 'element-ui'
 import ladderLikeWaterPrice from './ladderLikeWaterPrice.vue'
 import ladderLikeWaterPrice from './ladderLikeWaterPrice.vue'
+import { editPrice } from '@/api/price/index.js'
 export default {
 export default {
   name: 'setAnnualWaterRight',
   name: 'setAnnualWaterRight',
   props: {
   props: {
@@ -121,6 +143,9 @@ export default {
     visible: {
     visible: {
       type: Boolean,
       type: Boolean,
       default: false
       default: false
+    },
+    editRow: {
+      type: Object,
     }
     }
   },
   },
   components: {
   components: {
@@ -129,35 +154,37 @@ export default {
   data() {
   data() {
     return {
     return {
       dialogSubmitLoading: false,
       dialogSubmitLoading: false,
-      waterlist: [{
-        serial:1,
-        label: '第1阶梯水价',
-        isCanDelete: false,
-      },{
-        serial:2,
-        label: '第2阶梯水价',
-        isCanDelete: false,
-      }],
-      electricitylist: [{
-        serial:1,
-        label: '第1阶梯电价',
-        isCanDelete: false,
-      },{
-        serial:2,
-        label: '第2阶梯电价',
-        isCanDelete: false,
-      }],
-      constantWaterPrice:'2',
-      ladderLikeWaterPrice:'1',
+      constantWaterPrice: '1',
+      ladderLikeWaterPrice: '1',
       dialogVisible: false,
       dialogVisible: false,
+      priceconfigElectricityunitprice: '',
+      priceconfigWaterunitprice: '',
       baseForm: {
       baseForm: {
-        productName: '',
-        stockAmount: '',
-        goodsSpecValue: '',
-        supplierId: '',
+        priceconfigElectricityunitprice: '',
+        priceconfigWaterunitprice: '',
+        elecPriceSteps: [],
+        waterPriceSteps: []
       },
       },
       hasFetched: false,
       hasFetched: false,
-      rules: {
+      rules1: {
+        priceconfigWaterunitprice: [
+          { required: true, message: '输入您的恒定水价', trigger: 'blur' }
+        ],
+      },
+      rules2: {
+        priceconfigElectricityunitprice: [
+          { required: true, message: '输入您的恒定电价', trigger: 'blur' }
+        ]
+      },
+      rules3: {
+        priceconfigWaterunitprice: [
+          { required: true, message: '输入您的恒定水价', trigger: 'blur' }
+        ],
+        priceconfigElectricityunitprice: [
+          { required: true, message: '输入您的恒定电价', trigger: 'blur' }
+        ]
+      },
+      rules4: {
         stockAmount: [
         stockAmount: [
           { required: true, message: '请选择负责人', trigger: 'blur' }
           { required: true, message: '请选择负责人', trigger: 'blur' }
         ],
         ],
@@ -193,41 +220,127 @@ export default {
       handler(val) {
       handler(val) {
         assign(this.baseForm, val);
         assign(this.baseForm, val);
       }
       }
-    }
+    },
+    editRow: {
+      handler(val) {
+        this.constantWaterPrice = val?.priceconfigWaterchargingtype
+        this.ladderLikeWaterPrice = val?.priceconfigElectricitychargingtype
+        this.baseForm.priceconfigWaterunitprice = val?.priceconfigWaterunitprice
+        this.baseForm.priceconfigElectricityunitprice = val?.priceconfigElectricityunitprice
+        this.baseForm.elecPriceSteps = val?.elecPriceSteps?.length > 0 ? val.elecPriceSteps : [{ 
+          pricestepUsagemin: '0',
+          pricestepUsagemax: '',
+          pricestepUnitprice: '',
+        }, {
+          pricestepUsagemin: '',
+          pricestepUsagemax: '',
+          pricestepUnitprice: '',
+        }]
+        this.baseForm.waterPriceSteps = val?.waterPriceSteps?.length > 0 ? val?.waterPriceSteps : [{
+          pricestepUsagemin: '0',
+          pricestepUsagemax: '',
+          pricestepUnitprice: '',
+        }, {
+          pricestepUsagemin: '',
+          pricestepUsagemax: '',
+          pricestepUnitprice: '',
+        }]
+      }
+    },
+    immediate: true
   },
   },
   methods: {
   methods: {
-    addShowHandler(type) {
-      if(type === 'water') {
-        this.waterlist.push({
-          serial:3,
-          label: '第3阶梯水价',
-          isCanDelete: true,
-          isShow: true
-        })
-      }else {
-        this.electricitylist.push({
-          serial:3,
-          label: '第3阶梯电价',
-          isCanDelete: true,
-          isShow: true
-        })
+    changeList(list,type,row, index) {
+      if (type === 'water') {
+        if (this.baseForm.waterPriceSteps[index + 1]) {
+          const params = this.baseForm.waterPriceSteps[index + 1]
+          params.pricestepUsagemin = row
+          this.$set(this.baseForm.waterPriceSteps, index + 1, params)
+         }
+      } else { 
+        if (this.baseForm.elecPriceSteps[index + 1]) {
+          const params = this.baseForm.elecPriceSteps[index + 1]
+          params.pricestepUsagemin = row
+          this.$set(this.baseForm.elecPriceSteps, index + 1, params)
+         }
+      }
+     },
+    async editPriceHandler() {
+      const { areaId, priceconfigId } = this.editRow
+      if (this.constantWaterPrice == 1) { 
+        for (let i = 0; i < this.baseForm.waterPriceSteps.length; i++) {
+          const waterPriceItem = this.baseForm.waterPriceSteps[i]
+          if (waterPriceItem?.pricestepUsagemin != ''  && waterPriceItem?.pricestepUsagemax != '' && +waterPriceItem?.pricestepUsagemax < +waterPriceItem?.pricestepUsagemin) {
+            Message({
+              type: 'warning',
+              message: `水价第${i+1}阶梯的最大量不能小于最小量`
+            })
+            return
+          }
+          if (!waterPriceItem?.pricestepUnitprice) {
+            Message({
+              type: 'warning',
+              message: '请正确输入您的水价信息'
+            })
+            return
+          }
+          waterPriceItem.pricestepNum = i
+        }
       }
       }
+      if (this.ladderLikeWaterPrice == 1) {
+        for (let i = 0; i < this.baseForm.elecPriceSteps.length; i++) {
+          const elePriceItem = this.baseForm.elecPriceSteps[i]
+          if (elePriceItem?.pricestepUsagemin != '' && elePriceItem?.pricestepUsagemax != '' && +elePriceItem?.pricestepUsagemax < +elePriceItem?.pricestepUsagemin) {
+            Message({
+              type: 'warning',
+              message: `电价第${i + 1}阶梯的最大量不能小于最小量`
+            })
+            return
+          }
+          if (!elePriceItem?.pricestepUnitprice) {
+            Message({
+              type: 'warning',
+              message: '请正确输入您的电价信息'
+            })
+            return
+          }
+          elePriceItem.pricestepNum = i
+        }
+      }
+      
+      const params = {
+        areaId,
+        priceconfigId,
+        priceconfigWaterchargingtype: this.constantWaterPrice,
+        priceconfigElectricityunitprice:  this.ladderLikeWaterPrice == 0 ? this.baseForm.priceconfigElectricityunitprice: '0',
+        priceconfigElectricitychargingtype: this.ladderLikeWaterPrice,
+        priceconfigWaterunitprice: this.constantWaterPrice == 0 ? this.baseForm.priceconfigWaterunitprice :'0',
+        waterPriceSteps: this.constantWaterPrice == 1 ? this.baseForm.waterPriceSteps : [],
+        elePriceSteps: this.ladderLikeWaterPrice == 1 ? this.baseForm.elecPriceSteps : [],
+      }
+      await editPrice(
+        params
+      )
+      this.handleClose()
     },
     },
     resetForm(formName) {
     resetForm(formName) {
       this.$refs[formName].resetFields();
       this.$refs[formName].resetFields();
-      this.resetFormData();
+      // this.resetFormData();
       this.dialogVisible = false;
       this.dialogVisible = false;
     },
     },
     resetFormData() {
     resetFormData() {
       this.baseForm = {};
       this.baseForm = {};
     },
     },
+
     submitForm(formName) {
     submitForm(formName) {
+      console.log(this.priceconfigElectricityunitprice,'priceconfigElectricityunitpricepriceconfigElectricityunitprice')
       this.$refs[formName].validate((valid) => {
       this.$refs[formName].validate((valid) => {
-        console.log(valid)
+        valid && this.editPriceHandler()
       })
       })
     },
     },
     handleClose() {
     handleClose() {
       this.$emit('update:visible', false);
       this.$emit('update:visible', false);
+      this.$emit('clearEdit')
       this.resetForm('baseForm');
       this.resetForm('baseForm');
     },
     },
   }
   }

+ 2 - 2
src/views/infrastructure/components/waterPriceSetting.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <el-dialog
   <el-dialog
-    title="设置年限"
+    title="请选择需设置的年度"
     :visible.sync="dialogVisible"
     :visible.sync="dialogVisible"
     :close-on-click-modal="false"
     :close-on-click-modal="false"
     :close-on-press-escape="false"
     :close-on-press-escape="false"
@@ -20,7 +20,7 @@
         <el-col :span="24">
         <el-col :span="24">
           <el-row>
           <el-row>
             <el-col :span="24" style="text-align:left">
             <el-col :span="24" style="text-align:left">
-              <el-form-item label="联系电话" prop="dateTime">
+              <el-form-item label="年度" prop="dateTime">
                 <el-row>
                 <el-row>
                   <el-col>
                   <el-col>
                     <el-select
                     <el-select

+ 35 - 42
src/views/infrastructure/deviceSetup.vue

@@ -5,7 +5,10 @@
       style="height:100%;padding-bottom:32px;"
       style="height:100%;padding-bottom:32px;"
     >
     >
     <el-card style="margin:16px;height: 100%; overflow-y: auto">
     <el-card style="margin:16px;height: 100%; overflow-y: auto">
-      <data-report-left></data-report-left>
+      <data-report-left
+        @setCurrentData="setCurrentData"
+        :treeData="treeData"
+      ></data-report-left>
     </el-card>
     </el-card>
     </el-col>
     </el-col>
     <el-col
     <el-col
@@ -34,7 +37,6 @@
           </div>
           </div>
         </el-col>
         </el-col>
         <el-col :span="24" class="elrow-main__col-bottom">
         <el-col :span="24" class="elrow-main__col-bottom">
-          <img v-if="imgUrl" :src="imgUrl" />
           <b-table
           <b-table
             ref="tableRef"
             ref="tableRef"
             :args="{ 'highlight-current-row': true }"
             :args="{ 'highlight-current-row': true }"
@@ -43,38 +45,12 @@
             isShowIndex
             isShowIndex
             :showPagination="loadData.length"
             :showPagination="loadData.length"
           >
           >
-            <template #styleImg="scope">
-              <el-image
-                :src="scope.row.imgPreview"
-                :preview-src-list="[scope.row.imgPreview]"
-                slot="error"
-                class="image-slot"
-                style="width: 100px; height: 50px"
-              >
-                <div slot="error" class="image-slot"></div>
-              </el-image>
-            </template>
-            <template #codeNo="scope">
-              <el-link
-                type="primary"
-                :underline="false"
-                @click="goDetail(scope.row)"
-                >{{ scope.row.traceCodeApplyConcat }}</el-link
-              >
-            </template>
             <template #status="scope">
             <template #status="scope">
               <span style="display:flex;align-items:center;justify-content:center">
               <span style="display:flex;align-items:center;justify-content:center">
                 <span class="status"></span>
                 <span class="status"></span>
                 {{ scope.row.name }}
                 {{ scope.row.name }}
               </span>
               </span>
             </template>
             </template>
-            <template #useNumber="scope">
-              {{ scope.row.useNumber + '/' + scope.row.totalNumber }}
-            </template>
-            <template #finishGoodName="scope">
-              {{ scope.row.finishGoodName&&scope.row.finishgoodNo?scope.row.finishGoodName + '-' + scope.row.finishgoodNo:'' }}
-            </template>
-
             <template #operate="scope">
             <template #operate="scope">
               <el-link
               <el-link
                 size="small"
                 size="small"
@@ -118,24 +94,23 @@
 </template>
 </template>
 
 
 <script>
 <script>
+import { getTree } from '@/api/tree.js'
 import BTable from '@/components/Table/index.vue';
 import BTable from '@/components/Table/index.vue';
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import setPreferencs from './components/setPreferenc.vue'
 import setPreferencs from './components/setPreferenc.vue'
-import { assign, omit } from 'lodash-es';
 
 
 export default {
 export default {
   name: 'deviceSetup',
   name: 'deviceSetup',
   components: { BTable,DataReportLeft,setPreferencs },
   components: { BTable,DataReportLeft,setPreferencs },
   data() {
   data() {
     return {
     return {
-      dateValue:"",
-      imgUrl: '',
-      baseImageUrl: process.env.VUE_APP_BASE_RESOURCE_PREFIX,
+      treeData: [],
       form: {
       form: {
         productName: ''
         productName: ''
       },
       },
       loading: false,
       loading: false,
       associationManageShow: false,
       associationManageShow: false,
+      currentClickId: '',
       columns: [
       columns: [
         {
         {
           label: '水电双计编号',
           label: '水电双计编号',
@@ -185,20 +160,37 @@ export default {
       ]
       ]
     };
     };
   },
   },
-  created() {},
   methods: {
   methods: {
-    setPreferencHandler() {
-      this.associationManageShow = true
+    async searchHandler(farmerName, areaId) {
+      const res = await getFarmerList({
+        farmerName,
+        areaId
+      })
+      this.userList = res.data
     },
     },
-    setPreferences(row) {
-
+    async loadData() {
+      if (!this.currentClickId) {
+        const treeList = this.$store.state.tree.treeList
+        let res = []
+        if (treeList.code === '000000') {
+          res = treeList
+        } else {
+          res = await getTree()
+          this.$store.dispatch('tree/setTree', res)
+        }
+        this.treeData = res?.data
+        this.currentClick = res?.data[0]
+        this.currentClickId = this.currentClick?.cusareaId
+      }
+      this.searchHandler(this.farmerName, this.currentClickId)
+      return this.getTableData(this.currentClickId);
     },
     },
-    loadData(parameter) {
-      const queryform = this.form;
-      const payload = omit(assign({}, parameter, queryform, {orderByColumn:'tarcecodeapplyCreateddate',isAsc:'desc'}), []);
-      return this.getTableData(payload);
+    setCurrentData(areaId) {
+      this.currentClickId = areaId
+      this.$refs.tableRef.refresh(false);
+      this.searchHandler(this.farmerName, areaId)
     },
     },
-    getTableData(payload) {
+    getTableData() {
       return Promise.resolve({
       return Promise.resolve({
         data: [{
         data: [{
             person:"王大虎",
             person:"王大虎",
@@ -234,6 +226,7 @@ export default {
       this.$refs.sourceCodeDetail.open(row.tarcecodeapplyBatchno)
       this.$refs.sourceCodeDetail.open(row.tarcecodeapplyBatchno)
     },
     },
     download(row) {
     download(row) {
+      alert(2)
     }
     }
   }
   }
 };
 };

+ 4 - 0
src/views/infrastructure/status.js

@@ -0,0 +1,4 @@
+export const priceConfigEmnu = {
+  Waterchargingtype: 'priceconfigWaterchargingtype',
+  Electricitychargingtype: 'priceconfigElectricitychargingtype'
+};

+ 245 - 129
src/views/infrastructure/waterElectricityPriceSetting.vue

@@ -1,27 +1,21 @@
 <template>
 <template>
   <el-row class="el-row-container" v-loading="loading">
   <el-row class="el-row-container" v-loading="loading">
-    <el-col
-      :span="24"
-      style="padding: 16px; height: 100%"
-    >
+    <el-col :span="24" style="padding: 16px; height: 100%">
       <el-card style="height: 100%; overflow-y: auto">
       <el-card style="height: 100%; overflow-y: auto">
         <el-col :span="24" class="elrow-main__col-top">
         <el-col :span="24" class="elrow-main__col-top">
-          <div>
-            <el-select
-              placeholder="行政区域(全国)"
-            >
+          <div style="display:flex">
+            <select-tree 
+              :placeholder="'行政区域(全国)'" 
+              style="width:50%"
+              :treeData="treeData"
+              @handlerClick="handlerClick"
+              :checkVal="cusareaName"
+            ></select-tree>
+            <el-select style="margin:0 20px;width: 50%" placeholder="全部" v-model="priceConfigVal" @change="handleChange">
+              <el-option v-for="(item, index) in priceConfigList" :key="index" :label="item.label" :value="item.value">
+              </el-option>
             </el-select>
             </el-select>
-            <el-select
-              style="margin:0 20px"
-              placeholder="全部"
-            >
-            </el-select>
-            <el-button
-              type="primary"
-              size="small"
-              @click="handleSearch"
-              >查询</el-button
-            >
+            <el-button type="primary" size="small" @click="handleSearch">查询</el-button>
           </div>
           </div>
           <!-- <div class="top-left">
           <!-- <div class="top-left">
             <el-button
             <el-button
@@ -33,133 +27,212 @@
           ></div> -->
           ></div> -->
         </el-col>
         </el-col>
         <el-col :span="24" class="elrow-main__col-bottom">
         <el-col :span="24" class="elrow-main__col-bottom">
-          <img v-if="imgUrl" :src="imgUrl" />
-          <b-table
-            ref="tableRef"
+          <b-table ref="tableRef" 
+            border
             :args="{ 'highlight-current-row': true }"
             :args="{ 'highlight-current-row': true }"
-            :data="loadData"
+            :data="loadData" 
             :columns="columns"
             :columns="columns"
-            isShowIndex
-            :showPagination="loadData.length"
-          >
-            <template #styleImg="scope">
-              <el-image
-                :src="scope.row.imgPreview"
-                :preview-src-list="[scope.row.imgPreview]"
-                slot="error"
-                class="image-slot"
-                style="width: 100px; height: 50px"
-              >
-                <div slot="error" class="image-slot"></div>
-              </el-image>
+            isShowIndex>
+            <template #priceconfigWaterchargingtype="scope">
+              {{ scope.row.priceconfigWaterchargingtype == 1 ? '是': '否'}}
             </template>
             </template>
-            <template #codeNo="scope">
-              <el-link
-                type="primary"
-                :underline="false"
-                @click="goDetail(scope.row)"
-                >{{ scope.row.traceCodeApplyConcat }}</el-link
-              >
+            <template #waterPriceName="scope">
+              <span v-if="scope.row.priceconfigWaterchargingtype == 1">
+                <div v-for="(item, index) in scope.row.waterPriceSteps" :key="index" class="pricestepNum">
+                  {{ 
+                    item.pricestepNum == '0' ? '第1阶梯' : item.pricestepNum == '1' ? '第2阶梯' : '第3阶梯'
+                  }}
+                </div>
+              </span>
+              <span v-else>
+                <div class="pricestepNum">
+                  恒定水价
+                </div>
+              </span>
             </template>
             </template>
-            <template #useNumber="scope">
-              {{ scope.row.useNumber + '/' + scope.row.totalNumber }}
+            <template #priceYield="scope">
+              <span v-if="scope.row.priceconfigWaterchargingtype == 1">
+                <div v-for="(item, index) in scope.row.waterPriceSteps" :key="index" class="pricestepNum">
+                  {{ item.pricestepUsagemin + ' - ' + item.pricestepUsagemax }}
+                </div>
+              </span>
+              <span v-else>
+                <div class="pricestepNum">
+                  -
+                </div>
+              </span>
             </template>
             </template>
-            <template #finishGoodName="scope">
-              {{ scope.row.finishGoodName&&scope.row.finishgoodNo?scope.row.finishGoodName + '-' + scope.row.finishgoodNo:'' }}
+            <template #averageWaterPrice="scope">
+              <span v-if="scope.row.priceconfigWaterchargingtype == 1">
+                <div v-for="(item, index) in scope.row.waterPriceSteps" :key="index" class="pricestepNum">
+                  {{ item.pricestepUnitprice }}
+                </div>
+              </span>
+              <span v-else>
+                <div class="pricestepNum">
+                  {{ scope.row.priceconfigWaterunitprice }}
+                </div>
+              </span>
+            </template>
+            <template #stepPriceOrNot="scope">
+             {{ scope.row.priceconfigElectricitychargingtype == 1 ? '是' : '否' }}
+            </template>
+            <template #elecPriceName="scope">
+              <span v-if="scope.row.priceconfigElectricitychargingtype == 1">
+                <div v-for="(item, index) in scope.row.elecPriceSteps" :key="index" class="pricestepNum">
+                  {{
+                    item.pricestepNum == '0' ? '第1阶梯' : item.pricestepNum == '1' ? '第2阶梯': '第3阶梯'
+                  }}
+                </div>
+              </span>
+              <span v-else>
+                <div class="pricestepNum">
+                  恒定电价
+                </div>
+              </span>
+            </template>
+            <template #elecPriceSteps="scope">
+              <span v-if="scope.row.priceconfigElectricitychargingtype == 1">
+                <div v-for="(item, index) in scope.row.elecPriceSteps" :key="index" class="pricestepNum">
+                  {{ item.pricestepUsagemin + ' - ' + item.pricestepUsagemax }}
+                </div>
+              </span>
+              <span v-else>
+                <div class="pricestepNum">
+                  -
+                </div>
+              </span>
+            </template>
+            <template #averageElecPriceSteps="scope">
+              <span v-if="scope.row.priceconfigElectricitychargingtype == 1">
+              <div v-for="(item, index) in scope.row.elecPriceSteps" :key="index" class="pricestepNum">
+                {{ item.pricestepUnitprice }}
+              </div>
+              </span>
+              <span v-else>
+                <div class="pricestepNum">
+                  {{ scope.row.priceconfigElectricityunitprice }}
+                </div>
+              </span>
             </template>
             </template>
-
             <template #operate="scope">
             <template #operate="scope">
-              <el-link
-                size="small"
-                :underline="false"
-                type="primary"
-                style="margin-right: 10px"
-                @click="editAssociation(scope.row)"
-                >修改</el-link
-              >
-              <el-link
-              size="small"
-              :underline="false"
-              type="danger"
-              style="margin-right: 10px"
-              @click="download(scope.row)"
-              >删除</el-link
-            >
+              <el-link size="small" :underline="false" type="primary" style="margin-right: 10px"
+                @click="editAssociation(scope.row)">修改</el-link>
+              <el-link size="small" :underline="false" type="danger" style="margin-right: 10px"
+                @click="deleteHandler(scope.row)">删除</el-link>
             </template>
             </template>
           </b-table>
           </b-table>
         </el-col>
         </el-col>
       </el-card>
       </el-card>
     </el-col>
     </el-col>
-    <set-annual-water-right :visible.sync="associationManageShow"/>
+    <set-annual-water-right
+      :visible.sync="associationManageShow"
+      :editRow="editRow"
+      @clearEdit="handlerClearEdit"
+    />
   </el-row>
   </el-row>
 </template>
 </template>
 
 
 <script>
 <script>
+import { Message } from 'element-ui';
+import SelectTree from '@/components/SelectTree';
 import BTable from '@/components/Table/index.vue';
 import BTable from '@/components/Table/index.vue';
-import { assign, omit } from 'lodash-es';
+import { Waterchargingtype, Electricitychargingtype } from './status'
 import setAnnualWaterRight from './components/setAnnualWaterRight.vue'
 import setAnnualWaterRight from './components/setAnnualWaterRight.vue'
+import { getPriceList, deletePrice } from '@/api/price/index.js'
+import { getTree } from '@/api/tree.js'
 
 
 export default {
 export default {
   name: 'waterElectricityPriceSetting',
   name: 'waterElectricityPriceSetting',
-  components: { BTable,setAnnualWaterRight },
+  components: { BTable, setAnnualWaterRight, SelectTree },
   data() {
   data() {
     return {
     return {
-      dateValue:"",
-      imgUrl: '',
-      baseImageUrl: process.env.VUE_APP_BASE_RESOURCE_PREFIX,
       form: {
       form: {
         productName: ''
         productName: ''
       },
       },
+      areaId: '',
       loading: false,
       loading: false,
       associationManageShow: false,
       associationManageShow: false,
+      priceConfigVal: '',
+      priceconfigWaterchargingtype: '',
+      priceconfigElectricitychargingtype: '',
+      editRow: {
+        cusareaName: ''
+      },
+      treeData: [],
+      cusareaName: '',
+      priceConfigList: [
+        {
+          value: '',
+          label: '全部',
+          type: 'all'
+        },
+        {
+          value: '0',
+          label: '恒定水价',
+          type: Waterchargingtype
+        }, {
+          value: '1',
+          label: '阶梯水价',
+          type: Waterchargingtype
+        }, {
+          value: '2',
+          label: '恒定电价',
+          type: Electricitychargingtype
+        }, {
+          value: '3',
+          label: '阶梯电价',
+          type: Electricitychargingtype
+        },
+      ],
       columns: [
       columns: [
         {
         {
           label: '行政区',
           label: '行政区',
-          prop: 'person',
+          prop: 'cusareaName',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '是否阶梯水价',
           label: '是否阶梯水价',
-          prop: 'area',
-          customRender: '',
+          prop: 'priceconfigWaterchargingtype',
+          customRender: 'priceconfigWaterchargingtype',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '水价名称',
           label: '水价名称',
-          prop: 'name',
-          customRender: '',
+          prop: 'waterPriceSteps',
+          customRender: 'waterPriceName',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '水量(吨)',
           label: '水量(吨)',
-          prop: 'phone',
-          customRender: '',
+          prop: 'waterPriceSteps',
+          customRender: 'priceYield',
           align: 'center'
           align: 'center'
-        },{
+        }, {
           label: '水价(元/吨)',
           label: '水价(元/吨)',
-          prop: 'phone',
-          customRender: '',
+          prop: 'waterPriceSteps',
+          customRender: 'averageWaterPrice',
           align: 'center'
           align: 'center'
-        },{
+        }, {
           label: '是否阶梯电价',
           label: '是否阶梯电价',
-          prop: 'phone',
-          customRender: '',
+          prop: 'priceconfigElectricitychargingtype',
+          customRender: 'stepPriceOrNot',
           align: 'center'
           align: 'center'
-        },{
+        }, {
           label: '电价名称',
           label: '电价名称',
-          prop: 'phone',
-          customRender: '',
+          prop: 'elecPriceSteps',
+          customRender: 'elecPriceName',
           align: 'center'
           align: 'center'
-        },{
+        }, {
           label: '电量(度)',
           label: '电量(度)',
-          prop: 'phone',
-          customRender: '',
+          prop: 'elecPriceSteps',
+          customRender: 'elecPriceSteps',
           align: 'center'
           align: 'center'
-        },{
+        }, {
           label: '电价(元/度)',
           label: '电价(元/度)',
-          prop: 'phone',
-          customRender: '',
+          prop: 'elecPriceSteps',
+          customRender: 'averageElecPriceSteps',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
@@ -170,44 +243,67 @@ export default {
       ]
       ]
     };
     };
   },
   },
-  created() {},
+  mounted() {
+    this.getWaterrightList()
+  },
   methods: {
   methods: {
-    editAssociation() {
+    editAssociation(row) {
+      this.editRow = row
       this.associationManageShow = true
       this.associationManageShow = true
     },
     },
-    loadData(parameter) {
-      const queryform = this.form;
-      const payload = omit(assign({}, parameter, queryform, {orderByColumn:'tarcecodeapplyCreateddate',isAsc:'desc'}), []);
-      return this.getTableData(payload);
+    async getWaterrightList() {
+      if (!this.areaId) {
+        const res = await getTree()
+        this.treeData = res?.data
+        this.treeData.unshift({
+          cusareaId: '',
+          cusareaName: '行政区域(全国)'
+        })
+        this.areaId = this.treeData[0].cusareaId
+      }
     },
     },
-    getTableData(payload) {
-      return Promise.resolve({
-        data: [{
-            person:"王大虎",
-            area: '2016-05-02',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1518 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-04',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1517 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-01',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1519 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-03',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1516 弄'
-          }]
-      })
+    handlerClick(value) {
+      this.areaId = value?.cusareaId
+    },
+    handlerClearEdit() {
+      this.editRow = {
+        cusareaName: ''
+      }
+      this.handleSearch()
+    },
+    handleChange(value) {
+      switch (value) {
+        case '0':
+          this.priceconfigWaterchargingtype = 0
+          this.priceconfigElectricitychargingtype = ''
+          break
+        case '1':
+          this.priceconfigWaterchargingtype = 1
+          this.priceconfigElectricitychargingtype = ''
+          break
+        case '2':
+          this.priceconfigWaterchargingtype = ''
+          this.priceconfigElectricitychargingtype = 0
+          break
+        case '3':
+          this.priceconfigWaterchargingtype = ''
+          this.priceconfigElectricitychargingtype = 1
+          break
+        default:
+          this.priceconfigWaterchargingtype = ''
+          this.priceconfigElectricitychargingtype = ''
+      }
+    },
+    loadData() {
+      return this.getTableData();
+    },
+    getTableData() {
+      const params = {
+        areaId: this.areaId,
+        priceconfigWaterchargingtype: this.priceconfigWaterchargingtype,
+        priceconfigElectricitychargingtype: this.priceconfigElectricitychargingtype
+      }
+      return getPriceList(params)
     },
     },
     handleSearch() {
     handleSearch() {
       this.$refs.tableRef.refresh(true);
       this.$refs.tableRef.refresh(true);
@@ -215,15 +311,35 @@ export default {
     goDetail(row) {
     goDetail(row) {
       this.$refs.sourceCodeDetail.open(row.tarcecodeapplyBatchno)
       this.$refs.sourceCodeDetail.open(row.tarcecodeapplyBatchno)
     },
     },
-    download(row) {
+    deleteHandler(row) {
+      const { priceconfigId } = row
+      this.$modal
+      .confirm(`是否确认删除`)
+      .then(() => {
+        deletePrice({
+          priceconfigIds: priceconfigId
+        }).then(() => {
+          Message({ message: "删除成功", type: 'success' });
+          this.handleSearch()
+        })
+      })
     }
     }
   }
   }
 };
 };
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-.el-row-container{
-  height: 100%;
+.pricestepNum{
+  border-bottom: 1px solid #EBEEF5;
+}
+::v-deep .el-table__row{
+  .el-table__cell{
+    padding: 0;
+  }
+  .cell{
+    padding: 0;
+    line-height:44px;
+  }
 }
 }
 .elrow-main__col-top {
 .elrow-main__col-top {
   display: flex;
   display: flex;

+ 15 - 4
src/views/infrastructure/waterEstablishment.vue

@@ -61,7 +61,7 @@
               >
               >
             </template>
             </template>
           </b-table> -->
           </b-table> -->
-          <el-table
+        <el-table
           ref="tableRef"
           ref="tableRef"
           :args="{ 'highlight-current-row': true }"
           :args="{ 'highlight-current-row': true }"
           :data="tableData"
           :data="tableData"
@@ -97,7 +97,12 @@
       </el-card>
       </el-card>
     </el-col>
     </el-col>
     <set-annual-water-right :visible.sync="associationManageShow"/>
     <set-annual-water-right :visible.sync="associationManageShow"/>
-    <recompose :visible.sync="recomposeShow" :editRow="editRow" @resetEdit="resetEdit"/>
+    <recompose
+      :visible.sync="recomposeShow"
+      :editRow="editRow"
+      @resetEdit="resetEdit"
+      @refresh="getWaterrightList"
+    />
     <water-price-setting :visible.sync="waterprice" @refresh="getWaterrightList"/>
     <water-price-setting :visible.sync="waterprice" @refresh="getWaterrightList"/>
   </el-row>
   </el-row>
 </template>
 </template>
@@ -184,7 +189,14 @@ export default {
     },
     },
     async getWaterrightList() {
     async getWaterrightList() {
       if(!this.areaId) {
       if(!this.areaId) {
-        const res = await getTree()
+        const treeList = this.$store.state.tree.treeList
+        let res = []
+        if (treeList.code === '000000') {
+          res = treeList
+        } else {
+          res = await getTree()
+          this.$store.dispatch('tree/setTree', res)
+        }
         this.treeData = res?.data
         this.treeData = res?.data
         this.cusareaName ||= this.treeData[0].cusareaName
         this.cusareaName ||= this.treeData[0].cusareaName
         this.areaId = this.treeData[0].cusareaId
         this.areaId = this.treeData[0].cusareaId
@@ -213,7 +225,6 @@ export default {
       return {}
       return {}
     },
     },
     handlerRecompose(row) {
     handlerRecompose(row) {
-      console.log(row,'rowrworowo')
       this.editRow = row
       this.editRow = row
       this.recomposeShow = true
       this.recomposeShow = true
     }
     }

+ 14 - 12
src/views/monitoringMamage/index.vue

@@ -180,7 +180,6 @@ import BTable from '@/components/Table/index.vue';
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import realTimeMonitor from './components/realTimeMonitor.vue';
 import realTimeMonitor from './components/realTimeMonitor.vue';
 import IrrigationRecord from './components/IrrigationRecord.vue';
 import IrrigationRecord from './components/IrrigationRecord.vue';
-import { assign, omit } from 'lodash-es';
 import { getTree } from '@/api/tree.js'
 import { getTree } from '@/api/tree.js'
 
 
 export default {
 export default {
@@ -268,12 +267,17 @@ export default {
     };
     };
   },
   },
   methods: {
   methods: {
-    getTreeList() {
-      getTree().then(res=>{
-        const data = res?.data
-        console.log(data,'datattdaytsdysty')
-        this.treeData = data
-      })
+    async getTreeList() {
+      const treeList = this.$store.state.tree.treeList
+      let res = []
+      if (treeList.code === '000000') {
+        res = treeList
+      } else {
+        res = await getTree()
+        this.$store.dispatch('tree/setTree', res)
+      }
+      const data = res?.data
+      this.treeData = data
     },
     },
     irrigationShowHistory() {
     irrigationShowHistory() {
       this.irrigationShow = true
       this.irrigationShow = true
@@ -281,12 +285,10 @@ export default {
     realTime() {
     realTime() {
       this.realTimeShow = true
       this.realTimeShow = true
     },
     },
-    loadData(parameter) {
-      const queryform = this.form;
-      const payload = omit(assign({}, parameter, queryform, {orderByColumn:'tarcecodeapplyCreateddate',isAsc:'desc'}), []);
-      return this.getTableData(payload);
+    loadData() {
+      return this.getTableData();
     },
     },
-    getTableData(payload) {
+    getTableData() {
       return Promise.resolve({
       return Promise.resolve({
         data: [{
         data: [{
           person:"王大虎",
           person:"王大虎",

+ 8 - 1
src/views/peasantHouseholdManage/index.vue

@@ -223,7 +223,14 @@ export default {
     },
     },
     async loadData() {
     async loadData() {
       if(!this.currentClickId ) {
       if(!this.currentClickId ) {
-        const res = await getTree()
+        const treeList = this.$store.state.tree.treeList
+        let res = []
+        if (treeList.code === '000000') {
+          res = treeList
+        } else {
+          res = await getTree()
+          this.$store.dispatch('tree/setTree', res)
+        }
         this.treeData = res?.data
         this.treeData = res?.data
         this.currentClick = res?.data[0]
         this.currentClick = res?.data[0]
         this.currentClickId = this.currentClick?.cusareaId
         this.currentClickId = this.currentClick?.cusareaId

+ 9 - 32
src/views/waterCardManage/index.vue

@@ -67,7 +67,6 @@
             ></div>
             ></div>
         </el-col>
         </el-col>
         <el-col :span="24" class="elrow-main__col-bottom">
         <el-col :span="24" class="elrow-main__col-bottom">
-          <img v-show="imgUrl" :src="imgUrl" />
           <b-table
           <b-table
             ref="tableRef"
             ref="tableRef"
             :args="{ 'highlight-current-row': true }"
             :args="{ 'highlight-current-row': true }"
@@ -75,25 +74,6 @@
             :columns="columns"
             :columns="columns"
             isShowIndex
             isShowIndex
           >
           >
-            <template #styleImg="scope">
-              <el-image
-                :src="scope.row.imgPreview"
-                :preview-src-list="[scope.row.imgPreview]"
-                slot="error"
-                class="image-slot"
-                style="width: 100px; height: 50px"
-              >
-                <div slot="error" class="image-slot"></div>
-              </el-image>
-            </template>
-            <template #codeNo="scope">
-              <el-link
-                type="primary"
-                :underline="false"
-                @click="goDetail(scope.row)"
-                >{{ scope.row.traceCodeApplyConcat }}</el-link
-              >
-            </template>
             <template #status="scope">
             <template #status="scope">
               <span style="display:flex;align-items:center;justify-content:center">
               <span style="display:flex;align-items:center;justify-content:center">
                 {{ scope.row.cardStatusContent }}
                 {{ scope.row.cardStatusContent }}
@@ -104,13 +84,6 @@
                 {{ Number(scope.row.cardAmount).toFixed(2) }}
                 {{ Number(scope.row.cardAmount).toFixed(2) }}
               </span>
               </span>
             </template>
             </template>
-            <template #useNumber="scope">
-              {{ scope.row.useNumber + '/' + scope.row.totalNumber }}
-            </template>
-            <template #finishGoodName="scope">
-              {{ scope.row.finishGoodName&&scope.row.finishgoodNo?scope.row.finishGoodName + '-' + scope.row.finishgoodNo:'' }}
-            </template>
-
             <template #operate="scope">
             <template #operate="scope">
               <el-link
               <el-link
                 size="small"
                 size="small"
@@ -186,7 +159,7 @@
 import { Message } from 'element-ui';
 import { Message } from 'element-ui';
 import { getFarmerList } from '@/api/farmer/list.js'
 import { getFarmerList } from '@/api/farmer/list.js'
 import { getTree } from '@/api/tree.js'
 import { getTree } from '@/api/tree.js'
-import { getCardList,editCard,deleteCard,getCardDetail } from '@/api/card/index.js'
+import { getCardList,editCard,deleteCard } from '@/api/card/index.js'
 import BTable from '@/components/Table/index.vue';
 import BTable from '@/components/Table/index.vue';
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import DataReportLeft from '@/components/DataReportLeft/index.vue'
 import AddedICCard from './components/addedICCard.vue'
 import AddedICCard from './components/addedICCard.vue'
@@ -225,9 +198,6 @@ export default {
         label: '注销'
         label: '注销'
       }],
       }],
       detailType: false,
       detailType: false,
-      dateValue:"",
-      imgUrl: '',
-      baseImageUrl: process.env.VUE_APP_BASE_RESOURCE_PREFIX,
       form: {
       form: {
         productName: ''
         productName: ''
       },
       },
@@ -338,7 +308,14 @@ export default {
     },
     },
     async loadData() {
     async loadData() {
       if(!this.currentClickId ) {
       if(!this.currentClickId ) {
-        const res = await getTree()
+        const treeList = this.$store.state.tree.treeList
+        let res = []
+        if (treeList.code === '000000') {
+          res = treeList
+        } else {
+          res = await getTree()
+          this.$store.dispatch('tree/setTree', res)
+        }
         this.treeData = res?.data
         this.treeData = res?.data
         this.currentClick = res?.data[0]
         this.currentClick = res?.data[0]
         this.currentClickId = this.currentClick?.cusareaId
         this.currentClickId = this.currentClick?.cusareaId

+ 107 - 61
src/views/waterManage/component/associationManage.vue

@@ -18,46 +18,41 @@
     >
     >
       <el-row :gutter="10">
       <el-row :gutter="10">
         <el-col :span="24">
         <el-col :span="24">
-          <el-form-item label="协会名称:" prop="productName">
+          <el-form-item label="协会名称:" prop="assocName">
             <el-row :gutter="5">
             <el-row :gutter="5">
               <el-col :span="23">
               <el-col :span="23">
                 <el-input
                 <el-input
                   type="input"
                   type="input"
                   :autosize="{ minRows: 2}"
                   :autosize="{ minRows: 2}"
                   placeholder="请输入协会名称"
                   placeholder="请输入协会名称"
-                  v-model="textarea">
+                  v-model="baseForm.assocName">
                 </el-input>
                 </el-input>
               </el-col>
               </el-col>
             </el-row>
             </el-row>
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
         <el-col :span="24">
         <el-col :span="24">
-          <el-form-item label="管辖范围:" prop="sourceinfoId">
+          <el-form-item label="管辖范围:" prop="areaIds">
             <el-row :gutter="5">
             <el-row :gutter="5">
               <el-col :span="23">
               <el-col :span="23">
-                <el-select
-                  v-model="baseForm.sourceinfoId"
-                  filterable
+                <select-tree
                   style="width: 100%"
                   style="width: 100%"
-                  placeholder="请选择管辖范围"
-                >
-                  <el-option
-                    v-for="item in syinfoList"
-                    :key="item.id"
-                    :label="item.sourceinfoName"
-                    :value="item.sourceinfoId"
-                  >
-                  </el-option>
-                </el-select>
+                  :treeData="treeData"
+                  :placeholder="'请输入产品名称/批次号'"
+                  @handlerClick="handlerClick"
+                  @getCheckTree="getCheckTreeHandler"
+                  @getCheckTreeNode="getCheckTreeNodeHandler"
+                  :checkVal="cusareaName"
+                  :checkedList="areaIds"
+                  checkbox
+                  v-model="baseForm.areaIds"
+                ></select-tree>
                 <div class="areatText" type="">
                 <div class="areatText" type="">
-                  <el-tag closable>
-                    标签一
-                  </el-tag>
-                  <el-tag closable>
-                    标签一
-                  </el-tag>
-                  <el-tag closable>
-                    标签一
+                  <el-tag
+                    v-for="item in treeNodeList"
+                    :key="item.cusareaId"
+                  >
+                    {{ item.cusareaName || item}}
                   </el-tag>
                   </el-tag>
                 </div>
                 </div>
               </el-col>
               </el-col>
@@ -67,21 +62,21 @@
       </el-row>
       </el-row>
 
 
       <el-row :gutter="10">
       <el-row :gutter="10">
-        <el-col :span="14">
-          <el-form-item label="负责人:" prop="stockAmount">
+        <el-col :span="24">
+          <el-form-item label="负责人:" prop="assocManageid">
             <el-row :gutter="5">
             <el-row :gutter="5">
               <el-col :span="23">
               <el-col :span="23">
                 <el-select
                 <el-select
-                  v-model="baseForm.sourceinfoId"
+                  v-model="baseForm.assocManageid"
                   filterable
                   filterable
                   style="width: 100%"
                   style="width: 100%"
                   placeholder="请选择负责人"
                   placeholder="请选择负责人"
                 >
                 >
                   <el-option
                   <el-option
-                    v-for="item in syinfoList"
+                    v-for="item in userList"
                     :key="item.id"
                     :key="item.id"
-                    :label="item.sourceinfoName"
-                    :value="item.sourceinfoId"
+                    :label="item.userName"
+                    :value="item.userId"
                   >
                   >
                   </el-option>
                   </el-option>
                 </el-select>
                 </el-select>
@@ -92,7 +87,7 @@
       </el-row>
       </el-row>
       <el-row :gutter="10">
       <el-row :gutter="10">
         <el-col :span="24">
         <el-col :span="24">
-          <el-form-item label="协会介绍:" prop="supplierId">
+          <el-form-item label="协会介绍:" prop="assocRemark">
             <el-row :gutter="5">
             <el-row :gutter="5">
               <el-col :span="23">
               <el-col :span="23">
                 <el-input
                 <el-input
@@ -101,7 +96,7 @@
                   placeholder="请输入协会介绍"
                   placeholder="请输入协会介绍"
                   maxlength="500"
                   maxlength="500"
                   show-word-limit
                   show-word-limit
-                  v-model="textarea" />
+                  v-model="baseForm.assocRemark" />
               </el-col>
               </el-col>
             </el-row>
             </el-row>
           </el-form-item>
           </el-form-item>
@@ -126,10 +121,15 @@
 </template>
 </template>
 
 
 <script>
 <script>
+import { addAssoc, editAssoc } from '@/api/assoc/index.js'
 import { assign } from 'lodash-es';
 import { assign } from 'lodash-es';
-import { UPLOAD_TYPE_MAP } from '@/utils/constants';
+import SelectTree from '@/components/SelectTree';
+
 export default {
 export default {
-  name:'associationManage',
+  name: 'associationManage',
+  components: {
+    SelectTree
+  },
   props: {
   props: {
     data: {
     data: {
       default() {
       default() {
@@ -139,45 +139,51 @@ export default {
     visible: {
     visible: {
       type: Boolean,
       type: Boolean,
       default: false
       default: false
+    },
+    userList: {
+      type: Array,
+      default: () => []
+    },
+    treeData: {
+      type: Array,
+      default: () => []
+    },
+    typeAssoc: {
+      type: String
+    },
+    editRow: {
+      type: Object,
+      default: () => {}
     }
     }
   },
   },
   data() {
   data() {
     return {
     return {
-      imageUploadType: UPLOAD_TYPE_MAP.FARMING_RECORD,
+      cusareaName:'',
       dialogSubmitLoading: false,
       dialogSubmitLoading: false,
       dialogVisible: false,
       dialogVisible: false,
-      textareaArea: '',
+      treeNodeList: [],
       baseForm: {
       baseForm: {
-        productValue: '',
-        productName: '',
-        stockAmount: '',
-        goodsUnit: '',
-        goodsSpecValue: '',
-        imageArr1: [],
-        supplierId: '',
-        imageArr2: []
+        assocName: '',
+        assocManageid: '',
+        assocRemark: '',
+        areaIds: []
       },
       },
-      productList: [],
+      areaIds: '',
       syinfoList: [],
       syinfoList: [],
-      processList: [],
       hasFetched: false,
       hasFetched: false,
-      landList: [], //基地列表
       rules: {
       rules: {
-        stockAmount: [
+        assocManageid: [
           { required: true, message: '请选择负责人', trigger: 'blur' }
           { required: true, message: '请选择负责人', trigger: 'blur' }
         ],
         ],
-        sourceinfoId: [
-          { required: true, message: '请选择管辖范围', trigger: 'blur' }
+        assocName: [
+          { required: true, message: '请输入您的协会名称', trigger: 'blur' }
         ],
         ],
-        productName: [
-          { required: true, message: '请输入协会名称', trigger: 'blur' }
+        assocRemark: [
+          { required: true, message: '请输入您的协会介绍', trigger: 'blur' }
         ],
         ],
-        supplierId: [
-          { required: false, message: '请输入协会介绍', trigger: 'blur' }
+        areaIds: [
+          { required: true, message: '请输入您的管辖范围', trigger: 'blur' }
         ],
         ],
-        goodsSpecValue: [
-          { required: true, message: '请选择规格', trigger: 'blur' }
-        ]
       }
       }
     };
     };
   },
   },
@@ -198,23 +204,63 @@ export default {
       handler(val) {
       handler(val) {
         assign(this.baseForm, val);
         assign(this.baseForm, val);
       }
       }
+    },
+    editRow: {
+      handler(val) {
+        this.baseForm.assocName = val.assocName
+        this.baseForm.assocRemark = val.assocRemark
+        this.baseForm.assocManageid = val.assocManageid
+        this.baseForm.areaIds = val.areaIds
+        this.areaIds = val.areaIds
+        const treeNodeList = val?.cusareaNames?.split(',') || []
+        this.cusareaName = treeNodeList[treeNodeList.length - 1]
+        this.treeNodeList = treeNodeList
+      },
+      deep: true
     }
     }
   },
   },
   methods: {
   methods: {
+    getCheckTreeHandler(val) {
+      this.baseForm.areaIds = val.join(',')
+    },
+    getCheckTreeNodeHandler(val) { 
+      this.treeNodeList = val
+    },
+    handlerClick() { },
     resetForm(formName) {
     resetForm(formName) {
       this.$refs[formName].resetFields();
       this.$refs[formName].resetFields();
-      this.resetFormData();
       this.dialogVisible = false;
       this.dialogVisible = false;
     },
     },
     resetFormData() {
     resetFormData() {
-      this.baseForm = {};
+      this.baseForm = {
+        assocName: '',
+        assocManageid: '',
+        assocRemark: '',
+        areaIds: []
+      };
+    },
+    async addAssocHandler() {
+      if (this.editAssoc === 'add') {
+        const params = {
+          ...this.baseForm
+        }
+        await addAssoc(params)
+      } else { 
+        const params = {
+          ...this.baseForm,
+          assocId: this.editRow.assocId
+        }
+        await editAssoc(params)
+      }
+      this.handleClose()
+      this.$emit('getList')
+      this.resetFormData()
     },
     },
     submitForm(formName) {
     submitForm(formName) {
       this.$refs[formName].validate((valid) => {
       this.$refs[formName].validate((valid) => {
-        console.log(valid)
+        valid && this.addAssocHandler()
       })
       })
     },
     },
-
     handleClose() {
     handleClose() {
       this.$emit('update:visible', false);
       this.$emit('update:visible', false);
       this.resetForm('baseForm');
       this.resetForm('baseForm');

+ 91 - 86
src/views/waterManage/index.vue

@@ -6,19 +6,19 @@
     >
     >
       <el-card style="height: 100%; overflow-y: auto">
       <el-card style="height: 100%; overflow-y: auto">
         <el-col :span="24" class="elrow-main__col-top">
         <el-col :span="24" class="elrow-main__col-top">
-          <div>
-            <el-input
+          <div style="display: flex;">
+            <select-tree
               v-model="form.goodsName"
               v-model="form.goodsName"
               style="width: 250px"
               style="width: 250px"
-              placeholder="请输入产品名称/批次号"
-              @keyup.enter.native="handleSearch"
-              clearable
-            />
+              :treeData="treeData"
+              :placeholder="'请输入产品名称/批次号'"
+              @handlerClick="handlerClick"
+              :checkVal="cusareaName"
+            ></select-tree>
             <el-input
             <el-input
-              v-model="form.tarcecodeapplyno"
+              v-model="assocName"
               style="width: 250px;margin:0 16px;"
               style="width: 250px;margin:0 16px;"
-              placeholder="请输入溯源码编号"
-              @keyup.enter.native="handleSearch"
+              placeholder="请输入用户协会名称"
               clearable
               clearable
             />
             />
             <el-button
             <el-button
@@ -37,7 +37,6 @@
             ></div>
             ></div>
         </el-col>
         </el-col>
         <el-col :span="24" class="elrow-main__col-bottom">
         <el-col :span="24" class="elrow-main__col-bottom">
-          <img v-if="imgUrl" :src="imgUrl" />
           <b-table
           <b-table
             ref="tableRef"
             ref="tableRef"
             :args="{ 'highlight-current-row': true }"
             :args="{ 'highlight-current-row': true }"
@@ -45,97 +44,87 @@
             :columns="columns"
             :columns="columns"
             isShowIndex
             isShowIndex
           >
           >
-            <template #styleImg="scope">
-              <el-image
-                :src="scope.row.imgPreview"
-                :preview-src-list="[scope.row.imgPreview]"
-                slot="error"
-                class="image-slot"
-                style="width: 100px; height: 50px"
-              >
-                <div slot="error" class="image-slot"></div>
-              </el-image>
-            </template>
-            <template #codeNo="scope">
-              <el-link
-                type="primary"
-                :underline="false"
-                @click="goDetail(scope.row)"
-                >{{ scope.row.traceCodeApplyConcat }}</el-link
-              >
-            </template>
-            <template #useNumber="scope">
-              {{ scope.row.useNumber + '/' + scope.row.totalNumber }}
-            </template>
-            <template #finishGoodName="scope">
-              {{ scope.row.finishGoodName&&scope.row.finishgoodNo?scope.row.finishGoodName + '-' + scope.row.finishgoodNo:'' }}
-            </template>
-
             <template #operate="scope">
             <template #operate="scope">
               <el-link
               <el-link
                 size="small"
                 size="small"
                 :underline="false"
                 :underline="false"
                 type="primary"
                 type="primary"
                 style="margin-right: 10px"
                 style="margin-right: 10px"
-                @click="download(scope.row)"
-                >下载</el-link
+                @click="editRowHandler(scope.row)"
+                >修改</el-link
               >
               >
               <el-link
               <el-link
               size="small"
               size="small"
               :underline="false"
               :underline="false"
               type="danger"
               type="danger"
               style="margin-right: 10px"
               style="margin-right: 10px"
-              @click="download(scope.row)"
+              @click="deleteRowHandler(scope.row)"
               >删除</el-link
               >删除</el-link
-            >
+              >
             </template>
             </template>
           </b-table>
           </b-table>
         </el-col>
         </el-col>
       </el-card>
       </el-card>
     </el-col>
     </el-col>
-  <association-manage :visible.sync="associationManageShow"/>
+  <association-manage
+    :visible.sync="associationManageShow"
+    :treeData="treeData"
+    :userList="userList"
+    @getList="handleSearch"
+    :typeAssoc="typeAssoc"
+    :editRow="editRow"
+  />
   </el-row>
   </el-row>
 </template>
 </template>
 
 
 <script>
 <script>
+import { getAssocList, deleteAssoc } from '@/api/assoc/index.js'
+import { listUser } from '@/api/system/user.js'
 import BTable from '@/components/Table/index.vue';
 import BTable from '@/components/Table/index.vue';
 import AssociationManage from './component/associationManage.vue'
 import AssociationManage from './component/associationManage.vue'
-import { assign, omit } from 'lodash-es';
+import SelectTree from '@/components/SelectTree';
+import { getTree } from '@/api/tree.js'
+import { Message } from 'element-ui'
 
 
 export default {
 export default {
   name:"waterManage",
   name:"waterManage",
-  components: { BTable,AssociationManage},
+  components: { BTable,AssociationManage, SelectTree },
   data() {
   data() {
     return {
     return {
-      imgUrl: '',
-      baseImageUrl: process.env.VUE_APP_BASE_RESOURCE_PREFIX,
       form: {
       form: {
         productName: ''
         productName: ''
       },
       },
+      userList: [],
+      treeData:[],
       loading: false,
       loading: false,
+      cusareaName: '',
       associationManageShow: false,
       associationManageShow: false,
+      assocName: '',
+      areaId: '',
+      typeAssoc: 'add',
+      editRow: {},
       columns: [
       columns: [
         {
         {
-          label: '用户协议会名称',
-          prop: 'person',
+          label: '用水协会名称',
+          prop: 'assocName',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '管理区域',
           label: '管理区域',
-          prop: 'area',
+          prop: 'cusareaNames',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '负责人',
           label: '负责人',
-          prop: 'name',
+          prop: 'assocManageName',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '电话',
           label: '电话',
-          prop: 'phone',
+          prop: 'userMobile',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
@@ -147,52 +136,68 @@ export default {
       ]
       ]
     };
     };
   },
   },
-  created() {},
+  mounted() { 
+    this.searchHandler()
+  },
   methods: {
   methods: {
+    async searchHandler() {
+      const res = await listUser({
+        pageSize: 99999
+      })
+      this.userList = res.data
+    },
     addAssociation() {
     addAssociation() {
+      this.typeAssoc = 'add'
+      this.editRow = {}
       this.associationManageShow = true
       this.associationManageShow = true
     },
     },
-    loadData(parameter) {
-      const queryform = this.form;
-      const payload = omit(assign({}, parameter, queryform, {orderByColumn:'tarcecodeapplyCreateddate',isAsc:'desc'}), []);
-      return this.getTableData(payload);
+    // 删除
+    deleteRowHandler(row) {
+      const { assocId: assocIds } = row
+      this.$modal
+        .confirm(`是否确认删除`)
+        .then(() => {
+          deleteAssoc({
+            assocIds
+          }).then(() => {
+            Message({ message: "删除成功", type: 'success' });
+            this.handleSearch()
+          })
+      })
+    },
+    async loadData() {
+      if (!this.areaId) {
+        const treeList = this.$store.state.tree.treeList
+        let res = []
+        if (treeList.code === '000000') {
+          res = treeList
+        } else {
+          res = await getTree()
+          this.$store.dispatch('tree/setTree', res)
+        }
+        this.treeData = res?.data
+        this.cusareaName ||= this.treeData[0].cusareaName
+        this.areaId = this.treeData[0].cusareaId
+      }
+      return this.getWaterrightListHandler()
     },
     },
-    getTableData(payload) {
-      return Promise.resolve({
-        data: [{
-            person:"王大虎",
-            area: '2016-05-02',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1518 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-04',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1517 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-01',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1519 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-03',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1516 弄'
-          }]
+    getWaterrightListHandler() {
+      return getAssocList({
+        assocName: this.assocName,
+        areaId: this.areaId
       })
       })
     },
     },
+    handlerClick(value) {
+      this.areaId = value?.cusareaId
+    },
     handleSearch() {
     handleSearch() {
       this.$refs.tableRef.refresh(true);
       this.$refs.tableRef.refresh(true);
     },
     },
-    goDetail(row) {
-      this.$refs.sourceCodeDetail.open(row.tarcecodeapplyBatchno)
-    },
-    download(row) {
+    // 修改
+    editRowHandler(row) {
+      this.typeAssoc = 'edit'
+      this.editRow = row
+      this.associationManageShow = true
     }
     }
   }
   }
 };
 };

+ 176 - 70
src/views/waterMarket/component/waterDeal.vue

@@ -7,79 +7,137 @@
     @close="handleClose"
     @close="handleClose"
     width="1200px"
     width="1200px"
   >
   >
-  <el-row class="tab-wea-info" :gutter="20">
-    <el-col :span="8">
-      <el-card class="box-card">
-        <div slot="header">
-          <span>卖方信息</span>
-        </div>
-        <div>
-          用水户:<el-select></el-select>
-        </div>
-        <div class="item">
-          区域:
-        </div>
-        <div class="item">
-          已分配水权:
-        </div>
-        <div class="item">
-          可用水权:
-        </div>
-      </el-card>
-    </el-col>
-    <el-col :span="8">
-      <el-card class="box-card">
-        <div slot="header">
-          <span>买方信息</span>
-        </div>
-        <div>
-          用水户:<el-select></el-select>
-        </div>
-        <div class="item">
-          区域:
-        </div>
-        <div class="item">
-          已分配水权:
-        </div>
-        <div class="item">
-          可用水权:
-        </div>
-      </el-card>
-    </el-col>
-    <el-col :span="8">
-      <el-card class="box-card">
-        <div slot="header">
-          <span>交易信息</span>
-        </div>
-        <div>
-          交易水量:<el-input style="width: 75%"/>
-        </div>
-        <div class="item">
-          交易价格:<el-input style="width: 75%"/>
-        </div>
-        <div class="item">
-          交易金额:100
-        </div>
-        <div style="text-align:right;margin-top:50px">
-          <el-button type="info" plain @click="resetForm('baseForm')"
-          >取消</el-button
-        >
-          <el-button
-            size="small"
-            :underline="false"
-            type="primary"
-            style="margin:0 10px 0 16px"
-            @click="download(scope.row)"
-            >确认交易</el-button
+  <el-form
+    ref="baseForm"
+    class="base-form"
+    label-position="right"
+    label-width="95px"
+    :model="baseForm"
+    :rules="rules"
+    size="small"
+  >
+    <el-row class="tab-wea-info" :gutter="20">
+      <el-col :span="8">
+        <el-card class="box-card">
+          <div slot="header">
+            <span>卖方信息</span>
+          </div>
+          <div style="display:flex;align-items:center;margin-bottom:15px;">
+            <el-form-item label="用水户:" prop="trxrcdSellerid" style="margin:0;padding:0">
+              <el-select
+                v-model="baseForm.trxrcdSellerid"
+                filterable 
+                placeholder="请选择您的卖方信息"
+                @change="trxrcdSelleridHandler"
+              >
+              <el-option
+                v-for="item in farmerList"
+                :key="item.id"
+                :label="item.farmerName"
+                :value="item.farmerId"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          </div>
+          <div class="item">
+            区域:{{ sellerRow.cusareaName }}
+          </div>
+          <div class="item">
+            已分配水权:{{ sellerRow.farmerWramount  }}
+          </div>
+          <div class="item">
+            可用水权:{{ sellerRow.farmerWrbalance }}
+          </div>
+        </el-card>
+      </el-col>
+      <el-col :span="8">
+        <el-card class="box-card">
+          <div slot="header">
+            <span>买方信息</span>
+          </div>
+          <div style="display:flex;align-items:center;margin-bottom:15px;">
+            <el-form-item label="用水户:" prop="trxrcdBuyerid" style="margin:0;padding:0">
+              <el-select
+                v-model="baseForm.trxrcdBuyerid"
+                filterable 
+                placeholder="请选择您的买方信息"
+                @change="trxrcdBuyeridHandler"
+              >
+                <el-option
+                  v-for="item in farmerList"
+                  :key="item.id"
+                  :label="item.farmerName"
+                  :value="item.farmerId"
+                >
+                </el-option>
+              </el-select>
+          </el-form-item>
+          </div>
+          <div class="item">
+            区域:{{ buyerRow.cusareaName }}
+          </div>
+          <div class="item">
+            已分配水权:{{ buyerRow.farmerWramount }}
+          </div>
+          <div class="item">
+            可用水权:{{ buyerRow.farmerWrbalance }}
+          </div>
+        </el-card>
+      </el-col>
+      <el-col :span="8">
+        <el-card class="box-card">
+          <div slot="header">
+            <span>交易信息</span>
+          </div>
+          <div style="display:flex;align-items:center">
+            <el-form-item label="交易水量:" prop="trxrcdNum" style="margin:0;padding:0">
+              <el-input
+                type="number"
+                min="0"
+                :max="sellerRow.farmerWrbalance"
+                v-model="baseForm.trxrcdNum"
+                style="width: 150px"
+              />
+            </el-form-item>
+          </div>
+          <div style="display:flex;align-items:center;margin-top: 10px">
+            <el-form-item label="交易价格:" prop="trxrcdPrice" style="margin:0;padding:0">
+              <el-input
+                type="number"
+                min="0"
+                v-model="baseForm.trxrcdPrice"
+                style="width: 150px"
+              />
+            </el-form-item>
+          </div>
+          <div style="display:flex;align-items:center;margin-top: 10px">
+            <el-form-item label="交易金额:"  style="margin:0;padding:0">
+              {{ (Number(baseForm.trxrcdNum) * Number(baseForm.trxrcdPrice)).toFixed(2) }}
+            </el-form-item>
+          </div>
+          <div style="text-align:right;margin-top:50px">
+            <el-button type="info" plain @click="resetForm('baseForm')"
+            >取消</el-button
           >
           >
-        </div>
-      </el-card>
-    </el-col>
-  </el-row>
+            <el-button
+              size="small"
+              :underline="false"
+              type="primary"
+              style="margin:0 10px 0 16px"
+              @click="submitForm('baseForm')"
+              >确认交易</el-button
+            >
+          </div>
+        </el-card>
+      </el-col>
+    </el-row>
+  </el-form>
   </el-dialog>
   </el-dialog>
 </template>
 </template>
 
 
 <script>
 <script>
+import { addTrxrcd } from '@/api/trxrcd/index.js'
 import { assign } from 'lodash-es';
 import { assign } from 'lodash-es';
 export default {
 export default {
   name:'waterDeal',
   name:'waterDeal',
@@ -92,11 +150,38 @@ export default {
     visible: {
     visible: {
       type: Boolean,
       type: Boolean,
       default: false
       default: false
+    },
+    farmerList: {
+      type: Array,
+      default: () => []
     }
     }
   },
   },
   data() {
   data() {
     return {
     return {
       dialogVisible: false,
       dialogVisible: false,
+      sellerRow: {},
+      buyerRow: {},
+      trxrcdMoney: 0,
+      baseForm: {
+        trxrcdSellerid: '',
+        trxrcdBuyerid: '',
+        trxrcdPrice: 0,
+        trxrcdNum: 0
+      },
+      rules: {
+        trxrcdSellerid: [
+          { required: true, message: '请选择您的卖方用水户', trigger: 'blur' }
+        ],
+        trxrcdBuyerid: [
+          { required: true, message: '请选择您的买方用水户', trigger: 'blur' }
+        ],
+        trxrcdPrice: [
+          { required: true, message: '请输入您的交易水量', trigger: 'blur' }
+        ],
+        trxrcdNum: [
+          { required: true, message: '请输入您的交易价格', trigger: 'blur' }
+        ]
+      }
     };
     };
   },
   },
   watch: {
   watch: {
@@ -112,9 +197,27 @@ export default {
       }
       }
     },
     },
   },
   },
-  created() {},
-  mounted() {},
   methods: {
   methods: {
+    async addTrxrcdHandler() {
+      const params = { ...this.baseForm }
+      params.trxrcdMoney = Number(this.baseForm.trxrcdNum) * Number(this.baseForm.trxrcdPrice)
+      await addTrxrcd(params)
+      this.handleClose()
+      this.$emit('addSuccess')
+    },
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        valid && this.addTrxrcdHandler()
+    })},
+    getRowByFarmerId(farmerId) {
+      return this.farmerList.find(item => item?.farmerId === farmerId)
+    },
+    trxrcdSelleridHandler(val) {
+      this.sellerRow = this.getRowByFarmerId(val)
+    },
+    trxrcdBuyeridHandler(val) {
+      this.buyerRow = this.getRowByFarmerId(val)
+     },
     resetForm(formName) {
     resetForm(formName) {
       this.dialogVisible = false;
       this.dialogVisible = false;
     },
     },
@@ -134,5 +237,8 @@ export default {
 }
 }
 .item{
 .item{
   margin: 10px 0;
   margin: 10px 0;
+  font-weight: bold;
+  color: #606266;
+  padding-left: 25px;
 }
 }
 </style>
 </style>

+ 66 - 79
src/views/waterMarket/index.vue

@@ -7,10 +7,24 @@
       <el-card style="height: 100%; overflow-y: auto">
       <el-card style="height: 100%; overflow-y: auto">
         <el-col :span="24" class="elrow-main__col-top">
         <el-col :span="24" class="elrow-main__col-top">
           <div>
           <div>
-            <span style="display:inline-block;width: 50px;">买方</span>
+            <el-select
+              style="display:inline-block;width: 100px;margin-right: "
+              v-model="roleType"
+            >
+              <el-option
+                label="买方"
+                value="0"
+              >
+              </el-option>
+              <el-option
+                label="卖方"
+                value="1"
+              >
+              </el-option>
+            </el-select>
             <el-input
             <el-input
-              v-model="form.goodsName"
-              style="width: 250px"
+              v-model="trxrcdName"
+              style="width: 250px;margin-left: 16px"
               placeholder="请输入买方姓名"
               placeholder="请输入买方姓名"
               @keyup.enter.native="handleSearch"
               @keyup.enter.native="handleSearch"
               clearable
               clearable
@@ -42,7 +56,6 @@
             ></div>
             ></div>
         </el-col>
         </el-col>
         <el-col :span="24" class="elrow-main__col-bottom">
         <el-col :span="24" class="elrow-main__col-bottom">
-          <img v-if="imgUrl" :src="imgUrl" />
           <b-table
           <b-table
             ref="tableRef"
             ref="tableRef"
             :args="{ 'highlight-current-row': true }"
             :args="{ 'highlight-current-row': true }"
@@ -50,32 +63,6 @@
             :columns="columns"
             :columns="columns"
             isShowIndex
             isShowIndex
           >
           >
-            <template #styleImg="scope">
-              <el-image
-                :src="scope.row.imgPreview"
-                :preview-src-list="[scope.row.imgPreview]"
-                slot="error"
-                class="image-slot"
-                style="width: 100px; height: 50px"
-              >
-                <div slot="error" class="image-slot"></div>
-              </el-image>
-            </template>
-            <template #codeNo="scope">
-              <el-link
-                type="primary"
-                :underline="false"
-                @click="goDetail(scope.row)"
-                >{{ scope.row.traceCodeApplyConcat }}</el-link
-              >
-            </template>
-            <template #useNumber="scope">
-              {{ scope.row.useNumber + '/' + scope.row.totalNumber }}
-            </template>
-            <template #finishGoodName="scope">
-              {{ scope.row.finishGoodName&&scope.row.finishgoodNo?scope.row.finishGoodName + '-' + scope.row.finishgoodNo:'' }}
-            </template>
-
             <template #operate="scope">
             <template #operate="scope">
               <el-link
               <el-link
                 size="small"
                 size="small"
@@ -98,104 +85,104 @@
         </el-col>
         </el-col>
       </el-card>
       </el-card>
     </el-col>
     </el-col>
-    <water-deal :visible.sync="associationManageShow"/>
+    <water-deal
+      :visible.sync="associationManageShow"
+      :farmerList="farmerList"
+      @addSuccess="addSuccessHandler"
+    />
   </el-row>
   </el-row>
 </template>
 </template>
 
 
 <script>
 <script>
+import { getFarmerList } from '@/api/farmer/list.js'
+import { getTrxrcdList } from '@/api/trxrcd/index.js'
 import BTable from '@/components/Table/index.vue';
 import BTable from '@/components/Table/index.vue';
-import { assign, omit } from 'lodash-es';
 import WaterDeal from './component/waterDeal.vue'
 import WaterDeal from './component/waterDeal.vue'
 
 
 export default {
 export default {
   name:'waterMarket',
   name:'waterMarket',
-  components: { BTable,WaterDeal},
+  components: { BTable, WaterDeal },
   data() {
   data() {
     return {
     return {
+      roleType: '0',
       dateValue:"",
       dateValue:"",
-      imgUrl: '',
-      baseImageUrl: process.env.VUE_APP_BASE_RESOURCE_PREFIX,
-      form: {
-        productName: ''
-      },
+      trxrcdName:'',
       loading: false,
       loading: false,
       associationManageShow: false,
       associationManageShow: false,
       columns: [
       columns: [
         {
         {
           label: '卖方农户',
           label: '卖方农户',
-          prop: 'person',
+          prop: 'sellerName',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
-          label: '买农户',
-          prop: 'area',
+          label: '买农户',
+          prop: 'buyerName',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '交易水量',
           label: '交易水量',
-          prop: 'name',
+          prop: 'trxrcdNum',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '交易价格(元/m³)',
           label: '交易价格(元/m³)',
-          prop: 'phone',
+          prop: 'trxrcdPrice',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },{
         },{
           label: '成交金额(元)',
           label: '成交金额(元)',
-          prop: 'phone',
+          prop: 'trxrcdMoney',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },{
         },{
           label: '成交时间',
           label: '成交时间',
-          prop: 'phone',
+          prop: 'trxrcdCreateddate',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         }
         }
-      ]
+      ],
+      farmerList: []
     };
     };
   },
   },
-  created() {},
+  mounted() {
+    this.getFarmerListHandler()
+  },
   methods: {
   methods: {
+    async getFarmerListHandler() {
+      const res = await getFarmerList()
+      this.farmerList = res.data
+    },
     addAssociation() {
     addAssociation() {
       this.associationManageShow = true
       this.associationManageShow = true
     },
     },
-    loadData(parameter) {
-      const queryform = this.form;
-      const payload = omit(assign({}, parameter, queryform, {orderByColumn:'tarcecodeapplyCreateddate',isAsc:'desc'}), []);
-      return this.getTableData(payload);
+    loadData() {
+      return this.getTableData();
+    },
+    getTableData() {
+      if (this.roleType == '0') {
+        this.buyerName = this.trxrcdName
+        this.sellerName = ''
+      } else { 
+        this.sellerName = this.trxrcdName
+        this.buyerName = ''
+      }
+      const startTime = this.dateValue[0] || ''
+      const endTime = this.dateValue[1] || ''
+      const params = {
+        buyerName: this.buyerName,
+        sellerName: this.sellerName,
+        startTime,
+        endTime,
+      }
+      console.log(params, 'dateValuedateValue')
+      return getTrxrcdList(params)
     },
     },
-    getTableData(payload) {
-      return Promise.resolve({
-        data: [{
-            person:"王大虎",
-            area: '2016-05-02',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1518 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-04',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1517 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-01',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1519 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-03',
-            name: '王小虎',
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1516 弄'
-          }]
-      })
+    addSuccessHandler() { 
+      this.handleSearch()
     },
     },
     handleSearch() {
     handleSearch() {
       this.$refs.tableRef.refresh(true);
       this.$refs.tableRef.refresh(true);

+ 93 - 93
src/views/waterSubsidy/components/newPolicy.vue

@@ -18,31 +18,34 @@
       size="small"
       size="small"
     >
     >
       <el-row>
       <el-row>
-        <el-form-item label="标题:" prop="productName">
+        <el-form-item label="标题:" prop="subsidypolicyTitle">
           <el-input
           <el-input
             placeholder="请输入"
             placeholder="请输入"
-            v-model="textarea">
+            v-model="baseForm.subsidypolicyTitle">
           </el-input>
           </el-input>
         </el-form-item>
         </el-form-item>
       </el-row>
       </el-row>
       <el-row>
       <el-row>
-        <el-form-item label="图片:" prop="productName">
+        <el-form-item label="图片:" prop="src">
            <el-upload
            <el-upload
              class="avatar-uploader"
              class="avatar-uploader"
-             action="https://jsonplaceholder.typicode.com/posts/"
+             :action="uploadUrl"
              :show-file-list="false"
              :show-file-list="false"
              :on-success="handleAvatarSuccess"
              :on-success="handleAvatarSuccess"
+             :on-error="handleUploadError"
+             name="file"
+             :headers="headers"
              :before-upload="beforeAvatarUpload">
              :before-upload="beforeAvatarUpload">
-             <img v-if="src" :src="src" class="avatar">
+             <img v-if="baseForm.src" :src="baseForm.src" class="avatar">
              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
            </el-upload>
            </el-upload>
         </el-form-item>
         </el-form-item>
       </el-row>
       </el-row>
       <el-row style="height: 200px;">
       <el-row style="height: 200px;">
-        <el-form-item label="内容:" prop="decisionContent">
+        <el-form-item label="内容:" prop="subsidypolicyContent">
           <Editor
           <Editor
             style="height: 150px"
             style="height: 150px"
-            v-model="decisionContent"
+            v-model="baseForm.subsidypolicyContent"
             :mode="mode"
             :mode="mode"
             @onCreated="onCreated"
             @onCreated="onCreated"
           />
           />
@@ -67,8 +70,10 @@
 </template>
 </template>
 
 
 <script>
 <script>
+import { addSubsidyPolicy, editSubsidyPolicy } from '@/api/subsidypolicy/index.js'
+import { getToken } from "@/utils/auth";
+import { Message } from 'element-ui'
 import { assign } from 'lodash-es';
 import { assign } from 'lodash-es';
-import { UPLOAD_TYPE_MAP } from '@/utils/constants';
 export default {
 export default {
   name:'newPolicy',
   name:'newPolicy',
   props: {
   props: {
@@ -80,143 +85,138 @@ export default {
     visible: {
     visible: {
       type: Boolean,
       type: Boolean,
       default: false
       default: false
+    },
+    editRow: {
+      type: Object,
+      default: () => { }
+    },
+    areaId: {
+      type: String
+    },
+    policyType: {
+      type: String
     }
     }
   },
   },
   data() {
   data() {
     return {
     return {
-      imageUrl: '',
+      uploadUrl: process.env.VUE_APP_BASE_API + "/wpr/subsidypolicy/preview/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      textarea: '',
       editor: null,
       editor: null,
       decisionContent:"",
       decisionContent:"",
       mode: 'default',
       mode: 'default',
-      imageUploadType: UPLOAD_TYPE_MAP.FARMING_RECORD,
       dialogSubmitLoading: false,
       dialogSubmitLoading: false,
       dialogVisible: false,
       dialogVisible: false,
-      src: 'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg',
-      baseForm: {
-        productValue: '',
-        productName: '',
-        stockAmount: '',
-        goodsUnit: '',
-        goodsSpecValue: '',
-        imageArr1: [],
-        supplierId: '',
-        imageArr2: []
+      src: '',
+      baseForm:  {
+        subsidypolicyTitle: '',
+        src: '',
+        subsidypolicyContent: ''
       },
       },
-      productList: [],
-      syinfoList: [],
-      processList: [],
+      resId: '',
       hasFetched: false,
       hasFetched: false,
-      landList: [], //基地列表
       rules: {
       rules: {
-        stockAmount: [
-          { required: true, message: '请选择负责人', trigger: 'blur' }
+        subsidypolicyTitle: [
+          { required: true, message: '请输入您的标题', trigger: 'blur' }
         ],
         ],
-        sourceinfoId: [
-          { required: true, message: '请选择管辖范围', trigger: 'blur' }
+        src: [
+          { required: true, message: '请选择您的图片', trigger: 'blur' }
         ],
         ],
-        productName: [
-          { required: true, message: '请输入协会名称', trigger: 'blur' }
-        ],
-        supplierId: [
-          { required: false, message: '请输入协会介绍', trigger: 'blur' }
-        ],
-        goodsSpecValue: [
-          { required: true, message: '请选择规格', trigger: 'blur' }
+        subsidypolicyContent: [
+          { required: true, message: '请输入内容', trigger: 'blur' }
         ]
         ]
       }
       }
     };
     };
   },
   },
-  computed: {
-    goodsUnitLable: function () {
-    }
-  },
   watch: {
   watch: {
     visible(val) {
     visible(val) {
       if (val !== this.dialogVisible) {
       if (val !== this.dialogVisible) {
         this.dialogVisible = val;
         this.dialogVisible = val;
         if (val) {
         if (val) {
           assign(this.baseForm, this.data);
           assign(this.baseForm, this.data);
-          if (!this.hasFetched) {
-            this.getProductList();
-            this.getSyinfoList();
-            this.getProcessList();
-            this.hasFetched = true;
-          }
         }
         }
       }
       }
     },
     },
     data: {
     data: {
       deep: true,
       deep: true,
       handler(val) {
       handler(val) {
-        // console.log(val)
         assign(this.baseForm, val);
         assign(this.baseForm, val);
-        // console.log(this.baseForm)
       }
       }
-    }
+    },
+    editRow: {
+      handler(val) {
+        this.baseForm = { ...this.editRow }
+      },
+      deep: true
+     }
   },
   },
-  created() {},
-  mounted() {},
   methods: {
   methods: {
     onCreated(editor) {
     onCreated(editor) {
       this.editor = Object.seal(editor)
       this.editor = Object.seal(editor)
     },
     },
-    handleAvatarSuccess() {},
-    beforeAvatarUpload() {},
-    getProductList() {
-    },
-    getSyinfoList() {
+    handleAvatarSuccess(res, file) {
+      this.resId = res?.data?.resId
+      this.baseForm.src = URL.createObjectURL(file.raw);
     },
     },
-    getProcessList() {
+    handleUploadError() {
+      Message.error("图片插入失败");
     },
     },
-    goProductsPage() {
-      this.handleClose();
-      this.$router.push({
-        path: '/Products',
-        query: {}
-      });
-    },
-    goSourceInfoPage() {
-      this.handleClose();
-      this.$router.push({
-        path: '/sourceInfo',
-        query: {
-          type: 'add'
-        }
-      });
-    },
-    goProcessPage() {
-      this.handleClose();
-      this.$router.push({
-        path: '/basicsettings/process',
-        query: {}
-      });
+    beforeAvatarUpload(file) {
+      const isJPG = file.type === 'image/jpeg';
+      const isLt2M = file.size / 1024 / 1024 < 2;
+      if (!isLt2M) {
+        Message({
+          type: 'error',
+          message: '上传头像图片大小不能超过 2MB!'
+        })
+      }
+      return isJPG && isLt2M;
     },
     },
-    resetForm(formName) {
+    resetForm() {
       this.dialogVisible = false;
       this.dialogVisible = false;
+      this.resetFormData()
     },
     },
+    
     resetFormData() {
     resetFormData() {
-      this.baseForm = {};
+      this.baseForm = {
+        subsidypolicyTitle: '',
+        src: '',
+        subsidypolicyContent: ''
+      };
+    },
+    async addSubsidyPolicyHandler() {
+      if (this.policyType == 'add') {
+        const params = {
+          areaIds: this.areaId,
+          resIds: this.resId,
+          subsidypolicyContent: this.baseForm.subsidypolicyContent,
+          subsidypolicyTitle: this.baseForm.subsidypolicyTitle
+        }
+        await addSubsidyPolicy(params)
+      } else { 
+        const params = {
+          areaIds: this.areaId,
+          resIds: this.resId,
+          subsidypolicyContent: this.baseForm.subsidypolicyContent,
+          subsidypolicyTitle: this.baseForm.subsidypolicyTitle,
+          subsidypolicyId: this.baseForm.subsidypolicyId
+        }
+        await editSubsidyPolicy(params)
+      }
+      this.handleClose()
+      this.$emit('addSuccess')
     },
     },
     submitForm(formName) {
     submitForm(formName) {
       this.$refs[formName].validate((valid) => {
       this.$refs[formName].validate((valid) => {
-        console.log(valid)
+        valid && this.addSubsidyPolicyHandler()
       })
       })
     },
     },
-
     handleClose() {
     handleClose() {
       this.$emit('update:visible', false);
       this.$emit('update:visible', false);
       this.resetForm('baseForm');
       this.resetForm('baseForm');
     },
     },
-    handleSuccess() {
-      this.resetForm('baseForm');
-      this.$emit('update:visible', false);
-      this.$emit('success');
-    },
-    handleKeyUp(target, key) {
-      target[key] = target[key].match(/\d+(\.\d{0,2})?/)
-        ? target[key].match(/\d+(\.\d{0,2})?/)[0]
-        : '';
-    }
   }
   }
 };
 };
 </script>
 </script>

+ 90 - 70
src/views/waterSubsidy/index.vue

@@ -6,10 +6,19 @@
     >
     >
       <el-card style="height: 100%; overflow-y: auto">
       <el-card style="height: 100%; overflow-y: auto">
         <el-col :span="24" class="elrow-main__col-top">
         <el-col :span="24" class="elrow-main__col-top">
-          <div>
-            <el-select placeholder="请选择您的区域">
-            </el-select>
-            <el-input style="width: 250px;margin: 0 16px;" placeholder="请输入关键字"/>
+          <div style="display: flex;">
+            <select-tree 
+              :placeholder="'年份'" 
+              style="width: 250px"
+              :treeData="treeData"
+              @handlerClick="handlerClick"
+              :checkVal="cusareaName"
+            ></select-tree>
+            <el-input
+              style="width: 250px;margin: 0 16px;"
+              placeholder="请输入关键字"
+              v-model="subsidypolicyTitle"
+            />
             <el-button
             <el-button
               type="primary"
               type="primary"
               size="small"
               size="small"
@@ -27,7 +36,6 @@
             ></div>
             ></div>
         </el-col>
         </el-col>
         <el-col :span="24" class="elrow-main__col-bottom">
         <el-col :span="24" class="elrow-main__col-bottom">
-          <img v-if="imgUrl" :src="imgUrl" />
           <b-table
           <b-table
             ref="tableRef"
             ref="tableRef"
             :args="{ 'highlight-current-row': true }"
             :args="{ 'highlight-current-row': true }"
@@ -37,8 +45,8 @@
           >
           >
             <template #styleImg="scope">
             <template #styleImg="scope">
               <el-image
               <el-image
-                :src="scope.row.imgPreview || ''"
-                :preview-src-list="[scope.row.imgPreview]"
+                :src="dialogImageUrl + scope.row.previews || ''"
+                :preview-src-list="[dialogImageUrl + scope.row.previews || '']"
                 slot="error"
                 slot="error"
                 class="image-slot"
                 class="image-slot"
                 style="width: 100px; height: 50px"
                 style="width: 100px; height: 50px"
@@ -46,27 +54,13 @@
                 <div slot="error" class="image-slot"></div>
                 <div slot="error" class="image-slot"></div>
               </el-image>
               </el-image>
             </template>
             </template>
-            <template #codeNo="scope">
-              <el-link
-                type="primary"
-                :underline="false"
-                @click="goDetail(scope.row)"
-                >{{ scope.row.traceCodeApplyConcat }}</el-link>
-            </template>
-            <template #useNumber="scope">
-              {{ scope.row.useNumber + '/' + scope.row.totalNumber }}
-            </template>
-            <template #finishGoodName="scope">
-              {{ scope.row.finishGoodName&&scope.row.finishgoodNo?scope.row.finishGoodName + '-' + scope.row.finishgoodNo:'' }}
-            </template>
-
             <template #operate="scope">
             <template #operate="scope">
               <el-link
               <el-link
                 size="small"
                 size="small"
                 :underline="false"
                 :underline="false"
                 type="primary"
                 type="primary"
                 style="margin-right: 10px"
                 style="margin-right: 10px"
-                @click="download(scope.row)"
+                @click="editHandler(scope.row)"
                 >修改</el-link
                 >修改</el-link
               >
               >
               <el-link
               <el-link
@@ -74,7 +68,7 @@
               :underline="false"
               :underline="false"
               type="danger"
               type="danger"
               style="margin-right: 10px"
               style="margin-right: 10px"
-              @click="download(scope.row)"
+              @click="deleteHandler(scope.row)"
               >删除</el-link
               >删除</el-link
             >
             >
             </template>
             </template>
@@ -84,55 +78,66 @@
     </el-col>
     </el-col>
     <new-policy
     <new-policy
       :visible.sync="showPolicy"
       :visible.sync="showPolicy"
+      :policyType="policyType"
+      :areaId="areaId"
+      :editRow="editRow"
+      @addSuccess="addSuccessHandler"
     />
     />
   </el-row>
   </el-row>
 </template>
 </template>
 
 
 <script>
 <script>
+import { getSubsidyPolicy, deleteSubsidyPolicy } from '@/api/subsidypolicy/index.js'
+import SelectTree from '@/components/SelectTree';
 import BTable from '@/components/Table/index.vue';
 import BTable from '@/components/Table/index.vue';
+import { getTree } from '@/api/tree.js'
 import newPolicy from './components/newPolicy.vue'
 import newPolicy from './components/newPolicy.vue'
-import { assign, omit } from 'lodash-es';
+import { Message } from 'element-ui'
 
 
 export default {
 export default {
   name:'waterSubsidy',
   name:'waterSubsidy',
-  components: { BTable,newPolicy },
+  components: { BTable,newPolicy, SelectTree },
   data() {
   data() {
     return {
     return {
-      dateValue:"",
-      imgUrl: '',
-      baseImageUrl: process.env.VUE_APP_BASE_RESOURCE_PREFIX,
       form: {
       form: {
         productName: ''
         productName: ''
       },
       },
+      policyType: 'add',
+      subsidypolicyTitle:'',
       loading: false,
       loading: false,
       showPolicy: false,
       showPolicy: false,
+      treeData: [],
+      areaId: '',
+      cusareaName: '',
+      editRow: {},
+      dialogImageUrl: '',
       columns: [
       columns: [
         {
         {
           label: '图片',
           label: '图片',
-          prop: 'person',
+          prop: 'previews',
           customRender: 'styleImg',
           customRender: 'styleImg',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '标题',
           label: '标题',
-          prop: 'area',
+          prop: 'subsidypolicyTitle',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '浏览量',
           label: '浏览量',
-          prop: 'name',
+          prop: 'subsidypolicyReadnum',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
         {
         {
           label: '发布人',
           label: '发布人',
-          prop: 'phone',
+          prop: 'subsidypolicyCreatorName',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },{
         },{
           label: '发布时间',
           label: '发布时间',
-          prop: 'phone',
+          prop: 'subsidypolicyCreateddate',
           customRender: '',
           customRender: '',
           align: 'center'
           align: 'center'
         },
         },
@@ -144,56 +149,71 @@ export default {
       ]
       ]
     };
     };
   },
   },
-  created() {},
+  mounted() { 
+    this.dialogImageUrl = process.env.VUE_APP_BASE_API
+  },
   methods: {
   methods: {
+    addSuccessHandler() { 
+      this.handleSearch()
+    },
     addAssociation() {
     addAssociation() {
+      this.policyType = 'add'
       this.showPolicy = true
       this.showPolicy = true
     },
     },
-    loadData(parameter) {
-      const queryform = this.form;
-      const payload = omit(assign({}, parameter, queryform, {orderByColumn:'tarcecodeapplyCreateddate',isAsc:'desc'}), []);
-      return this.getTableData(payload);
+    async loadData() {
+      if (!this.areaId) {
+        const treeList = this.$store.state.tree.treeList
+        let res = []
+        if (treeList.code === '000000') {
+          res = treeList
+        } else {
+          res = await getTree()
+          this.$store.dispatch('tree/setTree', res)
+        }
+        this.treeData = res?.data
+        this.cusareaName ||= this.treeData[0].cusareaName
+        this.areaId = this.treeData[0].cusareaId
+      }
+      return this.getWaterrightListHandler()
     },
     },
-    getTableData(payload) {
-      return Promise.resolve({
-        data: [{
-            person:"王大虎",
-            area: '2016-05-02',
-            name: '王小虎',
-            imgPreview: "https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg",
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1518 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-04',
-            name: '王小虎',
-            imgPreview: "https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg",
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1517 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-01',
-            name: '王小虎',
-            imgPreview: "https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg",
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1519 弄'
-          }, {
-            person:"王大虎",
-            area: '2016-05-03',
-            name: '王小虎',
-            imgPreview: "https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg",
-            phone: 1588888888,
-            address: '上海市普陀区金沙江路 1516 弄'
-          }]
+    getWaterrightListHandler() {
+      return getSubsidyPolicy({
+        areaIds: this.areaId,
+        subsidypolicyTitle: this.subsidypolicyTitle
       })
       })
     },
     },
+    handlerClick(value) {
+      this.areaId = value?.cusareaId
+    },
     handleSearch() {
     handleSearch() {
       this.$refs.tableRef.refresh(true);
       this.$refs.tableRef.refresh(true);
     },
     },
     goDetail(row) {
     goDetail(row) {
       this.$refs.sourceCodeDetail.open(row.tarcecodeapplyBatchno)
       this.$refs.sourceCodeDetail.open(row.tarcecodeapplyBatchno)
     },
     },
-    download(row) {
+    editHandler(row) {
+      this.policyType = 'edit'
+      const params = {
+        subsidypolicyTitle: row?.subsidypolicyTitle,
+        src: this.dialogImageUrl + row?.previews,
+        subsidypolicyContent: row?.subsidypolicyContent,
+        subsidypolicyId: row?.subsidypolicyId
+      }
+      this.editRow = params
+      this.showPolicy = true
+    },
+    deleteHandler(row) {
+      const { subsidypolicyId } = row
+      this.$modal
+      .confirm(`是否确认删除`)
+      .then(() => {
+        deleteSubsidyPolicy({
+          subsidypolicyIds: subsidypolicyId
+        }).then(() => {
+          Message({ message: "删除成功", type: 'success' });
+          this.handleSearch()
+        })
+      })
     }
     }
   }
   }
 };
 };