瀏覽代碼

Merge remote-tracking branch 'origin/master'

rongxin_prod
yangfuda 1 年之前
父節點
當前提交
196712b626
共有 69 個文件被更改,包括 12723 次插入1422 次删除
  1. +54
    -0
      src/api/contracted/cbdkxx.js
  2. +26
    -0
      src/api/contracted/cbf.js
  3. +70
    -0
      src/api/contracted/cbfjtcy.js
  4. +35
    -0
      src/api/contracted/cbht.js
  5. +54
    -0
      src/api/contracted/dk.js
  6. +46
    -0
      src/api/contracted/fbf.js
  7. +17
    -0
      src/api/homesteadSurvey/nhhncy.js
  8. +8
    -0
      src/api/sunVillage_info/fixedAssets.js
  9. +77
    -0
      src/api/sunVillage_info/sysCbf.js
  10. +18
    -0
      src/api/sunVillage_info/sysFbf.js
  11. +8
    -0
      src/api/system/config.js
  12. 二進制
      src/assets/images/sunVillage_info/index_block_cbfsq.png
  13. 二進制
      src/assets/images/sunVillage_info/index_block_fbfsq.png
  14. +5
    -4
      src/components/house/CommonMap.vue
  15. +1
    -0
      src/permission.js
  16. +45
    -0
      src/router/index.js
  17. +9
    -3
      src/views/contracted/index.vue
  18. +301
    -154
      src/views/contracted/village/contractor/contractWord.vue
  19. +89
    -8
      src/views/contracted/village/contractor/contractor.vue
  20. +16
    -10
      src/views/contracted/village/contractor/contractorDetail.vue
  21. +10
    -10
      src/views/contracted/village/contractor/contractorDetailAdd.vue
  22. +180
    -57
      src/views/contracted/village/contractor/contractorFamily.vue
  23. +211
    -125
      src/views/contracted/village/contractor/contractorFamilyDetail.vue
  24. +192
    -2
      src/views/contracted/village/contractor/contractorHeader.vue
  25. +158
    -66
      src/views/contracted/village/contractor/contractorLand.vue
  26. +309
    -118
      src/views/contracted/village/contractor/contractorLandDetail.vue
  27. +252
    -9
      src/views/contracted/village/contractor/contractorLandMap.vue
  28. +239
    -54
      src/views/contracted/village/employer/employer.vue
  29. +569
    -17
      src/views/contracted/village/map/map.vue
  30. +134
    -23
      src/views/contracted/village/massif/massif.vue
  31. +370
    -138
      src/views/contracted/village/massif/massifDetail.vue
  32. +8
    -1
      src/views/homesteadSurvey/add.vue
  33. +4
    -0
      src/views/homesteadSurvey/fsssAdd.vue
  34. +4
    -0
      src/views/homesteadSurvey/index.vue
  35. +62
    -1
      src/views/homesteadSurvey/list2.vue
  36. +5
    -0
      src/views/homesteadSurvey/zrzAdd.vue
  37. +1
    -1
      src/views/project/projectDetail.vue
  38. +3
    -0
      src/views/sunVillage_info/index_code_rights.vue
  39. +40
    -2
      src/views/sunVillage_info/list_cbf.vue
  40. +385
    -0
      src/views/sunVillage_info/list_cbfsq.vue
  41. +51
    -22
      src/views/sunVillage_info/list_chronicles.vue
  42. +178
    -18
      src/views/sunVillage_info/list_chronicles_process.vue
  43. +214
    -28
      src/views/sunVillage_info/list_chronicles_single_process.vue
  44. +51
    -21
      src/views/sunVillage_info/list_contractor.vue
  45. +193
    -24
      src/views/sunVillage_info/list_contractor_process.vue
  46. +365
    -181
      src/views/sunVillage_info/list_contractor_single_process.vue
  47. +186
    -21
      src/views/sunVillage_info/list_employer_process.vue
  48. +317
    -0
      src/views/sunVillage_info/list_fbfsq.vue
  49. +0
    -1
      src/views/sunVillage_info/list_signature_pdf.vue
  50. +4
    -4
      src/views/sunVillage_info/paidExit/paidExitList.vue
  51. +36
    -10
      src/views/yinnong/homestead/circulation/circulationAdd.vue
  52. +36
    -10
      src/views/yinnong/homestead/circulation/circulationDetail.vue
  53. +37
    -15
      src/views/yinnong/homestead/circulation/circulationList.vue
  54. +36
    -10
      src/views/yinnong/homestead/circulation/circulationModify.vue
  55. +1
    -1
      src/views/yinnong/homestead/freeExit/freeExitAdd.vue
  56. +1
    -1
      src/views/yinnong/homestead/freeExit/freeExitDetail.vue
  57. +1
    -1
      src/views/yinnong/homestead/freeExit/freeExitList.vue
  58. +1
    -1
      src/views/yinnong/homestead/freeExit/freeExitModify.vue
  59. +2
    -2
      src/views/yinnong/homestead/homeApplication/applicationGsList.vue
  60. +184
    -179
      src/views/yinnong/homestead/homeApplication/applicationList.vue
  61. +5287
    -0
      src/views/yinnong/homestead/homeApplication/proposerLite.vue
  62. +726
    -0
      src/views/yinnong/homestead/paidExit/paidExitAdd.vue
  63. +1
    -3
      src/views/yinnong/homestead/paidExit/paidExitDetail.vue
  64. +21
    -18
      src/views/yinnong/homestead/paidExit/paidExitList.vue
  65. +634
    -0
      src/views/yinnong/homestead/paidExit/paidExitModify.vue
  66. +36
    -11
      src/views/yinnong/homestead/paidUtilize/paidUtilizeAdd.vue
  67. +36
    -11
      src/views/yinnong/homestead/paidUtilize/paidUtilizeDteail.vue
  68. +37
    -15
      src/views/yinnong/homestead/paidUtilize/paidUtilizeList.vue
  69. +36
    -11
      src/views/yinnong/homestead/paidUtilize/paidUtilizeModify.vue

+ 54
- 0
src/api/contracted/cbdkxx.js 查看文件

@@ -0,0 +1,54 @@
import request from '@/utils/request';

// 承包地块信息列表
export function listCbdkxx(params) {
return request({
url: '/service/cbdkxx/mobile/list',
method: 'get',
params: params
});
}

// 承包地块详情
export function getCbdkxx(id) {
return request({
url: '/service/cbdkxx/get/' + id,
method: 'get'
});
}

// 新增承包地块信息
export function addCbdkxx(data) {
return request({
url: '/service/cbdkxx/insert',
method: 'post',
data: data
});
}

// 修改承包地块信息
export function updateCbdkxx(data) {
return request({
url: '/service/cbdkxx/modify',
method: 'post',
data: data
});
}

// 删除承包地块信息
export function deleteCbdkxx(id) {
return request({
url: '/service/cbdkxx/delete/' + id,
method: 'get'
});
}

// 转出承包地块
export function transferCbdkxx(params) {
return request({
url: '/service/cbdkxx/transfer',
method: 'get',
params: params
});
}


+ 26
- 0
src/api/contracted/cbf.js 查看文件

@@ -17,6 +17,14 @@ export function getCbf(cbfbm) {
}); });
} }


// 获取承包方详情
export function getCbfById(id) {
return request({
url: '/service/cbf/get/' + id,
method: 'get'
});
}

// 新增承包方信息 // 新增承包方信息
export function addCbf(data) { export function addCbf(data) {
return request({ return request({
@@ -51,3 +59,21 @@ export function generateContractorCode(params) {
params: params params: params
}); });
} }

// 承包方调查签字
export function contractorSignature(data) {
return request({
url: '/service/cbf/surveySign',
method: 'post',
data: data
});
}

// 调查挂起
export function hangUp(data) {
return request({
url: '/service/cbf/hangUp',
method: 'post',
data: data
});
}

+ 70
- 0
src/api/contracted/cbfjtcy.js 查看文件

@@ -0,0 +1,70 @@
import request from '@/utils/request';

// 查询承包方家庭成员列表
export function listJtcy(params) {
return request({
url: '/service/jtcy/list',
method: 'get',
params: params
});
}

// 查询承包方家庭成员详细
export function getJtcy(id) {
return request({
url: '/service/jtcy/get/' + id,
method: 'get'
});
}

// 新增承包方家庭成员信息
export function addJtcy(data) {
return request({
url: '/service/jtcy/add',
method: 'post',
data: data
});
}

// 修改承包方家庭成员信息
export function updateJtcy(data) {
return request({
url: '/service/jtcy/edit',
method: 'post',
data: data
});
}

// 删除承包方家庭成员信息
export function deleteJtcy(id) {
return request({
url: '/service/jtcy/remove/' + id,
method: 'get'
});
}

// 家庭成员分户
export function divisionJtcy(id) {
return request({
url: '/service/jtcy/division/' + id,
method: 'get'
});
}

// 家庭成员移户
export function transferJtcy(params) {
return request({
url: '/service/jtcy/transfer',
method: 'get',
params: params
});
}

// 家庭成员设为户主
export function setHouseholder(id) {
return request({
url: '/service/jtcy/householder/' + id,
method: 'get'
});
}


+ 35
- 0
src/api/contracted/cbht.js 查看文件

@@ -0,0 +1,35 @@
import request from '@/utils/request';

// 获取承包合同详情
export function getCbht(cbfbm) {
return request({
url: '/service/cbht/obtain/' + cbfbm,
method: 'get'
});
}

// 新增承包合同信息
export function addCbht(data) {
return request({
url: '/service/cbht/insert',
method: 'post',
data: data
});
}

// 修改承包合同信息
export function updateCbht(data) {
return request({
url: '/service/cbht/edit',
method: 'post',
data: data
});
}

// 承包合同延期
export function extendCbht(id) {
return request({
url: '/service/cbht/extension/' + id,
method: 'get'
});
}

+ 54
- 0
src/api/contracted/dk.js 查看文件

@@ -0,0 +1,54 @@
import request from '@/utils/request';

// 地块信息列表
export function listDk(params) {
return request({
url: '/service/dk/list',
method: 'get',
params: params
});
}

// 地块信息详情
export function getDk(id) {
return request({
url: '/service/dk/get/' + id,
method: 'get'
});
}

// 新增地块属性信息
export function addDk(data) {
return request({
url: '/service/dk/add',
method: 'post',
data: data
})
}

// 修改地块属性信息
export function updateDk(data) {
return request({
url: '/service/dk/edit',
method: 'post',
data: data
})
}

// 删除地块信息
export function deleteDk(id) {
return request({
url: '/service/dk/remove/' + id,
method: 'get'
});
}


// 生成地块编码
export function generateLandCode(params) {
return request({
url: '/service/dk/generateCode',
method: 'get',
params: params
});
}

+ 46
- 0
src/api/contracted/fbf.js 查看文件

@@ -0,0 +1,46 @@
import request from '@/utils/request';

// 获取承包方列表
export function listFbf(params) {
return request({
url: '/service/fbf/list',
method: 'get',
params: params
});
}

// 新增发包方信息
export function addFbf(data) {
return request({
url: '/service/fbf/add',
method: 'post',
data: data
})
}

// 修改发包方信息
export function updateFbf(data) {
return request({
url: '/service/fbf/edit',
method: 'post',
data: data
})
}

// 发包方调查签字
export function manualSignature(data) {
return request({
url: '/service/fbf/surveySign',
method: 'post',
data: data
});
}

// 生成发包方编码
export function generateEmployerCode(params) {
return request({
url: '/service/fbf/generateCode',
method: 'get',
params: params
});
}

+ 17
- 0
src/api/homesteadSurvey/nhhncy.js 查看文件

@@ -25,6 +25,23 @@ export function getNhhncy(id) {
method: 'get' method: 'get'
}) })
} }
// 查询列表
export function queryHomesteadnhhncyList(query) {
return request({
url: '/home/homesteadnhhncy/queryList',
method: 'get',
params: query
})
}


export function addOutsidenhhncy(data) {
return request({
url: '/home/homesteadnhhncy/outsideAdd',
method: 'post',
data: data
})
}


// 新增数据调查-农户户内成员 // 新增数据调查-农户户内成员
export function addNhhncy(data) { export function addNhhncy(data) {


+ 8
- 0
src/api/sunVillage_info/fixedAssets.js 查看文件

@@ -814,6 +814,14 @@ export function cbhtSecondSign(data,id) {
data: data data: data
}) })
} }
// 承包方公示结果签字
export function updateGsjgSign(data) {
return request({
url: '/open/home/mobile/updateGsjgSign',
method: 'post',
data: data
})
}


// 附件查询 // 附件查询
export function attachmentQuery(query) { export function attachmentQuery(query) {


+ 77
- 0
src/api/sunVillage_info/sysCbf.js 查看文件

@@ -0,0 +1,77 @@
import request from '@/utils/request'

//查询列表
export function getList(data){
return request({
url:'/service/cbf/list',
method:'get',
params:data
})
}
//承包方查询
export function getCbfList(data){
return request({
url:'/open/villageAffairs/public/cbfList',
method:'get',
params:data
})
}

//查询承包地块列表
export function getCbdkms(data){
return request({
url:'/service/cbdkxx/getCbdkms',
method:'get',
params:data
})
}
//查询承包方调查
export function getCbfdcList(data){
return request({
url:'/service/cbfdc/list',
method:'get',
params:data
})
}

//修改
export function updateSysCfb(data){
return request({
url:'/service/cbf/edit',
method: 'post',
data: data
})
}
//批量修改承包方记事签字
export function updateBatchSign(data,gsjs){
return request({
url:'/service/cbf/updateBatchSign?gsjs='+gsjs,
method: 'post',
data: data
})
}
//修改承包方记事签字
export function updateSign(data){
return request({
url:'/service/cbf/updateSign',
method: 'post',
data: data
})
}
//批量修改承包方审核签字
export function examineBatchSign(data,shyj){
return request({
url:'/service/cbf/examineBatchSign?shyj='+shyj,
method: 'post',
data: data
})
}
//修改承包方审核签字
export function examineSign(data){
return request({
url:'/service/cbf/examineSign',
method: 'post',
data: data
})
}


+ 18
- 0
src/api/sunVillage_info/sysFbf.js 查看文件

@@ -0,0 +1,18 @@
import request from '@/utils/request'

//查询列表
export function getSysFfb(data){
return request({
url:'/service/fbf/sysFbfSelect',
method:'get',
params:data
})
}
//修改
export function auditSign(data){
return request({
url:'/service/fbf/auditSign',
method: 'post',
data: data
})
}

+ 8
- 0
src/api/system/config.js 查看文件

@@ -15,3 +15,11 @@ export function getSystemAttachmentUrl() {
method: 'get' method: 'get'
}) })
} }

// 根据参数键名查询参数值
export function getConfigKey(configKey) {
return request({
url: '/open/typz/configKey/' + configKey,
method: 'get'
})
}

二進制
src/assets/images/sunVillage_info/index_block_cbfsq.png 查看文件

Before After
Width: 65  |  Height: 58  |  Size: 4.2 KiB

二進制
src/assets/images/sunVillage_info/index_block_fbfsq.png 查看文件

Before After
Width: 65  |  Height: 58  |  Size: 4.2 KiB

+ 5
- 4
src/components/house/CommonMap.vue 查看文件

@@ -105,7 +105,7 @@ export default {
view: new ol.View({ view: new ol.View({
center: ol.proj.fromLonLat(this.coord), center: ol.proj.fromLonLat(this.coord),
//zoom: false, //zoom: false,
zoom: 17.9,
zoom: 17,
minZoom: this.minMapZoom, //地图缩小限制 minZoom: this.minMapZoom, //地图缩小限制
maxZoom: this.maxMapZoom, //地图放大限制 maxZoom: this.maxMapZoom, //地图放大限制
}), }),
@@ -248,6 +248,7 @@ export default {
self.drawInsert = null; self.drawInsert = null;
self.mapObject.removeInteraction(draw); self.mapObject.removeInteraction(draw);
self.popLayer(COMMON_MAP_DRAW_LAYER_NAME); self.popLayer(COMMON_MAP_DRAW_LAYER_NAME);
self.$emit("drawFinished", null);
//console.log("drawRemove"); //console.log("drawRemove");
}); });
//还原之前图层 //还原之前图层
@@ -308,9 +309,9 @@ export default {
this.mapObject.getView().animate({ this.mapObject.getView().animate({
// 只设置需要的属性即可 // 只设置需要的属性即可
center: center, // 中心点 center: center, // 中心点
zoom: 17.9, // 缩放级别
zoom: 17, // 缩放级别
rotation: undefined, // 缩放完成view视图旋转弧度 rotation: undefined, // 缩放完成view视图旋转弧度
duration: 1000, // 缩放持续时间,默认不需要设置
duration: 300, // 缩放持续时间,默认不需要设置
}); });
return true; return true;
}, },
@@ -371,7 +372,7 @@ export default {
this.mapObject.getView().animate({ this.mapObject.getView().animate({
// 只设置需要的属性即可 // 只设置需要的属性即可
center: center, // 中心点 center: center, // 中心点
zoom: 17.9, // 缩放级别
zoom: 17, // 缩放级别
rotation: undefined, // 缩放完成view视图旋转弧度 rotation: undefined, // 缩放完成view视图旋转弧度
duration: 1000, // 缩放持续时间,默认不需要设置 duration: 1000, // 缩放持续时间,默认不需要设置
}); });


+ 1
- 0
src/permission.js 查看文件

@@ -118,6 +118,7 @@ const whiteList = [
'/sunVillage_info/arbitrationDetail', '/sunVillage_info/arbitrationDetail',
'/sunVillage_info/familyMember', '/sunVillage_info/familyMember',
'/sunVillage_info/familyMemberDetail', '/sunVillage_info/familyMemberDetail',
'/sunVillage_info/list_cbfsq',
'/sunVillage_info/list_signature', '/sunVillage_info/list_signature',
'/sunVillage_info/list_official', '/sunVillage_info/list_official',
'/sunVillage_info/list_signature_add', '/sunVillage_info/list_signature_add',


+ 45
- 0
src/router/index.js 查看文件

@@ -852,6 +852,24 @@ export const constantRoutes = [
}, },
component: (resolve) => require(['@/views/yinnong/homestead/freeExit/freeExitList'], resolve) component: (resolve) => require(['@/views/yinnong/homestead/freeExit/freeExitList'], resolve)
}, },
{
path: '/homesteadPaidExitAdd',
name: 'homesteadPaidExitAdd',
meta: {
title: '有偿退出(阳光村务)',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/homestead/paidExit/paidExitAdd'], resolve)
},
{
path: '/homesteadPaidExitModify',
name: 'homesteadPaidExitModify',
meta: {
title: '有偿退出(阳光村务)',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/homestead/paidExit/paidExitModify'], resolve)
},
{ {
path: '/paidExitAdd', path: '/paidExitAdd',
name: 'paidExitAdd', name: 'paidExitAdd',
@@ -3624,6 +3642,15 @@ export const constantRoutes = [
}, },
component: (resolve) => require(['@/views/sunVillage_info/list_chronicles_single_process'], resolve) component: (resolve) => require(['@/views/sunVillage_info/list_chronicles_single_process'], resolve)
}, },
{ ////阳光村务(新)-- 发包方授权
path: '/sunVillage_info/list_fbfsq',
name: 'sunVillageInfoListFbfsq',
meta: {
title: '发包方授权',
hidden: true,
},
component: (resolve) => require(['@/views/sunVillage_info/list_fbfsq'], resolve)
},
{ // 综合填报 { // 综合填报
path: '/sunVillage_info/entityReportList', path: '/sunVillage_info/entityReportList',
name: 'entityReportList', name: 'entityReportList',
@@ -3930,6 +3957,15 @@ export const constantRoutes = [
}, },
component: (resolve) => require(['@/views/sunVillage_info/homeApplication/proposerLite'], resolve) component: (resolve) => require(['@/views/sunVillage_info/homeApplication/proposerLite'], resolve)
}, },
{
path: '/homesteadProposerLite',
name: 'homesteadProposerLite',
meta: {
title: '农村宅基地申请(阳光村务)',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/homestead/homeApplication/proposerLite'], resolve)
},
{ {
path: '/sunVillage_info/paidExit/paidExitList', path: '/sunVillage_info/paidExit/paidExitList',
name: 'sunVillageInfoPaidExitList', name: 'sunVillageInfoPaidExitList',
@@ -4002,6 +4038,15 @@ export const constantRoutes = [
}, },
component: (resolve) => require(['@/views/sunVillage_info/familyMember/familyMemberDetail'], resolve) component: (resolve) => require(['@/views/sunVillage_info/familyMember/familyMemberDetail'], resolve)
}, },
{
path: '/sunVillage_info/list_cbfsq',
name: 'sunVillageInfoListCbfsq',
meta: {
title: '承包方授权',
hidden: true,
},
component: (resolve) => require(['@/views/sunVillage_info/list_cbfsq'], resolve)
},
{ ////阳光村务(新)-- 合同信息 { ////阳光村务(新)-- 合同信息
path: '/sunVillage_info/list_vote_detail', path: '/sunVillage_info/list_vote_detail',
name: 'sunVillageInfoListVoteDetail', name: 'sunVillageInfoListVoteDetail',


+ 9
- 3
src/views/contracted/index.vue 查看文件

@@ -55,9 +55,9 @@
</div> </div>
</div> </div>
</div> </div>
<template #right>
<!-- <template #right>
<div class="operation"> <div class="operation">
<!-- delete 删除 edit编辑 view查看 list榜单 -->
delete 删除 edit编辑 view查看 list榜单
<div class="opera_btn"> <div class="opera_btn">
<img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35"> <img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35">
<p>签名</p> <p>签名</p>
@@ -75,7 +75,7 @@
<p>线下合同</p> <p>线下合同</p>
</div> </div>
</div> </div>
</template>
</template> -->
</van-swipe-cell> </van-swipe-cell>
</van-list> </van-list>
</div> </div>
@@ -122,6 +122,12 @@
}); });
}, },
goDetail(item){ goDetail(item){
// 调查任务完成状态:已完成标记为1,未完成标记为2
let status = '1';
if (item.surStatus === 'UNFINISHED') {
status = '2';
}
Cookies.set('taskStatus', status, { expires: 30 });
this.$router.push({path:'/contracted/village/contractor', query: { deptId: item.deptId, deptName: item.deptName }}) this.$router.push({path:'/contracted/village/contractor', query: { deptId: item.deptId, deptName: item.deptName }})
}, },
onSelect(action) { onSelect(action) {


+ 301
- 154
src/views/contracted/village/contractor/contractWord.vue 查看文件

@@ -8,119 +8,151 @@
</div> </div>
</template> </template>
</van-nav-bar> --> </van-nav-bar> -->
<contractor-header></contractor-header>
<contractor-header :dept-id="$route.params.deptId" :contractor-code="$route.params.cbfbm" :contractor-name="$route.params.cbfmc" :survey-status="$route.params.surveyStatus" :task-status="taskStatus"></contractor-header>


<div class="tap_block"> <div class="tap_block">
<p @click="$router.push({path:'/contracted/village/contractorDetail'})">承包方</p>
<p @click="$router.push({path:'/contracted/village/contractorFamily'})">家庭成员</p>
<p @click="skip('contractedVillageContractorDetail')">承包方</p>
<p @click="skip('contractedVillageContractorFamily')">家庭成员</p>
<p class="active">承包合同</p> <p class="active">承包合同</p>
<p @click="$router.push({path:'/contracted/village/contractorLand'})">承包地</p>
<p @click="skip('contractedVillageContractorLand')">承包地</p>
</div> </div>


<div class="list_main"> <div class="list_main">
<van-field v-model="value" label="承包合同代码:" placeholder="请输入承包合同代码" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="原承包合同代码:" placeholder="请输入原承包合同代码" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="发包方代码:" placeholder="请输入发包方代码" required :border="false" input-align="right" />
<van-field
v-model="value"
label="承包方类型:"
placeholder="请选择承包方类型"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showType = true"
/>
<van-popup v-model="showType" position="bottom">
<van-picker
show-toolbar
:columns="typeOptions"
value-key="dictLabel"
@confirm="onConfirmTypeOptions"
@cancel="showType = false"
<van-form ref="formData">
<van-field v-model="form.cbhtbm" label="承包合同代码:" placeholder="请输入承包合同代码" required :rules="[{ required: true }]" :border="false" input-align="left" label-width="auto" :disabled="isDisabled" maxlength="19">
<template #button v-if="!isDisabled">
<van-button size="mini" type="primary" native-type="button" @click="generateCode">生成</van-button>
</template>
</van-field>
<van-field v-model="form.ycbhtbm" label="原承包合同代码:" placeholder="请输入原承包合同代码" :border="false" input-align="left" maxlength="19" />
<van-field v-model="form.fbfbm" label="发包方代码:" placeholder="请输入发包方代码" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="14" />
<van-field
v-model="cbflxText"
label="承包方类型:"
placeholder="请选择承包方类型"
required
:rules="[{ required: true }]"
:border="false"
input-align="left"
right-icon="arrow-down"
readonly
clickable
@click="showType = true"
/> />
</van-popup>

<van-field v-model="value" label="承包方名称:" placeholder="请输入承包方名称" required :border="false" input-align="right" />
<van-field v-model="value" label="承包方代码:" placeholder="请输入承包方代码" required :border="false" input-align="right" />
<van-field
v-model="value"
label="承包方式:"
placeholder="请选择承包方式"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showZjType = true"
/>
<van-popup v-model="showZjType" position="bottom">
<van-picker
show-toolbar
:columns="zjTypeOptions"
value-key="dictLabel"
@confirm="onConfirmZjTypeOptions"
@cancel="showZjType = false"
<van-popup v-model="showType" position="bottom">
<van-picker
show-toolbar
:columns="cbflxOptions"
value-key="dictLabel"
@confirm="onConfirmTypeOptions"
@cancel="showType = false"
/>
</van-popup>
<van-field v-model="form.cbfbm" label="承包方代码:" placeholder="请输入承包方代码" required :rules="[{ required: true }]" :border="false" input-align="left" :disabled="isDisabled" maxlength="18" />
<van-field v-model="form.cbfmc" label="承包方名称:" placeholder="请输入承包方名称" required :rules="[{ required: true }]" :border="false" input-align="left" />
<van-field
v-model="cbfsText"
label="承包方式:"
placeholder="请选择承包方式"
required
:rules="[{ required: true }]"
:border="false"
input-align="left"
right-icon="arrow-down"
readonly
clickable
@click="showCbfs = true"
/> />
</van-popup>

<van-field
v-model="value"
label="签订时间:"
placeholder="请选择签订时间"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showQDSJ = true"
/>
<van-popup v-model="showQDSJ" position="bottom">
<van-datetime-picker
v-model="currentDate"
type="date"
title="选择年月日"
:min-date="minDate"
:max-date="maxDate"
<van-popup v-model="showCbfs" position="bottom">
<van-picker
show-toolbar
:columns="cbfsOptions"
value-key="dictLabel"
@confirm="onConfirmCbfsOptions"
@cancel="showCbfs = false"
/>
</van-popup>
<van-field
v-model="form.qdsj"
label="签订时间:"
placeholder="请选择签订时间"
required
:rules="[{ required: true }]"
:border="false"
input-align="left"
right-icon="arrow-down"
readonly
clickable
@click="showQDSJ = true"
/> />
</van-popup>

<van-field
v-model="value"
label="承包起始:"
placeholder="请选择承包起始"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showCBQS = true"
/>
<van-popup v-model="showCBQS" position="bottom">
<van-datetime-picker
v-model="currentDate"
type="date"
title="选择年月日"
:min-date="minDate"
:max-date="maxDate"
<van-popup v-model="showQDSJ" position="bottom">
<van-datetime-picker
:value="new Date(form.qdsj)"
type="date"
title="请选择签订时间"
:min-date="minDate"
:max-date="maxDate"
@confirm="onConfirmQdsj"
@cancel="showQDSJ = false"
/>
</van-popup>
<van-field
v-model="form.cbqxq"
label="承包起始时间:"
placeholder="请选择起始时间"
required
:rules="[{ required: true }]"
:border="false"
input-align="left"
right-icon="arrow-down"
readonly
clickable
@click="showCbqxq = true"
>
<template #button v-if="isDisabled">
<van-button size="mini" type="primary" native-type="button" @click.stop="extension">延期</van-button>
</template>
</van-field>
<van-popup v-model="showCbqxq" position="bottom">
<van-datetime-picker
:value="form.cbqxq ? new Date(form.cbqxq) : new Date()"
type="date"
title="请选择起始时间"
:min-date="minDate"
:max-date="maxDate"
@confirm="onConfirmCbqxq"
@cancel="showCbqxq = false"
/>
</van-popup>

<van-field
v-model="form.cbqxz"
label="承包结束时间:"
placeholder="请选择结束时间"
required
:rules="[{ required: true }]"
:border="false"
input-align="left"
right-icon="arrow-down"
readonly
clickable
@click="showCbqxz = true"
/> />
</van-popup>



<van-field v-model="value" label="承包结束:" placeholder="请输入承包结束" required :border="false" input-align="right" />
<van-field v-model="value" label="承包地块数:" placeholder="请输入承包地块数" required :border="false" input-align="right" />
<van-field v-model="value" label="合同面积(亩):" placeholder="请输入合同面积(亩)" required :border="false" input-align="right" label-width="auto" />
<p class="btn">保存</p>
<van-popup v-model="showCbqxz" position="bottom">
<van-datetime-picker
:value="form.cbqxz ? new Date(form.cbqxz) : new Date()"
type="date"
title="请选择结束时间"
:min-date="minDate"
:max-date="maxDate"
@confirm="onConfirmCbqxz"
@cancel="showCbqxz = false"
/>
</van-popup>
<van-field v-model="form.cbdkzs" label="承包地块数:" placeholder="请输入承包地块数" required :rules="[{ required: true }]" :border="false" input-align="left" type="digit" />
<van-field v-model="form.htzmjm" label="合同面积(亩):" placeholder="请输入合同面积(亩)" required :rules="[{ required: true }]" :border="false" input-align="left" type="number" />
</van-form>
<p class="btn" @click="submitForm" v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">保存</p>
</div> </div>




@@ -129,6 +161,7 @@
<script> <script>
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import contractorHeader from "./contractorHeader"; import contractorHeader from "./contractorHeader";
import { getCbht, addCbht, updateCbht, extendCbht } from "@/api/contracted/cbht";


export default { export default {
name: "contractedVillageContractor", name: "contractedVillageContractor",
@@ -137,51 +170,157 @@
}, },
data() { data() {
return { return {
loading:false,
finished:true,
value:'',
showType:false,
showZjType:false,
showQDSJ:false,
showCBQS:false,
typeOptions:[{
dictLabel:'类型1',
dictValue:'1',
}],
zjTypeOptions:[{
dictLabel:'类型2',
dictValue:'1',
}],
CYBZOptions:[{
dictLabel:'类型2',
dictValue:'1',
}],
radio:1,
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date(2021, 0, 17),
form: {}, // 承包合同表单信息
cbfsOptions: [], // 承包方式字典
cbfsText: null, // 承包方式标签名
showCbfs: false, // 控制承包方式字典弹出层的显示和隐藏
cbflxOptions: [], // 承包方类型字典
cbflxText: null, // 承包方类型标签名
showType: false, // 控制承包方类型字典弹出层的显示和隐藏
showQDSJ: false, // 控制签订时间弹出层的显示和隐藏
showCbqxq: false, // 控制承包起始时间弹出层的显示和隐藏
showCbqxz: false, // 控制承包结束时间弹出层的显示和隐藏
minDate: new Date(1978, 0, 1),
maxDate: new Date(2100, 11, 31),
isDisabled: false,
taskStatus: null, // 调查任务的完成状态:1表示已完成,2表示未完成
}; };
}, },
created() { created() {

this.taskStatus = Cookies.get('taskStatus');
this.getDicts("jyq_method").then(response => {
this.cbfsOptions = response.data;
});
this.getDicts("cbf_type").then(response => {
this.cbflxOptions = response.data;
});
},
mounted() {
setTimeout(() => {
this.getDetail();
}, 500);
}, },
methods: { methods: {
getList(){

getDetail(){
getCbht(this.$route.params.cbfbm).then(response => {
this.form = response.data;
if (this.form) {
this.cbflxText = this.selectDictLabel(this.cbflxOptions, this.form.cbflx);
this.cbfsText = this.selectDictLabel(this.cbfsOptions, this.form.cbfs);
this.isDisabled = true;
} else {
this.isDisabled = false;
this.resetForm();
}
});
}, },
onSearch(){

onConfirmTypeOptions(value) {
this.form.cbflx = value.dictValue;
this.cbflxText = value.dictLabel;
this.showType = false;
}, },
onConfirmTypeOptions(){

onConfirmCbfsOptions(value) {
this.form.cbfs = value.dictValue;
this.cbfsText = value.dictLabel;
this.showCbfs = false;
}, },
onConfirmZjTypeOptions(){

onConfirmQdsj(data) {
this.form.qdsj = this.format(data, 'yyyy-MM-dd');
this.showQDSJ = false
}, },
onConfirmCYBZOptions(){

onConfirmCbqxq(data) {
this.form.cbqxq = this.format(data, 'yyyy-MM-dd');
this.showCbqxq = false;
}, },

onConfirmCbqxz(data) {
this.form.cbqxz = this.format(data, 'yyyy-MM-dd');
this.showCbqxz = false;
},
skip(name) {
this.$router.push({
name: name,
params: {
deptId: this.$route.params.deptId,
cbfbm: this.$route.params.cbfbm,
cbfmc: this.$route.params.cbfmc,
surveyStatus: this.$route.params.surveyStatus
}
});
},
submitForm() {
this.$refs.formData.validate().then(() => {
if (this.form.id) {
updateCbht(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
});
}
});
} else {
this.form.deptId = this.$route.params.deptId;
addCbht(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
onClose: () => {
this.getDetail();
}
});
}
});
}
}).catch(() => {
this.$notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
resetForm() {
this.form = {
deptId: null,
cbhtbm: null,
ycbhtbm: null,
fbfbm: null,
cbflx: '1',
cbfmc: null,
cbfbm: null,
cbfs: '110',
qdsj: this.format(new Date(), 'yyyy-MM-dd'),
cbqxq: null,
cbqxz: null,
cbdkzs: null,
htzmjm: null,
};
this.cbfsText = '家庭承包';
this.cbflxText = '农户';
},
extension() {
if (this.form.id) {
this.$dialog.confirm({
message: '是否确认将此份承包合同的承包期限延长30年?',
}).then(() => {
// on confirm
extendCbht(this.form.id).then(response => {
if (response.code == 200) {
this.$toast.success('延期成功');
this.form.cbqxq = response.data.startTime;
this.form.cbqxz = response.data.endTime;
}
});
}).catch(() => {
// on cancel
});
}
},
generateCode() {
this.form.cbhtbm = this.$route.params.cbfbm + 'J';
this.form.fbfbm = this.$route.params.cbfbm.substring(0, 14);
this.form.cbfmc = this.$route.params.cbfmc;
this.form.cbfbm = this.$route.params.cbfbm;
}
}, },
}; };
</script> </script>
@@ -219,24 +358,32 @@
overflow: initial; overflow: initial;
} }


/* .tb_main{
position: relative;
p{
position: absolute;
display: inline-block;
margin-left: 10PX;
}
/deep/ .van-field__label {
width: 225px;
}

/deep/ .van-field--disabled .van-field__label {
color: #646566;
} }


.tb{
font-size: 12px;
color: #ff8900;
background: #daf6e7;
border: 1px solid #d7be6e;
padding: 2PX 8PX;
border-radius: 50PX;
margin-right: 5PX;
} */
/* .tb_main{
position: relative;
p{
position: absolute;
display: inline-block;
margin-left: 10PX;
}
}

.tb{
font-size: 12px;
color: #ff8900;
background: #daf6e7;
border: 1px solid #d7be6e;
padding: 2PX 8PX;
border-radius: 50PX;
margin-right: 5PX;
} */


.tap_block{ .tap_block{
width: 100%; width: 100%;


+ 89
- 8
src/views/contracted/village/contractor/contractor.vue 查看文件

@@ -20,7 +20,7 @@
@search="onSearch" @search="onSearch"
></van-search> ></van-search>


<div class="search_btn" @click="addContractor">
<div class="search_btn" @click="addContractor" v-if="taskStatus === '2'">
<p class="active"> + 新增</p> <p class="active"> + 新增</p>
</div> </div>


@@ -54,18 +54,33 @@
<van-col span="5" style="color: #f78200">{{ item.cbfcysl }}</van-col> <van-col span="5" style="color: #f78200">{{ item.cbfcysl }}</van-col>
</van-row> </van-row>
<template #right> <template #right>
<van-button square type="danger" text="删除" native-type="button" @click="deleteContractor(item.id, index)" />
<!-- <van-button v-if="surveyStatus === '2'" square type="warning" text="挂起原因" native-type="button" @click="handleViewRemark(item.id)" />
<van-button square type="danger" text="删除" native-type="button" @click="deleteContractor(item.id, index)" /> -->
<div class="operation">
<!-- delete 删除 edit编辑 view查看 list榜单 -->
<div class="opera_btn view" v-if="surveyStatus === '2'" @click="handleViewRemark(item.id)">
<p>挂起原因</p>
</div>
<div class="opera_btn delete" v-if="taskStatus === '2'" @click="deleteContractor(item.id, index)">
<p>删除</p>
</div>
</div>
</template> </template>
</van-swipe-cell> </van-swipe-cell>
</van-list> </van-list>
</div> </div>


<!-- 异常挂起备注信息弹出框 -->
<van-dialog v-model="showRemark" title="异常挂起原因" :show-confirm-button="false" show-cancel-button cancelButtonText="关闭">
<van-form ref="remarkForm" class="remarkForm">
<van-field v-model="remark" label="挂起原因:" type="textarea" rows="4" placeholder="挂起原因" input-align="left"
label-width="auto" />
</van-form>
</van-dialog>
</div> </div>
</template> </template>
<script> <script>
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { listCbf, deleteCbf } from "@/api/contracted/cbf";
import { listCbf, getCbfById, deleteCbf } from "@/api/contracted/cbf";


export default { export default {
name: "contractedVillageContractor", name: "contractedVillageContractor",
@@ -85,6 +100,9 @@
surveyStatus: null, surveyStatus: null,
pageNum:1, pageNum:1,
pageSize:20, pageSize:20,
// 查询排序
orderByColumn: "id",
isAsc: "desc",
}, },
// 承包方列表 // 承包方列表
cbfList: [], cbfList: [],
@@ -92,9 +110,16 @@
tagName: null, tagName: null,
// 当前调查状态下的承包方总数 // 当前调查状态下的承包方总数
totalNum: 0, totalNum: 0,
// 控制异常信息备注提示框的显示和隐藏
showRemark: false,
// 异常备注信息
remark: null,
// 调查任务的完成状态:1表示已完成,2表示未完成
taskStatus: null,
}; };
}, },
created() { created() {
this.taskStatus = Cookies.get('taskStatus');
this.queryParams.deptId = this.$route.query.deptId; this.queryParams.deptId = this.$route.query.deptId;
this.getDicts("confirmed_survey_status").then(response => { this.getDicts("confirmed_survey_status").then(response => {
this.surveyStatusOptions = response.data; this.surveyStatusOptions = response.data;
@@ -161,18 +186,33 @@
}, },
deleteContractor(id, index) { deleteContractor(id, index) {
this.$dialog.confirm({ this.$dialog.confirm({
message: '是否确认删除此承包方信息?',
message: '是否确认删除此承包方信息?',
}).then(() => { }).then(() => {
// on confirm // on confirm
deleteCbf(id).then(res => { deleteCbf(id).then(res => {
if(res.code == 200){ if(res.code == 200){
this.$toast.success('删除成功');
this.cbfList.splice(index, 1);
this.$toast({
icon: 'success',
message: '删除成功',
duration: "1000",
onClose: () => {
this.cbfList.splice(index, 1);
this.totalNum = this.totalNum - 1;
}
});

} }
}); });
}).catch(() => { }).catch(() => {
// on cancel // on cancel
}); });
},
handleViewRemark(id) {
this.remark = null;
getCbfById(id).then(response => {
this.showRemark = true;
this.remark = response.data.surveyRemark;
});
} }
}, },
}; };
@@ -206,6 +246,15 @@
flex: 1; flex: 1;
} }


/deep/ .remarkForm .van-cell__value {
border: 1px solid #b0b3ba;
border-radius: 5px;
padding: 0 15px;
.van-field__control {
color: #646566;
}
}

.tap_block{ .tap_block{
width: 100%; width: 100%;
display: flex; display: flex;
@@ -296,4 +345,36 @@
} }
} }


.operation{
display: flex;
align-items: center;
justify-content: right;
text-align: center;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
height: 100%;
border-radius: 30px;
margin-left: 2vw;
overflow: hidden;
.opera_btn{
height: 100%;
display: flex;
align-items: center;
color: #ffffff;
padding: 0 5vw;
&.delete{
background:#ff3737;
}
&.edit{
background: #a5f790;
}
&.view{
background: #48e5a2;
}
&.list{
background: #fb9627;
}
}
}

</style> </style>

+ 16
- 10
src/views/contracted/village/contractor/contractorDetail.vue 查看文件

@@ -8,7 +8,7 @@
</div> </div>
</template> </template>
</van-nav-bar> --> </van-nav-bar> -->
<contractor-header :dept-id="$route.params.deptId" :contractor-code="$route.params.cbfbm" :contractor-name="$route.params.cbfmc" :survey-status="$route.params.surveyStatus"></contractor-header>
<contractor-header :dept-id="$route.params.deptId" :contractor-code="$route.params.cbfbm" :contractor-name="$route.params.cbfmc" :survey-status="$route.params.surveyStatus" :task-status="taskStatus"></contractor-header>


<div class="tap_block"> <div class="tap_block">
<p class="active">承包方</p> <p class="active">承包方</p>
@@ -19,6 +19,7 @@


<div class="list_main"> <div class="list_main">
<van-form ref="formData"> <van-form ref="formData">
<van-field v-model="form.cbfbm" label="代码:" placeholder="请输入代码" required :rules="[{ required: true }]" :border="false" input-align="left" disabled maxlength="18" />
<van-field <van-field
v-model="form.cbflxText" v-model="form.cbflxText"
label="类型:" label="类型:"
@@ -41,7 +42,6 @@
@cancel="showType = false" @cancel="showType = false"
/> />
</van-popup> </van-popup>
<van-field v-model="form.cbfbm" label="代码:" placeholder="请输入代码" required :rules="[{ required: true }]" :border="false" input-align="left" readonly />
<van-field v-model="form.cbfmc" label="名称:" placeholder="请输入名称" required :rules="[{ required: true }]" :border="false" input-align="left" /> <van-field v-model="form.cbfmc" label="名称:" placeholder="请输入名称" required :rules="[{ required: true }]" :border="false" input-align="left" />
<van-field <van-field
v-model="form.cbfzjlxText" v-model="form.cbfzjlxText"
@@ -68,11 +68,11 @@


<van-field v-model="form.cbfzjhm" label="证件号码:" placeholder="请输入证件号码" required :rules="[{ required: true }]" :border="false" input-align="left" /> <van-field v-model="form.cbfzjhm" label="证件号码:" placeholder="请输入证件号码" required :rules="[{ required: true }]" :border="false" input-align="left" />
<van-field v-model="form.cbfdz" label="地址:" placeholder="请输入地址" required :rules="[{ required: true }]" :border="false" input-align="left" /> <van-field v-model="form.cbfdz" label="地址:" placeholder="请输入地址" required :rules="[{ required: true }]" :border="false" input-align="left" />
<van-field v-model="form.yzbm" label="邮编:" placeholder="请输入邮编" required :rules="[{ required: true }]" :border="false" input-align="left" />
<van-field v-model="form.yzbm" label="邮编:" placeholder="请输入邮编" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="6" />
<van-field v-model="form.lxdh" label="电话:" placeholder="请输入电话" required :rules="[{ required: true }]" :border="false" input-align="left" /> <van-field v-model="form.lxdh" label="电话:" placeholder="请输入电话" required :rules="[{ required: true }]" :border="false" input-align="left" />
<van-field v-model="form.cbfdcjs" label="调查记事:" type="textarea" rows="3" placeholder="请输入调查记事" required :rules="[{ required: true }]" :border="false" input-align="left" /> <van-field v-model="form.cbfdcjs" label="调查记事:" type="textarea" rows="3" placeholder="请输入调查记事" required :rules="[{ required: true }]" :border="false" input-align="left" />
</van-form> </van-form>
<p class="btn" @click="submitForm">保存</p>
<p class="btn" @click="submitForm" v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">保存</p>
</div> </div>




@@ -98,21 +98,23 @@
contractorTypeOptions: [], contractorTypeOptions: [],
// 承包方证件类型字典 // 承包方证件类型字典
credentialTypeOptions: [], credentialTypeOptions: [],
// 调查任务的完成状态:1表示已完成,2表示未完成
taskStatus: null,
}; };
}, },
watch: {
'$route': function() {
window.location.reload();
}
},
created() { created() {
this.taskStatus = Cookies.get('taskStatus');
this.getDicts("cbf_type").then(response => { this.getDicts("cbf_type").then(response => {
this.contractorTypeOptions = response.data; this.contractorTypeOptions = response.data;
}); });
this.getDicts("cert_type").then(response => { this.getDicts("cert_type").then(response => {
this.credentialTypeOptions = response.data; this.credentialTypeOptions = response.data;
}); });
this.getDetail();
},
mounted() {
setTimeout(() => {
this.getDetail();
}, 500);
}, },
methods: { methods: {
getDetail(){ getDetail(){
@@ -197,6 +199,10 @@
overflow: initial; overflow: initial;
} }


/deep/ .van-field--disabled .van-field__label {
color: #646566;
}

/* .tb_main{ /* .tb_main{
position: relative; position: relative;
p{ p{


+ 10
- 10
src/views/contracted/village/contractor/contractorDetailAdd.vue 查看文件

@@ -11,6 +11,11 @@


<div class="list_main"> <div class="list_main">
<van-form ref="formData"> <van-form ref="formData">
<van-field v-model="form.cbfbm" label="代码:" placeholder="请输入代码" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="18">
<template #button>
<van-button size="mini" type="primary" native-type="button" @click="generateCode">生成代码</van-button>
</template>
</van-field>
<van-field <van-field
v-model="cbflxText" v-model="cbflxText"
label="类型:" label="类型:"
@@ -33,11 +38,6 @@
@cancel="showType = false" @cancel="showType = false"
/> />
</van-popup> </van-popup>
<van-field v-model="form.cbfbm" label="代码:" placeholder="请输入代码" required :rules="[{ required: true }]" :border="false" input-align="left">
<template #button>
<van-button size="mini" type="primary" native-type="button" @click="generateCode">生成代码</van-button>
</template>
</van-field>
<van-field v-model="form.cbfmc" label="名称:" placeholder="请输入名称" required :rules="[{ required: true }]" :border="false" input-align="left" /> <van-field v-model="form.cbfmc" label="名称:" placeholder="请输入名称" required :rules="[{ required: true }]" :border="false" input-align="left" />
<van-field <van-field
v-model="cbfzjlxText" v-model="cbfzjlxText"
@@ -64,7 +64,7 @@


<van-field v-model="form.cbfzjhm" label="证件号码:" placeholder="请输入证件号码" required :rules="[{ required: true }]" :border="false" input-align="left" /> <van-field v-model="form.cbfzjhm" label="证件号码:" placeholder="请输入证件号码" required :rules="[{ required: true }]" :border="false" input-align="left" />
<van-field v-model="form.cbfdz" label="地址:" placeholder="请输入地址" required :rules="[{ required: true }]" :border="false" input-align="left" /> <van-field v-model="form.cbfdz" label="地址:" placeholder="请输入地址" required :rules="[{ required: true }]" :border="false" input-align="left" />
<van-field v-model="form.yzbm" label="邮编:" placeholder="请输入邮编" required :rules="[{ required: true }]" :border="false" input-align="left" />
<van-field v-model="form.yzbm" label="邮编:" placeholder="请输入邮编" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="6" />
<van-field v-model="form.lxdh" label="电话:" placeholder="请输入电话" required :rules="[{ required: true }]" :border="false" input-align="left" /> <van-field v-model="form.lxdh" label="电话:" placeholder="请输入电话" required :rules="[{ required: true }]" :border="false" input-align="left" />
<van-field v-model="form.cbfdcjs" label="调查记事:" type="textarea" rows="3" placeholder="请输入调查记事" required :rules="[{ required: true }]" :border="false" input-align="left" /> <van-field v-model="form.cbfdcjs" label="调查记事:" type="textarea" rows="3" placeholder="请输入调查记事" required :rules="[{ required: true }]" :border="false" input-align="left" />
</van-form> </van-form>
@@ -88,9 +88,9 @@
form: { form: {
deptId: null, deptId: null,
cbfbm: null, cbfbm: null,
cbflx: null,
cbflx: '1',
cbfmc: null, cbfmc: null,
cbfzjlx: null,
cbfzjlx: '1',
cbfzjhm: null, cbfzjhm: null,
cbfdz: null, cbfdz: null,
yzbm: null, yzbm: null,
@@ -99,9 +99,9 @@
cbfdcjs: null, cbfdcjs: null,
}, },
// 承包方类型(标签名) // 承包方类型(标签名)
cbflxText: null,
cbflxText: '农户',
// 承包方证件类型(标签名) // 承包方证件类型(标签名)
cbfzjlxText: null,
cbfzjlxText: '居民身份证',
// 承包方类型字典 // 承包方类型字典
contractorTypeOptions: [], contractorTypeOptions: [],
// 承包方证件类型字典 // 承包方证件类型字典


+ 180
- 57
src/views/contracted/village/contractor/contractorFamily.vue 查看文件

@@ -8,69 +8,83 @@
</div> </div>
</template> </template>
</van-nav-bar> --> </van-nav-bar> -->
<contractor-header :dept-id="$route.params.deptId" :contractor-code="$route.params.cbfbm" :contractor-name="$route.params.cbfmc" :survey-status="$route.params.surveyStatus"></contractor-header>
<contractor-header :dept-id="$route.params.deptId" :contractor-code="$route.params.cbfbm" :contractor-name="$route.params.cbfmc" :survey-status="$route.params.surveyStatus" :task-status="taskStatus"></contractor-header>


<div class="tap_block"> <div class="tap_block">
<p @click="$router.push({path:'/contracted/village/contractorDetail'})">承包方</p>
<p @click="skip('contractedVillageContractorDetail')">承包方</p>
<p class="active">家庭成员</p> <p class="active">家庭成员</p>
<p @click="$router.push({path:'/contracted/village/contractorWord'})">承包合同</p>
<p @click="$router.push({path:'/contracted/village/contractorLand'})">承包地</p>
<p @click="skip('contractedVillageContractorWord')">承包合同</p>
<p @click="skip('contractedVillageContractorLand')">承包地</p>
</div> </div>


<div class="list_main"> <div class="list_main">


<van-swipe-cell v-for="(item,index) in 10">

<div class="item" @click="goDetail">

<van-swipe-cell v-for="(item, index) in familyList" :key="item.id">
<div class="item" @click="goDetail(item.id)">
<div class="item_left"> <div class="item_left">
<div class="item_left_tt"> <div class="item_left_tt">
<p class="name"> <p class="name">
<img src="../../../../../static/images/contracted/family_icon_01.png" alt=""> <img src="../../../../../static/images/contracted/family_icon_01.png" alt="">
张三
{{ item.cyxm }}
</p> </p>
<p>户主</p>
<p>{{ item.yhzgx }}</p>
<p class="sex"> <p class="sex">
<img src="../../../../../static/images/contracted/family_icon_man.png" alt="">
{{ item. cyxb }}
<img v-if="item.cyxb === '男'" src="../../../../../static/images/contracted/family_icon_man.png" alt="">
<img v-else-if="item.cyxb === '女'" src="../../../../../static/images/contracted/family_icon_wman.png" alt="">
</p> </p>
</div> </div>
<p class="id_card"> <p class="id_card">
<img src="../../../../../static/images/contracted/family_icon_02.png" alt=""> <img src="../../../../../static/images/contracted/family_icon_02.png" alt="">
230381199705551762
{{ item.cyzjhm }}
</p> </p>
</div> </div>
<p class="item_right">是</p>

<p class="item_right">{{ item.sfgyr }}</p>
</div> </div>
<template #right>
<template #right v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">
<div class="operation"> <div class="operation">
<!-- delete 删除 edit编辑 view查看 list榜单 --> <!-- delete 删除 edit编辑 view查看 list榜单 -->
<div class="opera_btn delete">
<p>删除</p>
</div>
<div class="opera_btn edit">
<div class="opera_btn edit" @click="householdDivision(item, index)">
<p>分户</p> <p>分户</p>
</div> </div>
<div class="opera_btn view">
<div class="opera_btn view" @click="householdTransfer(item)">
<p>移户</p> <p>移户</p>
</div> </div>
<div class="opera_btn list">
<div class="opera_btn list" @click="houseHolder(item)">
<p>设为<br/>户主</p> <p>设为<br/>户主</p>
</div> </div>
<div class="opera_btn delete" @click="deleteFamilyMember(item.id, index)">
<p>删除</p>
</div>
</div> </div>
</template> </template>
</van-swipe-cell> </van-swipe-cell>
<p class="btn" @click="goDetail">新增</p>
<!-- getDetail不加(), 第一个参数默认传递的是event,getDetail加(), 需要手动传递$event -->
<p class="btn" @click="goDetail()" v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">新增</p>
</div> </div>

<van-popup v-model="showContractorPopup" position="bottom">
<van-search v-model="searchKeyword" placeholder="请输入姓名搜索" />
<van-picker
show-toolbar
:columns="filteredContractors"
@confirm="onConfirmContractorOptions"
@cancel="showContractorPopup = false"
>
<template #option="option">
<div style="display: flex; flex-direction: column; align-items: center;">
<div>{{option.cbfmc}}-{{option.cbfbm}}</div>
</div>
</template>
</van-picker>
</van-popup>


</div> </div>
</template> </template>
<script> <script>
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import contractorHeader from "./contractorHeader"; import contractorHeader from "./contractorHeader";
import { listJtcy, deleteJtcy, divisionJtcy, transferJtcy, setHouseholder } from "@/api/contracted/cbfjtcy";
import { listCbf } from "@/api/contracted/cbf";


export default { export default {
name: "contractedVillageContractor", name: "contractedVillageContractor",
@@ -79,41 +93,158 @@
}, },
data() { data() {
return { return {
loading:false,
finished:true,
value:'',
showType:false,
showZjType:false,
typeOptions:[{
dictLabel:'类型1',
dictValue:'1',
}],
zjTypeOptions:[{
dictLabel:'类型2',
dictValue:'1',
}],
familyList: [], // 家庭成员列表
contractorList: [], // 承包方列表
showContractorPopup: false, // 控制承包方信息弹出层的显示和隐藏
transferMemberId: null, // 转出的成员ID
taskStatus: null, // 调查任务的完成状态:1表示已完成,2表示未完成
searchKeyword: '', // 弹出框查询关键字
}; };
}, },
created() { created() {
console.log(this.$route.params);
this.taskStatus = Cookies.get('taskStatus');
this.getList();
this.getContractorList();
},
computed: {
filteredContractors() {
return this.contractorList.filter(item => {
return item.cbfmc.indexOf(this.searchKeyword) !== -1;
})
}
}, },
methods: { methods: {
getList(){ getList(){

listJtcy({cbfbm: this.$route.params.cbfbm, translate_dict: 1}).then(response => {
this.familyList = response.rows;
});
}, },
onSearch(){

getContractorList() {
listCbf({deptId: this.$route.params.deptId}).then(response => {
this.contractorList = response.rows;
});
}, },
onConfirmTypeOptions(){

skip(name) {
this.$router.push({
name: name,
params: {
deptId: this.$route.params.deptId,
cbfbm: this.$route.params.cbfbm,
cbfmc: this.$route.params.cbfmc,
surveyStatus: this.$route.params.surveyStatus
}
});
}, },
onConfirmZjTypeOptions(){

goDetail(id) {
this.$router.push({
name: 'contractedVillageContractorFamilyDetail',
params: {
id: id,
deptId: this.$route.params.deptId,
cbfbm: this.$route.params.cbfbm,
cbfmc: this.$route.params.cbfmc,
surveyStatus: this.$route.params.surveyStatus
}
});
},
deleteFamilyMember(id, index) {
this.$dialog.confirm({
message: '是否确认删除此条家庭成员信息?',
}).then(() => {
// on confirm
deleteJtcy(id).then(res => {
if(res.code == 200){
this.$toast.success('删除成功');
this.familyList.splice(index, 1);
}
});
}).catch(() => {
// on cancel
});
},
householdDivision(item, index) {
if (item.yhzgx === '户主') {
this.$toast.fail('该成员身份为户主,不能分户');
return false;
}
this.$dialog.confirm({
message: '是否确认将该成员新分一户并设为户主?',
}).then(() => {
// on confirm
divisionJtcy(item.id).then(res => {
if (res.code == 200) {
this.$toast({
icon: 'success',
message: '分户成功',
duration: "1000",
onClose: () => {
this.familyList.splice(index, 1);
}
});
}
});
}).catch(() => {
// on cancel
});
},
householdTransfer(item) {
if (item.yhzgx === '户主') {
this.$toast.fail('该成员身份为户主,不能移户');
return false;
}
this.transferMemberId = item.id;
this.searchKeyword = '';
this.showContractorPopup = true;
}, },
goDetail(){
this.$router.push({path:'/contracted/village/contractorFamilyDetail'});
onConfirmContractorOptions(value) {
this.$dialog.confirm({
message: '是否确认将该成员移到' + value.cbfmc + '户内?',
}).then(() => {
// on confirm
this.showContractorPopup = false;
transferJtcy({id: this.transferMemberId, cbfbm: value.cbfbm}).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '移户成功',
duration:"1000",
onClose: () => {
const index = this.familyList.findIndex(item => item.id === this.transferMemberId);
this.familyList.splice(index, 1);
}
});
}
});
}).catch(() => {
// on cancel
});
},
houseHolder(item) {
if (item.yhzgx === '户主') {
this.$toast.fail('该成员身份为户主,无需设置');
return false;
}
this.$dialog.confirm({
message: '是否确认将该成员设为户主?',
}).then(() => {
// on confirm
setHouseholder(item.id).then(res => {
if (res.code == 200) {
this.$toast({
icon: 'success',
message: '设置户主成功',
duration: "1000",
onClose: () => {
this.$route.params.cbfmc = item.cyxm;
this.getList();
}
});
}
});
}).catch(() => {
// on cancel
});
} }

}, },
}; };
</script> </script>
@@ -139,14 +270,6 @@
border: none; border: none;
} }


/deep/ .van-search__content{
background: rgba(255,255,255,.5);
}
/deep/ .van-search{
padding: 0;
flex: 1;
}

/deep/ .van-ellipsis{ /deep/ .van-ellipsis{
overflow: initial; overflow: initial;
} }


+ 211
- 125
src/views/contracted/village/contractor/contractorFamilyDetail.vue 查看文件

@@ -1,117 +1,109 @@
<template> <template>
<div class="app-container"> <div class="app-container">


<van-nav-bar left-arrow fixed placeholder @click-left="onClickLeft" >
<van-nav-bar left-arrow fixed placeholder @click-left="goBack" >
<template #title> <template #title>
<div class="tb_main"> <div class="tb_main">
<!-- B村<p><span class="tb">签字完成</span><span class="tb">异常挂起</span></p>--> <!-- B村<p><span class="tb">签字完成</span><span class="tb">异常挂起</span></p>-->
1111111
{{ titleName }}
</div> </div>
</template> </template>
</van-nav-bar> </van-nav-bar>


<div class="tap_block">
<!-- <div class="tap_block">
<p @click="$router.push({path:'/contracted/village/contractorDetail'})">承包方</p> <p @click="$router.push({path:'/contracted/village/contractorDetail'})">承包方</p>
<p class="active">家庭成员</p> <p class="active">家庭成员</p>
<p @click="$router.push({path:'/contracted/village/contractorWord'})">承包合同</p> <p @click="$router.push({path:'/contracted/village/contractorWord'})">承包合同</p>
<p @click="$router.push({path:'/contracted/village/contractorLand'})">承包地</p> <p @click="$router.push({path:'/contracted/village/contractorLand'})">承包地</p>
</div>
</div> -->


<div class="list_main"> <div class="list_main">
<van-field v-model="value" label="姓名:" placeholder="请输入姓名" required :border="false" input-align="right" />
<van-field v-model="value" label="性别:" required :border="false" input-align="right" >
<template #input>
<van-radio-group v-model="radio" direction="horizontal">
<van-radio name="1">男</van-radio>
<van-radio name="2">女</van-radio>
</van-radio-group>
</template>
</van-field>

<van-field
v-model="value"
label="与户主关系:"
placeholder="请选择与户主关系"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showType = true"
/>
<van-popup v-model="showType" position="bottom">
<van-picker
show-toolbar
:columns="typeOptions"
value-key="dictLabel"
@confirm="onConfirmTypeOptions"
@cancel="showType = false"
<van-form ref="formData">
<van-field v-model="form.cyxm" label="姓名:" placeholder="请输入姓名" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field label="性别:" required :border="false" input-align="right" >
<template #input>
<van-radio-group v-model="form.cyxb" direction="horizontal">
<van-radio v-for="item in cyxbOptions" :key="item.dictValue" :name="item.dictValue">{{ item.dictLabel }}</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field
v-model="familyStatusText"
label="与户主关系:"
placeholder="请选择与户主关系"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showFamilyStatus = true"
/> />
</van-popup>

<van-field v-model="value" label="是否共有人:" required :border="false" input-align="right" >
<template #input>
<van-radio-group v-model="radio" direction="horizontal">
<van-radio name="1">是</van-radio>
<van-radio name="2">否</van-radio>
</van-radio-group>
</template>
</van-field>

<van-field
v-model="value"
label="证件类型:"
placeholder="请选择证件类型"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showZjType = true"
/>
<van-popup v-model="showZjType" position="bottom">
<van-picker
show-toolbar
:columns="zjTypeOptions"
value-key="dictLabel"
@confirm="onConfirmZjTypeOptions"
@cancel="showZjType = false"
<van-popup v-model="showFamilyStatus" position="bottom">
<van-picker
show-toolbar
:columns="familyStatusOptions"
value-key="dictLabel"
@confirm="onConfirmFamilyStatusOptions"
@cancel="showFamilyStatus = false"
/>
</van-popup>
<van-field label="是否共有人:" required :border="false" input-align="right" >
<template #input>
<van-radio-group v-model="form.sfgyr" direction="horizontal">
<van-radio v-for="item in sfgyrOptions" :key="item.dictValue" :name="item.dictValue">{{ item.dictLabel }}</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field
v-model="cyzjlxText"
label="证件类型:"
placeholder="请选择证件类型"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showCredentialType = true"
/> />
</van-popup>

<van-field v-model="value" label="证件号码:" placeholder="请输入证件号码" required :border="false" input-align="right" />

<van-field
v-model="value"
label="成员备注:"
placeholder="请选择成员备注"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showCYBZ = true"
/>
<van-popup v-model="showCYBZ" position="bottom">
<van-picker
show-toolbar
:columns="CYBZOptions"
value-key="dictLabel"
@confirm="onConfirmCYBZOptions"
@cancel="showCYBZ = false"
<van-popup v-model="showCredentialType" position="bottom">
<van-picker
show-toolbar
:columns="cyzjlxOptions"
value-key="dictLabel"
@confirm="onConfirmCredentialTypeOptions"
@cancel="showCredentialType = false"
/>
</van-popup>
<van-field v-model="form.cyzjhm" label="证件号码:" placeholder="请输入证件号码" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field
v-model="cybzText"
label="成员备注:"
placeholder="请选择成员备注"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showMemberRemark = true"
/> />
</van-popup>

<van-field v-model="value" label="备注说明:" placeholder="请输入备注说明" required :border="false" input-align="right" />
<van-field v-model="value" label="持股份数:" placeholder="请输入持股份数" required :border="false" input-align="right" />
<van-field v-model="value" label="股权编号:" placeholder="请输入股权编号" required :border="false" input-align="right" />
<p class="btn">保存</p>
<van-popup v-model="showMemberRemark" position="bottom">
<van-picker
show-toolbar
:columns="cybzOptions"
value-key="dictLabel"
@confirm="onConfirmMemberRemarkOptions"
@cancel="showMemberRemark = false"
/>
</van-popup>
<van-field v-model="form.cybzsm" label="备注说明:" placeholder="请输入备注说明" :border="false" input-align="right" />
<!-- <van-field v-model="form.cycgfs" label="持股份数:" type="number" placeholder="请输入持股份数" :border="false" input-align="right" />
<van-field v-model="form.gqzbh" label="股权编号:" placeholder="请输入股权编号" :border="false" input-align="right" /> -->
</van-form>
<p class="btn" @click="submitForm" v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">保存</p>
</div> </div>




@@ -119,50 +111,144 @@
</template> </template>
<script> <script>
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { getJtcy, addJtcy, updateJtcy } from "@/api/contracted/cbfjtcy";

export default { export default {
name: "contractedVillageContractor", name: "contractedVillageContractor",
data() { data() {
return { return {
loading:false,
finished:true,
value:'',
showType:false,
showZjType:false,
typeOptions:[{
dictLabel:'类型1',
dictValue:'1',
}],
zjTypeOptions:[{
dictLabel:'类型2',
dictValue:'1',
}],
CYBZOptions:[{
dictLabel:'类型2',
dictValue:'1',
}],
radio:1
titleName: '', // 顶部标题名
form: {}, // 承包方家庭成员表单信息
cyxbOptions: [], // 成员性别字典
cyzjlxOptions: [], // 成员证件类型字典
cyzjlxText: null, // 成员证件类型标签名
showCredentialType: false, // 控制证件类型字典弹出层的显示和隐藏
cybzOptions: [], // 成员备注字典
cybzText: null, // 成员备注标签名
showMemberRemark: false, // 控制成员备注字典弹出层的显示和隐藏
sfgyrOptions: [], // 是否共有人字典
familyStatusOptions: [], // 家庭身份字典
familyStatusText: null, // 家庭身份标签名
showFamilyStatus: false, // 控制家庭身份字典弹出层的显示和隐藏
taskStatus: null, // 调查任务的完成状态:1表示已完成,2表示未完成
}; };
}, },
created() { created() {

this.taskStatus = Cookies.get('taskStatus');
this.getDicts("sys_user_sex").then(response => {
this.cyxbOptions = response.data;
});
this.getDicts("cert_type").then(response => {
this.cyzjlxOptions = response.data;
});
this.getDicts("cybz").then(response => {
this.cybzOptions = response.data;
});
this.getDicts("is_common").then(response => {
this.sfgyrOptions = response.data;
});
this.getDicts("family_status").then(response => {
this.familyStatusOptions = response.data;
});
},
mounted() {
if (this.$route.params.id) {
this.titleName = "修改家庭成员信息";
setTimeout(() => {
this.getDetail();
}, 500);
} else {
this.titleName = "新增家庭成员信息";
this.resetForm();
}
}, },
methods: { methods: {
getList(){

getDetail(){
getJtcy(this.$route.params.id).then(response => {
this.form = response.data;
this.familyStatusText = this.selectDictLabel(this.familyStatusOptions, response.data.yhzgx);
this.cyzjlxText = this.selectDictLabel(this.cyzjlxOptions, response.data.cyzjlx);
this.cybzText = this.selectDictLabel(this.cybzOptions, response.data.cybz);
});
}, },
onSearch(){

onConfirmFamilyStatusOptions(value){
this.form.yhzgx = value.dictValue;
this.familyStatusText = value.dictLabel;
this.showFamilyStatus = false;
}, },
onConfirmTypeOptions(){

onConfirmCredentialTypeOptions(value){
this.form.cyzjlx = value.dictValue;
this.cyzjlxText = value.dictLabel;
this.showCredentialType = false;
}, },
onConfirmZjTypeOptions(){

onConfirmMemberRemarkOptions(value){
this.form.cybz = value.dictValue;
this.cybzText = value.dictLabel;
this.showMemberRemark = false;
}, },
onConfirmCYBZOptions(){

goBack() {
this.$router.push({
name: 'contractedVillageContractorFamily',
params: {
deptId: this.$route.params.deptId,
cbfbm: this.$route.params.cbfbm,
cbfmc: this.$route.params.cbfmc,
surveyStatus: this.$route.params.surveyStatus
}
});
}, },

submitForm() {
this.$refs.formData.validate().then(() => {
if (this.$route.params.id) {
updateJtcy(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
onClose: () => {
this.goBack();
}
});
}
});
} else {
this.form.deptId = this.$route.params.deptId;
this.form.cbfbm = this.$route.params.cbfbm;
addJtcy(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
onClose: () => {
this.goBack();
}
});
}
});
}
}).catch(() => {
this.$notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
resetForm() {
this.form = {
deptId: null,
cbfbm: null,
cyxm: null,
cyxb: '1',
yhzgx: null,
sfgyr: '1',
cyzjlx: '1',
cyzjhm: null,
cybz: null,
cybzsm: null,
cycgfs: null,
gqzbh: null
};
this.cyzjlxText = '居民身份证';
}
}, },
}; };
</script> </script>


+ 192
- 2
src/views/contracted/village/contractor/contractorHeader.vue 查看文件

@@ -3,28 +3,197 @@
<van-nav-bar left-arrow fixed placeholder @click-left="goBack"> <van-nav-bar left-arrow fixed placeholder @click-left="goBack">
<template #title> <template #title>
<div class="tb_main"> <div class="tb_main">
{{ contractorName }}<p><span class="tb">签字完成</span><span class="tb">异常挂起</span></p>
{{ contractorName }}<p v-if="showBtn"><span class="tb" @click="handleSign">签字完成</span><span class="tb" @click="handleHangUp">异常挂起</span></p>
</div> </div>
</template> </template>
</van-nav-bar> </van-nav-bar>

<van-popup v-model="showSignPopup" closeable position="right" :style="{ height: '100%' }" >
<van-cell-group style="width: 100%;height:100%;overflow: hidden;padding-top: 10px;padding-bottom: 10px;">
<div class="signature-box" @mousedown="canvasTTdown" @touchstart="canvasTTdown">
<vue-esign
ref="esign"
class="mySign"
:width="500"
:height="height"
:isCrop="signature.isCrop"
:lineWidth="signature.lineWidth"
:lineColor="signature.lineColor"
:bgColor.sync="signature.bgColor"
/>
</div>
<img src="../../../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt="">
<div class="signature-footer">
<van-button @click="handleReset" class="clearBtn" type="info" plain size="small">清空画板</van-button>
<van-button @click="handleGenerate" type="info" size="small">保存签字</van-button>
</div>
</van-cell-group>
</van-popup>

<van-dialog v-model="showRemark" title="异常挂起原因" show-cancel-button confirmButtonText="保存" cancelButtonText="关闭"
:before-close="onBeforeClose" @confirm="handleConfirm">
<van-form ref="remarkForm" class="remarkForm">
<van-field v-model="remark" label="挂起原因:" type="textarea" rows="4" placeholder="请输入挂起原因" required
:rules="[{ required: true }]" input-align="left" label-width="auto" />
</van-form>
</van-dialog>

</div> </div>
</template> </template>
<script> <script>
import { getDept } from "@/api/contracted"; import { getDept } from "@/api/contracted";
import { contractorSignature, hangUp } from "@/api/contracted/cbf";
import vueEsign from "vue-esign";
import $ from "jquery";


export default { export default {
name: 'contractedVillageHeader', name: 'contractedVillageHeader',
props: ['deptId', 'contractorCode', 'contractorName', 'surveyStatus'],
props: ['deptId', 'contractorCode', 'contractorName', 'surveyStatus', 'taskStatus'],
components: {
vueEsign
},
data() {
return {
// 控制签字面板的显示和隐藏
showSignPopup: false,
height: null,
//电子签名
signature: {
lineWidth: 6, // 画笔的线条粗细
lineColor: "#000000", // 画笔的颜色
bgColor: "", // 画布的背景颜色
resultImg: "", // 最终画布生成的base64图片
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
},
// 控制异常信息备注提示框的显示和隐藏
showRemark: false,
// 异常备注信息
remark: null,
// 控制签字按钮和挂起按钮的显示和隐藏
showBtn: true,
};
},
created() {
this.height = window.screen.height * 1.28 - 20;
if (this.taskStatus === '2' && this.surveyStatus !== '3') {
this.showBtn = true;

} else {
this.showBtn = false;
}
},
methods: { methods: {
goBack() { goBack() {
getDept(this.deptId).then(response => { getDept(this.deptId).then(response => {
this.$router.push({path:'/contracted/village/contractor', query: { deptId: this.deptId, deptName: response.data.deptName }}); this.$router.push({path:'/contracted/village/contractor', query: { deptId: this.deptId, deptName: response.data.deptName }});
}); });
},
handleSign() {
this.showSignPopup = true;
this.handleReset();
},
canvasTTdown() {
$('#canvasTT').css('display', 'none');
},
// 清空画板
handleReset() {
if (this.$refs.esign) {
this.$refs.esign.reset();
}
$('#canvasTT').css('display', 'block')
},
// 生成签字图片
handleGenerate() {
this.$refs.esign
.generate() // 使用生成器调用把签字的图片转换成为base64图片格式
.then((res) => {
this.signature.resultImg = res;
let wj = this.dataURLtoBlob(res);
let param = new FormData() // 创建form对象
param.append('file', wj) // 通过append向form对象添加数据
param.append('cbfbm', this.contractorCode);
contractorSignature(param).then(response => {
if (response.code === 200) {
this.$toast({
icon: 'success', // 找到自己需要的图标
message: '签字成功',
duration: "1000",
onClose: () => {
this.showSignPopup = false;
this.goBack();
}
});
}
});
})
.catch((err) => {
// 画布没有签字时会执行这里提示一下
this.$toast.fail('请签名后再保存签字');
});
},
dataURLtoBlob(dataurl, filename = 'file') {
let arr = dataurl.split(',')
let mime = arr[0].match(/:(.*?);/)[1]
let suffix = mime.split('/')[1]
let bstr = atob(arr[1])
let n = bstr.length
let u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime
})
},
// 异常挂起
handleHangUp() {
this.showRemark = true;
this.remark = null;
},
// van-dialog 点击confirm事件不自动关闭
onBeforeClose(action, done) {
if (action === 'confirm') {
return done(false);
} else {
return done();
}
},
handleConfirm() {
this.$refs.remarkForm.validate().then(() => {
let data = new FormData() // 创建form对象
data.append('cbfbm', this.contractorCode);
data.append('remark', this.remark);
hangUp(data).then(response => {
if (response.code === 200) {
this.$toast({
icon: 'success',
message: '当前承包方调查已被挂起',
duration: '2000',
onClose: () => {
this.showRemark = false;
this.goBack();
}
});
}
});
}).catch(() => {
this.$notify({ type: 'danger', message: '请填写备注信息' });
});
} }
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">

/deep/ .remarkForm .van-cell__value {
border: 1px solid #b0b3ba;
border-radius: 5px;
padding: 0 15px;
.van-field__control {
color: #646566;
}
}

.tb_main{ .tb_main{
position: relative; position: relative;
p{ p{
@@ -43,4 +212,25 @@
border-radius: 50PX; border-radius: 50PX;
margin-right: 5PX; margin-right: 5PX;
} }

.signature-box {
border: 1px dashed #666;
margin: 2px 20px;
height: 100%;
/*canvas{*/
/* height: 100%!important;*/
/*}*/
}

.signature-footer {
transform: rotate(90deg);
width: auto;
position: absolute;
top: 50%;
left: 0PX;

.clearBtn {
margin-left: 15px;
}
}
</style> </style>

+ 158
- 66
src/views/contracted/village/contractor/contractorLand.vue 查看文件

@@ -8,65 +8,74 @@
</div> </div>
</template> </template>
</van-nav-bar> --> </van-nav-bar> -->
<contractor-header></contractor-header>
<contractor-header :dept-id="$route.params.deptId" :contractor-code="$route.params.cbfbm" :contractor-name="$route.params.cbfmc" :survey-status="$route.params.surveyStatus" :task-status="taskStatus"></contractor-header>


<div class="tap_block"> <div class="tap_block">
<p @click="$router.push({path:'/contracted/village/contractorDetail'})">承包方</p>
<p @click="$router.push({path:'/contracted/village/contractorFamily'})">家庭成员</p>
<p @click="$router.push({path:'/contracted/village/contractorWord'})">承包合同</p>
<p @click="skip('contractedVillageContractorDetail')">承包方</p>
<p @click="skip('contractedVillageContractorFamily')">家庭成员</p>
<p @click="skip('contractedVillageContractorWord')">承包合同</p>
<p class="active">承包地</p> <p class="active">承包地</p>
</div> </div>


<div class="function_main"> <div class="function_main">
<div class="function_btn1" @click="goMap">
<div class="function_btn1" @click="skip('contractedVillageContractorLandMap')">
<p class="active">进入地图 <span class="sanjiao-right"></span></p> <p class="active">进入地图 <span class="sanjiao-right"></span></p>
</div> </div>
<div class="function_btn2" @click="goDetail">
<div class="function_btn2" @click="goDetail()" v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">
<p class="active"> + 新增</p> <p class="active"> + 新增</p>
</div> </div>
</div> </div>


<div class="list_main"> <div class="list_main">


<van-swipe-cell v-for="(item,index) in 10">

<div class="item" @click="goDetail">

<van-swipe-cell v-for="(item,index) in landList" :key="item.id">
<div class="item" @click="goDetail(item.id)">
<div class="item_tt"> <div class="item_tt">
<p>西湖地块名称名称名称</p>
<p>371481199201011234</p>
<p>{{ item.dkmc }}</p>
<p>{{ item.dkbm }}</p>
</div> </div>

<div class="item_type"> <div class="item_type">
<p>3.5亩</p>
<p>旱地</p>
<p><span>2</span>等地</p>
<p>种植业</p>
<p>基本农田:</p>
<p>{{ item.htmjm }}亩</p>
<!-- <p>{{ item.tdlylx }}</p>-->
<p>{{ item.dldj }}</p>
<p>{{ item.tdyt }}</p>
<p>基本农田:{{ item.sfjbnt }}</p>
</div> </div>

<div class="item_direction"> <div class="item_direction">
<p>张三指界</p>
<p>东:张琪</p>
<p>西:马六</p>
<p>南:河流</p>
<p>北:道路</p>
<!-- <p>{{ item.zjrxm }}指界</p>-->
<p>东:{{ item.dkdz }}</p>
<p>西:{{ item. dkxz }}</p>
<p>南:{{ item.dknz }}</p>
<p>北:{{ item.dkbz }}</p>
</div> </div>

</div> </div>
<template #right>
<template #right v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">
<div class="operation"> <div class="operation">
<!-- delete 删除 edit编辑 view查看 list榜单 --> <!-- delete 删除 edit编辑 view查看 list榜单 -->
<div class="opera_btn delete">
<p>取消<br/>承包</p>
</div>
<div class="opera_btn edit">
<div class="opera_btn edit" @click="transferLand(item.id)">
<p>转给<br/>他方</p> <p>转给<br/>他方</p>
</div> </div>
<div class="opera_btn delete" @click="deleteLand(item.id, index)">
<p>取消<br/>承包</p>
</div>
</div> </div>
</template> </template>
</van-swipe-cell> </van-swipe-cell>

<van-popup v-model="showContractorPopup" position="bottom">
<van-search v-model="searchKeyword" placeholder="请输入姓名搜索" />
<van-picker
show-toolbar
:columns="filteredContractors"
@confirm="onConfirmContractorOptions"
@cancel="showContractorPopup = false"
>
<template #option="option">
<div style="display: flex; flex-direction: column; align-items: center;">
<div>{{option.cbfmc}}-{{option.cbfbm}}</div>
</div>
</template>
</van-picker>
</van-popup>
</div> </div>




@@ -75,6 +84,9 @@
<script> <script>
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import contractorHeader from "./contractorHeader"; import contractorHeader from "./contractorHeader";
import { listCbdkxx, deleteCbdkxx, transferCbdkxx } from "@/api/contracted/cbdkxx";
import { listCbf } from "@/api/contracted/cbf";
import { getCbht } from "@/api/contracted/cbht";


export default { export default {
name: "contractedVillageContractor", name: "contractedVillageContractor",
@@ -83,44 +95,133 @@
}, },
data() { data() {
return { return {
loading:false,
finished:true,
value:'',
showType:false,
showZjType:false,
typeOptions:[{
dictLabel:'类型1',
dictValue:'1',
}],
zjTypeOptions:[{
dictLabel:'类型2',
dictValue:'1',
}],
landList: [], // 承包地块列表
contractorList: [], // 承包方列表
showContractorPopup: false, // 控制承包方信息弹出层的显示和隐藏
transferLandId: null, // 转出的承包地块ID
taskStatus: null, // 调查任务的完成状态:1表示已完成,2表示未完成
searchKeyword: '', // 弹出框查询关键字
}; };
}, },
created() { created() {

this.taskStatus = Cookies.get('taskStatus');
this.getList();
this.getContractorList();
},
computed: {
filteredContractors() {
return this.contractorList.filter(item => {
return item.cbfmc.indexOf(this.searchKeyword) !== -1;
})
}
}, },
methods: { methods: {
getList(){ getList(){

listCbdkxx({cbfbm: this.$route.params.cbfbm, translate_dict: 1}).then(response => {
this.landList = response.rows;
});
}, },
onSearch(){

getContractorList() {
listCbf({deptId: this.$route.params.deptId}).then(response => {
this.contractorList = response.rows;
});
}, },
onConfirmTypeOptions(){

goDetail(id){
if (!id) {
// 新增时,查看承包合同是否存在
getCbht(this.$route.params.cbfbm).then(response => {
if (!response.data) {
this.$toast({
icon: 'fail', // 找到自己需要的图标
message: '承包合同不存在,请先添加承包合同信息',
duration:"2000"
});
return ;
} else {
this.$router.push({
name: 'contractedVillageContractorLandDetail',
params: {
deptId: this.$route.params.deptId,
cbfbm: this.$route.params.cbfbm,
cbfmc: this.$route.params.cbfmc,
surveyStatus: this.$route.params.surveyStatus
}
});
}
});
} else {
this.$router.push({
name: 'contractedVillageContractorLandDetail',
params: {
id: id,
deptId: this.$route.params.deptId,
cbfbm: this.$route.params.cbfbm,
cbfmc: this.$route.params.cbfmc,
surveyStatus: this.$route.params.surveyStatus
}
});
}
}, },
onConfirmZjTypeOptions(){

skip(name) {
this.$router.push({
name: name,
params: {
deptId: this.$route.params.deptId,
cbfbm: this.$route.params.cbfbm,
cbfmc: this.$route.params.cbfmc,
surveyStatus: this.$route.params.surveyStatus
}
});
}, },
goDetail(){
this.$router.push({path:'/contracted/village/contractorLandDetail'});
transferLand(id) {
this.transferLandId = id;
this.searchKeyword = '';
this.showContractorPopup = true;
}, },
goMap(){
this.$router.push({path:'/contracted/village/contractorLandMap'});
onConfirmContractorOptions(value) {
this.$dialog.confirm({
message: '是否确认将此承包地块转给' + value.cbfmc + '?',
}).then(() => {
// on confirm
this.showContractorPopup = false;
transferCbdkxx({id: this.transferLandId, cbfbm: value.cbfbm}).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '转出成功',
duration:"1000",
onClose: () => {
const index = this.landList.findIndex(item => item.id === this.transferLandId);
this.landList.splice(index, 1);
}
});
}
});
}).catch(() => {
// on cancel
});
},
deleteLand(id, index) {
this.$dialog.confirm({
message: '是否确认取消承包此地块?',
}).then(() => {
// on confirm
deleteCbdkxx(id).then(res => {
if (res.code == 200) {
this.$toast({
icon: 'success',
message: '取消成功',
duration: "1000",
onClose: () => {
this.landList.splice(index, 1);
}
});
}
});
}).catch(() => {
// on cancel
});
} }

}, },
}; };
</script> </script>
@@ -146,15 +247,6 @@
border: none; border: none;
} }


/deep/ .van-search__content{
background: rgba(255,255,255,.5);
}

/deep/ .van-search{
padding: 0;
flex: 1;
}

/deep/ .van-ellipsis{ /deep/ .van-ellipsis{
overflow: initial; overflow: initial;
} }


+ 309
- 118
src/views/contracted/village/contractor/contractorLandDetail.vue 查看文件

@@ -1,101 +1,120 @@
<template> <template>
<div class="app-container"> <div class="app-container">


<van-nav-bar left-arrow fixed placeholder @click-left="onClickLeft" >
<van-nav-bar left-arrow fixed placeholder @click-left="goBack" >
<template #title> <template #title>
<div class="tb_main"> <div class="tb_main">
<!-- B村<p><span class="tb">签字完成</span><span class="tb">异常挂起</span></p>-->
2222
{{ titleName }}
</div> </div>
</template> </template>
</van-nav-bar> </van-nav-bar>


<div class="tap_block">
<p @click="$router.push({path:'/contracted/village/contractorDetail'})">承包方</p>
<p @click="$router.push({path:'/contracted/village/contractorFamily'})">家庭成员</p>
<p @click="$router.push({path:'/contracted/village/contractorWord'})">承包合同</p>
<p class="active">承包地</p>
</div>

<div class="list_main"> <div class="list_main">
<van-field v-model="value" label="地块代码:" placeholder="请输入地块代码" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="地块名称:" placeholder="请输入地块名称" required :border="false" input-align="right" label-width="auto" />

<van-field v-model="value" label="土地利用类型:"
placeholder="请选择土地利用类型"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showType = true"
/>
<van-popup v-model="showType" position="bottom">
<van-picker
show-toolbar
:columns="typeOptions"
value-key="dictLabel"
@confirm="onConfirmTypeOptions"
@cancel="showType = false"
<van-form ref="formData">
<van-field v-model="form.dkbm" label="地块代码:" placeholder="请选择地块代码" required :rules="[{ required: true }]" :border="false"
input-align="right" right-icon="arrow-down" readonly clickable @click="openLandCodePopup" :disabled="isDisabled" />
<van-popup v-model="showLandCode" position="bottom">
<van-picker
ref="landCodePicker"
show-toolbar
:columns="landList"
@confirm="onConfirmLandCodeOptions"
@cancel="showLandCode = false"
>
<template #option="option">
<div style="display: flex; flex-direction: column; align-items: center;">
<div>{{option.dkmc}}-{{option.dkbm}}</div>
</div>
</template>
</van-picker>
</van-popup>
<van-field v-model="form.dkmc" label="地块名称:" placeholder="请输入地块名称" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field
v-model="tdlylxText"
label="土地利用类型:"
placeholder="请选择土地利用类型"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showLandUseType = true"
/> />
</van-popup>

<van-field v-model="value" label="地力等级:"
placeholder="请选择地力等级"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showZjType = true"
/>
<van-popup v-model="showZjType" position="bottom">
<van-picker
show-toolbar
:columns="zjTypeOptions"
value-key="dictLabel"
@confirm="onConfirmZjTypeOptions"
@cancel="showZjType = false"
<van-popup v-model="showLandUseType" position="bottom">
<van-picker
show-toolbar
:columns="tdlylxOptions"
value-key="dictLabel"
@confirm="onConfirmLandUseTypeOptions"
@cancel="showLandUseType = false"
/>
</van-popup>
<van-field
v-model="dldjText"
label="地力等级:"
placeholder="请选择地力等级"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showLandGrade = true"
/> />
</van-popup>

<van-field v-model="value" label="土地用途:"
placeholder="请选择土地用途"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showTDYT = true"
/>
<van-popup v-model="showTDYT" position="bottom">
<van-picker
show-toolbar
:columns="TDYTOptions"
value-key="dictLabel"
@confirm="onConfirmTDYTOptions"
@cancel="showTDYT = false"
<van-popup v-model="showLandGrade" position="bottom">
<van-picker
show-toolbar
:columns="dldjOptions"
value-key="dictLabel"
@confirm="onConfirmLandGradeOptions"
@cancel="showLandGrade = false"
/>
</van-popup>
<van-field
v-model="tdytText"
label="土地用途:"
placeholder="请选择土地用途"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showLandPurpose = true"
/> />
</van-popup>

<van-field v-model="value" label="基本农用:" placeholder="请输入基本农用" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="实测面积(亩):" placeholder="请输入实测面积(亩)" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="指界:" placeholder="请输入指界" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="东面:" placeholder="请输入东面" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="西面:" placeholder="请输入西面" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="南面:" placeholder="请输入南面" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="北面:" placeholder="请输入北面" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="备注:" placeholder="请输入备注" required :border="false" input-align="right" label-width="auto" />

<div class="mapBox"></div>

<p class="btn">保存</p>
<van-popup v-model="showLandPurpose" position="bottom">
<van-picker
show-toolbar
:columns="tdytOptions"
value-key="dictLabel"
@confirm="onConfirmTDYTOptions"
@cancel="showLandPurpose = false"
/>
</van-popup>
<van-field v-model="form.sfjbnt" label="基本农田:" placeholder="请选择基本农田" required :rules="[{ required: true }]" :border="false" input-align="right">
<template #input>
<van-radio-group v-model="form.sfjbnt" direction="horizontal">
<van-radio v-for="item in sfjbntOptions" :key="item.dictValue" :name="item.dictValue">{{ item.dictLabel }}</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field v-model="form.htmjm" type="number" label="合同面积(亩):" placeholder="请输入合同面积(亩)" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.zjrxm" label="指界人姓名:" placeholder="请输入指界人姓名" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkdz" label="地块东至:" placeholder="请输入地块东至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkxz" label="地块西至:" placeholder="请输入地块西至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dknz" label="地块南至:" placeholder="请输入地块南至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkbz" label="地块北至:" placeholder="请输入地块北至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkbzxx" label="地块备注信息:" placeholder="请输入地块备注信息" :border="false" input-align="right" />

<div class="mapBox">
<common-map ref="contractedLandMap" :minMapZoom="15" :maxMapZoom="18" :allowDraw="true" @drawFinished="onMapDrawFinished" />
</div>
</van-form>
<p class="btn" @click="submitForm" v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">保存</p>
</div> </div>




@@ -103,54 +122,218 @@
</template> </template>
<script> <script>
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { getCbdkxx, addCbdkxx, updateCbdkxx } from "@/api/contracted/cbdkxx";
import { listDk } from "@/api/contracted/dk";
import { getDept } from "@/api/contracted";
import CommonMap from "@/components/house/CommonMap";

export default { export default {
name: "contractedVillageContractor", name: "contractedVillageContractor",
components: {
CommonMap
},
data() { data() {
return { return {
loading:false,
finished:true,
value:'',
showType:false,
showZjType:false,
showTDYT:false,
typeOptions:[{
dictLabel:'类型1',
dictValue:'1',
}],
zjTypeOptions:[{
dictLabel:'类型2',
dictValue:'1',
}],
TDYTOptions:[{
dictLabel:'类型2',
dictValue:'1',
}],
radio:1,
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date(2021, 0, 17),
titleName: '', // 标题信息
isDisabled: false, // 是否禁用
form: {}, // 承包地信息表单
showLandCode: false, // 控制地块代码弹出层的显示和隐藏
tdlylxOptions: [], // 土地利用类型字典
tdlylxText: null, // 土地利用类型标签名
showLandUseType: false, // 控制土地利用类型字典弹出层的显示和隐藏
dldjOptions: [], // 地力等级字典
dldjText: null, // 地力等级标签名
showLandGrade: false, // 控制地力等级字典弹出层的显示和隐藏
tdytOptions: [], // 土地用途字典
tdytText: null, // 土地用途标签名
showLandPurpose: false, // 控制土地用途字典弹出层的显示和隐藏
sfjbntOptions: [], // 是否基本农田字典
landList: [], // 地块信息列表
taskStatus: null, // 调查任务的完成状态:1表示已完成,2表示未完成
}; };
}, },
created() { created() {

this.taskStatus = Cookies.get('taskStatus');
this.getDicts("land_use").then(response => {
this.tdlylxOptions = response.data;
});
this.getDicts("land_grade").then(response => {
this.dldjOptions = response.data;
});
this.getDicts("use_code").then(response => {
this.tdytOptions = response.data;
});
this.getDicts("is_common").then(response => {
this.sfjbntOptions = response.data;
});
if (this.$route.params.id) {
this.titleName = '修改承包地信息';
this.isDisabled = true;
this.getDetail();
} else {
this.titleName = '新增承包地信息';
this.resetForm();
this.getCoordinates();
this.getLandList();
}
}, },
methods: { methods: {
getList(){

getCoordinates() {
getDept(this.$route.params.deptId).then(response => {
const lng = response.data.lng;
const lat = response.data.lat;
if (lng && lat) {
this.$nextTick(() => {
this.$refs.contractedLandMap.setCoord(lng, lat);
});
}
});
}, },
onSearch(){

getLandList() {
// 查询出非承包地块(dklb != '10')且未流转(dkzt = '1')的地块信息
listDk({deptId: this.$route.params.deptId, jtdklb: '10', dkzt: '1'}).then(response => {
this.landList = response.rows;
});
}, },
onConfirmTypeOptions(){

getDetail(){
getCbdkxx(this.$route.params.id).then(response => {
this.form = response.data;
this.tdlylxText = this.selectDictLabel(this.tdlylxOptions, response.data.tdlylx);
this.dldjText = this.selectDictLabel(this.dldjOptions, response.data.dldj);
this.tdytText = this.selectDictLabel(this.tdytOptions, response.data.tdyt);
if (response.data.theGeomJson) {
this.form.theGeom = JSON.stringify(JSON.parse(response.data.theGeomJson).coordinates);
this.$nextTick(() => {
this.$refs.contractedLandMap.setLayer('_Draw_layer', response.data.theGeomJson);
});
} else {
this.getCoordinates();
}
});
}, },
onConfirmZjTypeOptions(){

resetForm() {
this.form = {
deptId: null,
cbfbm: null,
dkbm: null,
dkmc: null,
tdlylx: null,
dldj: null,
tdyt: null,
sfjbnt: null,
htmjm: null,
zjrxm: null,
dkdz: null,
dkxz: null,
dknz: null,
dkbz: null,
dkbzxx: null,
theGeom: null
};
}, },
onConfirmTDYTOptions(){

openLandCodePopup() {
/* if (this.form.dkbm) {
const index = this.landList.findIndex(item => item.dkbm === this.form.dkbm);
this.$refs.landCodePicker.setColumnIndex(0, index);
} */
if (!this.isDisabled) {
this.showLandCode = true;
}
},
onConfirmLandCodeOptions(value) {
this.form.dkbm = value.dkbm;
this.form.dkmc = value.dkmc;
this.form.tdlylx = value.tdlylx;
this.tdlylxText = this.selectDictLabel(this.tdlylxOptions, value.tdlylx);
this.form.dldj = value.dldj;
this.dldjText = this.selectDictLabel(this.dldjOptions, value.dldj);
this.form.tdyt = value.tdyt
this.tdytText = this.selectDictLabel(this.tdytOptions, value.tdyt);
this.form.sfjbnt = value.sfjbnt;
this.form.htmjm = value.scmjm;
this.form.zjrxm = value.zjrxm;
this.form.dkdz = value.dkdz;
this.form.dkxz = value.dkxz
this.form.dknz = value.dknz;
this.form.dkbz = value.dkbz;
this.form.dkbzxx = value.dkbzxx;
if (value.theGeomJson) {
this.form.theGeom = JSON.stringify(JSON.parse(value.theGeomJson).coordinates);
this.$refs.contractedLandMap.setLayer('_Draw_layer', value.theGeomJson);
} else {
this.form.theGeom = null;
}
this.showLandCode = false;
},
onConfirmLandUseTypeOptions(value) {
this.form.tdlylx = value.dictValue;
this.tdlylxText = value.dictLabel;
this.showLandUseType = false;
},
onConfirmLandGradeOptions(value) {
this.form.dldj = value.dictValue;
this.dldjText = value.dictLabel;
this.showLandGrade = false;
},
onConfirmTDYTOptions(value){
this.form.tdyt = value.dictValue;
this.tdytText = value.dictLabel;
this.showLandPurpose = false;
}, },
goBack() {
this.$router.push({
name: 'contractedVillageContractorLand',
params: {
deptId: this.$route.params.deptId,
cbfbm: this.$route.params.cbfbm,
cbfmc: this.$route.params.cbfmc,
surveyStatus: this.$route.params.surveyStatus
}
});
},
submitForm() {
this.$refs.formData.validate().then(() => {
if (this.$route.params.id) {
updateCbdkxx(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
onClose: () => {
this.goBack();
}
});
}
});
} else {
this.form.deptId = this.$route.params.deptId;
this.form.cbfbm = this.$route.params.cbfbm;
addCbdkxx(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
onClose: () => {
this.goBack();
}
});
}
});
}
}).catch(() => {
this.$notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
onMapDrawFinished(data) {
if (data) {
this.form.theGeom = JSON.stringify(data);
} else {
this.form.theGeom = null;
}


},
}, },
}; };
</script> </script>
@@ -188,6 +371,14 @@
overflow: initial; overflow: initial;
} }


/deep/ .van-field--disabled .van-field__label {
color: #646566;
}

/deep/ .van-field__label {
width: 7em;
}

.tb_main{ .tb_main{
position: relative; position: relative;
p{ p{


+ 252
- 9
src/views/contracted/village/contractor/contractorLandMap.vue 查看文件

@@ -1,40 +1,231 @@
<template> <template>
<div class="app-container"> <div class="app-container">


<van-nav-bar left-arrow fixed placeholder @click-left="onClickLeft" >
<van-nav-bar left-arrow fixed placeholder @click-left="goBack" >
<template #title> <template #title>
<div class="tb_main"> <div class="tb_main">
<!-- B村<p><span class="tb">签字完成</span><span class="tb">异常挂起</span></p>-->
地图 地图
</div> </div>
</template> </template>
</van-nav-bar> </van-nav-bar>


<div class="tap_block">
<p @click="$router.push({path:'/contracted/village/contractorDetail'})">承包方</p>
<p @click="$router.push({path:'/contracted/village/contractorFamily'})">家庭成员</p>
<p @click="$router.push({path:'/contracted/village/contractorWord'})">承包合同</p>
<p class="active">承包地</p>
<div style="position:relative;">
<div class="mapBox" id="contractedLandMapBox"></div>
<div class="legend_main">
<div class="legend">
<p class="legend_tt">图例
<img src="../../../../../static/images/contracted/map_icon_01.png" alt="">
</p>
<div><i></i><p>地块</p></div>
<div><i></i><p>承包地块</p></div>
</div>
</div>
</div> </div>


<div class="mapBox"></div>
<div class="contractedLandPopup">
<van-dialog v-model="open" title="承包地信息" :show-confirm-button="false" :show-cancel-button="true" cancel-button-text="关闭">
<van-form ref="landForm">
<van-field v-model="form.dkbm" label="地块代码:" :border="true" input-align="right" />
<van-field v-model="form.dkmc" label="地块名称:" :border="true" input-align="right" />
<van-field v-model="form.syqxz" label="所有权性质:" :border="true" input-align="right" />
<van-field v-model="form.dklb" label="地块类别:" :border="true" input-align="right" />
<van-field v-model="form.tdlylx" label="土地利用类型:" :border="true" input-align="right" />
<van-field v-model="form.dldj" label="地力等级:" :border="true" input-align="right" />
<van-field v-model="form.tdyt" label="土地用途:" :border="true" input-align="right" />
<van-field v-model="form.sfjbnt" label="基本农田:" :border="true" input-align="right" />
<van-field v-model="form.scmjm" label="实测面积(亩):" :border="true" input-align="right" />
<van-field v-model="form.zjrxm" label="指界人姓名:" :border="true" input-align="right" />
<van-field v-model="form.dkdz" label="地块东至:" :border="true" input-align="right" />
<van-field v-model="form.dkxz" label="地块西至:" :border="true" input-align="right" />
<van-field v-model="form.dknz" label="地块南至:" :border="true" input-align="right" />
<van-field v-model="form.dkbz" label="地块北至:" :border="true" input-align="right" />
<van-field v-model="form.dkbzxx" label="地块备注信息:" :border="true" input-align="right" />
</van-form>
</van-dialog>
</div>


</div> </div>
</template> </template>
<script> <script>
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { getConfigKey } from "@/api/system/config";
import { listCbdkxx } from "@/api/contracted/cbdkxx";
import { getDept } from "@/api/contracted";

export default { export default {
name: "contractedVillageContractor", name: "contractedVillageContractor",
data() { data() {
return { return {
form: {}, // 承包地信息表单
open: false, // 是否显示承包地信息弹出层


map: "", // 地图
mapGeoServerUrl: "", // geoserver地址
mapCenterLocation: [], // 地图中心坐标
landLayerName: "", // 地块图层名称
}; };
}, },
created() { created() {

// 获取geoserver的地址
this.getGeoServerUrl();
// 获取地块图层名称
this.getLandLayerName();
},
mounted() {
// 获取承包地块列表
this.getContractedLandList();
}, },
methods: { methods: {
// 获取geoserver的地址
getGeoServerUrl() {
getConfigKey("system.geoServer.url").then(response => {
this.mapGeoServerUrl = response.msg;
});
},
// 获取地块图层名称
getLandLayerName() {
getConfigKey("geoserver.layer.dk").then(response => {
this.landLayerName = response.msg;
});
},
goBack() {
this.$router.push({
name: 'contractedVillageContractorLand',
params: {
deptId: this.$route.params.deptId,
cbfbm: this.$route.params.cbfbm,
cbfmc: this.$route.params.cbfmc,
surveyStatus: this.$route.params.surveyStatus
}
});
},
getContractedLandList() {
listCbdkxx({cbfbm: this.$route.params.cbfbm, translate_dict: 1}).then(response => {
const landList = response.rows;
this.map = "";
setTimeout(() => {
this.drawMap(landList);
}, 500);
});
},
drawMap(landList) {
getDept(this.$route.params.deptId).then(response => {
let dept = response.data;
if (dept.lng && dept.lat) {
this.mapCenterLocation = [dept.lng, dept.lat];
} else {
this.mapCenterLocation = [116.391458, 39.902377];
}

document.getElementById("contractedLandMapBox").innerHTML = "";
// 定义地图投影
let projection = new ol.proj.Projection({
code: "EPSG:3857",
units: "degrees",
});
// 定义地图图层
let aerial = new ol.layer.Tile({
source: new ol.source.XYZ({
url: "http://t{0-7}.tianditu.com/img_w/wmts?" +
"SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles" +
"&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=cc4aba6e967096098249efa069733067",
}),
isGroup: true,
name: "卫星影像图",
});
let yingxzi = new ol.layer.Tile({
source: new ol.source.XYZ({
url: "http://t{0-7}.tianditu.com/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=cc4aba6e967096098249efa069733067",
}),
isGroup: true,
name: "天地图文字标注--卫星影像图",
});
//加载地图
this.map = new ol.Map({
controls: ol.control.defaults({attribution: false, zoom: false, rotate: false}).extend([]),
layers: [aerial, yingxzi],
projection: projection,
target: "contractedLandMapBox",
view: new ol.View({
center: ol.proj.fromLonLat(this.mapCenterLocation), // 地图中心坐标
zoom: 17,
minZoom: 1, //地图缩小限制
maxZoom: 18, //地图放大限制
// extent: [13481224.75161,5667110.83528,13811063.06278,5880284.11416]
}),
});
// 添加全部的地块图层
this.addLandLayer();
// 添加承包地块图层
this.addContractedLandLayer(landList);


// 地图点击事件
this.map.on("click", (evt) => {
let feature = this.map.forEachFeatureAtPixel(
evt.pixel,
(feature) => feature
);
if (feature) {
// 镇级:加载村级坐标点
if (feature.get('level') === 'contractedLand') {
this.form = feature.get('landInfo');
this.open = true;
}
}
});
});
},
// 添加全部的地块图层
addLandLayer() {
const landLayer = new ol.layer.Image({
source: new ol.source.ImageWMS({
url: this.mapGeoServerUrl + '/wms',
params: {
LAYERS: this.landLayerName,
cql_filter: "dept_id = '" + this.$route.params.deptId + "'",
SRID: 3857,
}
}),
name: 'landLayer'
});
this.map.getLayers().insertAt(3, landLayer);
// this.map.addLayer(landLayer);
},
// 添加承包地块图层
addContractedLandLayer(landList) {
if (landList.length === 0) {
return ;
}
let features = [];
landList.forEach(item => {
if (item.theGeomJson) {
const iconFeature = new ol.Feature({
geometry: new ol.geom.MultiPolygon(JSON.parse(item.theGeomJson).coordinates),
level: 'contractedLand',
landInfo: item
});
features.push(iconFeature);
}
});
const contractedLandLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: features
}),
name: 'contractedLandLayer',
style: new ol.style.Style({
fill: new ol.style.Fill({
color: "rgba(255, 84, 87, 0.5)"
}),
stroke: new ol.style.Stroke({
color: "#ff5457",
width: 3
})
})
});
this.map.getLayers().insertAt(4, contractedLandLayer);
this.map.getView().fit(contractedLandLayer.getSource().getExtent());
// this.map.getView().setZoom(15);
}
}, },
}; };
</script> </script>
@@ -72,6 +263,15 @@
overflow: initial; overflow: initial;
} }


/deep/ .contractedLandPopup .van-dialog {
height: 85%;
overflow-y: auto;
}

/deep/ .contractedLandPopup .van-field__label {
width: 7em;
}

.tb_main{ .tb_main{
position: relative; position: relative;
p{ p{
@@ -121,4 +321,47 @@
transform: translateX(-4vw); transform: translateX(-4vw);
} }


.legend_main{
position: absolute;
top: 5vh;
right: 0;
}

.legend_tt{
font-size: 16PX;
display: flex;
align-items: center;
justify-content: space-between;
img{
width: 20PX;
}
}

.legend{
background: rgba(255,255,255,.5);
padding: 2vh;
border-radius: 10PX;
div{
display: flex;
align-items: center;
margin-top: 2vh;
i{
display: block;
width: 15PX;
height: 15PX;
border: 1px solid;
border-radius: 3PX;
margin-right: 10PX;
}
&:nth-child(2) i{
background: rgba(22,233,15,.7);
border-color: rgba(22,233,15,1);
}
&:nth-child(3) i{
background: rgba(255,84,87,.7);
border-color: rgba(255,84,87,1);
}
}
}

</style> </style>

+ 239
- 54
src/views/contracted/village/employer/employer.vue 查看文件

@@ -17,83 +17,243 @@
</div> </div>


<div class="list_main"> <div class="list_main">
<van-field v-model="value" label="代码:" placeholder="请输入代码" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="名称:" placeholder="请输入名称" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="负责人:" placeholder="请输入负责人" required :border="false" input-align="right" label-width="auto" />

<van-field v-model="value" label="证件类型:"
placeholder="请选择证件类型"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showType = true"
/>
<van-popup v-model="showType" position="bottom">
<van-picker
show-toolbar
:columns="typeOptions"
value-key="dictLabel"
@confirm="onConfirmTypeOptions"
@cancel="showType = false"
<van-form ref="formData">
<van-field v-model="form.fbfbm" label="代码:" placeholder="请输入代码" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" :disabled="isDisabled" maxlength="14">
<template #button v-if="!isDisabled">
<van-button size="mini" type="primary" native-type="button" @click="generateCode">生成代码</van-button>
</template>
</van-field>
<van-field v-model="form.fbfmc" label="名称:" placeholder="请输入名称" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" />
<van-field v-model="form.fbffzrxm" label="负责人姓名:" placeholder="请输入负责人姓名" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" />
<van-field v-model="credentialTypeText" label="证件类型:"
placeholder="请选择证件类型"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showCredentialType = true"
/> />
</van-popup>

<van-field v-model="value" label="证件号码:" placeholder="请输入证件号码" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="联系电话:" placeholder="请输入联系电话" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="地址:" placeholder="请输入地址" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="邮编:" placeholder="请输入邮编" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="调查记事:" placeholder="请输入调查记事" required :border="false" input-align="right" label-width="auto" />
<van-field readonly v-model="value" label="签字(上传图片):" :border="false" input-align="right" label-width="auto" />

<div class="btn_main">
<p class="btn">保存</p>
<p class="btn1">签字</p>
<van-popup v-model="showCredentialType" position="bottom">
<van-picker
show-toolbar
:columns="credentialTypeOptions"
value-key="dictLabel"
@confirm="onConfirmTypeOptions"
@cancel="showCredentialType = false"
/>
</van-popup>
<van-field v-model="form.fzrzjhm" label="证件号码:" placeholder="请输入证件号码" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" />
<van-field v-model="form.lxdh" label="联系电话:" placeholder="请输入联系电话" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" />
<van-field v-model="form.fbfdz" label="地址:" placeholder="请输入地址" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" />
<van-field v-model="form.yzbm" label="邮政编码:" placeholder="请输入邮政编码" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" maxlength="6" />
<van-field v-model="form.fbfdcjs" label="调查记事:" placeholder="请输入调查记事" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" />
<van-field label="签字图片:" readonly :border="false" label-width="auto" />
<img :src="'/api'+form.fbfdcqz" width="100%" alt="" />
</van-form>
<div class="btn_main" v-if="taskStatus === '2'">
<p class="btn" @click="submitForm">保存</p>
<p class="btn1" @click="handleSign">签字</p>
</div> </div>
</div> </div>


<van-popup v-model="showSignPopup" closeable position="right" :style="{ height: '100%' }" >
<van-cell-group style="width: 100%;height:100%;overflow: hidden;padding-top: 10px;padding-bottom: 10px;">
<div class="signature-box" @mousedown="canvasTTdown" @touchstart="canvasTTdown">
<vue-esign
ref="esign"
class="mySign"
:width="500"
:height="height"
:isCrop="signature.isCrop"
:lineWidth="signature.lineWidth"
:lineColor="signature.lineColor"
:bgColor.sync="signature.bgColor"
/>
</div>
<img src="../../../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt="">
<div class="signature-footer">
<van-button @click="handleReset" class="clearBtn" type="info" plain size="small">清空画板</van-button>
<van-button @click="handleGenerate" type="info" size="small">保存签字</van-button>
</div>
</van-cell-group>
</van-popup>


</div> </div>
</template> </template>
<script> <script>
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { listFbf, addFbf, updateFbf, manualSignature, generateEmployerCode } from "@/api/contracted/fbf";
import vueEsign from "vue-esign";
import $ from "jquery";

export default { export default {
name: "contractedVillageContractor", name: "contractedVillageContractor",
components: {
vueEsign
},
data() { data() {
return { return {
loading:false,
finished:true,
value:'',
showType:false,
typeOptions:[{
dictLabel:'类型1',
dictValue:'1',
}],
form: {}, // 发包方信息表单
isDisabled: false, // 是否禁用
credentialTypeOptions: [], // 证件类型字典
credentialTypeText: null, // 证件类型标签名
showCredentialType: false, // 控制证件类型字典弹出层的显示和隐藏
taskStatus: null, // 调查任务的完成状态:1表示已完成,2表示未完成

// 控制签字面板的显示和隐藏
showSignPopup: false,
height: null,
//电子签名
signature: {
lineWidth: 6, // 画笔的线条粗细
lineColor: "#000000", // 画笔的颜色
bgColor: "", // 画布的背景颜色
resultImg: "", // 最终画布生成的base64图片
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
},
}; };
}, },
created() { created() {

this.taskStatus = Cookies.get('taskStatus');
this.height = window.screen.height * 1.28 - 20;
this.getDicts("cert_type").then(response => {
this.credentialTypeOptions = response.data;
});
this.getDetail();
}, },
methods: { methods: {
getList(){

getDetail() {
listFbf({deptId: this.$route.query.deptId}).then(response => {
if (response.rows.length > 0) {
this.form = response.rows[0];
this.isDisabled = true;
this.$nextTick(() => {
this.credentialTypeText = this.selectDictLabel(this.credentialTypeOptions, this.form.fzrzjlx);
});
} else {
this.resetForm();
this.isDisabled = false;
}
});
}, },
onSearch(){

generateCode() {
generateEmployerCode({deptId: this.$route.query.deptId}).then(response => {
this.$set(this.form, 'fbfbm', response.data);
});
}, },
onConfirmTypeOptions(){

onConfirmTypeOptions(value){
this.form.fzrzjlx = value.dictValue;
this.credentialTypeText = value.dictLabel;
this.showCredentialType = false;
}, },
onConfirmZjTypeOptions(){

submitForm() {
this.$refs.formData.validate().then(() => {
if (this.form.id) {
updateFbf(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
});
}
});
} else {
this.form.deptId = this.$route.query.deptId;
addFbf(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
onClose: () => {
this.getDetail();
}
});
}
});
}
}).catch(() => {
this.$notify({ type: 'danger', message: '请填写完整的表单项' });
});
}, },
onConfirmTDYTOptions(){

resetForm() {
this.form = {
deptId: null,
fbfbm: null,
fbfmc: null,
fbffzrxm: null,
fzrzjlx: '1',
fzrzjhm: null,
lxdh: null,
fbfdz: null,
yzbm: null,
fbfdcjs: null,
fbfdcqz: null
};
this.credentialTypeText = '居民身份证';
},
handleSign() {
this.showSignPopup = true;
this.handleReset();
},
canvasTTdown() {
$('#canvasTT').css('display', 'none');
},
// 清空画板
handleReset() {
if (this.$refs.esign) {
this.$refs.esign.reset();
}
$('#canvasTT').css('display', 'block')
},
// 生成签字图片
handleGenerate() {
this.$refs.esign
.generate() // 使用生成器调用把签字的图片转换成为base64图片格式
.then((res) => {
this.signature.resultImg = res;
let wj = this.dataURLtoBlob(res);
let param = new FormData(); // 创建form对象
param.append('file', wj); // 通过append向form对象添加数据
param.append('deptId', this.$route.query.deptId);
manualSignature(param).then(response => {
if (response.code === 200) {
this.$toast({
icon: 'success', // 找到自己需要的图标
message: '签字成功',
duration: "1000",
onClose: () => {
this.showSignPopup = false;
this.form.fbfdcqz = response.data;
}
});
}
});
})
.catch((err) => {
// 画布没有签字时会执行这里提示一下
this.$toast.fail('请签名后再保存签字');
});
},
dataURLtoBlob(dataurl, filename = 'file') {
let arr = dataurl.split(',')
let mime = arr[0].match(/:(.*?);/)[1]
let suffix = mime.split('/')[1]
let bstr = atob(arr[1])
let n = bstr.length
let u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime
})
}, },

}, },
}; };
</script> </script>
@@ -131,6 +291,10 @@
overflow: initial; overflow: initial;
} }


/deep/ .van-field--disabled .van-field__label {
color: #646566;
}

.tb_main{ .tb_main{
position: relative; position: relative;
p{ p{
@@ -252,4 +416,25 @@
margin: 2vh auto; margin: 2vh auto;
} }


.signature-box {
border: 1px dashed #666;
margin: 2px 20px;
height: 100%;
/*canvas{*/
/* height: 100%!important;*/
/*}*/
}

.signature-footer {
transform: rotate(90deg);
width: auto;
position: absolute;
top: 50%;
left: 0PX;

.clearBtn {
margin-left: 15px;
}
}

</style> </style>

+ 569
- 17
src/views/contracted/village/map/map.vue 查看文件

@@ -13,6 +13,7 @@
</div> </div>


<div style="position:relative;"> <div style="position:relative;">
<div class="mapBox" id="landMapBox"></div>
<div class="legend_main"> <div class="legend_main">
<div class="legend"> <div class="legend">
<p class="legend_tt">图例 <p class="legend_tt">图例
@@ -24,33 +25,562 @@
<div><i></i><p>开荒地</p></div> <div><i></i><p>开荒地</p></div>
<div><i></i><p>其他地</p></div> <div><i></i><p>其他地</p></div>
</div> </div>
<div class="legend_second">
<p class="legend_tt">
<div class="legend_second" v-if="taskStatus === '2'">
<p class="legend_tt" id="drawLandPolygon">
<img src="../../../../../static/images/contracted/map_icon_02.png" alt="">画图 <img src="../../../../../static/images/contracted/map_icon_02.png" alt="">画图
</p> </p>
</div> </div>
</div> </div>
<div class="mapBox"></div>
</div>

<div class="landPopup">
<van-dialog v-model="open" :title="title" :show-confirm-button="false" :show-cancel-button="false">
<van-form ref="landForm">
<van-field v-model="form.dkbm" label="地块代码:" placeholder="请输入地块代码" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" > <!-- :disabled="isDisabled" -->
<template #button v-if="!isDisabled">
<van-button size="mini" type="primary" native-type="button" @click="generateCode">生成代码</van-button>
</template>
</van-field>
<van-field v-model="form.dkmc" label="地块名称:" placeholder="请输入地块名称" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="syqxzText" label="所有权性质:"
placeholder="请选择所有权性质"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showOwnership = true"
/>
<van-popup v-model="showOwnership" position="bottom" get-container=".app-container">
<van-picker
show-toolbar
:columns="syqxzOptions"
value-key="dictLabel"
@confirm="onConfirmOwnershipOptions"
@cancel="showOwnership = false"
/>
</van-popup>
<van-field v-model="dklbText" label="地块类别:"
placeholder="请选择地块类别"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showLandCategory = true"
/>
<van-popup v-model="showLandCategory" position="bottom" get-container=".app-container">
<van-picker
show-toolbar
:columns="dklbOptions"
value-key="dictLabel"
@confirm="onConfirmLandCategoryOptions"
@cancel="showLandCategory = false"
/>
</van-popup>
<van-field v-model="tdlylxText" label="土地利用类型:"
placeholder="请选择土地利用类型"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showLandType = true"
/>
<van-popup v-model="showLandType" position="bottom" get-container=".app-container">
<van-picker
show-toolbar
:columns="tdlylxOptions"
value-key="dictLabel"
@confirm="onConfirmLandTypeOptions"
@cancel="showLandType = false"
/>
</van-popup>
<van-field v-model="dldjText" label="地力等级:"
placeholder="请选择地力等级"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showLandGrade = true"
/>
<van-popup v-model="showLandGrade" position="bottom" get-container=".app-container">
<van-picker
show-toolbar
:columns="dldjOptions"
value-key="dictLabel"
@confirm="onConfirmLandGradeOptions"
@cancel="showLandGrade = false"
/>
</van-popup>
<van-field v-model="tdytText" label="土地用途:"
placeholder="请选择土地用途"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showLandPurpose = true"
/>
<van-popup v-model="showLandPurpose" position="bottom" get-container=".app-container">
<van-picker
show-toolbar
:columns="tdytOptions"
value-key="dictLabel"
@confirm="onConfirmLandPurposeOptions"
@cancel="showLandPurpose = false"
/>
</van-popup>
<van-field v-model="form.sfjbnt" label="基本农田:" required :rules="[{ required: true }]" :border="false" input-align="right" >
<template #input>
<van-radio-group v-model="form.sfjbnt" direction="horizontal">
<!-- <van-radio name="1">是</van-radio>
<van-radio name="2">否</van-radio> -->
<van-radio v-for="dict in sfjbntOptions" :ke="dict.dictValue" :name="dict.dictValue">{{ dict.dictLabel }}</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field v-model="form.scmjm" type="number" label="实测面积(亩):" placeholder="请输入实测面积(亩)" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.zjrxm" label="指界人姓名:" placeholder="请输入指界人姓名" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkdz" label="地块东至:" placeholder="请输入地块东至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkxz" label="地块西至:" placeholder="请输入地块西至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dknz" label="地块南至:" placeholder="请输入地块南至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkbz" label="地块北至:" placeholder="请输入地块北至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkbzxx" label="地块备注信息:" placeholder="请输入地块备注信息" :border="false" input-align="right" />
</van-form>
<div class="footer_main">
<van-button type="default" hairline size="large" @click="closePopup">关闭弹窗</van-button>
<van-button type="danger" hairline size="large" @click="deleteLand(form.id)" v-if="taskStatus === '2' && showDeleteBtn">删除地块</van-button>
<van-button type="info" hairline size="large" @click="saveLand" v-if="showSaveBtn">保存信息</van-button>
</div>
</van-dialog>
</div> </div>


</div> </div>
</template> </template>
<script> <script>
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { getConfigKey } from "@/api/system/config";
import { getDept } from "@/api/contracted";
import { getDk, addDk, updateDk, deleteDk, generateLandCode } from "@/api/contracted/dk";
import $ from "jquery";

export default { export default {
name: "contractedVillageContractor", name: "contractedVillageContractor",
data() { data() {
return { return {
loading:false,
finished:true,
value:''
form: {}, // 地块信息表单参数
map: "", // 地图
mapGeoServerUrl: "", // geoserver地址
mapCenterLocation: [], // 地图中心坐标
landLayerName: "", // 地块图层名称
landLayer: "", // 地块图层
mapBorder: "", // 地图边界
villageBorderLayerName: "", // 乡镇边界图层名称
vectorLayer: "", // 绘制的矢量图层

title: "", // 弹出层标题
open: false, // 是否显示地块弹出层
syqxzOptions: [], // 所有权性质字典
syqxzText: null, // 所有权性质标签名
showOwnership: false, // 控制所有权性质字典弹出层的显示和隐藏
dklbOptions: [], // 地块类别字典
dklbText: null, // 地块类别标签名
showLandCategory: false, // 控制的地块类别字典弹出层的显示和隐藏
dldjOptions: [], // 地力等级字典
dldjText: null, // 地力等级标签名
showLandGrade: false, // 控制地力等级字典弹出层的显示和隐藏
tdytOptions: [], // 土地用途字典
tdytText: null, // 土地用途标签名
showLandPurpose: false, // 控制土地用途字典弹出层的显示和隐藏
tdlylxOptions: [], // 土地利用类型
tdlylxText: null, // 土地利用类型标签名
showLandType: false, // 控制土地利用类型字典弹出层的显示和隐藏
sfjbntOptions: [], // 是否基本农田字典
showSaveBtn: false, // 控制保存按钮的显示隐藏
showDeleteBtn: false, // 控制删除按钮的显示隐藏
isDisabled: false, // 是否禁用
taskStatus: null, // 调查任务的完成状态:1表示已完成,2表示未完成
}; };
}, },
created() { created() {

this.taskStatus = Cookies.get('taskStatus');
this.getDicts("land_ownership").then(response => {
this.syqxzOptions = response.data;
});
this.getDicts("land_type").then(response => {
this.dklbOptions = response.data;
});
this.getDicts("land_grade").then(response => {
this.dldjOptions = response.data;
});
this.getDicts("use_code").then(response => {
this.tdytOptions = response.data;
});
this.getDicts("land_use").then(response => {
this.tdlylxOptions = response.data;
});
this.getDicts("is_common").then(response => {
this.sfjbntOptions = response.data;
});
// 获取geoserver的地址
this.getGeoServerUrl();
// 获取地块图层名称
this.getLandLayerName();
// 获取村边界的图层名称
this.getVillageBorderLayerName();
},
mounted() {
// 初始化地图
setTimeout(() => {
this.initMap();
}, 500);
}, },
methods: { methods: {
// 获取geoserver的地址
getGeoServerUrl() {
getConfigKey("system.geoServer.url").then(response => {
this.mapGeoServerUrl = response.msg;
});
},
// 获取地块图层名称
getLandLayerName() {
getConfigKey("geoserver.layer.landCategory").then(response => {
this.landLayerName = response.msg;
});
},
// 获取村边界的图层名称
getVillageBorderLayerName() {
getConfigKey("geoserver.layer.villageBorder").then(response => {
this.villageBorderLayerName = response.msg;
});
},
// 初始化地图
initMap() {
getDept(this.$route.query.deptId).then(response => {
let dept = response.data;
if (dept.lng && dept.lat) {
this.mapCenterLocation = [dept.lng, dept.lat];
} else {
this.mapCenterLocation = [116.391458, 39.902377];
}
document.getElementById("landMapBox").innerHTML = "";
// 定义地图投影
let projection = new ol.proj.Projection({
code: "EPSG:3857",
units: "degrees",
});
// 定义地图图层
let aerial = new ol.layer.Tile({
source: new ol.source.XYZ({
url: "http://t{0-7}.tianditu.com/img_w/wmts?" +
"SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles" +
"&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=cc4aba6e967096098249efa069733067",
}),
isGroup: true,
name: "卫星影像图",
});
let yingxzi = new ol.layer.Tile({
source: new ol.source.XYZ({
url: "http://t{0-7}.tianditu.com/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=cc4aba6e967096098249efa069733067",
}),
isGroup: true,
name: "天地图文字标注--卫星影像图",
});
//加载地图
this.map = new ol.Map({
controls: ol.control.defaults({attribution: false, zoom: false, rotate: false}).extend([]),
layers: [aerial, yingxzi],
projection: projection,
target: "landMapBox",
view: new ol.View({
center: ol.proj.fromLonLat(this.mapCenterLocation), // 地图中心坐标
zoom: 15.5,
minZoom: 1, //地图缩小限制
maxZoom: 18, //地图放大限制
// extent: [13481224.75161,5667110.83528,13811063.06278,5880284.11416]
}),
});
// // 添加村边界
this.addVillageBorder();
// 添加地块图层
this.addLandLayer();
// 绘制地块
$("#drawLandPolygon").click(() => {
// 创建矢量数据源
let vectorSource = new ol.source.Vector({
wrapX: false,
});
// 创建矢量图层
this.vectorLayer = new ol.layer.Vector({
source: vectorSource,
});
// 添加图层
this.map.addLayer(this.vectorLayer);
// 地图交互-绘制图形
let drawInteraction = new ol.interaction.Draw({
source: vectorSource,
type: "Polygon",
});
// 添加交互
this.map.addInteraction(drawInteraction);
drawInteraction.on('drawend', (evt) => {
// 移除交互
this.map.removeInteraction(drawInteraction);
let coordinates = evt.feature.getGeometry().getCoordinates();
this.reset();
this.form.theGeom = JSON.stringify(coordinates);
this.title = "添加地块信息";
this.showSaveBtn = true;
this.showDeleteBtn = false;
this.isDisabled = false;
setTimeout(() => {
this.open = true;
}, 10);


});
});
// 地图点击事件
this.map.on("click", (evt) => {
// 点击宅基地查看详情
if (this.landLayer) {
const viewResolution = this.map.getView().getResolution();
const url = this.landLayer.getSource()
.getFeatureInfoUrl(evt.coordinate, viewResolution, 'EPSG:3857', {'INFO_FORMAT': 'application/json'});
if (url) {
fetch(url)
.then(response => response.json())
.then(data => {
if (data.features.length > 0) {
let id = data.features[0].id.split(".")[1];
getDk(id).then(response => {
const data = response.data;
this.reset();
this.form = data;
this.syqxzText = this.selectDictLabel(this.syqxzOptions, data.syqxz);
this.dklbText = this.selectDictLabel(this.dklbOptions, data.dklb);
this.dldjText = this.selectDictLabel(this.dldjOptions, data.dldj);
this.tdytText = this.selectDictLabel(this.tdytOptions, data.tdyt);
this.tdlylxText = this.selectDictLabel(this.tdlylxOptions, data.tdlylx);
this.title = "查看地块信息";
this.showSaveBtn = false;
this.showDeleteBtn = true;
this.isDisabled = true;
setTimeout(() => {
this.open = true;
}, 10);
});

/* if (this.selectedHomesteadLayer) {
this.map.removeLayer(this.selectedHomesteadLayer);
this.selectedHomesteadLayer = "";
}
this.selectedHomesteadLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: new ol.format.GeoJSON().readFeatures(data)
}),
name: 'selectedHomesteadLayer',
style: new ol.style.Style({
fill: new ol.style.Fill({
//矢量图层填充颜色,以及透明度
color: "rgba(255, 84, 87, 0.3)",
}),
stroke: new ol.style.Stroke({
//边界样式
color: "#ff5457",
width: 3,
}),
})
});
// this.map.addLayer(this.selectedHomesteadLayer);
this.map.getLayers().insertAt(4, this.selectedHomesteadLayer);*/
}
});
}
}
});
});
},
// 添加地块图层
addLandLayer() {
this.landLayer = new ol.layer.Image({
source: new ol.source.ImageWMS({
url: this.mapGeoServerUrl + '/wms',
params: {
LAYERS: this.landLayerName,
cql_filter: "dept_id = '" + this.$route.query.deptId + "'",
SRID: 3857,
abc: Math.random() // 无效参数,保证每次发送的请求都不一样
}
}),
name: 'landLayer'
});
this.map.getLayers().insertAt(3, this.landLayer);
// this.map.addLayer(this.landLayer);
},
// 添加村边界
addVillageBorder() {
this.mapBorder = new ol.layer.Image({
source: new ol.source.ImageWMS({
url: this.mapGeoServerUrl + '/wms',
params: {
LAYERS: this.villageBorderLayerName,
cql_filter: "dept_id = '" + this.$route.query.deptId + "'",
SRID: 3857,
},
}),
name: 'villageBorderLayer'
});
this.map.getLayers().insertAt(2, this.mapBorder);
},
saveLand() {
this.$refs.landForm.validate().then(() => {
if (this.form.id) {
this.showSaveBtn = false;
updateDk(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
onClose: () => {
this.open = false;
this.showSaveBtn = true;
}
});
}
});
} else {
this.form.deptId = this.$route.query.deptId;
this.showSaveBtn = false;
addDk(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
onClose: () => {
this.open = false;
this.showSaveBtn = true;
// 移除矢量图层
this.map.removeLayer(this.vectorLayer);
this.vectorLayer = "";
// 移除地块图层重新加载
this.map.removeLayer(this.landLayer);
this.landLayer = "";
this.addLandLayer();
}
});
}
});
}
}).catch(() => {
this.$notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
deleteLand(id) {
this.$dialog.confirm({
message: '是否确认删除此地块?',
}).then(() => {
// on confirm
this.showDeleteBtn = false;
deleteDk(id).then(res => {
if (res.code == 200) {
this.$toast({
icon: 'success',
message: '删除成功',
duration: "1000",
onClose: () => {
this.open = false;
this.showDeleteBtn = true;
// 移除地块图层重新加载
this.map.removeLayer(this.landLayer);
this.landLayer = "";
this.addLandLayer();
}
});
}
});
}).catch(() => {
// on cancel
});
},
onConfirmOwnershipOptions(value){
this.form.syqxz = value.dictValue;
this.syqxzText = value.dictLabel;
this.showOwnership = false;
},
onConfirmLandCategoryOptions(value){
this.form.dklb = value.dictValue;
this.dklbText = value.dictLabel;
this.showLandCategory = false;
},
onConfirmLandTypeOptions(value) {
this.form.tdlylx = value.dictValue;
this.tdlylxText = value.dictLabel;
this.showLandType = false;
},
onConfirmLandGradeOptions(value) {
this.form.dldj = value.dictValue
this.dldjText = value.dictLabel;
this.showLandGrade = false;
},
onConfirmLandPurposeOptions(value){
this.form.tdyt = value.dictValue;
this.tdytText = value.dictLabel;
this.showLandPurpose = false;
},
generateCode() {
generateLandCode({deptId: this.$route.query.deptId}).then(response => {
this.$set(this.form, 'dkbm', response.data);
});
},
closePopup() {
// 移除矢量图层
if (this.vectorLayer) {
this.map.removeLayer(this.vectorLayer);
this.vectorLayer = "";
}
this.open = false;
this.reset();
},
reset() {
this.form = {
deptId: null,
dkbm: null,
dkmc: null,
syqxz: null,
dklb: null,
tdlylx: null,
dldj: null,
tdyt: null,
sfjbnt: '1',
scmjm: null,
zjrxm: null,
dkdz: null,
dkxz: null,
dknz: null,
dkbz: null,
dkbzxx: null,
theGeom: null
};
this.syqxzText = null;
this.dklbText = null;
this.dldjText = null;
this.tdytText = null;
this.tdlylxText = null;
},
}, },
}; };
</script> </script>
@@ -74,6 +604,20 @@
border: none; border: none;
} }


/deep/ .van-field--disabled .van-field__label {
color: #646566;
}

/deep/ .landPopup .van-dialog {
width: 90%;
height: 85%;
overflow-y: auto;
}

/deep/ .landPopup .van-field__label {
width: 7em;
}

.head{ .head{
padding: 0 4vw; padding: 0 4vw;
} }
@@ -140,24 +684,24 @@
margin-right: 10PX; margin-right: 10PX;
} }
&:nth-child(2) i{ &:nth-child(2) i{
background: rgba(12,255,0,.5);
border-color: rgba(12,255,0,1);
background: rgba(22,233,15,.7);
border-color: rgba(22,233,15,1);
} }
&:nth-child(3) i{ &:nth-child(3) i{
background: rgba(255,137,5,.5);
border-color: rgba(255,137,5,1);
background: rgba(1,198,222,.7);
border-color: rgba(1,198,222,1);
} }
&:nth-child(4) i{ &:nth-child(4) i{
background: rgba(246,255,0,.5);
border-color: rgba(246,255,0,1);
background: rgba(238,238,0,.7);
border-color: rgba(238,238,0,1);
} }
&:nth-child(5) i{ &:nth-child(5) i{
background: rgba(168,0,255,.5);
border-color: rgba(168,0,255,1);
background: rgba(238,60,60,.7);
border-color: rgba(238,60,60,1);
} }
&:nth-child(6) i{ &:nth-child(6) i{
background: rgba(0,234,255,.5);
border-color: rgba(0,234,255,1);
background: rgba(235,134,0,.7);
border-color: rgba(235,134,0,1);
} }
} }
} }
@@ -169,4 +713,12 @@
background-image: linear-gradient(to right,#c6fe8b,#48e5a2); background-image: linear-gradient(to right,#c6fe8b,#48e5a2);
} }


.footer_main {
flex: 0 0 120px;
background: #ccc;
display: flex;
justify-content: center; /* 相对父元素水平居中 */
align-items: center; /* 子元素相对父元素垂直居中 */
}

</style> </style>

+ 134
- 23
src/views/contracted/village/massif/massif.vue 查看文件

@@ -16,68 +16,179 @@
v-model="value" v-model="value"
shape="round" shape="round"
background="transparent" background="transparent"
placeholder="请输入姓名搜索"
placeholder="请输入地块名称搜索"
@search="onSearch" @search="onSearch"
></van-search> ></van-search>


<div class="search_btn">
<div class="search_btn" @click="goDetail()" v-if="taskStatus === '2'">
<p class="active"> + 新增</p> <p class="active"> + 新增</p>
</div> </div>


</div> </div>


<div class="second_tap"> <div class="second_tap">
<p class="active">承包</p>
<!-- <p class="active">承包</p>
<p>自留</p> <p>自留</p>
<p>机动</p> <p>机动</p>
<p>开荒</p> <p>开荒</p>
<p>其他</p>
<p>其他</p> -->
<p v-for="dict in dklbOptions" :key="dict.dictValue" :class="{active: landCategory === dict.dictValue}" @click="landCategoryChange(dict.dictValue, dict.dictLabel)">{{dict.dictLabel}}</p>
</div> </div>


<p class="page_tab">自留地 <span>5153亩</span></p>
<p class="page_tab">{{ tagName }} <span>{{ totalNum }}块</span></p>
<div class="list_main"> <div class="list_main">
<van-row style="color: #888888;font-size: 14px;"> <van-row style="color: #888888;font-size: 14px;">
<van-col span="9">地块代码</van-col> <van-col span="9">地块代码</van-col>
<van-col span="10">地块名称</van-col> <van-col span="10">地块名称</van-col>
<van-col span="5">面积(亩)</van-col> <van-col span="5">面积(亩)</van-col>
</van-row> </van-row>
<van-swipe-cell v-for="(item,index) in 50">
<van-row @click="goDetail">
<van-col span="9">45412353553</van-col>
<van-col span="10">西湖地地块名称</van-col>
<van-col span="5" style="color: #f78200">7</van-col>
</van-row>
<template #right>
<van-button square type="danger" text="删除" />
</template>
</van-swipe-cell>
<van-list
v-model="loading"
:finished="finished"
finished-text="没有更多了"
:immediate-check="false"
@load="getList"
>
<van-swipe-cell v-for="(item,index) in landList">
<van-row @click="goDetail(item.id)">
<van-col span="9">{{ item.dkbm }}</van-col>
<van-col span="10">{{ item.dkmc }}</van-col>
<van-col span="5" style="color: #f78200">{{ item.scmjm }}</van-col>
</van-row>
<template #right v-if="taskStatus === '2'">
<van-button square type="danger" text="删除" native-type="button" @click="deleteLand(item.id, index)" />
</template>
</van-swipe-cell>
</van-list>
</div> </div>


</div> </div>
</template> </template>
<script> <script>
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { listDk, deleteDk } from "@/api/contracted/dk";

export default { export default {
name: "contractedVillageContractor", name: "contractedVillageContractor",
data() { data() {
return { return {
loading:false, loading:false,
finished:true,
value:''
finished:false,
value:'',
// 查询参数
queryParams: {
deptId: null,
dkmc: null,
dklb: null,
pageNum:1,
pageSize:20,
// 查询排序
orderByColumn: "id",
isAsc: "desc",
},
// 地块类别字典
dklbOptions: [],
// 地块类别
landCategory: null,
// 当前选中的地块类别
tagName: null,
// 当前调查状态下的地块总数
totalNum: 0,
// 地块列表
landList: [],
// 调查任务的完成状态:1表示已完成,2表示未完成
taskStatus: null,
}; };
}, },
created() { created() {

this.taskStatus = Cookies.get('taskStatus');
this.queryParams.deptId = this.$route.query.deptId;
this.getDicts("land_type").then(response => {
this.dklbOptions = response.data;
if (this.dklbOptions.length > 0) {
const dklb = this.$route.query.dklb;
this.queryParams.dklb = dklb ? dklb : this.dklbOptions[0].dictValue;
this.landCategory = dklb ? dklb : this.dklbOptions[0].dictValue;
this.tagName = dklb ? this.selectDictLabel(this.dklbOptions, dklb) : this.dklbOptions[0].dictLabel;
}
this.getList();
});
}, },
methods: { methods: {
getList(){ getList(){

this.loading = true;
listDk(this.queryParams).then(response => {
response.rows.forEach(item => {
this.landList.push(item);
});
this.totalNum = response.total;
if (this.landList.length >= response.total) {
this.finished = true;
return;
} else {
this.loading = false;
this.queryParams.pageNum += 1;
}
});
}, },
onSearch(){ onSearch(){

this.queryParams.dkmc = this.value;
this.queryData();
},
landCategoryChange(dictValue, dictLabel) {
this.landCategory = dictValue;
this.queryParams.dklb = dictValue;
this.tagName = dictLabel;
this.totalNum = 0;
this.queryData();
},
queryData() {
this.queryParams.pageNum = 1;
this.finished = false;
this.landList = [];
this.getList();
},
goDetail(id){
if (id) {
this.$router.push({
path:'/contracted/village/massifDetail',
query: {
deptId: this.$route.query.deptId,
deptName: this.$route.query.deptName,
id: id
}
});
} else {
this.$router.push({
path:'/contracted/village/massifDetail',
query: {
deptId: this.$route.query.deptId,
deptName: this.$route.query.deptName
}
});
}
}, },
goDetail(){
this.$router.push({path:'/contracted/village/massifDetail', query: { deptId: this.$route.query.deptId, deptName: this.$route.query.deptName }});
deleteLand(id, index) {
this.$dialog.confirm({
message: '是否确认删除此地块?',
}).then(() => {
// on confirm
deleteDk(id).then(res => {
if (res.code == 200) {
this.$toast({
icon: 'success',
message: '删除成功',
duration: "1000",
onClose: () => {
this.landList.splice(index, 1);
this.totalNum = this.totalNum - 1;
}
});
}
});
}).catch(() => {
// on cancel
});
} }
}, },
}; };
@@ -162,7 +273,7 @@
background: #dbf1ea; background: #dbf1ea;
border: 1px solid #cdcdcd; border: 1px solid #cdcdcd;
color: #5f5f5f; color: #5f5f5f;
padding: 5PX 15PX;
padding: 5PX 5PX;
margin-right: 3vw; margin-right: 3vw;
border-radius: 50PX; border-radius: 50PX;
} }


+ 370
- 138
src/views/contracted/village/massif/massifDetail.vue 查看文件

@@ -1,149 +1,151 @@
<template> <template>
<div class="app-container"> <div class="app-container">


<van-nav-bar left-arrow fixed placeholder @click-left="onClickLeft" >
<van-nav-bar left-arrow fixed placeholder @click-left="goBack" >
<template #title> <template #title>
<div class="tb_main"> <div class="tb_main">
{{$route.query.deptName}}
{{ titleName }}
</div> </div>
</template> </template>
</van-nav-bar> </van-nav-bar>


<div class="tap_block">
<!-- <div class="tap_block">
<p @click="$router.push({path:'/contracted/village/contractor', query: { deptId: $route.query.deptId, deptName: $route.query.deptName }})">承包方</p> <p @click="$router.push({path:'/contracted/village/contractor', query: { deptId: $route.query.deptId, deptName: $route.query.deptName }})">承包方</p>
<p @click="$router.push({path:'/contracted/village/employer', query: { deptId: $route.query.deptId, deptName: $route.query.deptName }})">发包方</p> <p @click="$router.push({path:'/contracted/village/employer', query: { deptId: $route.query.deptId, deptName: $route.query.deptName }})">发包方</p>
<p class="active">地块</p> <p class="active">地块</p>
<p @click="$router.push({path:'/contracted/village/map', query: { deptId: $route.query.deptId, deptName: $route.query.deptName }})">地图</p> <p @click="$router.push({path:'/contracted/village/map', query: { deptId: $route.query.deptId, deptName: $route.query.deptName }})">地图</p>
</div>
</div> -->


<div class="list_main"> <div class="list_main">
<van-field v-model="value" label="地块代码:" placeholder="请输入地块代码" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="地块名称:" placeholder="请输入地块名称" required :border="false" input-align="right" label-width="auto" />

<van-field v-model="value" label="所有权性质:"
placeholder="请选择所有权性质"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showType = true"
/>
<van-popup v-model="showSYQXZ" position="bottom">
<van-picker
show-toolbar
:columns="typeOptions"
value-key="dictLabel"
@confirm="onConfirmTypeOptions"
@cancel="showSYQXZ = false"
<van-form ref="formData">
<van-field v-model="form.dkbm" label="地块代码:" placeholder="请输入地块代码" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" :disabled="isDisabled" maxlength="19">
<template #button v-if="!$route.query.id">
<van-button size="mini" type="primary" native-type="button" @click="generateCode">生成代码</van-button>
</template>
</van-field>
<van-field v-model="form.dkmc" label="地块名称:" placeholder="请输入地块名称" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="syqxzText" label="所有权性质:"
placeholder="请选择所有权性质"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showOwnership = true"
/> />
</van-popup>

<van-field v-model="value" label="地块类别:"
placeholder="请选择地块类别"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showZjType = true"
/>
<van-popup v-model="showDKLB" position="bottom">
<van-picker
show-toolbar
:columns="zjTypeOptions"
value-key="dictLabel"
@confirm="onConfirmZjTypeOptions"
@cancel="showDKLB = false"
<van-popup v-model="showOwnership" position="bottom">
<van-picker
show-toolbar
:columns="syqxzOptions"
value-key="dictLabel"
@confirm="onConfirmOwnershipOptions"
@cancel="showOwnership = false"
/>
</van-popup>
<van-field v-model="dklbText" label="地块类别:"
placeholder="请选择地块类别"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="openLandCategoryPopup"
/> />
</van-popup>

<van-field v-model="value" label="土地利用类型:"
placeholder="请选择土地利用类型"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showType = true"
/>
<van-popup v-model="showType" position="bottom">
<van-picker
show-toolbar
:columns="typeOptions"
value-key="dictLabel"
@confirm="onConfirmTypeOptions"
@cancel="showType = false"
<van-popup v-model="showLandCategory" position="bottom">
<van-picker
show-toolbar
:columns="dklbOptions"
value-key="dictLabel"
@confirm="onConfirmLandCategoryOptions"
@cancel="showLandCategory = false"
/>
</van-popup>
<van-field v-model="tdlylxText" label="土地利用类型:"
placeholder="请选择土地利用类型"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showLandType = true"
/> />
</van-popup>

<van-field v-model="value" label="地力等级:"
placeholder="请选择地力等级"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showZjType = true"
/>
<van-popup v-model="showZjType" position="bottom">
<van-picker
show-toolbar
:columns="zjTypeOptions"
value-key="dictLabel"
@confirm="onConfirmZjTypeOptions"
@cancel="showZjType = false"
<van-popup v-model="showLandType" position="bottom">
<van-picker
show-toolbar
:columns="tdlylxOptions"
value-key="dictLabel"
@confirm="onConfirmLandTypeOptions"
@cancel="showLandType = false"
/>
</van-popup>
<van-field v-model="dldjText" label="地力等级:"
placeholder="请选择地力等级"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showLandGrade = true"
/> />
</van-popup>

<van-field v-model="value" label="土地用途:"
placeholder="请选择土地用途"
required
:border="false"
input-align="right"
right-icon="arrow-down"
label-width="auto"
readonly
clickable
@click="showTDYT = true"
/>
<van-popup v-model="showTDYT" position="bottom">
<van-picker
show-toolbar
:columns="TDYTOptions"
value-key="dictLabel"
@confirm="onConfirmTDYTOptions"
@cancel="showTDYT = false"
<van-popup v-model="showLandGrade" position="bottom">
<van-picker
show-toolbar
:columns="dldjOptions"
value-key="dictLabel"
@confirm="onConfirmLandGradeOptions"
@cancel="showLandGrade = false"
/>
</van-popup>
<van-field v-model="tdytText" label="土地用途:"
placeholder="请选择土地用途"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showLandPurpose = true"
/> />
</van-popup>

<van-field v-model="value" label="基本农田:" required :border="false" input-align="right" >
<template #input>
<van-radio-group v-model="radio" direction="horizontal">
<van-radio name="1">是</van-radio>
<van-radio name="2">否</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field v-model="value" label="实测面积(亩):" placeholder="请输入实测面积(亩)" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="指界人:" placeholder="请输入指界人" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="东面:" placeholder="请输入东面" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="西面:" placeholder="请输入西面" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="南面:" placeholder="请输入南面" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="北面:" placeholder="请输入北面" required :border="false" input-align="right" label-width="auto" />
<van-field v-model="value" label="备注:" placeholder="请输入备注" :border="false" input-align="right" label-width="auto" />

<div class="mapBox"></div>

<p class="btn">保存</p>
<van-popup v-model="showLandPurpose" position="bottom">
<van-picker
show-toolbar
:columns="tdytOptions"
value-key="dictLabel"
@confirm="onConfirmLandPurposeOptions"
@cancel="showLandPurpose = false"
/>
</van-popup>
<van-field v-model="form.sfjbnt" label="基本农田:" required :rules="[{ required: true }]" :border="false" input-align="right" >
<template #input>
<van-radio-group v-model="form.sfjbnt" direction="horizontal">
<!-- <van-radio name="1">是</van-radio>
<van-radio name="2">否</van-radio> -->
<van-radio v-for="dict in sfjbntOptions" :ke="dict.dictValue" :name="dict.dictValue">{{ dict.dictLabel }}</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field v-model="form.scmjm" type="number" label="实测面积(亩):" placeholder="请输入实测面积(亩)" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.zjrxm" label="指界人姓名:" placeholder="请输入指界人姓名" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkdz" label="地块东至:" placeholder="请输入地块东至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkxz" label="地块西至:" placeholder="请输入地块西至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dknz" label="地块南至:" placeholder="请输入地块南至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkbz" label="地块北至:" placeholder="请输入地块北至" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.dkbzxx" label="地块备注信息:" placeholder="请输入地块备注信息" :border="false" input-align="right" />

<div class="mapBox">
<common-map ref="landMap" :minMapZoom="15" :maxMapZoom="18" :allowDraw="true" @drawFinished="onMapDrawFinished" />
</div>
</van-form>
<p class="btn" @click="submitForm" v-if="taskStatus === '2'">保存</p>
</div> </div>




@@ -151,8 +153,15 @@
</template> </template>
<script> <script>
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { getDk, addDk, updateDk, generateLandCode } from "@/api/contracted/dk";
import { getDept } from "@/api/contracted";
import CommonMap from "@/components/house/CommonMap";

export default { export default {
name: "contractedVillageContractor", name: "contractedVillageContractor",
components: {
CommonMap
},
data() { data() {
return { return {
loading:false, loading:false,
@@ -179,28 +188,243 @@
minDate: new Date(2020, 0, 1), minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1), maxDate: new Date(2025, 10, 1),
currentDate: new Date(2021, 0, 17), currentDate: new Date(2021, 0, 17),

titleName: '', // 标题信息
isDisabled: false, // 是否禁用
form: {}, // 地块信息表单
syqxzOptions: [], // 所有权性质字典
syqxzText: null, // 所有权性质标签名
showOwnership: false, // 控制所有权性质字典弹出层的显示和隐藏
dklbOptions: [], // 地块类别字典
dklbText: null, // 地块类别标签名
showLandCategory: false, // 控制的地块类别字典弹出层的显示和隐藏
dldjOptions: [], // 地力等级字典
dldjText: null, // 地力等级标签名
showLandGrade: false, // 控制地力等级字典弹出层的显示和隐藏
tdytOptions: [], // 土地用途字典
tdytText: null, // 土地用途标签名
showLandPurpose: false, // 控制土地用途字典弹出层的显示和隐藏
tdlylxOptions: [], // 土地利用类型
tdlylxText: null, // 土地利用类型标签名
showLandType: false, // 控制土地利用类型字典弹出层的显示和隐藏
sfjbntOptions: [], // 是否基本农田字典
taskStatus: null, // 调查任务的完成状态:1表示已完成,2表示未完成
}; };
}, },
created() { created() {

this.taskStatus = Cookies.get('taskStatus');
this.getDicts("land_ownership").then(response => {
this.syqxzOptions = response.data;
});
this.getDicts("land_type").then(response => {
this.dklbOptions = response.data;
// 新增地块信息的时候,去除地块类别中的承包地块选项
if (!this.$route.query.id) {
let index = this.dklbOptions.findIndex(item => item.dictValue === '10');
this.dklbOptions.splice(index, 1);
}
});
this.getDicts("land_grade").then(response => {
this.dldjOptions = response.data;
});
this.getDicts("use_code").then(response => {
this.tdytOptions = response.data;
});
this.getDicts("land_use").then(response => {
this.tdlylxOptions = response.data;
});
this.getDicts("is_common").then(response => {
this.sfjbntOptions = response.data;
});
},
mounted() {
if (this.$route.query.id) {
this.titleName = '修改地块信息';
this.isDisabled = true;
setTimeout(() => {
this.getDetail();
}, 500);
} else {
this.titleName = '新增地块信息';
this.resetForm();
this.getCoordinates();
}
}, },
methods: { methods: {
getList(){

getDetail() {
getDk(this.$route.query.id).then(response => {
const data = response.data;
this.form = data;
this.syqxzText = this.selectDictLabel(this.syqxzOptions, data.syqxz);
this.dklbText = this.selectDictLabel(this.dklbOptions, data.dklb);
this.dldjText = this.selectDictLabel(this.dldjOptions, data.dldj);
this.tdytText = this.selectDictLabel(this.tdytOptions, data.tdyt);
this.tdlylxText = this.selectDictLabel(this.tdlylxOptions, data.tdlylx);
if (response.data.theGeomJson) {
this.form.theGeom = JSON.stringify(JSON.parse(response.data.theGeomJson).coordinates);
this.$nextTick(() => {
this.$refs.landMap.setLayer('_Draw_layer', response.data.theGeomJson);
});
} else {
this.getCoordinates();
}
});
}, },
onSearch(){

resetForm() {
this.form = {
deptId: null,
dkbm: null,
dkmc: null,
syqxz: '30',
dklb: '99',
tdlylx: '01',
dldj: '01',
tdyt: '1',
sfjbnt: '1',
scmjm: null,
zjrxm: null,
dkdz: null,
dkxz: null,
dknz: null,
dkbz: null,
dkbzxx: null,
theGeom: null
};
this.syqxzText = '集体土地所有权';
this.dklbText = '其他集体土地';
this.tdlylxText = '【1】耕地';
this.dldjText = '一等地';
this.tdytText = '种植业';
}, },
onConfirmTypeOptions(){

getCoordinates() {
getDept(this.$route.query.deptId).then(response => {
const lng = response.data.lng;
const lat = response.data.lat;
if (lng && lat) {
this.$nextTick(() => {
this.$refs.landMap.setCoord(lng, lat);
});
}
});
}, },
onConfirmZjTypeOptions(){

onConfirmOwnershipOptions(value){
this.form.syqxz = value.dictValue;
this.syqxzText = value.dictLabel;
this.showOwnership = false;
}, },
onConfirmTDYTOptions(){

onConfirmLandCategoryOptions(value){
/* if (this.$route.query.id && this.form.dklb === '10') {
this.$toast({
icon: 'fail',
message: '当前地块为承包地块,不能修改地块类别',
duration: '2000'
})
this.showLandCategory = false;
return ;
} */
this.form.dklb = value.dictValue;
this.dklbText = value.dictLabel;
this.showLandCategory = false;
}, },

onConfirmLandTypeOptions(value) {
this.form.tdlylx = value.dictValue;
this.tdlylxText = value.dictLabel;
this.showLandType = false;
},
onConfirmLandGradeOptions(value) {
this.form.dldj = value.dictValue
this.dldjText = value.dictLabel;
this.showLandGrade = false;
},
onConfirmLandPurposeOptions(value){
this.form.tdyt = value.dictValue;
this.tdytText = value.dictLabel;
this.showLandPurpose = false;
},
submitForm() {
this.$refs.formData.validate().then(() => {
if (this.$route.query.id) {
updateDk(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
onClose: () => {
// this.goBack();
this.$router.push({
path:'/contracted/village/massif',
query: {
deptId: this.$route.query.deptId,
deptName: this.$route.query.deptName,
dklb: this.form.dklb
}
});
}
});
}
});
} else {
this.form.deptId = this.$route.query.deptId;
addDk(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
onClose: () => {
// this.goBack();
this.$router.push({
path:'/contracted/village/massif',
query: {
deptId: this.$route.query.deptId,
deptName: this.$route.query.deptName,
dklb: this.form.dklb
}
});
}
});
}
});
}
}).catch(() => {
this.$notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
onMapDrawFinished(data) {
if (data) {
this.form.theGeom = JSON.stringify(data);
} else {
this.form.theGeom = null;
}
},
generateCode() {
generateLandCode({deptId: this.$route.query.deptId}).then(response => {
this.$set(this.form, 'dkbm', response.data);
});
},
goBack() {
// history.back(-1);
this.$router.push({
path:'/contracted/village/massif',
query: {
deptId: this.$route.query.deptId,
deptName: this.$route.query.deptName,
}
});
},
openLandCategoryPopup() {
// 修改时 && 地块类别为承包地块 不允许打开地块类别弹出层
if (this.$route.query.id && this.form.dklb === '10') {
this.$toast({
icon: 'fail',
message: '当前地块为承包地块,不能修改地块类别',
duration: '2000'
})
return ;
}
this.showLandCategory = true;
}
}, },
}; };
</script> </script>
@@ -238,6 +462,14 @@
overflow: initial; overflow: initial;
} }


/deep/ .van-field--disabled .van-field__label {
color: #646566;
}

/deep/ .van-field__label {
width: 7em;
}

.tb_main{ .tb_main{
position: relative; position: relative;
p{ p{


+ 8
- 1
src/views/homesteadSurvey/add.vue 查看文件

@@ -848,12 +848,19 @@ export default {
Dialog({ type: 'danger', message: '请在地图上标注宅基地所在位置!' }); Dialog({ type: 'danger', message: '请在地图上标注宅基地所在位置!' });
return; return;
} }
this.permission = "false";
if(this.form.id == null){ if(this.form.id == null){

let surveyItem = JSON.parse(localStorage.getItem("surveyItem")); let surveyItem = JSON.parse(localStorage.getItem("surveyItem"));
this.$set(this.form, 'surveyId', surveyItem.id);
this.$set(this.form, 'theGeomJson', JSON.parse( this.form.theGeomJson));
if(this.form.theGeomJson.hasOwnProperty('coordinates')) // 从后台获取的
this.$set(this.form, 'theGeomJson',this.form.theGeomJson.coordinates);
this.$set(this.form, 'theGeomJson', JSON.stringify( this.form.theGeomJson));
this.$set(this.form, 'surveyId', surveyItem.id)
addZjdzd(this.form).then(response => { addZjdzd(this.form).then(response => {
let _this =this; let _this =this;
getZjdzd(response.data).then((res) => { getZjdzd(response.data).then((res) => {
console.info(res.data);
localStorage.setItem("zjdzdxxItem",JSON.stringify(res.data)); localStorage.setItem("zjdzdxxItem",JSON.stringify(res.data));
this.$toast({ this.$toast({
icon: 'success', // 找到自己需要的图标 icon: 'success', // 找到自己需要的图标


+ 4
- 0
src/views/homesteadSurvey/fsssAdd.vue 查看文件

@@ -209,6 +209,10 @@ export default {
}, },
submitzjd(){ submitzjd(){
this.$refs.form.validate().then(() => { this.$refs.form.validate().then(() => {
this.$set(this.form, 'theGeomJson', JSON.parse( this.form.theGeomJson));
if(this.form.theGeomJson.hasOwnProperty('coordinates')) // 从后台获取的
this.$set(this.form, 'theGeomJson',this.form.theGeomJson.coordinates);
this.$set(this.form, 'theGeomJson', JSON.stringify( this.form.theGeomJson));
if(this.form.id == null){ if(this.form.id == null){
addFsss(this.form).then(response => { addFsss(this.form).then(response => {
let _this =this let _this =this


+ 4
- 0
src/views/homesteadSurvey/index.vue 查看文件

@@ -229,6 +229,7 @@
console.info(userId); console.info(userId);
this.nickName = this.$store.state.user.nickName; this.nickName = this.$store.state.user.nickName;
this.$set(this.queryParams, "rwzxr", userId); this.$set(this.queryParams, "rwzxr", userId);
this.$set(this.queryParams, "params", {deptId:100});
this.getList(); this.getList();
},1000) },1000)


@@ -331,6 +332,7 @@
if(this.active==1){ if(this.active==1){
let params = { let params = {
"rwfbzt":"PUBLISHED", "rwfbzt":"PUBLISHED",
"params":{deptId:this.$store.state.user.loginDeptId},
"pageNum": this.countyhc+1, "pageNum": this.countyhc+1,
"pageSize":10, "pageSize":10,
} }
@@ -346,6 +348,7 @@
let params = { let params = {
"rwwczt": "PUBLISHED", "rwwczt": "PUBLISHED",
"rwfbzt":"PUBLISHED", "rwfbzt":"PUBLISHED",
"params":{deptId:this.$store.state.user.loginDeptId},
"pageNum": this.countwhc+1, "pageNum": this.countwhc+1,
"pageSize":10, "pageSize":10,
} }
@@ -361,6 +364,7 @@
let params = { let params = {
"rwwczt": "UNPUBLISHED", "rwwczt": "UNPUBLISHED",
"rwfbzt":"PUBLISHED", "rwfbzt":"PUBLISHED",
"params":{deptId:this.$store.state.user.loginDeptId},
"pageNum": this.countqb+1, "pageNum": this.countqb+1,
"pageSize":10, "pageSize":10,
} }


+ 62
- 1
src/views/homesteadSurvey/list2.vue 查看文件

@@ -53,6 +53,7 @@
<van-search v-model="nhvalue" placeholder="请输入农户姓名或证件号" show-action @search="onSearchnh"> <van-search v-model="nhvalue" placeholder="请输入农户姓名或证件号" show-action @search="onSearchnh">
<template #action> <template #action>
<van-icon name="add" color="rgba(122,201,67,1)" size=".8rem" @click="onClicknh" style="vertical-align:middle;"/> <van-icon name="add" color="rgba(122,201,67,1)" size=".8rem" @click="onClicknh" style="vertical-align:middle;"/>
<van-icon name="add" color="rgba(122,201,67,1)" size=".8rem" @click="onClickWcnh" style="vertical-align:middle;"/>
</template> </template>
</van-search> </van-search>
</van-sticky> </van-sticky>
@@ -83,6 +84,27 @@
</template> </template>
</van-cell> </van-cell>
</van-list> </van-list>
<van-dialog v-model="outsideOpen" title="外村农户" show-cancel-button confirmButtonText="保存" cancelButtonText="关闭" @confirm="outsideSubmitForm" >
<van-row>
<van-col span="24">
<van-field v-model="outsideForm.nhdm" label="外村农户" placeholder="外村农户" input-align="right" required :rules="[{ required: true }]" @click="showWcnh = true"/>
<van-popup v-model="showWcnh" position="bottom">
<van-picker
show-toolbar
:columns="wcnhList"
@confirm="nhChange"
value-key="nhValue"
@cancel="showWcnh = false"
/>
</van-popup>
<br/>
<br/>
</van-col>

</van-row>


</van-dialog>
<!-- </van-pull-refresh>--> <!-- </van-pull-refresh>-->
</div> </div>
</template> </template>
@@ -90,7 +112,7 @@
<script> <script>
import {getQueryLand,getZjdzd,delZjdzdInfo,uploadFile,submitUploadImageList} from "@/api/homesteadSurvey/zjdzd"; import {getQueryLand,getZjdzd,delZjdzdInfo,uploadFile,submitUploadImageList} from "@/api/homesteadSurvey/zjdzd";
import {addNh, delNh, exportNh, getNh, listNh, updateNh,setNhInfo} from "@/api/homesteadSurvey/nh"; import {addNh, delNh, exportNh, getNh, listNh, updateNh,setNhInfo} from "@/api/homesteadSurvey/nh";
import {addNhhncy, delNhhncy, exportNhhncy, getNhhncy, listNhhncy, updateNhhncy} from "@/api/homesteadSurvey/nhhncy";
import {addNhhncy, delNhhncy,queryHomesteadnhhncyList, addOutsidenhhncy,exportNhhncy, getNhhncy, listNhhncy, updateNhhncy} from "@/api/homesteadSurvey/nhhncy";
import {listShyqr,setSyqrInfo} from "@/api/homesteadSurvey/shyqr"; import {listShyqr,setSyqrInfo} from "@/api/homesteadSurvey/shyqr";
import {listSuyqr,updateSuyqr,addSuyqr} from "@/api/homesteadSurvey/suyqr"; import {listSuyqr,updateSuyqr,addSuyqr} from "@/api/homesteadSurvey/suyqr";
import {listZrz,getZrzZjdDmList,getZrz} from "@/api/homesteadSurvey/zrz"; import {listZrz,getZrzZjdDmList,getZrz} from "@/api/homesteadSurvey/zrz";
@@ -149,6 +171,7 @@
showhzlx:false, showhzlx:false,
showhncylist:false, showhncylist:false,
showhncy:false, showhncy:false,
showWcnh: false,
activeBtn:2, activeBtn:2,
value:'', value:'',
// 宅基地搜索框 // 宅基地搜索框
@@ -243,6 +266,9 @@
searchBarOperVisbile: false, searchBarOperVisbile: false,
mapDataAll: [], mapDataAll: [],
showSearch:false, showSearch:false,
outsideOpen:false,
outsideForm:{nhdm:null},
wcnhList:[],
bottomHeight:'0px', bottomHeight:'0px',
//搜索---end //搜索---end
//测面 //测面
@@ -769,6 +795,30 @@
this.$cookies.remove("search"); this.$cookies.remove("search");
this.$router.push({name:'hncyDetails',query:{item:{}}}); this.$router.push({name:'hncyDetails',query:{item:{}}});
}, },
/** 新增外村农户按钮操作 */
onClickWcnh(){
this.getWcnhList().then((resp) => {
this.outsideOpen = true;
});
},
getWcnhList() {
return queryHomesteadnhhncyList({
yhzgx: '02',
searchValue: 'id, dept_id, book_id, dept_name, YSDM, NHDM, XM, ZJLX, ZJHM, XB, YHZGX, HKLX, LXDH, HYZK, SFBJTJJZZCY, CYBZ, CYBZSM, SJLY, occupation, jzqk,' +
'sfwbh, sfpkh, jzhcssfyzf, zqtczsfyzf, sfbccm, sfjbzgq, txdz, hkszd,' +
'create_by, create_time, update_by, update_time',
sfbccm:"0",
}).then((resp) => {
this.wcnhList = resp.rows;
this.wcnhList.map(function (item) {
item.nhValue = item.xm+" "+item.zjhm;
})
});
},
nhChange(val){
this.outsideForm = val;
this.showWcnh = false;
},
// 返回 // 返回
onClickLeft(){ onClickLeft(){
this.$cookies.set("search","") this.$cookies.set("search","")
@@ -4743,6 +4793,7 @@
return v.toString(16); return v.toString(16);
}); });
}, },

//宅基地点击地图核查 //宅基地点击地图核查
zjdHc(){ zjdHc(){
if(this.zjdHcDy != "" && this.zjdHcDy != "undefined"){ if(this.zjdHcDy != "" && this.zjdHcDy != "undefined"){
@@ -4865,6 +4916,16 @@
value.indexOf('zrzSx') == -1 ? this.zrzSx = false : this.zrzSx = true; value.indexOf('zrzSx') == -1 ? this.zrzSx = false : this.zrzSx = true;
value.indexOf('fsssSx') == -1 ? this.fsssSx = false : this.fsssSx = true; value.indexOf('fsssSx') == -1 ? this.fsssSx = false : this.fsssSx = true;
}, },
/** 外村农户提交按钮 */
outsideSubmitForm() {
addOutsidenhhncy(this.outsideForm).then(response => {
if(response.code != 200) throw response.msg;
this.$toast("新增成功");
this.outsideOpen = false;
this.getList();
this.outDiglogStatus = true;
}).catch(() => this.outDiglogStatus = true);
},
closeSearchBox(){ closeSearchBox(){
this.showSearch = false ; this.showSearch = false ;
var height = $(".searchBar_wrap").outerHeight(true) - $(".searchBar_wrap .van-search").outerHeight(true) var height = $(".searchBar_wrap").outerHeight(true) - $(".searchBar_wrap .van-search").outerHeight(true)


+ 5
- 0
src/views/homesteadSurvey/zrzAdd.vue 查看文件

@@ -243,6 +243,7 @@ export default {
let data = this.$route.query; let data = this.$route.query;
this.form = data; this.form = data;
this.zjdzdxx = JSON.parse(localStorage.getItem("zjdzdxxItem")); this.zjdzdxx = JSON.parse(localStorage.getItem("zjdzdxxItem"));
console.info(this.zjdzdxx);
this.permission = localStorage.getItem("executePermission"); this.permission = localStorage.getItem("executePermission");
if(this.form.shyqrdbzjhm != null){ if(this.form.shyqrdbzjhm != null){
this.getList(); this.getList();
@@ -269,6 +270,10 @@ export default {
submitzjd(){ submitzjd(){
this.$refs.form.validate().then(() => { this.$refs.form.validate().then(() => {
if(this.form.id == null){ if(this.form.id == null){
this.$set(this.form, 'theGeomJson', JSON.parse( this.form.theGeomJson));
if(this.form.theGeomJson.hasOwnProperty('coordinates')) // 从后台获取的
this.$set(this.form, 'theGeomJson',this.form.theGeomJson.coordinates);
this.$set(this.form, 'theGeomJson', JSON.stringify( this.form.theGeomJson));
addZrz(this.form).then(response => { addZrz(this.form).then(response => {
let _this =this let _this =this
this.$toast({ this.$toast({


+ 1
- 1
src/views/project/projectDetail.vue 查看文件

@@ -370,7 +370,7 @@ export default {
this.detail.projectNumber = this.selectDictLabel(res.data,response.data.projectNumber); this.detail.projectNumber = this.selectDictLabel(res.data,response.data.projectNumber);
}); });
this.getDicts("sub_object_type").then(res => { this.getDicts("sub_object_type").then(res => {
this.detail.projectType = this.selectDictLabel(res.data,response.data.projectType);
// this.detail.projectType = this.selectDictLabel(res.data,response.data.projectType);
}); });
this.getDicts("economic_type").then(res => { this.getDicts("economic_type").then(res => {
this.detail.economicType = this.selectDictLabel(res.data,response.data.economicType); this.detail.economicType = this.selectDictLabel(res.data,response.data.economicType);


+ 3
- 0
src/views/sunVillage_info/index_code_rights.vue 查看文件

@@ -241,6 +241,9 @@
&:nth-child(4n+1){ &:nth-child(4n+1){
margin-top: 15PX; margin-top: 15PX;
} }
&:nth-child(5n+1){
margin-top: 15PX;
}
&:nth-child(1){ &:nth-child(1){
margin-top: 0PX; margin-top: 0PX;
} }


+ 40
- 2
src/views/sunVillage_info/list_cbf.vue 查看文件

@@ -44,6 +44,10 @@
<img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35"> <img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35">
<p>预览</p> <p>预览</p>
</div> --> </div> -->
<div class="opera_btn" @click="openPopupGsjg(item.cbfbm)">
<img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="30">
<p>公示结果签名</p>
</div>
<div class="opera_btn"> <div class="opera_btn">
<img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35"> <img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35">
<p>预览</p> <p>预览</p>
@@ -73,7 +77,8 @@
</div> </div>
<img src="../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt=""> <img src="../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt="">
<div class="signature-footer"> <div class="signature-footer">
<van-button @click="handleGenerate" type="info" size="small">保存签字</van-button>
<van-button @click="handleGenerate" v-if="!showGsjgqz" type="info" size="small">保存签字</van-button>
<van-button @click="handleGenerateGsjg" v-if="showGsjgqz" type="info" size="small">保存签字</van-button>
<van-button @click="handleReset" class="clearBtn" type="info" plain size="small">清空画板</van-button> <van-button @click="handleReset" class="clearBtn" type="info" plain size="small">清空画板</van-button>
</div> </div>
</van-cell-group> </van-cell-group>
@@ -90,7 +95,7 @@
</template> </template>


<script> <script>
import { getCbf, getCbhtList, cbhtSecondSign, attachmentQuery, attachmentUpload, attachmentRemove } from "@/api/sunVillage_info/fixedAssets";
import { getCbf, getCbhtList, cbhtSecondSign,updateGsjgSign, attachmentQuery, attachmentUpload, attachmentRemove } from "@/api/sunVillage_info/fixedAssets";
import vueEsign from "vue-esign"; import vueEsign from "vue-esign";
import $ from "jquery"; import $ from "jquery";
import Cookies from "js-cookie"; import Cookies from "js-cookie";
@@ -107,6 +112,7 @@
showFile: false, showFile: false,
fileList: [], fileList: [],
listLength: '0', listLength: '0',
cbfbm:"",
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
@@ -171,11 +177,20 @@
}, },
openPopup(id, url) { openPopup(id, url) {
this.show = true; this.show = true;
this.showGsjgqz = false;
this.signaId = id; this.signaId = id;
this.$nextTick(() => { this.$nextTick(() => {
this.handleReset(); this.handleReset();
}); });
}, },
openPopupGsjg(cbfbm, url) {
this.show = true;
this.showGsjgqz = true;
this.cbfbm = cbfbm;
this.$nextTick(() => {
this.handleReset();
});
},
openPopupFile(id){ openPopupFile(id){
this.fileList = []; this.fileList = [];
this.signaId = id; this.signaId = id;
@@ -248,6 +263,29 @@
this.$toast.fail('请签名后再保存签字'); this.$toast.fail('请签名后再保存签字');
}); });
}, },
handleGenerateGsjg(){
this.$refs.esign
.generate() // 使用生成器调用把签字的图片转换成为base64图片格式
.then((res) => {
this.signature.resultImg = res;
let wj = this.dataURLtoBlob(res);
let param = new FormData() // 创建form对象
param.append('file', wj) // 通过append向form对象添加数据
param.append('cbfbm', this.cbfbm)
updateGsjgSign(param).then(response => {
this.$notify({type: 'success', message: '签字成功'});
this.show = false;
// location.reload();
this.applicationList = [];
this.getList();
});

})
.catch((err) => {
// 画布没有签字时会执行这里提示一下
this.$toast.fail('请签名后再保存签字');
});
},
dataURLtoBlob(dataurl, filename = 'file') { dataURLtoBlob(dataurl, filename = 'file') {
let arr = dataurl.split(',') let arr = dataurl.split(',')
let mime = arr[0].match(/:(.*?);/)[1] let mime = arr[0].match(/:(.*?);/)[1]


+ 385
- 0
src/views/sunVillage_info/list_cbfsq.vue 查看文件

@@ -0,0 +1,385 @@
<template>
<div class="home_wrapper">
<div class="header_main" >
承包方授权
<div class="return_btn" @click="onClickLeft"></div>
</div>
<div class="list_main">
<div class="titBox">
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_02.png" style="width:22PX;height:22PX;margin-right: 10px;"/>
<p class="tit">承包方授权</p>
</div>
<van-field readonly v-model="cbfTypeName" label="承包方类型" placeholder="承包方类型" input-align="right" :border="false" />
<van-field readonly v-model="form.cbfbm" label="承包方代码" placeholder="承包方代码" input-align="right" :border="false" />
<van-field readonly v-model="form.cbfmc" label="承包方名称" placeholder="承包方名称" input-align="right" :border="false" />
<van-field readonly v-model="zjlxName" label="承包方证件类型" placeholder="承包方证件类型" input-align="right" :border="false" />
<van-field readonly v-model="form.cbfzjhm" label="承包方证件号码" placeholder="承包方证件号码" input-align="right" :border="false" />
<van-field readonly v-model="form.lxdh" label="联系电话" placeholder="联系电话" input-align="right" :border="false" />
<van-field readonly v-model="form.cbfcysl" label="承包方成员数量" placeholder="承包方成员数量" input-align="right" :border="false" />
<van-field readonly v-model="form.cbfdcy" label="承包方调查员" placeholder="承包方调查员" input-align="right" :border="false" />
<van-field readonly v-model="form.cbfdcrq" label="承包方调查日期" placeholder="承包方调查日期" input-align="right" :border="false" />
<van-field readonly v-model="form.cbfdcjs" label="承包方调查记事" placeholder="承包方调查记事" input-align="right" :border="false" />
<van-cell title="承包方调查签字" style="color: #646566;">
<van-field style="padding: 0 0;" readonly input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.cbfdcqz" width="10%" alt="" v-if="form.cbfdcqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsjs" label="公示记事" placeholder="公示记事" input-align="right" :border="false" />
<van-field readonly v-model="form.gsjsr" label="公示记事人" placeholder="公示记事人" input-align="right" :border="false" />
<van-cell title="公示记事人签字" style="color: #646566;">
<van-field style="padding: 0 0;" readonly input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsjsrqz" width="10%" alt="" v-if="form.gsjsrqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsjsrq" label="公示记事日期" placeholder="公示记事日期" input-align="right" :border="false" />
<van-field readonly v-model="form.gsjgyj" label="公示结果意见" placeholder="公示结果意见" input-align="right" :border="false" />
<van-cell title="公示结果签字" style="color: #646566;">
<van-field style="padding: 0 0;" readonly input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsjgqz" width="10%" alt="" v-if="form.gsjgqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsjgqzrq" label="公示结果签字日期" placeholder="公示结果签字日期" input-align="right" :border="false" />
<van-field readonly v-model="form.gsshr" label="公示审核人" placeholder="公示审核人" input-align="right" :border="false" />
<van-field readonly v-model="form.gsshrq" label="公示审核日期" placeholder="公示审核日期" input-align="right" :border="false" />
<van-field readonly v-model="form.gsshyj" label="公示审核意见" placeholder="公示审核意见" input-align="right" :border="false" />
<van-cell title="公示审核签字" style="color: #646566;">
<van-field style="padding: 0 0;" readonly input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsjgqz" width="10%" alt="" v-if="form.gsjgqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.yzbm" label="邮政编码" placeholder=" 邮政编码" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfdcy" label="发包方调查员" placeholder="发包方调查员" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfdcrq" label="发包方调查日期" placeholder="发包方调查日期" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfdcjs" label="发包方调查记事" placeholder="发包方调查记事" input-align="right" :border="false" />
<van-cell title="发包方调查签字" style="color: #646566;">
<van-field style="padding: 0 0;" readonly input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.fbfdcqz" width="10%" alt="" v-if="form.fbfdcqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.shyj" label="审核意见" placeholder="审核意见" input-align="right" :border="false" />
<van-field readonly v-model="form.shrq" label="审核日期" placeholder="审核日期" input-align="right" :border="false" />
<van-cell title="审核人签字" style="color: #646566;">
<van-field style="padding: 0 0;" readonly input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.shrqz" width="10%" alt="" v-if="form.shrqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.hcgfsl " label="户持股份(份额)数量" placeholder="户持股份(份额)数量 " input-align="right" :border="false" />
<van-field readonly v-model="form.hcgfzjtqqtdbl " label="户持股份(份额)比例" placeholder="户持股份(份额)比例 " input-align="right" :border="false" />
<van-field readonly v-model="form.hcgfzjtqqtdmj " label="户持股份(份额)面积" placeholder="户持股份(份额)面积" input-align="right" :border="false" />
<van-field readonly v-model="surveyStatusName" label="确权调查状态" placeholder="确权调查状态" input-align="right" :border="false" />
<van-field readonly v-model="form.surveyRemark" label="确权调查备注" placeholder="确权调查备注" input-align="right" :border="false" />
<van-field readonly v-model="isDepositName" label="是否纳入托管" placeholder="是否纳入托管" input-align="right" :border="false" />
<van-field readonly v-model="form.tgmj" label="托管面积(亩)" placeholder="托管面积(亩)" input-align="right" :border="false" />
<div style="margin: 30px auto 0;width: 50%;">
<van-button round block type="primary" native-type="submit" >
授权
</van-button>
</div>
</div>
</div>
</template>

<script>
import { getCbfList} from "@/api/sunVillage_info/sysCbf";
import FieldSelect from "@/components/form/FieldSelect";
import Cookies from "js-cookie";
import $ from "jquery";
export default {
name: "certificateList",
components: {FieldSelect},
data() {
return {
form:{},
showForm2:false,
showesign:false,
sysFarmer:JSON.parse(Cookies.get('user')),
zjlxName:"",
cbfTypeName:"",
surveyStatusName:"",
isDepositName:"",
height:0,
options: {
cert_type: [],
},
//电子签名
signature: {
lineWidth: 6, // 画笔的线条粗细
lineColor: "#000000", // 画笔的颜色
bgColor: "", // 画布的背景颜色
resultImg: "", // 最终画布生成的base64图片
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
},
};
},
created() {
this.getSysFfb();
},
methods: {
InitOptions() {
for(let k in this.options)
{
this.getDicts(k).then((resp) => this.options[k] = resp.data);
}
},
getSysFfb(){
getCbfList({deptId:this.sysFarmer.deptId,cbfzjhm:this.sysFarmer.idcard}).then(response => {
let _this = this;
if(response.rows.length > 0){
this.form = response.rows[0];
this.getDicts("zjlx").then(response => {
response.data.forEach(function (item) {
if (item.dictValue === _this.form.cbfzjlx) {
_this.zjlxName = item.dictLabel;
}
})
});
this.getDicts("cbf_type").then(response => {
response.data.forEach(function (item) {
if (item.dictValue === _this.form.cbflx) {
_this.cbfTypeName = item.dictLabel;
}
})
});
this.getDicts("confirmed_survey_status").then(response => {
response.data.forEach(function (item) {
if (item.dictValue === _this.form.surveyStatus) {
_this.surveyStatusName = item.dictLabel;
}
})
});
this.getDicts("sys_yes_no").then(response => {
response.data.forEach(function (item) {
if (item.dictValue === _this.form.isDeposit) {
_this.isDepositName = item.dictLabel;
}
})
});
}

});
},
},
}
</script>

<style scoped lang="scss">
/deep/ .van-button--primary{
background: url("../../assets/images/sunVillage_info/btn_bg.png") no-repeat;
background-size: 100% 100%;
border: none;
}
.van-cell::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0.426667rem;
bottom: 0;
left: 0.426667rem;
border:none;
-webkit-transform: scaleY(.5);
transform: scaleY(.5);
}
.signature-footer {
transform: rotate(90deg);
width: auto;
position: absolute;
top: 50%;
left: 0px;

}
.home_wrapper{
background: #e9e9e9;
min-height: 100vh;
width: 100vw;
.header_main {
height: 116px;
background: url('../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;

.return_btn {
width: 24px;
height: 43.2px;
background: url('../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
}
.release_head{
height: 90px;
padding:0 23px;
display: flex;
align-items: center;
font-size: 26px;
color: #929292;
.people{
flex: 1;
display: flex;
align-items: center;
.icon{
width: 24px;
height: 21px;
background: url('../../assets/images/sunVillage_info/details_icon_1.png') no-repeat;
background-size: 100% 100%;
display: block;
margin-right: 8px;
}
}
.time{
flex: 1;
display: flex;
align-items: center;
justify-content:flex-end;
.icon{
width: 25px;
height: 25px;
background: url('../../assets/images/sunVillage_info/details_icon_2.png') no-repeat;
background-size: 100% 100%;
display: block;
margin-right: 8px;
}
}
}
.release_conetnt{
padding:0 22px;
font-size: 32px;
color: #252525;
line-height: 44px;
img{
max-width: 100%;
margin-bottom: 16px;
}
p{
margin-bottom: 16px;
}
}
.list_main{
padding:25px;
background: #ffffff;
width: 94%;
margin: 25px auto 0;
border-radius: 15PX;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
}
.subForm{
padding:25px;
background-image: linear-gradient(#2884ec,#68b2ee);
width: 94%;
margin: 50PX auto 0;
border-radius: 15PX;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
position: relative;
padding-top: 10vw;
img{
position: absolute;
left: 50%;
width: 15vw;
transform: translate(-50%,calc(-50% - 10vw));
border: 5PX solid #e9e9e9;
border-radius: 100%;
}
/deep/ .van-field__label{
/*padding-left: 10PX;*/
width: auto;
display: flex;
align-items: start;
color: #ffffff;
margin-right: 6vw;
}
/deep/ .van-cell{
background-color: transparent;
}
.textarea{
/deep/ .van-field__value{
background-color: #ffffff;
border-radius: 10PX;
}
/deep/ .van-field__control{
padding: 12PX;
color: #666666;
}
}
/deep/ .van-field__value{
background-color: transparent;
border-radius: 10PX;
}
/deep/ .van-field__control{
padding: 0PX;
color: #ffffff;
}
/deep/ .van-cell--required::before{
left: 60PX;
}
}
.subForm2{
padding:25px;
background:#ffffff;
width: 94%;
margin: 50PX auto 0;
border-radius: 15PX;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
position: relative;
padding-top: 10vw;
.topImg{
position: absolute;
left: 50%;
width: 15vw;
transform: translate(-50%,calc(-50% - 10vw));
border: 5PX solid #e9e9e9;
border-radius: 100%;
}
.bottomImg{
position: absolute;
left: 50%;
top: 50%;
width: 25vw;
transform: translate(-50%,-50%);
}
}
.titBox{
display: flex;
align-items: center;
}
.tit{
font-size: 36px;
font-weight: bold;
}
/deep/ .van-cell{
padding-left: 0!important;
padding-right: 0!important;
padding-bottom: 0!important;
}
/deep/ .van-field__label{
/*padding-left: 10PX;*/
width: auto;
display: flex;
align-items: center;
}
/deep/ .van-cell--required::before{
left: 85PX;
}
}
</style>

+ 51
- 22
src/views/sunVillage_info/list_chronicles.vue 查看文件

@@ -7,35 +7,37 @@
<div class="search_info"> <div class="search_info">
<div class="search_block"> <div class="search_block">
<i class="icon"></i> <i class="icon"></i>
<input type="text" class="ipt" v-model="value" placeholder="搜索" >
<input type="text" class="ipt" v-model="queryParams.cbfmc" placeholder="搜索" >
</div> </div>
<div class="total">查询</div>
<div class="total" @click="getCbfCount">查询</div>
</div> </div>
<div class="list_main"> <div class="list_main">
<van-list <van-list
v-model="loading"
v-model:loading="loading"
:finished="finished" :finished="finished"
finished-text="没有更多了" finished-text="没有更多了"
@load="onRefreshContractor"
:immediate-check="false"
> >
<van-swipe-cell v-for="item in 10" :key="item">
<div class="item">
<van-swipe-cell v-for="(item,index) in cbfList" :key="'cbfjs'+index">
<div class="item" style="height: 100px;" @click="$router.push({path:'/sunVillage_info/list_chronicles_single_process',query:{item:item,status:false}})">
<div class="info"> <div class="info">
<div class="title"> <div class="title">
<i class="icon_box"></i> <i class="icon_box"></i>
<p class="news_title">李佳佳</p>
<p class="news_title">{{item.cbfmc}}</p>
</div> </div>
<div class="time"> <div class="time">
<p><img src="../../assets/images/sunVillage_info/contractor_icon_04.png" width="14">444444444</p>
<p><img src="../../assets/images/sunVillage_info/contractor_icon_05.png" width="14">13人</p>
<p><img src="../../assets/images/sunVillage_info/contractor_icon_04.png" width="14">{{item.lxdh}}</p>
<p><img src="../../assets/images/sunVillage_info/contractor_icon_05.png" width="14">{{item.cbfcysl}}</p>
</div> </div>
</div> </div>
<div style="width: 30%;"> <div style="width: 30%;">
<img src="../../assets/images/sunVillage_info/contractor_icon_06.png" style="width: 100%" alt="">
<img :src="'/api'+item.gsjsrqz" width="100%" alt="" v-if="item.gsjsrqz" >
</div> </div>
</div> </div>
<template #right> <template #right>
<div class="operation"> <div class="operation">
<div class="opera_btn" @click="$router.push({path:'/sunVillage_info/list_chronicles_single_process'})">
<div class="opera_btn" @click="$router.push({path:'/sunVillage_info/list_chronicles_single_process',query:{item:item,status:true}})">
<img src="../../assets/images/sunVillage_info/contractor_icon_07.png" alt="" width="25"> <img src="../../assets/images/sunVillage_info/contractor_icon_07.png" alt="" width="25">
<p>记事签字</p> <p>记事签字</p>
</div> </div>
@@ -47,14 +49,7 @@
</div> </div>
</template> </template>
<script> <script>
import {
listResource,
commonAttach,
attachmentList,
systemAttachment,
delResource,
updateResource
} from "@/api/sunVillage_info/fixedAssets";
import { getList} from "@/api/sunVillage_info/sysCbf";
import request from '@/utils/request' import request from '@/utils/request'
import MapGisLine from "@/components/Map/MapGisLine"; import MapGisLine from "@/components/Map/MapGisLine";
export default { export default {
@@ -64,15 +59,49 @@
return { return {
loading: false, loading: false,
finished: false, finished: false,

value:'',
cbfList:[],
countcbf:0,
queryParams:{
pageNum: 1,
pageSize: 10,
cbfbm:null},
}; };
}, },
created() { created() {

this.getCbfCount();
}, },
methods: { methods: {

getCbfCount(){
getList(this.queryParams).then(res=>{
this.cbfList = res.rows;
if(this.cbfList.length >= res.total){
this.finished = true;
}else{
this.loading = false;
this.queryParams.pageNum += 1 ;
}
});
},
onRefreshContractor(){
if(this.loading){
let params = {
"cbfbm":this.queryParams.cbfbm,
"pageNum": this.countcbf+1,
"pageSize":10,
}
getList(params).then((response) => {
if(response.rows.length>0&&this.cbfList.length<response.total){
response.rows.map(res => {
this.cbfList.unshift(res)
})
this.loading = false;
this.countcbf++
}else{
this.finished = true;
}
});
}
},
}, },
} }
</script> </script>


+ 178
- 18
src/views/sunVillage_info/list_chronicles_process.vue 查看文件

@@ -8,24 +8,24 @@
<div class="information_main"> <div class="information_main">
<div class="titBox"> <div class="titBox">
<img src="../../assets/images/sunVillage_info/contractor_icon_01.png" style="width:22PX;height:22PX;margin-right: 10px;"/> <img src="../../assets/images/sunVillage_info/contractor_icon_01.png" style="width:22PX;height:22PX;margin-right: 10px;"/>
<p class="tit">娃娃村</p>
<p class="tit">{{this.$store.state.user.deptName}}</p>
</div> </div>


<div class="information_content"> <div class="information_content">
<div class="information_block"> <div class="information_block">
<p class="block_num">共有承包方<span>800</span>户</p>
<p class="block_num">共有承包方<span>{{cbfCount}}</span>户</p>
</div> </div>
<div class="information_block"> <div class="information_block">
<p class="block_num">共有承包方<span>800</span>户</p>
<p class="block_num">承包地<span>{{cbfdkCount}}</span>亩</p>
</div> </div>
</div> </div>


</div> </div>


<div class="subForm">
<div class="subForm" v-if="!showJsxx">
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_01.png" alt=""> <img src="../../assets/images/sunVillage_info/list_employer_process_icon_01.png" alt="">
<van-field <van-field
v-model="value"
v-model="form.gsjs"
rows="3" rows="3"
autosize autosize
required required
@@ -35,46 +35,185 @@
/> />
</div> </div>


<div class="subForm2">
<div class="subForm2" v-if="showJsxx">
<img class="topImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_03.png" alt=""> <img class="topImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_03.png" alt="">
<van-field readonly v-model="value" label="审核意见" placeholder="审核意见" input-align="right" :border="false" />
<van-field readonly v-model="value" label="审核人" placeholder="审核人" input-align="right" :border="false" />
<van-field readonly v-model="value" label="审核日期" placeholder="审核日期" input-align="right" :border="false" />
<van-field readonly v-model="form.gsjs" label="记事内容" placeholder="记事内容" input-align="right" :border="false" />
<van-cell title="记事人" style="border: none;color: #646566;" >
<van-field readonly style="padding: 0 0;height: 30px;" label="记事人" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsjsrqz" width="10%" alt="" v-if="form.gsjsrqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsjsrq" label="记事日期" placeholder="审核日期" input-align="right" :border="false" />


<img class="bottomImg" src="../../assets/images/sunVillage_info/contractor_icon_09.png" alt=""> <img class="bottomImg" src="../../assets/images/sunVillage_info/contractor_icon_09.png" alt="">
</div> </div>


<div style="margin: 30px auto 0;width: 50%;">
<van-button round block type="primary" native-type="submit">
<div style="margin: 30px auto 0;width: 50%;" v-if="!showJsxx">
<van-button round block type="primary" native-type="submit" @click="onSign()">
批量记事签字 批量记事签字
</van-button> </van-button>
</div> </div>


<div style="margin: 30px auto 0;width: 50%;">
<div style="margin: 30px auto 0;width: 50%;" v-if="showJsxx">
<van-button round block type="primary" native-type="submit" :to="{name:'sunVillageInfoListChronicles'}"> <van-button round block type="primary" native-type="submit" :to="{name:'sunVillageInfoListChronicles'}">
单独记事签字 单独记事签字
</van-button> </van-button>
</div> </div>

<van-popup v-model="showesign" closeable position="right" :style="{ height: '100%' }"
close-icon="close">
<van-row style="margin:0 10%">
<p class="title" style="margin:20px 0;position:relative;padding-left:20px;font-size:0.5rem">电子签名</p>
</van-row>
<div class="signature-box" @mousedown="canvasTTdown" @touchstart="canvasTTdown">
<vue-esign
ref="esign"
class="mySign"
:width="500"
:height="height"
:isCrop="signature.isCrop"
:lineWidth="signature.lineWidth"
:lineColor="signature.lineColor"
:bgColor.sync="signature.bgColor"
v-if="!signature.resultImg"
/>
</div>
<img src="../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" v-if="!signature.resultImg"
style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt="">
<img :src="signature.resultImg" alt="" width="100%" v-if="signature.resultImg"/>
<div class="signature-footer" v-if="!signature.resultImg">
<van-button type="primary" round size="small" @click="handleReset">清空画板</van-button>
<van-button type="primary" round size="small" @click="handleGenerate">保存提交</van-button>
</van-row>
</div>
</van-popup>
</div> </div>
</template> </template>


<script> <script>
import { financePublicDetail , openAdd } from "@/api/sunVillage_info/fixedAssets";
import Cookies from "js-cookie";
import request from '@/utils/request'
import { getList,getCbfdcList,getCbdkms,updateSysCfb,updateBatchSign} from "@/api/sunVillage_info/sysCbf";
import $ from "jquery";
export default { export default {
name: "certificateList", name: "certificateList",
data() { data() {
return { return {
value:''
value:'',
cbfCount:0,
cbfdkCount:0,
showJsxx:false,
showesign:false,
height:0,
form:{},
//电子签名
signature: {
lineWidth: 6, // 画笔的线条粗细
lineColor: "#000000", // 画笔的颜色
bgColor: "", // 画布的背景颜色
resultImg: "", // 最终画布生成的base64图片
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
},
}; };
}, },
created() { created() {

this.getCbfdc();
this.getCbfCount();
this.getCbfdkCount();
this.height = window.screen.height * 1.28 - 20;
}, },
methods: { methods: {
getCbfCount(){
getList({}).then(res=>{
this.cbfCount = res.total;
});
},
getCbfdc(){
getCbfdcList({}).then(res=>{
if(res.total > 0){
this.form = res.rows[0];
if(this.form.gsjsrqz != null){
this.showJsxx = true;
}
}
});
},
getCbfdkCount(){
getCbdkms({}).then(res=>{
this.cbfdkCount = res.data;
});
},
canvasTTdown() {
$('#canvasTT').css('display', 'none');
},
onSign(){
this.showesign = true;
},
// 清空画板
handleReset() {
this.resultImg = null
if(this.$refs.esign){
this.$refs.esign.reset();
}
$('#canvasTT').css('display', 'block')
},
// 生成签字图
handleGenerate() {
this.$refs.esign
.generate() // 使用生成器调用把签字的图片转换成为base64图片格式
.then((res) => {
this.signature.resultImg = res;
console.info(res)
let wj = this.dataURLtoBlob(res);
let param = new FormData();
param.append('file', wj) // 通过append向form对象添加数据
param.append('date', this.format(new Date(), 'yyyy-MM-dd')) // 通过append向form对象添加数据
this.showesign = false;
this.$toast.loading({
message: "数据处理中",
forbidClick: true,
duration: 40000,
});
updateBatchSign(param,this.form.gsjs).then((res) => {
this.$toast.clear();
this.getCbfdc();
this.$notify({type: 'success', message: '签字成功'});

})
// this.mainImgArr.push(r1.fileName)
// let param = new FormData() // 创建form对象
// param.append('file', wj) // 通过append向form对象添加数据
// param.append('date', this.format(new Date(), 'yyyy-MM-dd')) // 通过append向form对象添加数据
// zjddcSign(param, this.zjdzdxx.zjddm).then(response => {
// this.$notify({type: 'success', message: '签字成功'});
// this.showesign = false;
// getZjdzd(this.zjdzdxx.id).then((response) => {
// localStorage.setItem("zjdzdxxItem",JSON.stringify(response.data))
// location.reload();
// });



// });

})
.catch((err) => {
// 画布没有签字时会执行这里提示一下
this.$toast.fail('请签名后再保存签字');
});
},
dataURLtoBlob (dataurl, filename = 'file') {
let arr = dataurl.split(',')
let mime = arr[0].match(/:(.*?);/)[1]
let suffix = mime.split('/')[1]
let bstr = atob(arr[1])
let n = bstr.length
let u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime
})
},
}, },
} }
</script> </script>
@@ -85,6 +224,27 @@
background-size: 100% 100%; background-size: 100% 100%;
border: none; border: none;
} }
.signature-footer {
transform: rotate(90deg);
width: auto;
position: absolute;
top: 50%;
left: 0px;

}

.van-cell::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0.426667rem;
bottom: 0;
left: 0.426667rem;
border:none;
-webkit-transform: scaleY(.5);
transform: scaleY(.5);
}
.home_wrapper{ .home_wrapper{
background: #e9e9e9; background: #e9e9e9;
min-height: 100vh; min-height: 100vh;


+ 214
- 28
src/views/sunVillage_info/list_chronicles_single_process.vue 查看文件

@@ -9,24 +9,48 @@
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_02.png" style="width:22PX;height:22PX;margin-right: 10px;"/> <img src="../../assets/images/sunVillage_info/list_employer_process_icon_02.png" style="width:22PX;height:22PX;margin-right: 10px;"/>
<p class="tit">信息核对</p> <p class="tit">信息核对</p>
</div> </div>
<van-field readonly v-model="value" label="承包方名称" placeholder="承包方名称" input-align="right" :border="false" />
<van-field readonly v-model="value" label="承包方类型" placeholder="承包方类型" input-align="right" :border="false" />
<van-field readonly v-model="value" label="证件号码" placeholder="证件号码" input-align="right" :border="false" />
<van-field readonly v-model="value" label="电话" placeholder="电话" input-align="right" :border="false" />
<van-field readonly v-model="value" label="调查记事" placeholder="调查记事" input-align="right" :border="false" />
<van-field readonly v-model="value" label="公示记事" placeholder="公示记事" input-align="right" :border="false" />
<van-field readonly v-model="value" label="公示记事人" placeholder="公示记事人" input-align="right" :border="false" />
<van-field readonly v-model="value" label="公示记事时间" placeholder="公示记事时间" input-align="right" :border="false" />
<van-field readonly v-model="value" label="承包方公示结果意见" placeholder="承包方公示结果意见" input-align="right" :border="false" />
<van-field readonly v-model="value" label="承包方公示结果签字" placeholder="承包方公示结果签字" input-align="right" :border="false" />
<van-field readonly v-model="value" label="承包方公示日期" placeholder="承包方公示日期" input-align="right" :border="false" />
<van-field readonly v-model="form.cbfmc" label="承包方名称" placeholder="承包方名称" input-align="right" :border="false" />
<field-select
v-model="form.cbfzjlx"
label="承包方类型"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择证件类型"
:rules="[{ required: true }]"
readonly
remote-url="/open/zdzh/list/cert_type"
:on-remote-response="'data'"
/>
<van-field readonly v-model="form.cbfzjhm" label="证件号码" placeholder="证件号码" input-align="right" :border="false" />
<van-field readonly v-model="form.lxdh" label="电话" placeholder="电话" input-align="right" :border="false" />
<van-field readonly v-model="form.cbfdcjs" label="调查记事" placeholder="调查记事" input-align="right" :border="false" />
<van-field readonly v-model="form.gsjs" label="公示记事" placeholder="公示记事" input-align="right" :border="false" />
<!-- <van-field readonly v-model="form.gsjsrqz" label="公示记事人" placeholder="公示记事人" input-align="right" :border="false" />-->
<van-cell title="公示记事人签字" style="color: #646566;">
<van-field style="padding: 0 0;height: 30px;" readonly label="公示记事人签字" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsjsrqz" width="10%" alt="" v-if="form.gsjsrqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsjsrq" label="公示记事时间" placeholder="公示记事时间" input-align="right" :border="false" />
<van-field readonly v-model="form.gsjgyj" label="承包方公示结果意见" placeholder="承包方公示结果意见" input-align="right" :border="false" />

<van-cell title="承包方公示结果签字" style="color: #646566;" >
<van-field style="padding: 0 0;height: 30px;width: 100%;background-color: #ffffff; border-radius: 5PX;" readonly label="承包方公示结果签字" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsjgqz" style="top:55px;border:none;" width="10%" alt="" v-if="form.gsjgqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsjgqzrq" label="承包方公示日期" placeholder="承包方公示日期" input-align="right" :border="false" />


</div> </div>


<div class="subForm">
<div class="subForm" v-if="!showForm2">
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_01.png" alt=""> <img src="../../assets/images/sunVillage_info/list_employer_process_icon_01.png" alt="">
<van-field <van-field
v-model="value"
v-model="form.gsjs"
rows="3" rows="3"
autosize autosize
required required
@@ -35,44 +59,186 @@
:border="false" :border="false"
class="textarea" class="textarea"
/> />
<van-field readonly value="123" label="记事人" placeholder="记事人" input-align="right" :border="false" />
<van-field readonly value="123" label="记事时间" placeholder="记事时间" input-align="right" :border="false" />
<van-cell title="记事人" style="color: #ffffff;" >
<van-field style="padding: 0 0;height: 30px;width: 100%;background-color: #ffffff; border-radius: 5PX;" readonly label="记事人" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsjsrqz" style="top:55px;border:none;width: 40%;" alt="" v-if="form.gsjsrqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsjsrq" label="记事时间" placeholder="记事时间" input-align="right" :border="false" />


</div> </div>


<div class="subForm2">
<div class="subForm2" v-if="showForm2">
<img class="topImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_03.png" alt=""> <img class="topImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_03.png" alt="">
<van-field readonly v-model="value" label="记事内容" placeholder="记事内容" input-align="right" :border="false" />
<van-field readonly v-model="value" label="记事人" placeholder="记事人" input-align="right" :border="false" />
<van-field readonly v-model="value" label="记事日期" placeholder="记事日期" input-align="right" :border="false" />
<van-field readonly v-model="form.gsjs" label="记事内容" placeholder="记事内容" input-align="right" :border="false" />
<van-cell title="记事人" style="color: #646566;">
<van-field style="padding: 0 0;height: 30px;" readonly label="记事人" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsjsrqz" style="width: 10%;" alt="" v-if="form.gsjsrqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsjsrq" label="记事日期" placeholder="记事日期" input-align="right" :border="false" />


<img class="bottomImg" src="../../assets/images/sunVillage_info/contractor_icon_09.png" alt=""> <img class="bottomImg" src="../../assets/images/sunVillage_info/contractor_icon_09.png" alt="">
</div> </div>
<div style="margin: 30px auto 0;width: 50%;">
<van-button round block type="primary" native-type="submit">
<div style="margin: 30px auto 0;width: 50%;" v-if="!showForm2">
<van-button round block type="primary" native-type="submit" @click="onSign()" >
审核签字 审核签字
</van-button> </van-button>
</div> </div>

<van-popup v-model="showesign" closeable position="right" :style="{ height: '100%' }"
close-icon="close">
<van-row style="margin:0 10%">
<p class="title" style="margin:20px 0;position:relative;padding-left:20px;font-size:0.5rem">电子签名</p>
</van-row>
<div class="signature-box" @mousedown="canvasTTdown" @touchstart="canvasTTdown">
<vue-esign
ref="esign"
class="mySign"
:width="500"
:height="height"
:isCrop="signature.isCrop"
:lineWidth="signature.lineWidth"
:lineColor="signature.lineColor"
:bgColor.sync="signature.bgColor"
v-if="!signature.resultImg"
/>
</div>
<img src="../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" v-if="!signature.resultImg"
style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt="">
<img :src="signature.resultImg" alt="" width="100%" v-if="signature.resultImg"/>
<div class="signature-footer" v-if="!signature.resultImg">
<van-button type="primary" round size="small" @click="handleReset">清空画板</van-button>
<van-button type="primary" round size="small" @click="handleGenerate">保存提交</van-button>
</van-row>
</div>
</van-popup>
</div> </div>
</template> </template>


<script> <script>
import { financePublicDetail , openAdd } from "@/api/sunVillage_info/fixedAssets";
import Cookies from "js-cookie";
import request from '@/utils/request'
import { updateSign } from "@/api/sunVillage_info/sysCbf";
import FieldSelect from "@/components/form/FieldSelect";
import $ from "jquery";
export default { export default {
name: "certificateList", name: "certificateList",
components: {FieldSelect},
data() { data() {
return { return {
value:''
form:{},
showForm2:false,
showesign:false,
height:0,
options: {
cert_type: [],
},
//电子签名
signature: {
lineWidth: 6, // 画笔的线条粗细
lineColor: "#000000", // 画笔的颜色
bgColor: "", // 画布的背景颜色
resultImg: "", // 最终画布生成的base64图片
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
},
}; };
}, },
created() { created() {

this.form = this.$route.query.item;
this.InitOptions();
this.height = window.screen.height * 1.28 - 20;
if(this.$route.query.status === "true"){
this.showForm2 =false;
}else{
this.showForm2 =true;
}
}, },
methods: { methods: {
InitOptions() {
for(let k in this.options)
{
this.getDicts(k).then((resp) => this.options[k] = resp.data);
}
},
canvasTTdown() {
$('#canvasTT').css('display', 'none');
},
onSign(){
this.showesign = true;
},
// 清空画板
handleReset() {
this.resultImg = null
if(this.$refs.esign){
this.$refs.esign.reset();
}
$('#canvasTT').css('display', 'block')
},
// 生成签字图
handleGenerate() {
console.info( this.$refs.esign
.generate() );
this.$refs.esign
.generate() // 使用生成器调用把签字的图片转换成为base64图片格式
.then((res) => {
this.signature.resultImg = res;
console.info(res)
let wj = this.dataURLtoBlob(res);
let param = new FormData();
param.append('file', wj) // 通过append向form对象添加数据
param.append('id', this.form.id)
param.append('gsjs', this.form.gsjs)
this.showesign = false;
this.$toast.loading({
message: "数据处理中",
forbidClick: true,
duration: 40000,
});
updateSign(param).then((r1) => {
this.$toast.clear();
// this.tEnforceSamplingGoodsList[index].attachement.push(r1.fileName);
this.$notify({type: 'success', message: '签字成功'});
this.showForm2 = true;
this.form = r1.data;
this.$router.push({name:'sunVillageInfoListChronicles'})
// this.mainImgArr.push(r1.fileName)
})
// let param = new FormData() // 创建form对象
// param.append('file', wj) // 通过append向form对象添加数据
// param.append('date', this.format(new Date(), 'yyyy-MM-dd')) // 通过append向form对象添加数据
// zjddcSign(param, this.zjdzdxx.zjddm).then(response => {
// this.$notify({type: 'success', message: '签字成功'});
// this.showesign = false;
// getZjdzd(this.zjdzdxx.id).then((response) => {
// localStorage.setItem("zjdzdxxItem",JSON.stringify(response.data))
// location.reload();
// });



// });

})
.catch((err) => {
// 画布没有签字时会执行这里提示一下
this.$toast.fail('请签名后再保存签字');
});
},
dataURLtoBlob (dataurl, filename = 'file') {
let arr = dataurl.split(',')
let mime = arr[0].match(/:(.*?);/)[1]
let suffix = mime.split('/')[1]
let bstr = atob(arr[1])
let n = bstr.length
let u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime
})
},
}, },
} }
</script> </script>
@@ -83,7 +249,27 @@
background-size: 100% 100%; background-size: 100% 100%;
border: none; border: none;
} }
.home_wrapper{
.van-cell::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0.426667rem;
bottom: 0;
left: 0.426667rem;
border:none;
-webkit-transform: scaleY(.5);
transform: scaleY(.5);
}
.signature-footer {
transform: rotate(90deg);
width: auto;
position: absolute;
top: 50%;
left: 0px;

}
.home_wrapper{
background: #e9e9e9; background: #e9e9e9;
min-height: 100vh; min-height: 100vh;
width: 100vw; width: 100vw;


+ 51
- 21
src/views/sunVillage_info/list_contractor.vue 查看文件

@@ -7,35 +7,36 @@
<div class="search_info"> <div class="search_info">
<div class="search_block"> <div class="search_block">
<i class="icon"></i> <i class="icon"></i>
<input type="text" class="ipt" v-model="value" placeholder="搜索" >
<input type="text" class="ipt" v-model="queryParams.cbfmc" placeholder="搜索" >
</div> </div>
<div class="total">查询</div>
<div class="total" @click="getCbfCount">查询</div>
</div> </div>
<div class="list_main"> <div class="list_main">
<van-list <van-list
v-model="loading"
v-model:loading="loading"
:finished="finished" :finished="finished"
finished-text="没有更多了" finished-text="没有更多了"
@load="onRefreshContractor"
> >
<van-swipe-cell v-for="item in 10" :key="item">
<div class="item">
<van-swipe-cell v-for="(item,index) in cbfList" :key="'cbf'+index">
<div class="item" @click="$router.push({path:'/sunVillage_info/list_contractor_single_process',query:{item:item,status:false}})">
<div class="info"> <div class="info">
<div class="title"> <div class="title">
<i class="icon_box"></i> <i class="icon_box"></i>
<p class="news_title">李佳佳</p>
<p class="news_title">{{item.cbfmc}}</p>
</div> </div>
<div class="time"> <div class="time">
<p><img src="../../assets/images/sunVillage_info/contractor_icon_04.png" width="14">444444444</p>
<p><img src="../../assets/images/sunVillage_info/contractor_icon_05.png" width="14">13人</p>
<p><img src="../../assets/images/sunVillage_info/contractor_icon_04.png" width="14">{{item.lxdh}}</p>
<p><img src="../../assets/images/sunVillage_info/contractor_icon_05.png" width="14">{{item.cbfcysl}}</p>
</div> </div>
</div> </div>
<div style="width: 30%;"> <div style="width: 30%;">
<img src="../../assets/images/sunVillage_info/contractor_icon_06.png" style="width: 100%" alt="">
<img :src="'/api'+item.gsshqz" width="100%" alt="" v-if="item.gsshqz" >
</div> </div>
</div> </div>
<template #right> <template #right>
<div class="operation"> <div class="operation">
<div class="opera_btn" @click="$router.push({path:'/sunVillage_info/list_contractor_single_process'})">
<div class="opera_btn" @click="$router.push({path:'/sunVillage_info/list_contractor_single_process',query:{item:item,status:true}})">
<img src="../../assets/images/sunVillage_info/contractor_icon_07.png" alt="" width="25"> <img src="../../assets/images/sunVillage_info/contractor_icon_07.png" alt="" width="25">
<p>审核签字</p> <p>审核签字</p>
</div> </div>
@@ -49,14 +50,7 @@
</div> </div>
</template> </template>
<script> <script>
import {
listResource,
commonAttach,
attachmentList,
systemAttachment,
delResource,
updateResource
} from "@/api/sunVillage_info/fixedAssets";
import { getList} from "@/api/sunVillage_info/sysCbf";
import request from '@/utils/request' import request from '@/utils/request'
import MapGisLine from "@/components/Map/MapGisLine"; import MapGisLine from "@/components/Map/MapGisLine";
export default { export default {
@@ -66,15 +60,51 @@
return { return {
loading: false, loading: false,
finished: false, finished: false,

cbfList:[],
countcbf:0,
queryParams:{
pageNum: 1,
pageSize: 10,
cbfbm:null},
value:'', value:'',
}; };
}, },
created() { created() {

this.getCbfCount();
}, },
methods: { methods: {

getCbfCount(){
getList(this.queryParams).then(res=>{
this.cbfList = res.rows;
if(this.cbfList.length >= res.total){
this.finished = true;
return;
}else{
this.loading = false;
this.queryParams.pageNum += 1 ;
}
});
},
onRefreshContractor(){
if(this.loading){
let params = {
"cbfbm":this.queryParams.cbfbm,
"pageNum": this.countcbf+1,
"pageSize":10,
}
getList(params).then((response) => {
if(response.rows.length>0&&this.cbfList.length<response.total){
response.rows.map(res => {
this.cbfList.unshift(res)
})
this.loading = false;
this.countcbf++
}else{
this.finished = true;
}
});
}
},
}, },
} }
</script> </script>


+ 193
- 24
src/views/sunVillage_info/list_contractor_process.vue 查看文件

@@ -8,21 +8,21 @@
<div class="information_main"> <div class="information_main">
<div class="titBox"> <div class="titBox">
<img src="../../assets/images/sunVillage_info/contractor_icon_01.png" style="width:22PX;height:22PX;margin-right: 10px;"/> <img src="../../assets/images/sunVillage_info/contractor_icon_01.png" style="width:22PX;height:22PX;margin-right: 10px;"/>
<p class="tit">娃娃村</p>
<p class="tit">{{this.$store.state.user.deptName}}</p>
</div> </div>


<div class="information_content"> <div class="information_content">
<div class="information_block"> <div class="information_block">
<p class="block_num">800<span>户</span></p>
<p class="block_num">{{cbfCount}}<span>户</span></p>
<p class="block_name">承包方</p> <p class="block_name">承包方</p>
</div> </div>
<div class="information_block"> <div class="information_block">
<p class="block_num">800<span>户</span></p>
<p class="block_name">承包</p>
<p class="block_num">{{cbfdkCount}}<span>亩</span></p>
<p class="block_name">承包</p>
</div> </div>
<div class="information_block"> <div class="information_block">
<p class="block_num">800<span>户</span></p>
<p class="block_name">承包方</p>
<p class="block_num">{{cbfGsqzCount}}<span>户</span></p>
<p class="block_name">已公示签字确认</p>
</div> </div>
</div> </div>


@@ -33,15 +33,21 @@
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_02.png" style="width:22PX;height:22PX;margin-right: 10px;"/> <img src="../../assets/images/sunVillage_info/list_employer_process_icon_02.png" style="width:22PX;height:22PX;margin-right: 10px;"/>
<p class="tit">信息核对</p> <p class="tit">信息核对</p>
</div> </div>
<van-field readonly v-model="value" label="公示记事" placeholder="公示记事" input-align="right" :border="false" />
<van-field readonly v-model="value" label="公示记事人" placeholder="公示记事人" input-align="right" :border="false" />
<van-field readonly v-model="value" label="公示记事日期" placeholder="公示记事日期" input-align="right" :border="false" />
<van-field readonly v-model="form.gsjs" label="记事内容" placeholder="记事内容" input-align="right" :border="false" />
<van-cell title="记事人" style="border: none;color: #646566;" >
<van-field readonly style="padding: 0 0;height: 30px;" label="记事人" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsjsrqz" width="10%" alt="" v-if="form.gsjsrqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsjsrq" label="记事日期" placeholder="审核日期" input-align="right" :border="false" />
</div> </div>


<div class="subForm">
<div class="subForm" v-if="!showForm2">
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_01.png" alt=""> <img src="../../assets/images/sunVillage_info/list_employer_process_icon_01.png" alt="">
<van-field <van-field
v-model="value"
v-model="form.gsshyj"
rows="3" rows="3"
autosize autosize
required required
@@ -51,46 +57,189 @@
/> />
</div> </div>


<div class="subForm2">
<div class="subForm2" v-if="showForm2">
<img class="topImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_03.png" alt=""> <img class="topImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_03.png" alt="">
<van-field readonly v-model="value" label="审核意见" placeholder="审核意见" input-align="right" :border="false" />
<van-field readonly v-model="value" label="审核人" placeholder="审核人" input-align="right" :border="false" />
<van-field readonly v-model="value" label="审核日期" placeholder="审核日期" input-align="right" :border="false" />
<van-field readonly v-model="form.gsshyj" label="审核意见" placeholder="审核意见" input-align="right" :border="false" />
<van-cell title="审核人" style="border: none;color: #646566;" >
<van-field readonly style="padding: 0 0;height: 30px;" label="审核人" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsshqz" style="width: 10%;" alt="" v-if="form.gsshqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsshrq" label="审核日期" placeholder="审核日期" input-align="right" :border="false" />


<img class="bottomImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_04.png" alt=""> <img class="bottomImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_04.png" alt="">
</div> </div>


<div style="margin: 30px auto 0;width: 50%;">
<van-button round block type="primary" native-type="submit">
<div style="margin: 30px auto 0;width: 50%;" v-if="!showForm2">
<van-button round block type="primary" native-type="submit" @click="onSign()">
批量审核签字 批量审核签字
</van-button> </van-button>
</div> </div>


<div style="margin: 30px auto 0;width: 50%;">
<div style="margin: 30px auto 0;width: 50%;" v-if="showForm2">
<van-button round block type="primary" native-type="submit" :to="{name:'sunVillageInfoListContractor'}"> <van-button round block type="primary" native-type="submit" :to="{name:'sunVillageInfoListContractor'}">
单独审核签字 单独审核签字
</van-button> </van-button>
</div> </div>

<van-popup v-model="showesign" closeable position="right" :style="{ height: '100%' }"
close-icon="close">
<van-row style="margin:0 10%">
<p class="title" style="margin:20px 0;position:relative;padding-left:20px;font-size:0.5rem">电子签名</p>
</van-row>
<div class="signature-box" @mousedown="canvasTTdown" @touchstart="canvasTTdown">
<vue-esign
ref="esign"
class="mySign"
:width="500"
:height="height"
:isCrop="signature.isCrop"
:lineWidth="signature.lineWidth"
:lineColor="signature.lineColor"
:bgColor.sync="signature.bgColor"
v-if="!signature.resultImg"
/>
</div>
<img src="../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" v-if="!signature.resultImg"
style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt="">
<img :src="signature.resultImg" alt="" width="100%" v-if="signature.resultImg"/>
<div class="signature-footer" v-if="!signature.resultImg">
<van-button type="primary" round size="small" @click="handleReset">清空画板</van-button>
<van-button type="primary" round size="small" @click="handleGenerate">保存提交</van-button>
</van-row>
</div>
</van-popup>
</div> </div>
</template> </template>


<script> <script>
import { financePublicDetail , openAdd } from "@/api/sunVillage_info/fixedAssets";
import Cookies from "js-cookie";
import request from '@/utils/request'
import { getList,getCbdkms,getCbfdcList,updateSysCfb,examineBatchSign} from "@/api/sunVillage_info/sysCbf";
import $ from "jquery";
export default { export default {
name: "certificateList", name: "certificateList",
data() { data() {
return { return {
value:''
height:0,
cbfCount:0,
cbfdkCount:0,
cbfGsqzCount:0,
showForm2:false,
showesign:false,
form:{},
//电子签名
signature: {
lineWidth: 6, // 画笔的线条粗细
lineColor: "#000000", // 画笔的颜色
bgColor: "", // 画布的背景颜色
resultImg: "", // 最终画布生成的base64图片
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
},
}; };
}, },
created() { created() {

this.getCbfdc();
this.getCbfCount();
this.getCbfdkCount();
this.getCbfGsqzCount();
this.height = window.screen.height * 1.28 - 20;
}, },
methods: { methods: {
getCbfCount(){
getList({}).then(res=>{
this.cbfCount = res.total;
});
},
getCbfdc(){
getCbfdcList({}).then(res=>{
if(res.total > 0){
this.form = res.rows[0];
if(this.form.gsshqz != null){
this.showForm2 = true;
}
}
});
},
getCbfGsqzCount(){
getList({params:{gsqz:true}}).then(res=>{
this.cbfGsqzCount = res.total;
});
},
getCbfdkCount(){
getCbdkms({}).then(res=>{
this.cbfdkCount = res.data;
});
},
canvasTTdown() {
$('#canvasTT').css('display', 'none');
},
onSign(){
this.showesign = true;
},
// 清空画板
handleReset() {
this.resultImg = null
if(this.$refs.esign){
this.$refs.esign.reset();
}
$('#canvasTT').css('display', 'block')
},
// 生成签字图
handleGenerate() {
this.$refs.esign
.generate() // 使用生成器调用把签字的图片转换成为base64图片格式
.then((res) => {
this.signature.resultImg = res;
let wj = this.dataURLtoBlob(res);
let param = new FormData();
param.append('file', wj) // 通过append向form对象添加数据
this.showesign = false;
this.$toast.loading({
message: "数据处理中",
forbidClick: true,
duration: 40000,
});
examineBatchSign(param,this.form.gsshyj).then((res) => {
this.$toast.clear();
this.getCbfdc();
this.$notify({type: 'success', message: '签字成功'});


})
// this.mainImgArr.push(r1.fileName)
// let param = new FormData() // 创建form对象
// param.append('file', wj) // 通过append向form对象添加数据
// param.append('date', this.format(new Date(), 'yyyy-MM-dd')) // 通过append向form对象添加数据
// zjddcSign(param, this.zjdzdxx.zjddm).then(response => {
// this.$notify({type: 'success', message: '签字成功'});
// this.showesign = false;
// getZjdzd(this.zjdzdxx.id).then((response) => {
// localStorage.setItem("zjdzdxxItem",JSON.stringify(response.data))
// location.reload();
// });


// });

})
.catch((err) => {
// 画布没有签字时会执行这里提示一下
this.$toast.fail('请签名后再保存签字');
});
},
dataURLtoBlob (dataurl, filename = 'file') {
let arr = dataurl.split(',')
let mime = arr[0].match(/:(.*?);/)[1]
let suffix = mime.split('/')[1]
let bstr = atob(arr[1])
let n = bstr.length
let u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime
})
},
}, },
} }
</script> </script>
@@ -101,6 +250,26 @@
background-size: 100% 100%; background-size: 100% 100%;
border: none; border: none;
} }
.van-cell::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0.426667rem;
bottom: 0;
left: 0.426667rem;
border:none;
-webkit-transform: scaleY(.5);
transform: scaleY(.5);
}
.signature-footer {
transform: rotate(90deg);
width: auto;
position: absolute;
top: 50%;
left: 0px;

}
.home_wrapper{ .home_wrapper{
background: #e9e9e9; background: #e9e9e9;
min-height: 100vh; min-height: 100vh;


+ 365
- 181
src/views/sunVillage_info/list_contractor_single_process.vue 查看文件

@@ -1,78 +1,242 @@
<template> <template>
<div class="home_wrapper">
<div class="header_main" >
承包方审核
<div class="return_btn" @click="onClickLeft"></div>
<div class="home_wrapper">
<div class="header_main" >
承包方审核
<div class="return_btn" @click="onClickLeft"></div>
</div>
<div class="list_main">
<div class="titBox">
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_02.png" style="width:22PX;height:22PX;margin-right: 10px;"/>
<p class="tit">信息核对</p>
</div> </div>
<div class="list_main">
<div class="titBox">
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_02.png" style="width:22PX;height:22PX;margin-right: 10px;"/>
<p class="tit">信息核对</p>
</div>
<van-field readonly v-model="value" label="承包方名称" placeholder="承包方名称" input-align="right" :border="false" />
<van-field readonly v-model="value" label="承包方类型" placeholder="承包方类型" input-align="right" :border="false" />
<van-field readonly v-model="value" label="证件号码" placeholder="证件号码" input-align="right" :border="false" />
<van-field readonly v-model="value" label="电话" placeholder="电话" input-align="right" :border="false" />
<van-field readonly v-model="value" label="调查记事" placeholder="调查记事" input-align="right" :border="false" />
<van-field readonly v-model="value" label="公示记事" placeholder="公示记事" input-align="right" :border="false" />
<van-field readonly v-model="value" label="公示记事人" placeholder="公示记事人" input-align="right" :border="false" />
<van-field readonly v-model="value" label="公示记事时间" placeholder="公示记事时间" input-align="right" :border="false" />
<van-field readonly v-model="value" label="承包方公示结果意见" placeholder="承包方公示结果意见" input-align="right" :border="false" />
<van-field readonly v-model="value" label="承包方公示结果签字" placeholder="承包方公示结果签字" input-align="right" :border="false" />
<van-field readonly v-model="value" label="承包方公示日期" placeholder="承包方公示日期" input-align="right" :border="false" />
<van-field readonly v-model="form.cbfmc" label="承包方名称" placeholder="承包方名称" input-align="right" :border="false" />
<field-select
v-model="form.cbfzjlx"
label="承包方类型"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择证件类型"
:rules="[{ required: true }]"
readonly
remote-url="/open/zdzh/list/cert_type"
:on-remote-response="'data'"
/>
<van-field readonly v-model="form.cbfzjhm" label="证件号码" placeholder="证件号码" input-align="right" :border="false" />
<van-field readonly v-model="form.lxdh" label="电话" placeholder="电话" input-align="right" :border="false" />
<van-field readonly v-model="form.cbfdcjs" label="调查记事" placeholder="调查记事" input-align="right" :border="false" />
<van-field readonly v-model="form.gsjs" label="公示记事" placeholder="公示记事" input-align="right" :border="false" />
<!-- <van-field readonly v-model="form.gsjsrqz" label="公示记事人" placeholder="公示记事人" input-align="right" :border="false" />-->
<van-cell title="公示记事人签字" style="color: #646566;">
<van-field style="padding: 0 0;height: 30px;" readonly label="公示记事人签字" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsjsrqz" width="10%" alt="" v-if="form.gsjsrqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsjsrq" label="公示记事时间" placeholder="公示记事时间" input-align="right" :border="false" />
<van-field readonly v-model="form.gsjgyj" label="承包方公示结果意见" placeholder="承包方公示结果意见" input-align="right" :border="false" />
<van-cell title="承包方公示结果签字" style="color: #646566;">
<van-field style="padding: 0 0;height: 30px;width: 100%;background-color: #ffffff; border-radius: 5PX;" readonly label="承包方公示结果签字" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsjgqz" style="top:55px;border:none;" width="10%" alt="" v-if="form.gsjgqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsjgqzrq" label="承包方公示日期" placeholder="承包方公示日期" input-align="right" :border="false" />


</div>
</div>


<div class="subForm">
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_01.png" alt="">
<van-field
v-model="value"
rows="3"
autosize
required
label="审批意见"
type="textarea"
:border="false"
class="textarea"
/>
<van-field readonly value="123" label="审核人" placeholder="承包方公示日期" input-align="right" :border="false" />
<van-field readonly value="123" label="审核日期" placeholder="承包方公示日期" input-align="right" :border="false" />
<div class="subForm" v-if="!showForm2">
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_01.png" alt="">
<van-field
v-model="form.gsshyj"
rows="3"
autosize
required
label="审核意见"
type="textarea"
:border="false"
class="textarea"
/>
<van-cell title="审核人" style="color: #ffffff;" >
<van-field style="padding: 0 0;height: 30px;width: 100%;background-color: #ffffff; border-radius: 5PX;" readonly label="审核人" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsshqz" style="top:55px;border:none;width: 80%;" alt="" v-if="form.gsshqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsshrq" label="审核日期" placeholder="审核日期" input-align="right" :border="false" />


</div>
</div>


<div class="subForm2">
<img class="topImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_03.png" alt="">
<van-field readonly v-model="value" label="审核意见" placeholder="审核意见" input-align="right" :border="false" />
<van-field readonly v-model="value" label="审核人" placeholder="审核人" input-align="right" :border="false" />
<van-field readonly v-model="value" label="审核日期" placeholder="审核日期" input-align="right" :border="false" />
<div class="subForm2" v-if="showForm2">
<img class="topImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_03.png" alt="">
<van-field readonly v-model="form.gsshyj" label="审核意见" placeholder="审核意见" input-align="right" :border="false" />
<van-cell title="审核人" style="color: #646566;">
<van-field style="padding: 0 0;height: 30px;" readonly label="审核人" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.gsshqz" style="width: 20%;" alt="" v-if="form.gsshqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.gsshrq" label="审核日期" placeholder="审核日期" input-align="right" :border="false" />


<img class="bottomImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_04.png" alt="">
<img class="bottomImg" src="../../assets/images/sunVillage_info/contractor_icon_09.png" alt="">
</div>
<div style="margin: 30px auto 0;width: 50%;" v-if="!showForm2">
<van-button round block type="primary" native-type="submit" @click="onSign()" >
审核签字
</van-button>
</div>
<van-popup v-model="showesign" closeable position="right" :style="{ height: '100%' }"
close-icon="close">
<van-row style="margin:0 10%">
<p class="title" style="margin:20px 0;position:relative;padding-left:20px;font-size:0.5rem">电子签名</p>
</van-row>
<div class="signature-box" @mousedown="canvasTTdown" @touchstart="canvasTTdown">
<vue-esign
ref="esign"
class="mySign"
:width="500"
:height="height"
:isCrop="signature.isCrop"
:lineWidth="signature.lineWidth"
:lineColor="signature.lineColor"
:bgColor.sync="signature.bgColor"
v-if="!signature.resultImg"
/>
</div> </div>
<div style="margin: 30px auto 0;width: 50%;">
<van-button round block type="primary" native-type="submit">
审核签字
</van-button>
<img src="../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" v-if="!signature.resultImg"
style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt="">
<img :src="signature.resultImg" alt="" width="100%" v-if="signature.resultImg"/>
<div class="signature-footer" v-if="!signature.resultImg">
<van-button type="primary" round size="small" @click="handleReset">清空画板</van-button>
<van-button type="primary" round size="small" @click="handleGenerate">保存提交</van-button>
</van-row>
</div> </div>

</div>
</van-popup>
</div>
</template> </template>


<script> <script>
import { financePublicDetail , openAdd } from "@/api/sunVillage_info/fixedAssets";
import Cookies from "js-cookie";
import request from '@/utils/request'
import { examineSign } from "@/api/sunVillage_info/sysCbf";
import FieldSelect from "@/components/form/FieldSelect";
import $ from "jquery";
export default { export default {
name: "certificateList", name: "certificateList",
components: {FieldSelect},
data() { data() {
return { return {
value:''
form:{},
showForm2:false,
showesign:false,
height:0,
options: {
cert_type: [],
},
//电子签名
signature: {
lineWidth: 6, // 画笔的线条粗细
lineColor: "#000000", // 画笔的颜色
bgColor: "", // 画布的背景颜色
resultImg: "", // 最终画布生成的base64图片
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
},
}; };
}, },
created() { created() {

this.form = this.$route.query.item;
this.InitOptions();
this.height = window.screen.height * 1.28 - 20;
if(this.$route.query.status === "true"){
this.showForm2 =false;
}else{
this.showForm2 =true;
}
}, },
methods: { methods: {
InitOptions() {
for(let k in this.options)
{
this.getDicts(k).then((resp) => this.options[k] = resp.data);
}
},
canvasTTdown() {
$('#canvasTT').css('display', 'none');
},
onSign(){
this.showesign = true;
},
// 清空画板
handleReset() {
this.resultImg = null
if(this.$refs.esign){
this.$refs.esign.reset();
}
$('#canvasTT').css('display', 'block')
},
// 生成签字图
handleGenerate() {
console.info( this.$refs.esign
.generate() );
this.$refs.esign
.generate() // 使用生成器调用把签字的图片转换成为base64图片格式
.then((res) => {
this.signature.resultImg = res;
console.info(res)
let wj = this.dataURLtoBlob(res);
let param = new FormData();
param.append('file', wj) // 通过append向form对象添加数据
param.append('id', this.form.id)
param.append('shyj', this.form.gsshyj)
this.showesign = false;
this.$toast.loading({
message: "数据处理中",
forbidClick: true,
duration: 40000,
});
examineSign(param).then((r1) => {
this.$toast.clear();
// this.tEnforceSamplingGoodsList[index].attachement.push(r1.fileName);
this.$notify({type: 'success', message: '签字成功'});
this.showForm2 = true;
this.form = r1.data;
this.$router.push({name:'sunVillageInfoListContractor'})
})
// let param = new FormData() // 创建form对象
// param.append('file', wj) // 通过append向form对象添加数据
// param.append('date', this.format(new Date(), 'yyyy-MM-dd')) // 通过append向form对象添加数据
// zjddcSign(param, this.zjdzdxx.zjddm).then(response => {
// this.$notify({type: 'success', message: '签字成功'});
// this.showesign = false;
// getZjdzd(this.zjdzdxx.id).then((response) => {
// localStorage.setItem("zjdzdxxItem",JSON.stringify(response.data))
// location.reload();
// });


// });


})
.catch((err) => {
// 画布没有签字时会执行这里提示一下
this.$toast.fail('请签名后再保存签字');
});
},
dataURLtoBlob (dataurl, filename = 'file') {
let arr = dataurl.split(',')
let mime = arr[0].match(/:(.*?);/)[1]
let suffix = mime.split('/')[1]
let bstr = atob(arr[1])
let n = bstr.length
let u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime
})
},
}, },
} }
</script> </script>
@@ -83,82 +247,102 @@
background-size: 100% 100%; background-size: 100% 100%;
border: none; border: none;
} }
.home_wrapper{
.van-cell::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0.426667rem;
bottom: 0;
left: 0.426667rem;
border:none;
-webkit-transform: scaleY(.5);
transform: scaleY(.5);
}
.signature-footer {
transform: rotate(90deg);
width: auto;
position: absolute;
top: 50%;
left: 0px;

}
.home_wrapper{
background: #e9e9e9; background: #e9e9e9;
min-height: 100vh; min-height: 100vh;
width: 100vw; width: 100vw;
.header_main {
height: 116px;
background: url('../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
.header_main {
height: 116px;
background: url('../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;


.return_btn {
width: 24px;
height: 43.2px;
background: url('../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
}
.release_head{
height: 90px;
padding:0 23px;
display: flex;
align-items: center;
font-size: 26px;
color: #929292;
.people{
flex: 1;
display: flex;
align-items: center;
.icon{
width: 24px;
height: 21px;
background: url('../../assets/images/sunVillage_info/details_icon_1.png') no-repeat;
background-size: 100% 100%;
display: block;
margin-right: 8px;
}
}
.time{
flex: 1;
display: flex;
align-items: center;
justify-content:flex-end;
.icon{
width: 25px;
height: 25px;
background: url('../../assets/images/sunVillage_info/details_icon_2.png') no-repeat;
background-size: 100% 100%;
display: block;
margin-right: 8px;
}
}
}
.release_conetnt{
padding:0 22px;
font-size: 32px;
color: #252525;
line-height: 44px;
img{
max-width: 100%;
margin-bottom: 16px;
}
p{
margin-bottom: 16px;
}
}
.return_btn {
width: 24px;
height: 43.2px;
background: url('../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
}
.release_head{
height: 90px;
padding:0 23px;
display: flex;
align-items: center;
font-size: 26px;
color: #929292;
.people{
flex: 1;
display: flex;
align-items: center;
.icon{
width: 24px;
height: 21px;
background: url('../../assets/images/sunVillage_info/details_icon_1.png') no-repeat;
background-size: 100% 100%;
display: block;
margin-right: 8px;
}
}
.time{
flex: 1;
display: flex;
align-items: center;
justify-content:flex-end;
.icon{
width: 25px;
height: 25px;
background: url('../../assets/images/sunVillage_info/details_icon_2.png') no-repeat;
background-size: 100% 100%;
display: block;
margin-right: 8px;
}
}
}
.release_conetnt{
padding:0 22px;
font-size: 32px;
color: #252525;
line-height: 44px;
img{
max-width: 100%;
margin-bottom: 16px;
}
p{
margin-bottom: 16px;
}
}
.list_main{ .list_main{
padding:25px; padding:25px;
background: #ffffff; background: #ffffff;
@@ -176,46 +360,46 @@
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
position: relative; position: relative;
padding-top: 10vw; padding-top: 10vw;
img{
position: absolute;
left: 50%;
width: 15vw;
transform: translate(-50%,calc(-50% - 10vw));
border: 5PX solid #e9e9e9;
border-radius: 100%;
}
/deep/ .van-field__label{
/*padding-left: 10PX;*/
width: auto;
display: flex;
align-items: start;
color: #ffffff;
margin-right: 6vw;
}
/deep/ .van-cell{
background-color: transparent;
}
.textarea{
/deep/ .van-field__value{
background-color: #ffffff;
border-radius: 10PX;
}
/deep/ .van-field__control{
padding: 12PX;
color: #666666;
}
}
/deep/ .van-field__value{
background-color: transparent;
border-radius: 10PX;
}
/deep/ .van-field__control{
padding: 0PX;
color: #ffffff;
}
/deep/ .van-cell--required::before{
left: 60PX;
}
img{
position: absolute;
left: 50%;
width: 15vw;
transform: translate(-50%,calc(-50% - 10vw));
border: 5PX solid #e9e9e9;
border-radius: 100%;
}
/deep/ .van-field__label{
/*padding-left: 10PX;*/
width: auto;
display: flex;
align-items: start;
color: #ffffff;
margin-right: 6vw;
}
/deep/ .van-cell{
background-color: transparent;
}
.textarea{
/deep/ .van-field__value{
background-color: #ffffff;
border-radius: 10PX;
}
/deep/ .van-field__control{
padding: 12PX;
color: #666666;
}
}
/deep/ .van-field__value{
background-color: transparent;
border-radius: 10PX;
}
/deep/ .van-field__control{
padding: 0PX;
color: #ffffff;
}
/deep/ .van-cell--required::before{
left: 60PX;
}
} }
.subForm2{ .subForm2{
padding:25px; padding:25px;
@@ -226,21 +410,21 @@
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
position: relative; position: relative;
padding-top: 10vw; padding-top: 10vw;
.topImg{
position: absolute;
left: 50%;
width: 15vw;
transform: translate(-50%,calc(-50% - 10vw));
border: 5PX solid #e9e9e9;
border-radius: 100%;
}
.bottomImg{
position: absolute;
left: 50%;
top: 50%;
width: 25vw;
transform: translate(-50%,-50%);
}
.topImg{
position: absolute;
left: 50%;
width: 15vw;
transform: translate(-50%,calc(-50% - 10vw));
border: 5PX solid #e9e9e9;
border-radius: 100%;
}
.bottomImg{
position: absolute;
left: 50%;
top: 50%;
width: 25vw;
transform: translate(-50%,-50%);
}
} }
.titBox{ .titBox{
display: flex; display: flex;
@@ -264,5 +448,5 @@
/deep/ .van-cell--required::before{ /deep/ .van-cell--required::before{
left: 85PX; left: 85PX;
} }
}
}
</style> </style>

+ 186
- 21
src/views/sunVillage_info/list_employer_process.vue 查看文件

@@ -9,22 +9,30 @@
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_02.png" style="width:22PX;height:22PX;margin-right: 10px;"/> <img src="../../assets/images/sunVillage_info/list_employer_process_icon_02.png" style="width:22PX;height:22PX;margin-right: 10px;"/>
<p class="tit">信息核对</p> <p class="tit">信息核对</p>
</div> </div>
<van-field readonly v-model="value" label="编码" placeholder="编码" input-align="right" :border="false" />
<van-field readonly v-model="value" label="名称" placeholder="名称" input-align="right" :border="false" />
<van-field readonly v-model="value" label="负责人" placeholder="负责人" input-align="right" :border="false" />
<van-field readonly v-model="value" label="证件类型" placeholder="证件类型" input-align="right" :border="false" />
<van-field readonly v-model="value" label="证件号码" placeholder="证件号码" input-align="right" :border="false" />
<van-field readonly v-model="value" label="调查记事" placeholder="调查记事" input-align="right" :border="false" />
<van-field readonly v-model="value" label="调查员" placeholder="调查员" input-align="right" :border="false" />
<van-field readonly v-model="value" label="调查日期" placeholder="调查日期" input-align="right" :border="false" />
<van-field readonly v-model="value" label="调查签字" placeholder="调查签字" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfbm" label="编码" placeholder="编码" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfdcy" label="名称" placeholder="名称" input-align="right" :border="false" />
<van-field readonly v-model="form.fbffzrxm" label="负责人" placeholder="负责人" input-align="right" :border="false" />
<van-field readonly v-model="form.fzrzjlx" label="证件类型" placeholder="证件类型" input-align="right" :border="false" />
<van-field readonly v-model="form.fzrzjhm" label="证件号码" placeholder="证件号码" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfdcjs" label="调查记事" placeholder="调查记事" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfdcy" label="调查员" placeholder="调查员" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfdcrq" label="调查日期" placeholder="调查日期" input-align="right" :border="false" />
<van-cell title="调查签名" style="color: #646566;">
<van-field style="padding: 0 0;" readonly label="调查签名" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.fbfdcqz" width="10%" alt="" v-if="form.fbfdcqz" >
</template>
</van-field>
</van-cell>
<!-- <van-col :span="12"> <van-field readonly label="调查签名" input-align="right" :border="false" /></van-col>-->
<!-- <van-col :span="12"><img :src="'/api'+form.fbfdcqz" width="100%" alt="" v-if="form.fbfdcqz" ></van-col>-->


</div> </div>


<div class="subForm">
<div class="subForm" v-if="!showShenHe">
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_01.png" alt=""> <img src="../../assets/images/sunVillage_info/list_employer_process_icon_01.png" alt="">
<van-field <van-field
v-model="value"
v-model="form.shyj"
rows="3" rows="3"
autosize autosize
required required
@@ -34,39 +42,174 @@
/> />
</div> </div>


<div class="subForm2">
<div class="subForm2" v-if="showShenHe">
<img class="topImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_03.png" alt=""> <img class="topImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_03.png" alt="">
<van-field readonly v-model="value" label="审核意见" placeholder="审核意见" input-align="right" :border="false" />
<van-field readonly v-model="value" label="审核人" placeholder="审核人" input-align="right" :border="false" />
<van-field readonly v-model="value" label="审核日期" placeholder="审核日期" input-align="right" :border="false" />
<van-field readonly v-model="form.shyj" label="审核意见" placeholder="审核意见" input-align="right" :border="false" />
<van-cell title="审核人" style="border: none;height: 40px;color: #646566;" >
<van-field readonly style="padding: 0 0;" label="审核人" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.shrqz" width="10%" alt="" v-if="form.shrqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.shrq" label="审核日期" placeholder="审核日期" input-align="right" :border="false" />


<img class="bottomImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_04.png" alt=""> <img class="bottomImg" src="../../assets/images/sunVillage_info/list_employer_process_icon_04.png" alt="">
</div> </div>
<div style="margin: 30px auto 0;width: 50%;">
<van-button round block type="primary" native-type="submit">
<div style="margin: 30px auto 0;width: 50%;" v-if="showShqz && !showShenHe">
<van-button round block type="primary" native-type="submit" @click="onSign()">
审核签字 审核签字
</van-button> </van-button>
</div> </div>

<van-popup v-model="showesign" closeable position="right" :style="{ height: '100%' }"
close-icon="close">
<van-row style="margin:0 10%">
<p class="title" style="margin:20px 0;position:relative;padding-left:20px;font-size:0.5rem">电子签名</p>
</van-row>
<div class="signature-box" @mousedown="canvasTTdown" @touchstart="canvasTTdown">
<vue-esign
ref="esign"
class="mySign"
:width="500"
:height="height"
:isCrop="signature.isCrop"
:lineWidth="signature.lineWidth"
:lineColor="signature.lineColor"
:bgColor.sync="signature.bgColor"
v-if="!signature.resultImg"
/>
</div>
<img src="../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" v-if="!signature.resultImg"
style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt="">
<img :src="signature.resultImg" alt="" width="100%" v-if="signature.resultImg"/>
<div class="signature-footer" v-if="!signature.resultImg">
<van-button type="primary" round size="small" @click="handleReset">清空画板</van-button>
<van-button type="primary" round size="small" @click="handleGenerate">保存提交</van-button>
</van-row>
</div>
</van-popup>
</div> </div>
</template> </template>


<script> <script>
import { financePublicDetail , openAdd } from "@/api/sunVillage_info/fixedAssets";
import { getSysFfb,auditSign} from "@/api/sunVillage_info/sysFbf";
import { commonUpload } from "@/api/homestead/index";
import $ from "jquery";
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import request from '@/utils/request' import request from '@/utils/request'
export default { export default {
name: "certificateList", name: "certificateList",
data() { data() {
return { return {
value:''
value:'',
showesign:false,
showShenHe:false,
showShqz:true,
height:0,
form:{},
//电子签名
signature: {
lineWidth: 6, // 画笔的线条粗细
lineColor: "#000000", // 画笔的颜色
bgColor: "", // 画布的背景颜色
resultImg: "", // 最终画布生成的base64图片
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
},
}; };
}, },
created() { created() {

this.getSysFfb();
this.height = window.screen.height * 1.28 - 20;
}, },
methods: { methods: {
getSysFfb(){
getSysFfb().then(response => {
if(response.data.length > 0){
this.form = response.data[0];
if(this.form.shrqz != null){
this.showShenHe = true;
}
console.info(this.form);
}

});
},
canvasTTdown() {
$('#canvasTT').css('display', 'none');
},
onSign(){
this.showesign = true;
},
// 清空画板
handleReset() {
this.resultImg = null
if(this.$refs.esign){
this.$refs.esign.reset();
}
$('#canvasTT').css('display', 'block')
},
// 生成签字图
handleGenerate() {
console.info( this.$refs.esign
.generate() );
this.$refs.esign
.generate() // 使用生成器调用把签字的图片转换成为base64图片格式
.then((res) => {
this.signature.resultImg = res;
console.info(res)
let wj = this.dataURLtoBlob(res);
let param = new FormData();
param.append('file', wj) // 通过append向form对象添加数据
param.append('id', this.form.id)
param.append('shyj', this.form.shyj)
this.$toast.loading({
message: "数据处理中",
forbidClick: true,
duration: 40000,
});
auditSign(param).then((r1) => {
this.$toast.clear();
// this.tEnforceSamplingGoodsList[index].attachement.push(r1.fileName);
this.$notify({type: 'success', message: '签字成功'});
this.showShqz = false;
this.showesign = false;
this.getSysFfb();
// this.mainImgArr.push(r1.fileName)
})
// let param = new FormData() // 创建form对象
// param.append('file', wj) // 通过append向form对象添加数据
// param.append('date', this.format(new Date(), 'yyyy-MM-dd')) // 通过append向form对象添加数据
// zjddcSign(param, this.zjdzdxx.zjddm).then(response => {
// this.$notify({type: 'success', message: '签字成功'});
// this.showesign = false;
// getZjdzd(this.zjdzdxx.id).then((response) => {
// localStorage.setItem("zjdzdxxItem",JSON.stringify(response.data))
// location.reload();
// });



// });

})
.catch((err) => {
// 画布没有签字时会执行这里提示一下
this.$toast.fail('请签名后再保存签字');
});
},
dataURLtoBlob (dataurl, filename = 'file') {
let arr = dataurl.split(',')
let mime = arr[0].match(/:(.*?);/)[1]
let suffix = mime.split('/')[1]
let bstr = atob(arr[1])
let n = bstr.length
let u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime
})
},
}, },
} }
</script> </script>
@@ -77,6 +220,28 @@
background-size: 100% 100%; background-size: 100% 100%;
border: none; border: none;
} }

.van-cell::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0.426667rem;
bottom: 0;
left: 0.426667rem;
border:none;
-webkit-transform: scaleY(.5);
transform: scaleY(.5);
}

.signature-footer {
transform: rotate(90deg);
width: auto;
position: absolute;
top: 50%;
left: 0px;

}
.home_wrapper{ .home_wrapper{
background: #e9e9e9; background: #e9e9e9;
min-height: 100vh; min-height: 100vh;


+ 317
- 0
src/views/sunVillage_info/list_fbfsq.vue 查看文件

@@ -0,0 +1,317 @@
<template>
<div class="home_wrapper">
<div class="header_main" >
发包方授权
<div class="return_btn" @click="onClickLeft"></div>
</div>
<div class="list_main">
<div class="titBox">
<img src="../../assets/images/sunVillage_info/list_employer_process_icon_02.png" style="width:22PX;height:22PX;margin-right: 10px;"/>
<p class="tit">发包方授权</p>
</div>
<van-field readonly v-model="form.fbfbm" label="发包方代码" placeholder="发包方代码" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfmc" label="发包方名称" placeholder="发包方名称" input-align="right" :border="false" />
<van-field readonly v-model="form.fbffzrxm" label="负责人名称" placeholder="负责人名称" input-align="right" :border="false" />
<field-select
v-model="form.fzrzjlx"
label="证件类型"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择证件类型"
:rules="[{ required: true }]"
readonly
remote-url="/open/zdzh/list/zjlx"
:on-remote-response="'data'"
/>
<van-field readonly v-model="form.fzrzjhm" label="证件号码" placeholder="证件号码" input-align="right" :border="false" />
<van-field readonly v-model="form.lxdh" label="联系电话" placeholder="联系电话" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfdz" label="发包方地址" placeholder="发包方地址" input-align="right" :border="false" />
<van-field readonly v-model="form.yzbm" label="邮政编码" placeholder=" 邮政编码" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfdcy" label="发包方调查员" placeholder="发包方调查员" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfdcrq" label="发包方调查日期" placeholder="发包方调查日期" input-align="right" :border="false" />
<van-field readonly v-model="form.fbfdcjs" label="发包方调查记事" placeholder="发包方调查记事" input-align="right" :border="false" />
<van-cell title="发包方调查签字" style="color: #646566;">
<van-field style="padding: 0 0;" readonly label="发包方调查签字" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.fbfdcqz" width="10%" alt="" v-if="form.fbfdcqz" >
</template>
</van-field>
</van-cell>
<van-field readonly v-model="form.shyj" label="审核意见" placeholder="审核意见" input-align="right" :border="false" />
<van-field readonly v-model="form.shrq" label="审核日期" placeholder="审核日期" input-align="right" :border="false" />
<van-cell title="审核人签字" style="color: #646566;">
<van-field style="padding: 0 0;" readonly label="审核人签字" input-align="right" :border="false" >
<template #label>
<img :src="'/api'+form.shrqz" width="10%" alt="" v-if="form.shrqz" >
</template>
</van-field>
</van-cell>
<div style="margin: 30px auto 0;width: 50%;">
<van-button round block type="primary" native-type="submit" >
授权
</van-button>
</div>
</div>
</div>
</template>

<script>
import { getList} from "@/api/sunVillage_info/sysCbf";
import FieldSelect from "@/components/form/FieldSelect";
import $ from "jquery";
export default {
name: "certificateList",
components: {FieldSelect},
data() {
return {
form:{},
showForm2:false,
showesign:false,
height:0,
options: {
cert_type: [],
},

//电子签名
signature: {
lineWidth: 6, // 画笔的线条粗细
lineColor: "#000000", // 画笔的颜色
bgColor: "", // 画布的背景颜色
resultImg: "", // 最终画布生成的base64图片
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
},
};
},
created() {
this.InitOptions();
this.getSysCfb();
},
methods: {
InitOptions() {
for(let k in this.options)
{
this.getDicts(k).then((resp) => this.options[k] = resp.data);
}
},
getSysCfb(){
getList({}).then(response => {
if(response.data.length > 0){
this.form = response.data[0];

}

});
},
},
}
</script>

<style scoped lang="scss">
/deep/ .van-button--primary{
background: url("../../assets/images/sunVillage_info/btn_bg.png") no-repeat;
background-size: 100% 100%;
border: none;
}
.van-cell::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0.426667rem;
bottom: 0;
left: 0.426667rem;
border:none;
-webkit-transform: scaleY(.5);
transform: scaleY(.5);
}
.signature-footer {
transform: rotate(90deg);
width: auto;
position: absolute;
top: 50%;
left: 0px;

}
.home_wrapper{
background: #e9e9e9;
min-height: 100vh;
width: 100vw;
.header_main {
height: 116px;
background: url('../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;

.return_btn {
width: 24px;
height: 43.2px;
background: url('../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
}
.release_head{
height: 90px;
padding:0 23px;
display: flex;
align-items: center;
font-size: 26px;
color: #929292;
.people{
flex: 1;
display: flex;
align-items: center;
.icon{
width: 24px;
height: 21px;
background: url('../../assets/images/sunVillage_info/details_icon_1.png') no-repeat;
background-size: 100% 100%;
display: block;
margin-right: 8px;
}
}
.time{
flex: 1;
display: flex;
align-items: center;
justify-content:flex-end;
.icon{
width: 25px;
height: 25px;
background: url('../../assets/images/sunVillage_info/details_icon_2.png') no-repeat;
background-size: 100% 100%;
display: block;
margin-right: 8px;
}
}
}
.release_conetnt{
padding:0 22px;
font-size: 32px;
color: #252525;
line-height: 44px;
img{
max-width: 100%;
margin-bottom: 16px;
}
p{
margin-bottom: 16px;
}
}
.list_main{
padding:25px;
background: #ffffff;
width: 94%;
margin: 25px auto 0;
border-radius: 15PX;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
}
.subForm{
padding:25px;
background-image: linear-gradient(#2884ec,#68b2ee);
width: 94%;
margin: 50PX auto 0;
border-radius: 15PX;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
position: relative;
padding-top: 10vw;
img{
position: absolute;
left: 50%;
width: 15vw;
transform: translate(-50%,calc(-50% - 10vw));
border: 5PX solid #e9e9e9;
border-radius: 100%;
}
/deep/ .van-field__label{
/*padding-left: 10PX;*/
width: auto;
display: flex;
align-items: start;
color: #ffffff;
margin-right: 6vw;
}
/deep/ .van-cell{
background-color: transparent;
}
.textarea{
/deep/ .van-field__value{
background-color: #ffffff;
border-radius: 10PX;
}
/deep/ .van-field__control{
padding: 12PX;
color: #666666;
}
}
/deep/ .van-field__value{
background-color: transparent;
border-radius: 10PX;
}
/deep/ .van-field__control{
padding: 0PX;
color: #ffffff;
}
/deep/ .van-cell--required::before{
left: 60PX;
}
}
.subForm2{
padding:25px;
background:#ffffff;
width: 94%;
margin: 50PX auto 0;
border-radius: 15PX;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
position: relative;
padding-top: 10vw;
.topImg{
position: absolute;
left: 50%;
width: 15vw;
transform: translate(-50%,calc(-50% - 10vw));
border: 5PX solid #e9e9e9;
border-radius: 100%;
}
.bottomImg{
position: absolute;
left: 50%;
top: 50%;
width: 25vw;
transform: translate(-50%,-50%);
}
}
.titBox{
display: flex;
align-items: center;
}
.tit{
font-size: 36px;
font-weight: bold;
}
/deep/ .van-cell{
padding-left: 0!important;
padding-right: 0!important;
padding-bottom: 0!important;
}
/deep/ .van-field__label{
/*padding-left: 10PX;*/
width: auto;
display: flex;
align-items: center;
}
/deep/ .van-cell--required::before{
left: 85PX;
}
}
</style>

+ 0
- 1
src/views/sunVillage_info/list_signature_pdf.vue 查看文件

@@ -45,7 +45,6 @@
this.$toast.loading({ this.$toast.loading({
message: "正在加载文件", message: "正在加载文件",
forbidClick: true, forbidClick: true,
duration: 20000,
}); });
loadingTask.promise.then(pdf => { loadingTask.promise.then(pdf => {
this.numPages = pdf.numPages this.numPages = pdf.numPages


+ 4
- 4
src/views/sunVillage_info/paidExit/paidExitList.vue 查看文件

@@ -28,7 +28,7 @@
@load="getList" @load="getList"
> >
<van-swipe-cell v-for="(item,index) in applicationList" :key="index"> <van-swipe-cell v-for="(item,index) in applicationList" :key="index">
<van-cell :title="item.zjddm" :value="item.auditStatus" center :to="{name:'sunVillageInfoPaidExitDetail', query: {id:item.id}}" >
<van-cell :title="item.zjddm" :value="selectDictLabel(auditStatus, item.auditStatus)" center :to="{name:'sunVillageInfoPaidExitDetail', query: {id:item.id}}" >
<template #icon> <template #icon>
<van-icon name="../../../static/images/onlineHome/icon_zjd3.png" size="30" color="#539FFD" style="margin-right: 10px;" /> <van-icon name="../../../static/images/onlineHome/icon_zjd3.png" size="30" color="#539FFD" style="margin-right: 10px;" />
</template> </template>
@@ -39,13 +39,13 @@
<template #right> <template #right>
<van-row> <van-row>
<van-col> <van-col>
<van-button square text="修改" v-if="item.auditStatus=='草稿'" :to="{name:'sunVillageInfoPaidExitModify', query: {id:item.id}}" type="info" class="delete-button" />
<van-button square text="修改" v-if="item.auditStatus=='0'" :to="{name:'sunVillageInfoPaidExitModify', query: {id:item.id}}" type="info" class="delete-button" />
</van-col> </van-col>
<van-col> <van-col>
<van-button square text="提交" type="primary" v-if="item.auditStatus=='草稿'" class="delete-button" @click="goSubmit(item)" />
<van-button square text="提交" type="primary" v-if="item.auditStatus=='0'" class="delete-button" @click="goSubmit(item)" />
</van-col> </van-col>
<van-col> <van-col>
<van-button square text="删除" v-if="item.auditStatus=='草稿'" @click="deleteList(item.id,index)" type="danger" class="delete-button" />
<van-button square text="删除" v-if="item.auditStatus=='0'" @click="deleteList(item.id,index)" type="danger" class="delete-button" />
</van-col> </van-col>
</van-row> </van-row>
</template> </template>


+ 36
- 10
src/views/yinnong/homestead/circulation/circulationAdd.vue 查看文件

@@ -1,15 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<van-nav-bar
left-arrow
fixed
placeholder
@click-left="$router.back(-1)"
>
<template #title>
<p style="font-weight: bold;">添加宅基地使用权流转</p>
</template>
</van-nav-bar>
<div class="header_main">
使用权流转
<div class="return_btn" @click="onClickLeft"></div>
</div>
<p class="main_title">转出方信息</p> <p class="main_title">转出方信息</p>
<div class="main_box"> <div class="main_box">
<!-- <van-field v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>--> <!-- <van-field v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>-->
@@ -641,6 +635,38 @@


<style scoped lang="scss"> <style scoped lang="scss">
.app-container { .app-container {
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
} }
.main_title{ .main_title{
font-size: 0.4rem; font-size: 0.4rem;


+ 36
- 10
src/views/yinnong/homestead/circulation/circulationDetail.vue 查看文件

@@ -1,15 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<van-nav-bar
left-arrow
fixed
placeholder
@click-left="$router.back(-1)"
>
<template #title>
<p style="font-weight: bold;">添加宅基地使用权流转</p>
</template>
</van-nav-bar>
<div class="header_main">
使用权流转
<div class="return_btn" @click="onClickLeft"></div>
</div>
<p class="main_title">转出方信息</p> <p class="main_title">转出方信息</p>
<div class="main_box"> <div class="main_box">
<!-- <van-field v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>--> <!-- <van-field v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>-->
@@ -670,6 +664,38 @@


<style scoped lang="scss"> <style scoped lang="scss">
.app-container { .app-container {
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
} }
.main_title{ .main_title{
font-size: 0.4rem; font-size: 0.4rem;


+ 37
- 15
src/views/yinnong/homestead/circulation/circulationList.vue 查看文件

@@ -1,19 +1,10 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<van-nav-bar
left-arrow
fixed
placeholder
@click-left="$router.back(-1)"
@click-right="goAdd"
>
<template #title>
<p style="font-weight: bold;">使用权流转</p>
</template>
<template #right>
<van-icon name="add" size="18" />
</template>
</van-nav-bar>
<div class="header_main">
使用权流转
<div class="return_btn" @click="onClickLeft"></div>
<div class="add_btn" @click="goAdd"></div>
</div>
<van-list <van-list
v-model="loading" v-model="loading"
:finished="finished" :finished="finished"
@@ -120,7 +111,38 @@ export default {


<style scoped lang="scss"> <style scoped lang="scss">
.app-container { .app-container {
padding: 0.2rem 3%;
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
} }
/deep/.van-cell__title{ /deep/.van-cell__title{
flex: 0.7; flex: 0.7;


+ 36
- 10
src/views/yinnong/homestead/circulation/circulationModify.vue 查看文件

@@ -1,15 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<van-nav-bar
left-arrow
fixed
placeholder
@click-left="$router.back(-1)"
>
<template #title>
<p style="font-weight: bold;">添加宅基地使用权流转</p>
</template>
</van-nav-bar>
<div class="header_main">
使用权流转
<div class="return_btn" @click="onClickLeft"></div>
</div>
<p class="main_title">转出方信息</p> <p class="main_title">转出方信息</p>
<div class="main_box"> <div class="main_box">
<!-- <van-field v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>--> <!-- <van-field v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>-->
@@ -670,6 +664,38 @@


<style scoped lang="scss"> <style scoped lang="scss">
.app-container { .app-container {
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
} }
.main_title{ .main_title{
font-size: 0.4rem; font-size: 0.4rem;


+ 1
- 1
src/views/yinnong/homestead/freeExit/freeExitAdd.vue 查看文件

@@ -627,7 +627,7 @@ export default {
padding-bottom: 2%; padding-bottom: 2%;
.header_main{ .header_main{
height: 116px; height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head_green.png') no-repeat;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
position: fixed; position: fixed;
top: 0; top: 0;


+ 1
- 1
src/views/yinnong/homestead/freeExit/freeExitDetail.vue 查看文件

@@ -791,7 +791,7 @@ export default {
padding-bottom: 2%; padding-bottom: 2%;
.header_main{ .header_main{
height: 116px; height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head_green.png') no-repeat;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
position: fixed; position: fixed;
top: 0; top: 0;


+ 1
- 1
src/views/yinnong/homestead/freeExit/freeExitList.vue 查看文件

@@ -154,7 +154,7 @@ export default {
.app-container { .app-container {
.header_main{ .header_main{
height: 116px; height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head_green.png') no-repeat;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
position: fixed; position: fixed;
top: 0; top: 0;


+ 1
- 1
src/views/yinnong/homestead/freeExit/freeExitModify.vue 查看文件

@@ -550,7 +550,7 @@
padding-bottom: 2%; padding-bottom: 2%;
.header_main{ .header_main{
height: 116px; height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head_green.png') no-repeat;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
position: fixed; position: fixed;
top: 0; top: 0;


+ 2
- 2
src/views/yinnong/homestead/homeApplication/applicationGsList.vue 查看文件

@@ -101,7 +101,7 @@
|| row.houseApplyStatus == '3F' // 开工通过 || row.houseApplyStatus == '3F' // 开工通过
|| row.houseApplyStatus == '71' // 验收草稿 || row.houseApplyStatus == '71' // 验收草稿
? 'modify' : 'view'; ? 'modify' : 'view';
this.$router.push({name:'applicationForm',query:{type:type,id:row.id}})
this.$router.push({name:'homesteadProposerLite',query:{type:type,id:row.id}})
}, },
getList(target){ getList(target){
let type = typeof (target); let type = typeof (target);
@@ -208,7 +208,7 @@
.app-container { .app-container {
.header_main{ .header_main{
height: 116px; height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head_green.png') no-repeat;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
position: fixed; position: fixed;
top: 0; top: 0;


+ 184
- 179
src/views/yinnong/homestead/homeApplication/applicationList.vue 查看文件

@@ -1,27 +1,28 @@
<template> <template>
<div class="app-container">
<!-- <van-nav-bar-->
<!-- left-arrow-->
<!-- fixed-->
<!-- placeholder-->
<!-- @click-left="$router.back(-1)"-->
<!-- @click-right="goAddLite()"-->
<!-- >-->
<!-- <template #title>-->
<!-- <p style="font-weight: bold;">宅基地申请</p>-->
<!-- </template>-->
<!-- <template #right>-->
<!-- <van-icon name="add" size="18"/>-->
<!-- </template>-->
<!-- </van-nav-bar>-->
<div class="app-container">
<!-- <van-nav-bar-->
<!-- left-arrow-->
<!-- fixed-->
<!-- placeholder-->
<!-- @click-left="$router.back(-1)"-->
<!-- @click-right="goAddLite()"-->
<!-- >-->
<!-- <template #title>-->
<!-- <p style="font-weight: bold;">宅基地申请</p>-->
<!-- </template>-->
<!-- <template #right>-->
<!-- <van-icon name="add" size="18"/>-->
<!-- </template>-->
<!-- </van-nav-bar>-->


<div class="header_main">
宅基地申请
<div class="return_btn" @click="onClickLeft"></div>
</div>
<div class="header_main">
宅基地申请
<div class="return_btn" @click="onClickLeft"></div>
<div class="add_btn" @click="goAddLite"></div>
</div>


<van-pull-refresh v-model="refreshing" @refresh="getList()">
<van-list
<van-pull-refresh v-model="refreshing" @refresh="getList()">
<van-list
v-model="loading" v-model="loading"
:finished="finished" :finished="finished"
finished-text="没有更多了" finished-text="没有更多了"
@@ -29,13 +30,13 @@
> >
<van-swipe-cell v-for="(item,index) in applicationList" :key="index"> <van-swipe-cell v-for="(item,index) in applicationList" :key="index">
<van-cell :title="item.ywh" center @click="viewItem(item)"> <van-cell :title="item.ywh" center @click="viewItem(item)">
<!-- <van-cell :title="item.ywh" :value="item.houseApplyStatusName" center @click="viewItem(item)">-->
<!-- <template #icon>-->
<!-- <van-icon name="../../../static/images/onlineHome/icon_zjd1.png" size="30" color="#539FFD" style="margin-right: 10px;" />-->
<!-- </template>-->
<!-- <template #label>-->
<!-- <p>{{item.projectName}}</p>-->
<!-- </template>-->
<!-- <van-cell :title="item.ywh" :value="item.houseApplyStatusName" center @click="viewItem(item)">-->
<!-- <template #icon>-->
<!-- <van-icon name="../../../static/images/onlineHome/icon_zjd1.png" size="30" color="#539FFD" style="margin-right: 10px;" />-->
<!-- </template>-->
<!-- <template #label>-->
<!-- <p>{{item.projectName}}</p>-->
<!-- </template>-->
<template #icon> <template #icon>
<van-icon name="../../../static/images/onlineHome/icon_zjd1.png" size="30" color="#539FFD" style="margin-right: 10px;" /> <van-icon name="../../../static/images/onlineHome/icon_zjd1.png" size="30" color="#539FFD" style="margin-right: 10px;" />
</template> </template>
@@ -48,147 +49,151 @@
</van-cell> </van-cell>
<template #right> <template #right>
<van-row> <van-row>

<van-col> <van-col>
<van-button square text="许可证预览" v-if="parseInt(item.homeApplyStatus, 16) >= 0x31" type="info" :to="{name:'homeXkzPanel', query: {id:item.id, type: 'modify'}}" class="delete-button" />
<van-button square text="提交" type="primary" v-if="item.homeApplyStatus=='11' || item.homeApplyStatus=='31' || item.homeApplyStatus=='71'" @click="submitApplyProposer(item)" class="delete-button" />
</van-col>
<van-col>
<van-button square text="修改" type="info" v-if="item.homeApplyStatus=='11' || item.homeApplyStatus=='31' || item.homeApplyStatus=='71'" :to="{name:'homesteadProposerLite', query: {id:item.id, type: 'modify'}}" class="delete-button" />
</van-col> </van-col>
<van-col> <van-col>
<van-button square text="批准书预览" v-if="parseInt(item.homeApplyStatus, 16) >= 0x31" type="info" :to="{name:'homePzsPanel', query: {id:item.id, type: 'modify'}}" class="delete-button" />
<van-button square text="删除" type="danger" v-if="item.homeApplyStatus=='11'" @click="deleteList(item.id,index)" class="delete-button" />
</van-col> </van-col>
</van-row> </van-row>
</template> </template>
</van-swipe-cell> </van-swipe-cell>
</van-list> </van-list>
</van-pull-refresh>
</div>
</van-pull-refresh>
</div>
</template> </template>


<script> <script>
import { getList , removeList } from "@/api/sunVillage_info/homestead/application";
import { customSubmitWLHT, submitStartWLHT, submitEndWLHT,} from "@/api/sunVillage_info/homestead/application";
import {updateOpretion} from "@/api/sunVillage_info/homestead/application";
import Cookies from "js-cookie";
export default {
name: "applicationList",
data() {
return {
applicationList:[],
houseApplyStatus:[],
loading: false,
finished: false,
refreshing: false,
import { getList , removeList } from "@/api/sunVillage_info/homestead/application";
import { customSubmitWLHT, submitStartWLHT, submitEndWLHT,} from "@/api/sunVillage_info/homestead/application";
import {updateOpretion} from "@/api/sunVillage_info/homestead/application";
import Cookies from "js-cookie";
export default {
name: "applicationList",
data() {
return {
applicationList:[],
houseApplyStatus:[],
loading: false,
finished: false,
refreshing: false,
deptId:null,
idcard:null,
total: 0,
queryParams:{
pageNum:1,
pageSize:10,
deptId:null, deptId:null,
idcard:null,
total: 0,
queryParams:{
pageNum:1,
pageSize:10,
deptId:null,
orderByColumn:'createTime',
isAsc:'desc'
}
};
orderByColumn:'createTime',
isAsc:'desc'
}
};
},
created() {
this.houseGetDicts("home_stage_status").then((response) => {
this.houseApplyStatus = response.data;
});
this.deptId = Cookies.get('deptId')
this.idcard = Cookies.get('idcard')
this.$set(this.queryParams, "deptId", this.deptId);
this.$set(this.queryParams, "sqhhzsfzh", this.idcard);
this.getList();
},
methods: {
goAdd(){
window.location = 'applicationAdd';
}, },
created() {
this.houseGetDicts("home_stage_status").then((response) => {
this.houseApplyStatus = response.data;
});
this.deptId = this.$store.state.user.loginDeptId;
this.$set(this.queryParams, "deptId", this.deptId);
this.getList();
goAddLite(){
//window.location = 'applicationAdd'
this.$router.push({name:'homesteadProposerLite',query:{type:"add"}})
}, },
methods: {
goAdd(){
window.location = 'applicationAdd';
},
goAddLite(){
//window.location = 'applicationAdd'
this.$router.push({name:'sunVillageInfoProposerLite',query:{type:"add"}})
},
viewItem(row){
let type = row.houseApplyStatus == '11' // 申请草稿
viewItem(row){
let type = row.houseApplyStatus == '11' // 申请草稿
|| row.houseApplyStatus == '1F' // 申请通过 || row.houseApplyStatus == '1F' // 申请通过
|| row.houseApplyStatus == '31' // 开工草稿 || row.houseApplyStatus == '31' // 开工草稿
|| row.houseApplyStatus == '3F' // 开工通过 || row.houseApplyStatus == '3F' // 开工通过
|| row.houseApplyStatus == '71' // 验收草稿 || row.houseApplyStatus == '71' // 验收草稿
? 'modify' : 'view'; ? 'modify' : 'view';
this.$router.push({name:'applicationForm',query:{type:type,id:row.id}})
},
getList(target){
let type = typeof (target);
console.log(type, target);
if(target && this.finished)
return;
if (target === 0) {
this.refreshing = true;
this.$router.push({name:'homesteadProposerLite',query:{type:type,id:row.id}})
},
getList(target){
let type = typeof (target);
console.log(type, target);
if(target && this.finished)
return;
if (target === 0) {
this.refreshing = true;
this.finished = true;
this.total = 0;
this.queryParams.pageNum = 1;
this.applicationList = [];
}
else if (type === 'number')
this.queryParams.pageNum = target;
else if (type === 'string') {
this.queryParams.pageNum = eval(this.queryParams.pageNum + target)
}
else
{
this.refreshing = true;
this.finished = true;
this.total = 0;
this.queryParams.pageNum = 1;
this.applicationList = []
}
getList(this.queryParams).then(response => {
console.log(response)
if (response.rows.length === 0) {
this.finished = true; this.finished = true;
this.total = 0;
this.queryParams.pageNum = 1;
this.applicationList = [];
return;
} }
else if (type === 'number')
this.queryParams.pageNum = target;
else if (type === 'string') {
this.queryParams.pageNum = eval(this.queryParams.pageNum + target)
for (var i = 0; i < response.rows.length; i++) {
/*var houseApplyStatusName = this.selectDictLabel(this.houseApplyStatus, response.rows[i].houseApplyStatus);
// if(response.rows[i].auditStatus !== '0' && response.rows[i].auditStatus === '2'){
// houseApplyStatusName = houseApplyStatusName+ ' ● 已驳回';
// }
response.rows[i].houseApplyStatusName = houseApplyStatusName;*/
this.applicationList.push(response.rows[i]);
} }
else
{
this.refreshing = true;
this.finished = true;
this.total = 0;
this.queryParams.pageNum = 1;
this.applicationList = []
}
getList(this.queryParams).then(response => {
console.log(response)
if (response.rows.length === 0) {
this.finished = true;
return;
}
for (var i = 0; i < response.rows.length; i++) {
/*var houseApplyStatusName = this.selectDictLabel(this.houseApplyStatus, response.rows[i].houseApplyStatus);
// if(response.rows[i].auditStatus !== '0' && response.rows[i].auditStatus === '2'){
// houseApplyStatusName = houseApplyStatusName+ ' ● 已驳回';
// }
response.rows[i].houseApplyStatusName = houseApplyStatusName;*/
this.applicationList.push(response.rows[i]);
this.total += response.rows.length;
this.finished = this.total >= response.total;
}).finally(() => {
this.loading = false;
this.refreshing = false;
});
},
formatDict(dict, value) {
return this.selectDictLabel(dict, value);
},
deleteList(id,index){
this.$dialog.confirm({
message: '您确认删除申请草稿?',
})
.then(() => {
// on confirm
this.applicationList.splice(index,1)
removeList(id).then(res => {
if(res.code = 200){
this.$toast.success('删除成功');
} }
this.total += response.rows.length;
this.finished = this.total >= response.total;
}).finally(() => {
this.loading = false;
this.refreshing = false;
}); });
},
formatDict(dict, value) {
return this.selectDictLabel(dict, value);
},
deleteList(id,index){
this.$dialog.confirm({
message: '您确认删除申请草稿?',
})
.then(() => {
// on confirm
this.applicationList.splice(index,1)
removeList(id).then(res => {
if(res.code = 200){
this.$toast.success('删除成功');
}
});
})
.catch(() => {
// on cancel
});
},
refresh() {
this.getList(); return;
this.applicationList = [];
this.queryParams.pageNum = 1;
this.refreshing = true;
this.finished = false;
},
submitApplyProposer(item) {
this.$router.push({name:'sunVillageInfoProposerLite',query:{type:"edit",id:item.id}})
})
.catch(() => {
// on cancel
});
},
refresh() {
this.getList(); return;
this.applicationList = [];
this.queryParams.pageNum = 1;
this.refreshing = true;
this.finished = false;
},
submitApplyProposer(item) {
this.$router.push({name:'homesteadProposerLite',query:{type:"edit",id:item.id}})
// if(item.homeApplyStatus === '11'){ // if(item.homeApplyStatus === '11'){
// customSubmitWLHT(item.id).then((resp) => { // customSubmitWLHT(item.id).then((resp) => {
// this.$toast.success("提交成功"); // this.$toast.success("提交成功");
@@ -211,45 +216,45 @@
// this.$toast.fail("提交失败!"); // this.$toast.fail("提交失败!");
// }); // });
// } // }
},
}, },
}
},
}
</script> </script>


<style scoped lang="scss"> <style scoped lang="scss">
.app-container { .app-container {
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head_green.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
} }
/deep/.van-list{ /deep/.van-list{
padding: 0.2rem 3%; padding: 0.2rem 3%;


+ 5287
- 0
src/views/yinnong/homestead/homeApplication/proposerLite.vue
文件差異過大導致無法顯示
查看文件


+ 726
- 0
src/views/yinnong/homestead/paidExit/paidExitAdd.vue 查看文件

@@ -0,0 +1,726 @@
<template>
<div class="app-container">
<!-- <van-nav-bar-->
<!-- left-arrow-->
<!-- fixed-->
<!-- placeholder-->
<!-- @click-left="$router.back(-1)"-->
<!-- >-->
<!-- <template #title>-->
<!-- <p style="font-weight: bold;">添加有偿退出</p>-->
<!-- </template>-->
<!-- </van-nav-bar>-->

<div class="header_main">
添加有偿退出
<div class="return_btn" @click="onClickLeft"></div>
<!-- <div class="add_btn" @click="goAdd"></div>-->
</div>

<p class="main_title">申请人基本信息</p>
<van-form ref="_Form">
<div class="main_box">
<!-- <van-field v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>-->
<van-field v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required @input="remoteTransfereeMethod" />
<div id="dropList" v-show="showDropList" style="width: 92vw; position: absolute; z-index: 99; left: 50%; margin-left: -46vw; border: 1px solid #E2E0E0;" >
<van-cell id="vanCell" v-for="(item, index) in getObligeeOptions" :key="index" @click="shyqrdmxmChange(item)" style="position: relative; z-index: 999;">
{{item.sqrxm}}
</van-cell>
</div>
<!-- <van-field-->
<!-- readonly-->
<!-- clickable-->
<!-- v-model="circulation.zjddm"-->
<!-- label="宅基地代码"-->
<!-- placeholder="请选择"-->
<!-- @click="remoteProposerMethod"-->
<!-- input-align="right"-->
<!-- right-icon="arrow-down" :rules="[{ required: true }]" required-->
<!-- />-->
<!-- <van-popup v-model="showzjddm" position="bottom">-->
<!-- <van-picker-->
<!-- show-toolbar-->
<!-- :columns="zjdDictionaries"-->
<!-- value-key="zjddm"-->
<!-- @confirm="onConfirmZjddm"-->
<!-- @cancel="showzjddm = false"-->
<!-- />-->
<!-- </van-popup>-->
<van-field
v-model="circulation.zjddm"
label="宅基地代码"
input-align="right"
:rules="[{ required: true }]"
required
>
<template #button>
<van-icon name="../../../static/images/22.png" color="#539FFD" size="20" @click="mapLook"/>
</template>
</van-field>
<van-field
readonly
clickable
v-model="xb"
label="性别"
placeholder="请选择"
@click="showxb = true"
input-align="right"
right-icon="arrow-down"
label-width="auto" :rules="[{ required: true }]" required
/>
<van-popup v-model="showxb" position="bottom">
<van-picker
show-toolbar
:columns="xbDictionaries"
@confirm="onConfirmXb"
@cancel="showxb = false"
/>
</van-popup>
<van-field v-model="circulation.sqrzjhm" label="申请人证件号码" placeholder="申请人证件号码" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<van-field v-model="circulation.lxdh" label="联系电话" placeholder="联系电话" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<field-select
v-model="circulation.gyqk"
label="共有情况"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择共有情况"
:rules="[{ required: true }]"
required
remote-url="/open/zdzh/list/house_yes_no"
:on-remote-response="'data'"
/>
<van-field v-model="circulation.hkszd" label="户口所在地" placeholder="户口所在地" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
</div>

<p class="main_title">拟申请退出宅基地</p>
<van-field v-model="circulation.tcmj" label="面积(㎡)" placeholder="请输入面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
<field-select
v-model="circulation.xz"
label="现状"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择现状"
:rules="[{ required: true }]"
required
remote-url="/open/zdzh/list/dsxz"
:on-remote-response="'data'"
/>
<van-field v-model="circulation.zjdszd" label="东至" placeholder="东至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<van-field v-model="circulation.zjdszn" label="南至" placeholder="南至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<van-field v-model="circulation.zjdszx" label="西至" placeholder="西至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<van-field v-model="circulation.zjdszb" label="北至" placeholder="北至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<field-select
v-model="circulation.dldm"
label="地类"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择现状"
:rules="[{ required: true }]"
required
remote-url="/open/zdzh/list/geographic_type"
:on-remote-response="'data'"
/>
<p class="main_title">退出宅基地情况</p>
<van-field v-model="circulation.tcmj" label="退出面积(㎡)" placeholder="请输入退出面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
<van-field v-model="circulation.jzmj" label="建筑面积(㎡)" placeholder="请输入建筑面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
<div class="main_box">
<van-field
readonly
clickable
v-model="tcqllx"
label="退出权利类型"
placeholder="请选择退出权利类型"
@click="showtcqllx = true"
input-align="right"
right-icon="arrow-down"
label-width="auto" :rules="[{ required: true }]" required
/>
<van-popup v-model="showtcqllx" position="bottom">
<van-picker
show-toolbar
:columns="tcqllxDictionaries"
@confirm="onConfirmTcqllx"
@cancel="showtcqllx = false"
/>
</van-popup>

<!--<van-field
readonly
clickable
v-model="tclx"
label="退出类型"
placeholder="请选择退出类型"
@click="showtclx = true"
input-align="right"
right-icon="arrow-down"
label-width="auto" :rules="[{ required: true }]" required
/>
<van-popup v-model="showtclx" position="bottom">
<van-picker
show-toolbar
:columns="tclxDictionaries"
@confirm="onConfirmTclx"
@cancel="showtclx = false"
/>
</van-popup>-->

<van-field
readonly
clickable
v-model="tcfs"
label="退出方式"
placeholder="请选择退出方式"
@click="showtcfs = true"
input-align="right"
right-icon="arrow-down"
label-width="auto" :rules="[{ required: true }]" required
/>
<van-popup v-model="showtcfs" position="bottom">
<van-picker
show-toolbar
:columns="tcfsDictionaries"
@confirm="onConfirmTcfs"
@cancel="showtcfs = false"
/>
</van-popup>
<van-field v-model="circulation.tcqszsh" label="权属证书号" placeholder="请输入权属证书号" input-align="right" label-width="auto" />
</div>
<p class="main_title">现居住情况</p>
<van-field v-model="circulation.xjzmj" label="建筑面积(㎡)" placeholder="请输入建筑面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
<van-field v-model="circulation.xqszsh" label="权属证书号" placeholder="请输入权属证书号" input-align="right" label-width="auto" />
<van-field v-model="circulation.xjzdd" label="居住地点" placeholder="请输入居住地点" input-align="right" label-width="auto" />
<p class="main_title">补偿信息</p>
<van-field v-model="circulation.bcje" label="宅基地补偿" placeholder="宅基地补偿" input-align="right" label-width="auto" type="number"/>
<van-field v-model="circulation.dmfzwbc" label="地面附着物补偿" placeholder="地面附着物补偿" input-align="right" label-width="auto" type="number"/>
<field-select
v-model="circulation.yctcfs"
label="退出类型"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择退出类型"
remote-url="/open/zdzh/list/yctcfs"
:on-remote-response="'data'"
/>
<field-select
v-model="circulation.bcfs"
label="补偿方式"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择退出类型"
remote-url="/open/zdzh/list/bcfs"
:on-remote-response="'data'"
/>
<field-date-picker
v-model="circulation.bcsj"
label="补偿时间"
placeholder="选择日期"
formatter="yyyy-MM-dd"
/>
<p class="main_title">其他</p>

<van-field v-model="circulation.sqly" label="申请理由" placeholder="请输入申请理由" input-align="right" label-width="auto"/>
<field-date-picker
v-model="circulation.sqrq"
label="申请日期"
placeholder="选择日期"
:rules="[{ required: true }]"
formatter="yyyy-MM-dd"
required
/>
<van-field v-model="circulation.jbrxm" label="经办人姓名" placeholder="请输入经办人姓名" input-align="right" label-width="auto"/>
<field-date-picker
v-model="circulation.pzrq"
label="批准日期"
placeholder="选择日期"
:rules="[{ required: true }]"
formatter="yyyy-MM-dd"
required
/>
<field-date-picker
v-model="circulation.barq"
label="备案日期"
placeholder="选择日期"
:rules="[{ required: true }]"
formatter="yyyy-MM-dd"
required
/>

<van-dialog v-model="mapShow" show-cancel-button>
<MapGisObtainTc ref="zjdProductResh" :shqrxm="circulation.sqrxm" :landStatus="landStatus" :deptId="sysFarmer.deptId" @closeMoule="closeMoule"></MapGisObtainTc>
</van-dialog>
<!-- 3组附件 -->
<van-popup
v-model="attachmentVisible"
closeable
position="top"
:style="{ height: '61.8%' }"
:close-on-click-overlay="proposerStatus == 1"
:lazy-render="false"
>
<van-tabs type="card" style="padding-top: 1.35rem;" color="#1D6FE9" :lazy-render="false" v-model="attachmentActive" ref="attachmentDialog">
<van-tab title="退出附件" key="0">
<home-apply-upload-comp
:business-type="houseApplyUploadComp.businessType"
:house-apply-status="houseApplyUploadComp.homeApplyStatus"
:process-key="houseApplyUploadComp.processKey"
:proposer-id="houseApplyUploadComp.proposerId"
:table-name="houseApplyUploadComp.tableName"
:readonly="houseApplyUploadComp.readonly"
:userName="sysFarmer.memberName"
:full="houseApplyUploadComp.full"
@uploadFinished="onUploadFinished"
>
</home-apply-upload-comp>
</van-tab>
</van-tabs>
</van-popup>
</van-form>
<van-goods-action style="z-index: 999;">
<van-goods-action-icon icon="label-o" text="附件" @click="openAttachment" color="#1D6FE9" />
<van-goods-action-button type="info" text="保存" @click="goSubmit(false)" />
<van-goods-action-button type="info" text="提交" @click="goSubmit(true)"/>
</van-goods-action>
</div>
</template>

<script>
import { getShyqrs,dyAdd,zyyctcApply,getByLyZjddm,listHomesteadnmfw} from "@/api/sunVillage_info/homestead/paidExit";
import HomeApplyUploadComp from "@/components/home/HomeApplyUploadComp";
import FieldSelect from "@/components/form/FieldSelect";
import FieldDatePicker from "@/components/form/FieldDatePicker";
import {formatDate} from "element-ui/src/utils/date-util.js";
import { } from "@/api/onlineHome/homestead/paidExit";
import {Notify} from "vant";
import MapGisObtainTc from "@/components/Map/MapGisObtainTc";
import Cookies from "js-cookie";
const PROPOSER_VIEW = 1;
// 工作流名称
const PROPOSER_STAGE_BASE_APPLY_ACTIVITY = 'home_usetc';
// 附件表名
const PROPOSER_STAGE_BASE_APPLY_TABLE = 't_homeuse_zyyctc';
// 其他
const PROPOSER_MODULE = 'home';
export default {
name: "paidExitAdd",
components: { MapGisObtainTc,FieldSelect,FieldDatePicker,HomeApplyUploadComp },
data() {
return {
tcqllxDictionaries:[],//退出权利类型
tclxDictionaries:[],//退出类型
tcfsDictionaries:[],//退出方式
yctcfsDictionaries:[],//有偿退出方式
xbDictionaries:[],//申请人证件类型
bcfsDictionaries:[],//补偿方式
zjdDictionaries:[],//宅基地代码
getObligeeOptions:[],//下拉框列表
sysFarmer:{deptId:this.$store.state.user.loginDeptId,memberName:this.$store.state.user.nickName},
tcqllx:'整体退出',
tclx:'有偿退出',
tcfs:'使用权',
yctcfs:'暂时退出',
xb:'男',
bcfs:'',
zjddm:'',
landStatus:"1",
showtcqllx: false,
showtclx: false,
showtcfs: false,
showyctcfs: false,
showxb: false,
showbcfs: false,
showzjddm: false,
showDropList: false,//是否显示下拉框
attachmentVisible:false,
active: 0,
// 表单意图
proposerStatus: PROPOSER_VIEW,
// 家庭成员tab
familyMembersActive: 0,
circulation:{
// 申请类型 1-宅基地退出
sqlx: '1',
xb:"1",
gyqk:"1",
xz:"1",
tcfs:"01",
jzmj:0.00,
tcqllx:"01",
xjzmj:0.00,
dldm:"10",
// 退出类型 01-有偿退出 02-无偿退出
tclx: '01',
},
// 当前附件tab
attachmentActive: 0,
// 申请附件树
houseApplyUploadComp: {
businessType: PROPOSER_MODULE,
proposerId: -1,
homeApplyStatus: "11",
processKey: PROPOSER_STAGE_BASE_APPLY_ACTIVITY,
tableName: PROPOSER_STAGE_BASE_APPLY_TABLE,
attachmentList: [],
readonly: false,
full: false,
},
mapShow: false,
};
},
created() {
this.getDictionaries();
},
methods: {
getDictionaries(){
//退出权利类型
this.houseGetDicts("tcqllx").then((res) => {
for(var i = 0 ; i < res.data.length ; i++){
this.tcqllxDictionaries.push({text:res.data[i].dictLabel,value:res.data[i].dictValue});
}
});
//退出类型
/*this.houseGetDicts("tclx").then((res) => {
for(var i = 0 ; i < res.data.length ; i++){
this.tclxDictionaries.push({text:res.data[i].dictLabel,value:res.data[i].dictValue});
}
});*/
//退出方式
this.houseGetDicts("tcfs").then((res) => {
for(var i = 0 ; i < res.data.length ; i++){
this.tcfsDictionaries.push({text:res.data[i].dictLabel,value:res.data[i].dictValue});
}
});
//申请人证件类型
this.houseGetDicts("sys_user_sex").then((res) => {
for(var i = 0 ; i < res.data.length ; i++){
this.xbDictionaries.push({text:res.data[i].dictLabel,value:res.data[i].dictValue});
}
});
//补偿方式
this.houseGetDicts("bcfs").then((res) => {
for(var i = 0 ; i < res.data.length ; i++){
this.bcfsDictionaries.push({text:res.data[i].dictLabel,value:res.data[i].dictValue});
}
});
this.$set(this.circulation, 'yctcfs', "1");
this.$set(this.circulation, 'bcfs', "01");
this.$set(this.circulation, 'bcje', 0.00);
this.$set(this.circulation, 'dmfzwbc', 0.00);
//宅基地代码
/*zjdzd().then(zjdRes => {
for( let i = 0 ; i < zjdRes.rows.length ; i++){
this.zjdDictionaries.push(zjdRes.rows[i].zjddm);
}
if(this.zjdDictionaries.length > 0)
this.onConfirmZjddm(this.zjdDictionaries[0]);
});*/
// getExitProposerDetail().then(res => {
// if (res.data) {
// let data = res.data;
// this.$set(this.circulation, 'sqrxm', data.shyqrdbxm);
// this.$set(this.circulation, 'sqrzjhm', data.shyqrdbzjhm);
// this.$set(this.circulation, 'sqrzjlx', data.shyqrdbzjlx);
// if(data.shyqrdbzjlx) {
// let val = this.zjlxDictionaries.find((x) => x.value == data.shyqrdbzjlx);
// if(val)
// this.zjlx = val.text;
// }
// }
// });
},
/*onConfirmZjddm(data){
console.log(data)
this.circulation.zjddm = data;
this.showzjddm = false;
getByZjddm({zjddm: data,}).then(qlrRes => {
let data = qlrRes.data;
console.log(data)
this.$set(this.circulation, 'sqrxm', data.shyqrdbxm);
this.$set(this.circulation, 'sqrzjhm', data.shyqrdbzjhm);
this.$set(this.circulation, 'sqrzjlx', data.shyqrdbzjlx);
if(data.shyqrdbzjlx)
{
let val = this.zjlxDictionaries.find((x) => x.value == data.shyqrdbzjlx);
if(val)
this.zjlx = val.text;
}
this.$forceUpdate();
});
},*/
// 初次申请草稿的附件上传
onUploadFinished(fileIdList) {
this.$set(this.circulation, "fileList", fileIdList);
},
onConfirmZjddm(data){
console.log(data);
this.showzjddm = false;
if (data) {
this.$set(this.circulation, 'zjddm', data.zjddm);
this.$set(this.circulation, 'sqrzjhm', data.shyqrdbzjhm);
this.$set(this.circulation, 'sqrzjlx', data.shyqrdbzjlx);
if(data.shyqrdbzjlx)
{
let val = this.zjlxDictionaries.find((x) => x.value == data.shyqrdbzjlx);
if(val)
this.zjlx = val.text;
}
}
// this.$forceUpdate();
},
onConfirmXb(data){
this.xb = data.text;
this.circulation.xb = data.value;
this.showxb = false;
},
onConfirmTcqllx(data){
this.tcqllx = data.text;
this.circulation.tcqllx = data.value;
this.showtcqllx = false;
},
/*onConfirmTclx(data){
this.tclx = data.text;
this.circulation.tclx = data.value;
this.showtclx = false;
},*/
onConfirmTcfs(data){
this.tcfs = data.text;
this.circulation.tcfs = data.value;
this.showtcfs = false;
},
onConfirmYctcfs(data){
this.yctcfs = data.text;
this.circulation.yctcfs = data.value;
this.showyctcfs = false;
},
onConfirmBcfs(data){
this.bcfs = data.text;
this.circulation.bcfs = data.value;
this.showbcfs = false;
},
goSubmit(submit){
console.log(this.circulation);
this.$refs._Form.validate().then(() => {
// 设置初始状态为草稿,0 代表草稿
this.$set(this.circulation, "auditStatus", '0');
dyAdd(this.circulation).then(response => {
if(response.code = 200){
if(submit)
{
zyyctcApply(response.data).then((resp) => {
this.$toast.success('提交成功');
this.back();
});
}
else {
this.$toast.success('保存成功');
this.back();
}
}
})
}).catch((e) => {
Notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
back() {
setTimeout(() => this.$router.back(-1), 1000)
},
remoteProposerMethod() {
this.showzjddm = true;
this.zjdDictionaries = [];
if (this.circulation.sqrxm) {
getShyqrs({shyqrdbxm:this.circulation.sqrxm}).then(response => {
this.zjdDictionaries = response.data.map(item => {
return {
zjddm: item.zjddm,
shyqrdbxm: item.shyqrdbxm,
shyqrdbzjlx: item.shyqrdbzjlx,
shyqrdbzjhm: item.shyqrdbzjhm
}
});
});
} else {
this.zjdDictionaries = [];
}
},
/** 模糊查询人员信息 */
remoteTransfereeMethod(query) {
if (query !== "") {
getShyqrs({shyqrdbxm:query,status:1}).then((response) => {
if (response.code == 200) {
this.getObligeeOptions = response.rows.map(function (item) {
return {
sqrxm:item.shyqrdbxm,
sqrxb:item.xb,
sqrzjhm:item.shyqrdbzjhm,
sqrnhdm:item.nhdm,
sqrzjlx:item.shyqrdbzjlx,
sqrdh:item.dh,
gyfs:item.gyfs,
dz:item.dz,
deptId:item.deptId,
deptName:item.deptName,
}
})
//设置模糊查询的下拉框和滚动条
if (this.getObligeeOptions.length > 0) {
this.showDropList = true; // div显示会阻挡下边的选择框和输入框,showDropList控制下拉框是否显示
//设置模糊查询的和滚动条
this.$nextTick(() => {
if (this.getObligeeOptions.length > 4) {
let height = document.getElementById("vanCell").offsetHeight * 4;
document.getElementById("dropList").style.height = height + "px";
document.getElementById("dropList").style.overflow = "scroll";
} else {
document.getElementById("dropList").style.height = "";
document.getElementById("dropList").style.overflow = "visible";
}
});
} else {
this.showDropList = false;
}
}
});
} else {
this.getObligeeOptions = [];
this.showDropList = false;
}
},
// 打开附件树
openAttachment() {
this.attachmentVisible = true;
if(this.attachmentActive == this.active)
this.$nextTick(() => {
this.$refs.attachmentDialog.scrollTo(this.active);
});
},
shyqrdmxmChange(val){
this.$set(this.circulation, "sqrxm", val.sqrxm);
this.$set(this.circulation, "deptId", val.deptId);
this.$set(this.circulation, "deptName", val.deptName);
this.$set(this.circulation, "sqrzjhm", val.sqrzjhm);
this.$set(this.circulation, "sqrzjlx", val.sqrzjlx);
this.$set(this.circulation, "sqrnhdm", val.sqrnhdm);
this.$set(this.circulation, "gyqk", val.gyfs);
this.$set(this.circulation, "xb", val.sqrxb);
this.$set(this.circulation, "lxdh", val.sqrdh);
this.$set(this.circulation, "hkszd", val.dz);
this.getObligeeOptions=[];
this.showDropList = false;
},
mapLook(){
this.mapShow = true;
setTimeout(() => {
this.$refs.zjdProductResh.drawingLyPaceCountryDarw();
},1000);
},
// 获取日期, yyyy-MM-dd
getDate(d) {
return formatDate(d ? d : new Date(), 'yyyy-MM-dd');
},
/** 查找地图中宅基地 */
closeMoule: function (data) {
this.circulation.zjddm = data;
let _this = this;
let handlerTime = this.getDate();
this.$set(this.circulation, "sqrq", handlerTime);
this.$set(this.circulation, "pzrq", handlerTime);
this.$set(this.circulation, "barq", handlerTime);
getByLyZjddm(data).then((response) => {
this.$set(this.circulation, "ntcmj", response.data.zdmj);
this.$set(this.circulation, "tcmj", response.data.zdmj);
this.$set(this.circulation, "zjdszd", response.data.zdszd);
this.$set(this.circulation, "zjdszn", response.data.zdszn);
this.$set(this.circulation, "zjdszx", response.data.zdszx);
this.$set(this.circulation, "zjdszb", response.data.zdszb);
this.$set(this.circulation, "theGeomJson", response.data.theGeomJson);
this.$set(this.circulation, "tcqszsh", response.data.zsh);
listHomesteadnmfw({zjddm: data}).then((res) => {
res.rows.map(function(item){
_this.$set(_this.circulation, "jzmj", Number(_this.circulation.jzmj) + Number(item.jzmj));
_this.$set(_this.circulation, "xjzmj", Number(_this.circulation.xjzmj) + Number(item.jzmj));
});
});
// const baseImgUrl = this.$store.getters.baseRoutingUrl;
if(response.data.zdt != null && response.data.zdt !== ""){
this.$set(this.form, "xzzp", response.rows[0].zdt);
}
});
},
},
}
</script>

<style scoped lang="scss">
.app-container {
padding-bottom: 2%;
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
margin-bottom: 2%;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
}
.main_title{
font-size: 0.4rem;
color: #1D6FE9;
margin: 0.2rem 6%;
position: relative;
}
.main_box{
width: 96%;
margin: 0 auto;
border-radius: 6px;
box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
overflow: hidden;
background-color: #FFF;
}
.submitButton{
width: 80%;
margin: 0 auto;
background-color: #1D6FE9;

}
/*#dropList::-webkit-scrollbar {*/
/* !*滚动条整体样式*!*/
/* width: 5px; !*高宽分别对应横竖滚动条的尺寸*!*/
/* height: 1px;*/
/*}*/
/*#dropList::-webkit-scrollbar-thumb {*/
/* !*滚动条里面小方块*!*/
/* border-radius: 10px;*/
/* background: #fff;*/
/* box-shadow: inset 0 0 5px rgb(0, 122, 204);*/
/*}*/
/*#dropList::-webkit-scrollbar-track {*/
/* border-radius: 10px;*/
/* background: #fff;*/
/* !*滚动条里面轨道*!*/
/* box-shadow: inset 0 0 5px rgba( 0, 0, 0, .1);*/
/*}*/
</style>

+ 1
- 3
src/views/yinnong/homestead/paidExit/paidExitDetail.vue 查看文件

@@ -798,10 +798,9 @@


<style scoped lang="scss"> <style scoped lang="scss">
.app-container { .app-container {
padding-bottom: 2%;
.header_main{ .header_main{
height: 116px; height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head_green.png') no-repeat;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
position: fixed; position: fixed;
top: 0; top: 0;
@@ -812,7 +811,6 @@
text-align: center; text-align: center;
color: #fff; color: #fff;
position: relative; position: relative;
margin-bottom: 2%;
.return_btn{ .return_btn{
width: 24px; width: 24px;
height: 43.2px; height: 43.2px;


+ 21
- 18
src/views/yinnong/homestead/paidExit/paidExitList.vue 查看文件

@@ -1,23 +1,10 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- <van-nav-bar-->
<!-- left-arrow-->
<!-- fixed-->
<!-- placeholder-->
<!-- @click-left="$router.back(-1)"-->
<!-- @click-right="goAdd"-->
<!-- >-->
<!-- <template #title>-->
<!-- <p style="font-weight: bold;">有偿退出</p>-->
<!-- </template>-->
<!-- <template #right>-->
<!-- <van-icon name="add" size="18" />-->
<!-- </template>-->
<!-- </van-nav-bar>-->


<div class="header_main"> <div class="header_main">
有偿退出 有偿退出
<div class="return_btn" @click="onClickLeft"></div> <div class="return_btn" @click="onClickLeft"></div>
<div class="add_btn" @click="goAdd"></div>
</div> </div>


<van-list <van-list
@@ -27,7 +14,7 @@
@load="getList" @load="getList"
> >
<van-swipe-cell v-for="(item,index) in applicationList" :key="index"> <van-swipe-cell v-for="(item,index) in applicationList" :key="index">
<van-cell :title="item.zjddm" :value="item.auditStatus" center :to="{name:'paidExitDetail', query: {id:item.id}}" >
<van-cell :title="item.zjddm" :value="selectDictLabel(auditStatus, item.auditStatus)" center :to="{name:'paidExitDetail', query: {id:item.id}}" >
<template #icon> <template #icon>
<van-icon name="../../../static/images/onlineHome/icon_zjd3.png" size="30" color="#539FFD" style="margin-right: 10px;" /> <van-icon name="../../../static/images/onlineHome/icon_zjd3.png" size="30" color="#539FFD" style="margin-right: 10px;" />
</template> </template>
@@ -35,6 +22,19 @@
<p><b style="color: #539FFD;">{{item.tcfs}}</b><i style="margin-right: 0.5rem;"></i><b style="color: #333333;">{{item.sqrxm}}</b><i style="margin-right: 0.5rem;"></i>{{item.tcmj}}㎡</p> <p><b style="color: #539FFD;">{{item.tcfs}}</b><i style="margin-right: 0.5rem;"></i><b style="color: #333333;">{{item.sqrxm}}</b><i style="margin-right: 0.5rem;"></i>{{item.tcmj}}㎡</p>
</template> </template>
</van-cell> </van-cell>
<template #right>
<van-row>
<van-col>
<van-button square text="修改" v-if="item.auditStatus=='0'" :to="{name:'homesteadPaidExitModify', query: {id:item.id}}" type="info" class="delete-button" />
</van-col>
<van-col>
<van-button square text="提交" type="primary" v-if="item.auditStatus=='0'" class="delete-button" @click="goSubmit(item)" />
</van-col>
<van-col>
<van-button square text="删除" v-if="item.auditStatus=='0'" @click="deleteList(item.id,index)" type="danger" class="delete-button" />
</van-col>
</van-row>
</template>
</van-swipe-cell> </van-swipe-cell>
</van-list> </van-list>
</div> </div>
@@ -91,6 +91,9 @@
}); });
}, },
methods: { methods: {
goAdd(){
window.location = '/homesteadPaidExitAdd';
},
getList(){ getList(){
setTimeout(() => { setTimeout(() => {
this.deptId = this.$store.state.user.loginDeptId; this.deptId = this.$store.state.user.loginDeptId;
@@ -100,9 +103,9 @@
response.rows[i].tclx = this.selectDictLabel(this.tcqllxStatus, response.rows[i].tclx) response.rows[i].tclx = this.selectDictLabel(this.tcqllxStatus, response.rows[i].tclx)
response.rows[i].tclx = this.selectDictLabel(this.tclxStatus, response.rows[i].tclx) response.rows[i].tclx = this.selectDictLabel(this.tclxStatus, response.rows[i].tclx)
response.rows[i].tcfs = this.selectDictLabel(this.tcfsStatus, response.rows[i].tcfs) response.rows[i].tcfs = this.selectDictLabel(this.tcfsStatus, response.rows[i].tcfs)
response.rows[i].auditStatus = this.selectDictLabel(this.auditStatus, response.rows[i].auditStatus)
this.applicationList.push(response.rows[i]); this.applicationList.push(response.rows[i]);
} }
console.info(this.applicationList);
if(this.applicationList.length >= response.total){ if(this.applicationList.length >= response.total){
this.finished = true; this.finished = true;
return; return;
@@ -138,7 +141,7 @@
if (response.code = 200) { if (response.code = 200) {
this.$toast.success('提交成功'); this.$toast.success('提交成功');
setTimeout(function () { setTimeout(function () {
window.location.replace("/sunVillage_info/paidExit/paidExitList")
window.location.replace("/paidExit")
}, 1000) }, 1000)
} }
}) })
@@ -151,7 +154,7 @@
.app-container { .app-container {
.header_main{ .header_main{
height: 116px; height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head_green.png') no-repeat;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
position: fixed; position: fixed;
top: 0; top: 0;


+ 634
- 0
src/views/yinnong/homestead/paidExit/paidExitModify.vue 查看文件

@@ -0,0 +1,634 @@
<template>
<div class="app-container">
<!-- <van-nav-bar-->
<!-- left-arrow-->
<!-- fixed-->
<!-- placeholder-->
<!-- @click-left="$router.back(-1)"-->
<!-- >-->
<!-- <template #title>-->
<!-- <p style="font-weight: bold;">修改有偿退出</p>-->
<!-- </template>-->
<!-- </van-nav-bar>-->

<div class="header_main">
修改有偿退出
<div class="return_btn" @click="onClickLeft"></div>
<!-- <div class="add_btn" @click="goAdd"></div>-->
</div>

<van-form ref="_Form">
<div class="main_box">
<!-- <van-field v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>-->
<van-field v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required @input="remoteTransfereeMethod" />
<div id="dropList" v-show="showDropList" style="width: 92vw; position: absolute; z-index: 99; left: 50%; margin-left: -46vw; border: 1px solid #E2E0E0;" >
<van-cell id="vanCell" v-for="(item, index) in getObligeeOptions" :key="index" @click="shyqrdmxmChange(item)" style="position: relative; z-index: 999;">
{{item.sqrxm}}
</van-cell>
</div>
<!-- <van-field-->
<!-- readonly-->
<!-- clickable-->
<!-- v-model="circulation.zjddm"-->
<!-- label="宅基地代码"-->
<!-- placeholder="请选择"-->
<!-- @click="remoteProposerMethod"-->
<!-- input-align="right"-->
<!-- right-icon="arrow-down" :rules="[{ required: true }]" required-->
<!-- />-->
<!-- <van-popup v-model="showzjddm" position="bottom">-->
<!-- <van-picker-->
<!-- show-toolbar-->
<!-- :columns="zjdDictionaries"-->
<!-- value-key="zjddm"-->
<!-- @confirm="onConfirmZjddm"-->
<!-- @cancel="showzjddm = false"-->
<!-- />-->
<!-- </van-popup>-->
<van-field
v-model="circulation.zjddm"
label="宅基地代码"
input-align="right"
:rules="[{ required: true }]"
required
>
<template #button>
<van-icon name="../../../static/images/22.png" color="#539FFD" size="20" @click="mapLook"/>
</template>
</van-field>
<field-select
v-model="circulation.xb"
label="性別"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择现状"
:rules="[{ required: true }]"
required
remote-url="/open/zdzh/list/sys_user_sex"
:on-remote-response="'data'"
/>

<van-field v-model="circulation.sqrzjhm" label="申请人证件号码" placeholder="申请人证件号码" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<van-field v-model="circulation.lxdh" label="联系电话" placeholder="联系电话" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<field-select
v-model="circulation.gyqk"
label="共有情况"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择共有情况"
:rules="[{ required: true }]"
required
remote-url="/open/zdzh/list/house_yes_no"
:on-remote-response="'data'"
/>
<van-field v-model="circulation.hkszd" label="户口所在地" placeholder="户口所在地" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
</div>
<p class="main_title">拟申请退出宅基地</p>
<van-field v-model="circulation.tcmj" label="面积(㎡)" placeholder="请输入面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
<field-select
v-model="circulation.xz"
label="现状"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择现状"
:rules="[{ required: true }]"
required
remote-url="/open/zdzh/list/dsxz"
:on-remote-response="'data'"
/>
<van-field v-model="circulation.zjdszd" label="东至" placeholder="东至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<van-field v-model="circulation.zjdszn" label="南至" placeholder="南至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<van-field v-model="circulation.zjdszx" label="西至" placeholder="西至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<van-field v-model="circulation.zjdszb" label="北至" placeholder="北至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
<field-select
v-model="circulation.dldm"
label="地类"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择现状"
:rules="[{ required: true }]"
required
remote-url="/open/zdzh/list/geographic_type"
:on-remote-response="'data'"
/>
<p class="main_title">退出宅基地情况</p>
<van-field v-model="circulation.tcmj" label="退出面积(㎡)" placeholder="请输入退出面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
<van-field v-model="circulation.jzmj" label="建筑面积(㎡)" placeholder="请输入建筑面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
<div class="main_box">
<van-field
readonly
clickable
v-model="tcqllx"
label="退出权利类型"
placeholder="请选择退出权利类型"
@click="showtcqllx = true"
input-align="right"
right-icon="arrow-down"
label-width="auto" :rules="[{ required: true }]" required
/>
<van-popup v-model="showtcqllx" position="bottom">
<van-picker
show-toolbar
:columns="tcqllxDictionaries"
@confirm="onConfirmTcqllx"
@cancel="showtcqllx = false"
/>
</van-popup>

<!--<van-field
readonly
clickable
v-model="tclx"
label="退出类型"
placeholder="请选择退出类型"
@click="showtclx = true"
input-align="right"
right-icon="arrow-down"
label-width="auto" :rules="[{ required: true }]" required
/>
<van-popup v-model="showtclx" position="bottom">
<van-picker
show-toolbar
:columns="tclxDictionaries"
@confirm="onConfirmTclx"
@cancel="showtclx = false"
/>
</van-popup>-->

<van-field
readonly
clickable
v-model="tcfs"
label="退出方式"
placeholder="请选择退出方式"
@click="showtcfs = true"
input-align="right"
right-icon="arrow-down"
label-width="auto" :rules="[{ required: true }]" required
/>
<van-popup v-model="showtcfs" position="bottom">
<van-picker
show-toolbar
:columns="tcfsDictionaries"
@confirm="onConfirmTcfs"
@cancel="showtcfs = false"
/>
</van-popup>

<van-field v-model="circulation.tcqszsh" label="权属证书号" placeholder="请输入权属证书号" input-align="right" label-width="auto" />
</div>
<p class="main_title">现居住情况</p>
<van-field v-model="circulation.xjzmj" label="建筑面积(㎡)" placeholder="请输入建筑面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
<van-field v-model="circulation.xqszsh" label="权属证书号" placeholder="请输入权属证书号" input-align="right" label-width="auto" />
<van-field v-model="circulation.xjzdd" label="居住地点" placeholder="请输入居住地点" input-align="right" label-width="auto" />
<p class="main_title">补偿信息</p>
<van-field v-model="circulation.bcje" label="宅基地补偿" placeholder="宅基地补偿" input-align="right" label-width="auto" type="number"/>
<van-field v-model="circulation.dmfzwbc" label="地面附着物补偿" placeholder="地面附着物补偿" input-align="right" label-width="auto" type="number"/>
<field-select
v-model="circulation.yctcfs"
label="退出类型"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择退出类型"
remote-url="/open/zdzh/list/yctcfs"
:on-remote-response="'data'"
/>
<field-select
v-model="circulation.bcfs"
label="补偿方式"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择退出类型"
remote-url="/open/zdzh/list/bcfs"
:on-remote-response="'data'"
/>
<field-date-picker
v-model="circulation.bcsj"
label="补偿时间"
placeholder="选择日期"
formatter="yyyy-MM-dd"
/>
<p class="main_title">其他</p>

<van-field v-model="circulation.sqly" label="申请理由" placeholder="请输入申请理由" input-align="right" label-width="auto"/>
<field-date-picker
v-model="circulation.sqrq"
label="申请日期"
placeholder="选择日期"
:rules="[{ required: true }]"
formatter="yyyy-MM-dd"
required
/>
<van-field v-model="circulation.jbrxm" label="经办人姓名" placeholder="请输入经办人姓名" input-align="right" label-width="auto"/>
<field-date-picker
v-model="circulation.pzrq"
label="批准日期"
placeholder="选择日期"
:rules="[{ required: true }]"
formatter="yyyy-MM-dd"
required
/>
<field-date-picker
v-model="circulation.barq"
label="备案日期"
placeholder="选择日期"
:rules="[{ required: true }]"
formatter="yyyy-MM-dd"
required
/>

<van-dialog v-model="mapShow" show-cancel-button>
<MapGisObtainTc ref="zjdProductResh" :shqrxm="circulation.sqrxm" :landStatus="landStatus" :deptId="sysFarmer.deptId" @closeMoule="closeMoule"></MapGisObtainTc>
</van-dialog>
<!-- 3组附件 -->
<van-popup
v-model="attachmentVisible"
closeable
position="top"
:style="{ height: '61.8%' }"
:close-on-click-overlay="proposerStatus == 1"
:lazy-render="false"
>
<van-tabs type="card" style="padding-top: 1.35rem;" color="#1D6FE9" :lazy-render="false" v-model="attachmentActive" ref="attachmentDialog">
<van-tab title="退出附件" key="0">
<home-apply-upload-comp
:business-type="houseApplyUploadComp.businessType"
:house-apply-status="houseApplyUploadComp.homeApplyStatus"
:process-key="houseApplyUploadComp.processKey"
:proposer-id="houseApplyUploadComp.proposerId"
:table-name="houseApplyUploadComp.tableName"
:readonly="houseApplyUploadComp.readonly"
:userName="sysFarmer.memberName"
:full="houseApplyUploadComp.full"
@uploadFinished="onUploadFinished"
>
</home-apply-upload-comp>
</van-tab>
</van-tabs>
</van-popup>
</van-form>
<van-goods-action style="z-index: 999;">
<van-goods-action-icon icon="label-o" text="附件" @click="openAttachment" color="#1D6FE9" />
<van-goods-action-button type="info" text="保存" @click="goEdit" />
<van-goods-action-button type="info" text="提交" @click="goSubmit"/>
</van-goods-action>
</div>
</template>

<script>
import { getZyyctc,getShyqrs,zyyctcEdit,zyyctcApply,getByLyZjddm,listHomesteadnmfw} from "@/api/sunVillage_info/homestead/paidExit";
import HomeApplyUploadComp from "@/components/home/HomeApplyUploadComp";
import FieldSelect from "@/components/form/FieldSelect";
import FieldDatePicker from "@/components/form/FieldDatePicker";
import {formatDate} from "element-ui/src/utils/date-util.js";
import { } from "@/api/onlineHome/homestead/paidExit";
import {Notify} from "vant";
import MapGisObtainTc from "@/components/Map/MapGisObtainTc";
import Cookies from "js-cookie";
const PROPOSER_VIEW = 1;
// 工作流名称
const PROPOSER_STAGE_BASE_APPLY_ACTIVITY = 'home_usetc';
// 附件表名
const PROPOSER_STAGE_BASE_APPLY_TABLE = 't_homeuse_zyyctc';
// 其他
const PROPOSER_MODULE = 'home';
export default {
name: "paidExitModify",
components: { MapGisObtainTc,FieldSelect,FieldDatePicker,HomeApplyUploadComp },
data() {
return {
tcqllxDictionaries:[],//退出权利类型
tclxDictionaries:[],//退出类型
tcfsDictionaries:[],//退出方式
xbDictionaries:[],//申请人证件类型
zjlxDictionaries:[],
bcfsDictionaries:[],//补偿方式
zjdDictionaries:[],//宅基地代码
getObligeeOptions:[],//下拉框列表
sysFarmer:{deptId:this.$store.state.user.loginDeptId,memberName:this.$store.state.user.nickName},
tcqllx:'',
tclx:'',
tcfs:'',
xb:'',
bcfs:'',
zjddm:'',
landStatus:"1",
showtcqllx: false,
showtclx: false,
showtcfs: false,
showxb: false,
showbcfs: false,
showzjddm: false,
showDropList: false,//是否显示下拉框
mapShow: false,
attachmentVisible:false,
active: 0,
// 表单意图
proposerStatus: PROPOSER_VIEW,
circulation:{},
// 当前附件tab
attachmentActive: 0,
// 申请附件树
houseApplyUploadComp: {
businessType: PROPOSER_MODULE,
proposerId: this.$route.query.id,
homeApplyStatus: "11",
processKey: PROPOSER_STAGE_BASE_APPLY_ACTIVITY,
tableName: PROPOSER_STAGE_BASE_APPLY_TABLE,
attachmentList: [],
readonly: false,
full: false,
},
};
},
created() {
this.getDictionaries();
},
methods: {
getDictionaries(){
getZyyctc(this.$route.query.id).then(response => {
//退出权利类型
this.houseGetDicts("tcqllx").then((res) => {
for (var i = 0; i < res.data.length; i++) {
this.tcqllxDictionaries.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
}
this.tcqllx = this.selectDictLabel(res.data, response.data.tcqllx);
});
//退出方式
this.houseGetDicts("tcfs").then((res) => {
for (var i = 0; i < res.data.length; i++) {
this.tcfsDictionaries.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
}
this.tcfs = this.selectDictLabel(res.data, response.data.tcfs);
});
//申请人证件类型
this.houseGetDicts("zjlx").then((res) => {
for (var i = 0; i < res.data.length; i++) {
this.zjlxDictionaries.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
}
this.zjlx = this.selectDictLabel(res.data, response.data.sqrzjlx);
});

this.circulation = response.data;
console.info(this.circulation);
});
},
onConfirmZjddm(data){
console.log(data);
this.showzjddm = false;
if (data) {
this.$set(this.circulation, 'zjddm', data.zjddm);
this.$set(this.circulation, 'sqrzjhm', data.shyqrdbzjhm);
this.$set(this.circulation, 'sqrzjlx', data.shyqrdbzjlx);
if(data.shyqrdbzjlx)
{
let val = this.zjlxDictionaries.find((x) => x.value == data.shyqrdbzjlx);
if(val)
this.zjlx = val.text;
}
}
// this.$forceUpdate();
},
onConfirmXb(data){
this.xb = data.text;
this.circulation.xb = data.value;
this.showxb = false;
},
// 初次申请草稿的附件上传
onUploadFinished(fileIdList) {
this.$set(this.circulation, "fileList", fileIdList);
},
onConfirmTcqllx(data){
this.tcqllx = data.text;
this.circulation.tcqllx = data.value;
this.showtcqllx = false;
},
/*onConfirmTclx(data){
this.tclx = data.text;
this.circulation.tclx = data.value;
this.showtclx = false;
},*/
onConfirmTcfs(data){
this.tcfs = data.text;
this.circulation.tcfs = data.value;
this.showtcfs = false;
},
onConfirmBcfs(data){
this.bcfs = data.text;
this.circulation.bcfs = data.value;
this.showbcfs = false;
},
goEdit(){
console.log(this.circulation);
this.$refs._Form.validate().then(() => {
zyyctcEdit(this.circulation).then(response => {
if(response.code = 200){
this.$toast.success('保存成功');
this.$router.back(-1);
}
})
}).catch((e) => {
Notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
goSubmit(){
this.$refs._Form.validate().then(() => {
this.$set(this.circulation, 'updateBy', this.sysFarmer.memberName);
zyyctcEdit(this.circulation).then(response => {
zyyctcApply(this.$route.query.id).then(response => {
if(response.code = 200){
this.$toast.success('提交成功');
setTimeout(function(){
this.$router.back(-1);
},1000)
}
});
});
}).catch((e) => {
Notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
remoteProposerMethod() {
this.showzjddm = true;
this.zjdDictionaries = [];
if (this.circulation.sqrxm) {
getShyqrs({shyqrdbxm:this.circulation.sqrxm}).then(response => {
this.zjdDictionaries = response.data.map(item => {
return {
zjddm: item.zjddm,
shyqrdbxm: item.shyqrdbxm,
shyqrdbzjlx: item.shyqrdbzjlx,
shyqrdbzjhm: item.shyqrdbzjhm
}
});
});
} else {
this.zjdDictionaries = [];
}
},
// 打开附件树
openAttachment() {
this.attachmentVisible = true;
if(this.attachmentActive == this.active)
this.$nextTick(() => {
this.$refs.attachmentDialog.scrollTo(this.active);
});
},
/** 模糊查询人员信息 */
remoteTransfereeMethod(query) {
if (query !== "") {
getShyqrs({shyqrdbxm:query,status:1}).then((response) => {
if (response.code == 200) {
this.getObligeeOptions = response.rows.map(function (item) {
return {
sqrxm:item.shyqrdbxm,
sqrxb:item.xb,
sqrzjhm:item.shyqrdbzjhm,
sqrzjlx:item.shyqrdbzjlx,
sqrdh:item.dh,
gyfs:item.gyfs,
dz:item.dz,
deptId:item.deptId,
deptName:item.deptName,
}
})
//设置模糊查询的下拉框和滚动条
if (this.getObligeeOptions.length > 0) {
this.showDropList = true; // div显示会阻挡下边的选择框和输入框,showDropList控制下拉框是否显示
//设置模糊查询的和滚动条
this.$nextTick(() => {
if (this.getObligeeOptions.length > 4) {
let height = document.getElementById("vanCell").offsetHeight * 4;
document.getElementById("dropList").style.height = height + "px";
document.getElementById("dropList").style.overflow = "scroll";
} else {
document.getElementById("dropList").style.height = "";
document.getElementById("dropList").style.overflow = "visible";
}
});
} else {
this.showDropList = false;
}
}
});
} else {
this.getObligeeOptions = [];
this.showDropList = false;
}
},
shyqrdmxmChange(val){
console.info(val);
this.$set(this.circulation, "sqrxm", val.sqrxm);
this.$set(this.circulation, "deptId", val.deptId);
this.$set(this.circulation, "deptName", val.deptId);
this.$set(this.circulation, "sqrzjhm", val.sqrzjhm);
this.$set(this.circulation, "sqrzjlx", val.sqrzjlx);
this.$set(this.circulation, "gyqk", val.gyfs);
this.$set(this.circulation, "xb", val.sqrxb);
this.$set(this.circulation, "lxdh", val.sqrdh);
this.$set(this.circulation, "hkszd", val.dz);
this.getObligeeOptions=[];
this.showDropList = false;
},
// 获取日期, yyyy-MM-dd
getDate(d) {
return formatDate(d ? d : new Date(), 'yyyy-MM-dd');
},
/** 查找地图中宅基地 */
closeMoule: function (data) {
this.circulation.zjddm = data;
let _this = this;
let handlerTime = this.getDate();
this.$set(this.circulation, "sqrq", handlerTime);
this.$set(this.circulation, "pzrq", handlerTime);
this.$set(this.circulation, "barq", handlerTime);
getByLyZjddm(data).then((response) => {
this.$set(this.circulation, "ntcmj", response.data.zdmj);
this.$set(this.circulation, "tcmj", response.data.zdmj);
this.$set(this.circulation, "zjdszd", response.data.zdszd);
this.$set(this.circulation, "zjdszn", response.data.zdszn);
this.$set(this.circulation, "zjdszx", response.data.zdszx);
this.$set(this.circulation, "zjdszb", response.data.zdszb);
this.$set(this.circulation, "theGeomJson", response.data.theGeomJson);
this.$set(this.circulation, "tcqszsh", response.data.zsh);
listHomesteadnmfw({zjddm: data}).then((response) => {
response.rows.map(function(item){
_this.$set(_this.circulation, "jzmj", Number(_this.circulation.jzmj) + Number(item.jzmj));
_this.$set(_this.circulation, "xjzmj", Number(_this.circulation.xjzmj) + Number(item.jzmj));
});
});
// const baseImgUrl = this.$store.getters.baseRoutingUrl;
if(response.rows[0].zdt != null && response.rows[0].zdt !== ""){
this.$set(this.form, "xzzp", response.rows[0].zdt);
}
});
},
mapLook(){
this.mapShow = true;
setTimeout(() => {
this.$refs.zjdProductResh.drawingLyPaceCountryDarw();
},1000);
},
},

}
</script>

<style scoped lang="scss">
.app-container {
padding-bottom: 2%;
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
margin-bottom: 2%;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
}
.main_title{
font-size: 0.4rem;
color: #1D6FE9;
margin: 0.2rem 6%;
position: relative;
}
.main_box{
width: 96%;
margin: 0 auto;
border-radius: 6px;
box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
overflow: hidden;
background-color: #FFF;
}
.submitButton{
width: 80%;
margin: 0 auto;
background-color: #1D6FE9;

}
</style>

+ 36
- 11
src/views/yinnong/homestead/paidUtilize/paidUtilizeAdd.vue 查看文件

@@ -1,15 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<van-nav-bar
left-arrow
fixed
placeholder
@click-left="$router.back(-1)"
>
<template #title>
<p style="font-weight: bold;">添加有偿使用</p>
</template>
</van-nav-bar>
<div class="header_main">
有偿使用
<div class="return_btn" @click="onClickLeft"></div>
</div>
<div class="main_box"> <div class="main_box">
<van-field v-model="circulation.shyqrdbxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required @input="remoteTransfereeMethod" /> <van-field v-model="circulation.shyqrdbxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required @input="remoteTransfereeMethod" />
<div id="dropList" v-show="showDropList" style="width: 92vw; position: absolute; z-index: 99; left: 50%; margin-left: -46vw; border: 1px solid #E2E0E0;" > <div id="dropList" v-show="showDropList" style="width: 92vw; position: absolute; z-index: 99; left: 50%; margin-left: -46vw; border: 1px solid #E2E0E0;" >
@@ -410,7 +404,38 @@


<style scoped lang="scss"> <style scoped lang="scss">
.app-container { .app-container {
padding: 2% 0;
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
} }
.main_title{ .main_title{
font-size: 0.4rem; font-size: 0.4rem;


+ 36
- 11
src/views/yinnong/homestead/paidUtilize/paidUtilizeDteail.vue 查看文件

@@ -1,15 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<van-nav-bar
left-arrow
fixed
placeholder
@click-left="$router.back(-1)"
>
<template #title>
<p style="font-weight: bold;">有偿使用</p>
</template>
</van-nav-bar>
<div class="header_main">
有偿使用
<div class="return_btn" @click="onClickLeft"></div>
</div>
<div class="main_box"> <div class="main_box">
<van-field <van-field
readonly readonly
@@ -228,7 +222,38 @@


<style scoped lang="scss"> <style scoped lang="scss">
.app-container { .app-container {
padding: 2% 0;
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
} }
.main_title{ .main_title{
font-size: 0.4rem; font-size: 0.4rem;


+ 37
- 15
src/views/yinnong/homestead/paidUtilize/paidUtilizeList.vue 查看文件

@@ -1,19 +1,10 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<van-nav-bar
left-arrow
fixed
placeholder
@click-left="$router.back(-1)"
@click-right="goAdd"
>
<template #title>
<p style="font-weight: bold;">有偿使用</p>
</template>
<template #right>
<van-icon name="add" size="18" />
</template>
</van-nav-bar>
<div class="header_main">
有偿使用
<div class="return_btn" @click="onClickLeft"></div>
<div class="add_btn" @click="goAdd"></div>
</div>
<van-list <van-list
v-model="loading" v-model="loading"
:finished="finished" :finished="finished"
@@ -134,7 +125,38 @@


<style scoped lang="scss"> <style scoped lang="scss">
.app-container { .app-container {
padding: 0.2rem 3%;
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
} }
/deep/.van-cell__title{ /deep/.van-cell__title{
flex: 0.7; flex: 0.7;


+ 36
- 11
src/views/yinnong/homestead/paidUtilize/paidUtilizeModify.vue 查看文件

@@ -1,15 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<van-nav-bar
left-arrow
fixed
placeholder
@click-left="$router.back(-1)"
>
<template #title>
<p style="font-weight: bold;">修改有偿使用</p>
</template>
</van-nav-bar>
<div class="header_main">
有偿使用
<div class="return_btn" @click="onClickLeft"></div>
</div>
<div class="main_box"> <div class="main_box">
<van-field readonly v-model="circulation.shyqrdbxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required @input="remoteTransfereeMethod" /> <van-field readonly v-model="circulation.shyqrdbxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required @input="remoteTransfereeMethod" />
<div id="dropList" v-show="showDropList" style="width: 92vw; position: absolute; z-index: 99; left: 50%; margin-left: -46vw; border: 1px solid #E2E0E0;" > <div id="dropList" v-show="showDropList" style="width: 92vw; position: absolute; z-index: 99; left: 50%; margin-left: -46vw; border: 1px solid #E2E0E0;" >
@@ -420,7 +414,38 @@


<style scoped lang="scss"> <style scoped lang="scss">
.app-container { .app-container {
padding: 2% 0;
.header_main{
height: 116px;
background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
font-size: 36px;
line-height: 116px;
text-align: center;
color: #fff;
position: relative;
.return_btn{
width: 24px;
height: 43.2px;
background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
background-size: 20px 36px;
position: absolute;
left: 38px;
top: 36px;
}
.add_btn{
width: 56.4px;
height: 40.8px;
background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
background-size: 47px 34px;
position: absolute;
right: 38px;
top: 36px;
}
}
} }
.main_title{ .main_title{
font-size: 0.4rem; font-size: 0.4rem;


Loading…
取消
儲存