Compare commits

...

66 Commits

Author SHA1 Message Date
  张泽亮 a5ef7f65e6 bug 待办不分系统 1 year ago
  张泽亮 6a95515f35 bug deptId 初始化 1 year ago
  庞东旭 2d86ba3d71 task 银农待办优化 1 year ago
  庞东旭 848d7e0c8f Merge branch 'rongxin_dev' of http://218.59.175.43:3000/zhangzl/nsgk_mobile into rongxin_dev 1 year ago
  庞东旭 b739a251aa task 乳山产交图标 1 year ago
  庞东旭 922f6bf8b7 task 银农待办优化 1 year ago
  QI_YUJIE f9d0eee602 task 银农直联 资金申请审批bug修改 1 year ago
  QI_YUJIE feea9dfd47 task 银农直联 资金申请审批查看附件 1 year ago
  张泽亮 a39865b2fe 去掉老流程的方法 ,没有同步升级手机端!!! 1 year ago
  QI_YUJIE 85dc13c1e2 task 银农直联 资金审批申请 1 year ago
  yangfuda 8c5b3d6d41 银农:审批历史查看问题修复 1 year ago
  yangfuda de3a5ceaa9 银农:审批流程入参bug修复 1 year ago
  张泽亮 9c075ecbad 审批流程入参bug修复 1 year ago
  yangfuda 69ec4c89d8 Merge remote-tracking branch 'origin/rongxin_dev' into rongxin_dev 1 year ago
  yangfuda cf92eddc73 银农:完善待办已办 1 year ago
  张泽亮 06c293a7bc 文案 1 year ago
  庞东旭 a61c072392 task 乳山产交 价格指数 1 year ago
  庞东旭 530c35fcc0 Merge branch 'rongxin_dev' of http://218.59.175.43:3000/zhangzl/nsgk_mobile into rongxin_dev 1 year ago
  庞东旭 24936d6de4 task 银农登录 页面适配优化 1 year ago
  yangfuda ef2ee0dda7 Merge remote-tracking branch 'origin/rongxin_dev' into rongxin_dev 1 year ago
  yangfuda efc1eeded4 银农:申请单中显示付款账户余额 1 year ago
  庞东旭 ce42cda755 task 阳光村务 惠农资金公开 1 year ago
  庞东旭 6d5fecb9d0 task 乳山产交 倒计时定时器清理处理 1 year ago
  庞东旭 dc2ddc4679 task 乳山产交 报名用户审核字段判断 1 year ago
  zhaodengke fec99c5922 Task 资产地图 1 year ago
  庞东旭 860b3bee03 Merge branch 'rongxin_dev' of http://218.59.175.43:3000/zhangzl/nsgk_mobile into rongxin_dev 1 year ago
  庞东旭 a03f0a0b74 task 乳山产交 增加新闻附件显示 1 year ago
  QI_YUJIE 116ad1ddcf task 土地确权 发包方功能调整 1 year ago
  庞东旭 47265576b9 task 乳山产交 线下竞价判断 1 year ago
  QI_YUJIE 2fe9bee560 task 土地确权 承包地块功能调整 1 year ago
  QI_YUJIE c3cf55d86f task 土地确权 承包方整户状态 1 year ago
  QI_YUJIE 336afae336 task 土地确权 承包地块功能调整 1 year ago
  张泽亮 5144b669b5 文案 1 year ago
  QI_YUJIE d8b9276f3e task 土地确权 承包合同功能调整 1 year ago
  QI_YUJIE 4c58d88f95 task 土地确权 承包方家庭成员功能调整 1 year ago
  QI_YUJIE 66e9c9cb5c task 土地确权 承包方信息功能调整 1 year ago
  Xyq123* adb3396a34 二轮延包-承包方、承包方家庭成员字段 1 year ago
  庞东旭 e1827dc2cd task 全局API使用修改 1 year ago
  庞东旭 5260e60645 Merge branch 'rongxin_dev' of http://218.59.175.43:3000/zhangzl/nsgk_mobile into rongxin_dev 1 year ago
  庞东旭 328431a3b5 task 全局API使用修改 1 year ago
  Xyq123* fc3d2d6da7 银农-银行转账申请、备付金支出申请测试问题处理 1 year ago
  Xyq123* 94e44175c1 银农-银行转账申请、备付金支出申请测试问题处理 1 year ago
  Xyq123* d10ffafad4 银农-银行转账申请、备付金支出申请测试问题处理 1 year ago
  Xyq123* 8fc5b9fac0 银农-银行转账申请、备付金支出申请测试问题处理 1 year ago
  庞东旭 a123148d31 Merge branch 'rongxin_dev' of http://116.255.223.226:3000/zhangzl/nsgk_mobile into rongxin_dev 1 year ago
  庞东旭 a4520f584f task 虫害APP页面切图 1 year ago
  yangfuda a1454d46de 银农:新增收款方-自动拆分收款方、收款账号 1 year ago
  zhaodengke 66381130b6 Task 资产地图 1 year ago
  庞东旭 d619060552 task 银农事项审批页面升级 个人中心待办已办数据对接 1 year ago
  庞东旭 e965bb25e5 Merge branch 'rongxin_dev' of http://116.255.223.226:3000/zhangzl/nsgk_mobile into rongxin_dev 1 year ago
  庞东旭 ffcedbfc75 task 银农事项审批页面升级 1 year ago
  Xyq123* 1ac5334095 银农-银行转账申请、备付金支出申请自定义审批 1 year ago
  庞东旭 f7b3e3aedd task 虫害APP 1 year ago
  庞东旭 a765092dd8 task 阳光村务: 1 year ago
  庞东旭 5ecff83ce2 task 乳山产交 开户省市JSON修改 1 year ago
  Xyq123* 72d6bb73e9 宅基地系统-手机端宅基地申请、退出、有偿使用复测问题修改 1 year ago
  QI_YUJIE 7085267711 task 产权交易系统 会员注册查看新版审批流程 1 year ago
  Xyq123* 37fdf8ea13 宅基地系统-手机端宅基地申请、退出测试记录问题修改 1 year ago
  张泽亮 5335d3d07a Merge branch 'master' into rongxin_dev 1 year ago
  Xyq123* 254461a90f 宅基地系统-宅基地退出优化 1 year ago
  Xyq123* de4fbcfec2 宅基地系统-宅基地申请文件验证 1 year ago
  Xyq123* c2cec50255 宅基地系统-自定义审批、收费计划 1 year ago
  makaba 39a36bed3c task 阳光村务 新增 收支表 盈余表 公开表 1 year ago
  makaba 2e1b4f7f60 task 收支表 盈余表 公开表 图片 1 year ago
  张泽亮 f209f674ed Merge branch 'master' into rongxin_dev 1 year ago
  makaba c49f26dbf9 task 合同信息 借款计划 新增附件 1 year ago
100 changed files with 15177 additions and 2417 deletions
Split View
  1. +1
    -1
      index.html
  2. +24
    -32
      package-lock.json
  3. +2
    -2
      package.json
  4. +17
    -0
      src/api/audit/aaudit.js
  5. +44
    -0
      src/api/audit/aauditmodel.js
  6. +76
    -0
      src/api/audit/aauditpipeline.js
  7. +1
    -1
      src/api/contracted/cbf.js
  8. +80
    -0
      src/api/onlineHome/bankAgriculture/cashExpense.js
  9. +11
    -4
      src/api/onlineHome/bankAgriculture/paymentApproval.js
  10. +16
    -2
      src/api/onlineHome/homestead/paidUtilize.js
  11. +64
    -0
      src/api/onlineHome/homestead/ycsysfmx.js
  12. +33
    -0
      src/api/sunVillage_info/homestead/application.js
  13. +6
    -1
      src/api/sunVillage_info/homestead/paidExit.js
  14. +21
    -12
      src/api/user/index.js
  15. BIN
      src/assets/images/sunVillage_info/PDF.png
  16. BIN
      src/assets/images/sunVillage_info/PPT.png
  17. BIN
      src/assets/images/sunVillage_info/RAR.png
  18. BIN
      src/assets/images/sunVillage_info/index_block_27.png
  19. BIN
      src/assets/images/sunVillage_info/index_code_btn_15.png
  20. BIN
      src/assets/images/weather/tianqi-baoxue.png
  21. BIN
      src/assets/images/weather/tianqi-baoyu.png
  22. BIN
      src/assets/images/weather/tianqi-daxue.png
  23. BIN
      src/assets/images/weather/tianqi-dayu.png
  24. BIN
      src/assets/images/weather/tianqi-duoyun.png
  25. BIN
      src/assets/images/weather/tianqi-feng.png
  26. BIN
      src/assets/images/weather/tianqi-fuchen.png
  27. BIN
      src/assets/images/weather/tianqi-leizhenyu.png
  28. BIN
      src/assets/images/weather/tianqi-qing.png
  29. BIN
      src/assets/images/weather/tianqi-shachenbao.png
  30. BIN
      src/assets/images/weather/tianqi-wu.png
  31. BIN
      src/assets/images/weather/tianqi-wumai.png
  32. BIN
      src/assets/images/weather/tianqi-xiaoxue.png
  33. BIN
      src/assets/images/weather/tianqi-xiaoyu.png
  34. BIN
      src/assets/images/weather/tianqi-yangsha.png
  35. BIN
      src/assets/images/weather/tianqi-yin.png
  36. BIN
      src/assets/images/weather/tianqi-zhenxue.png
  37. BIN
      src/assets/images/weather/tianqi-zhenyu.png
  38. BIN
      src/assets/images/weather/tianqi-zhongxue.png
  39. BIN
      src/assets/images/weather/tianqi-zhongyu.png
  40. +111
    -0
      src/components/common/nav_bar.vue
  41. +11
    -2
      src/components/form/SubjectTreeChooser.vue
  42. +254
    -226
      src/components/home/HomeApplyUploadComp.vue
  43. +4
    -4
      src/components/home/HomeApplyUploadCompTc.vue
  44. +1
    -2
      src/components/house/CommonMap.vue
  45. +6
    -6
      src/components/house/MultiImageUploadComp.vue
  46. +19
    -0
      src/permission.js
  47. +210
    -20
      src/router/index.js
  48. +7
    -1
      src/store/modules/user.js
  49. +0
    -2
      src/utils/global.js
  50. +3
    -2
      src/utils/request.js
  51. +18
    -6
      src/views/contracted/village/contractor/contractWord.vue
  52. +1
    -1
      src/views/contracted/village/contractor/contractor.vue
  53. +113
    -2
      src/views/contracted/village/contractor/contractorDetail.vue
  54. +133
    -3
      src/views/contracted/village/contractor/contractorDetailAdd.vue
  55. +65
    -3
      src/views/contracted/village/contractor/contractorFamily.vue
  56. +133
    -22
      src/views/contracted/village/contractor/contractorFamilyDetail.vue
  57. +3
    -0
      src/views/contracted/village/contractor/contractorHeader.vue
  58. +1
    -1
      src/views/contracted/village/contractor/contractorLand.vue
  59. +93
    -5
      src/views/contracted/village/contractor/contractorLandDetail.vue
  60. +26
    -0
      src/views/contracted/village/employer/employer.vue
  61. +2
    -2
      src/views/lawEnforcement/index.vue
  62. +3
    -3
      src/views/lawEnforcement/user/index.vue
  63. +6
    -6
      src/views/lawEnforcement/user/waitingProcessing.vue
  64. +3
    -3
      src/views/lawEnforcement/userNew/user_new.vue
  65. +77
    -15
      src/views/news/index.vue
  66. +31
    -0
      src/views/news/newDetail.vue
  67. +1
    -1
      src/views/onlineHome/bankAgriculture/paymentApproval/approvalProcess.vue
  68. +344
    -0
      src/views/pest/agriculturalRecords/agriculturalRecords.vue
  69. +300
    -0
      src/views/pest/agriculturalRecords/agriculturalRecordsAdd.vue
  70. +481
    -0
      src/views/pest/growthMonitoring/growthMonitoring.vue
  71. +479
    -0
      src/views/pest/index.vue
  72. +396
    -0
      src/views/pest/insectMonitoring/insectMonitoring.vue
  73. +470
    -0
      src/views/pest/pestLogin.vue
  74. +350
    -0
      src/views/pest/soilTesting/soilTesting.vue
  75. +512
    -0
      src/views/pest/temperatureAndHumidity/temperatureAndHumidity.vue
  76. +1652
    -0
      src/views/pest/weather/weather.vue
  77. +33
    -0
      src/views/policy/policyDetail.vue
  78. +1
    -0
      src/views/project/index.vue
  79. +15
    -3
      src/views/project/projectDetail.vue
  80. +198
    -77
      src/views/sunVillage_info/assetMapOpen.vue
  81. +7
    -6
      src/views/sunVillage_info/bankAgriculture/collectionAccount/collectionAdd.vue
  82. +178
    -39
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalAdd.vue
  83. +1026
    -1226
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalAdd11.vue
  84. +1
    -1
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalApproval.vue
  85. +4
    -7
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalApproval11.vue
  86. +162
    -8
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalDetail.vue
  87. +158
    -8
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalDetail11.vue
  88. +14
    -9
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalList.vue
  89. +14
    -8
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalList11.vue
  90. +182
    -41
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalModify.vue
  91. +210
    -450
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalModify11.vue
  92. +38
    -59
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalProcess.vue
  93. +1
    -1
      src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalProcess2.vue
  94. +230
    -68
      src/views/sunVillage_info/detailed_ledger.vue
  95. +4
    -0
      src/views/sunVillage_info/detailed_liabilities.vue
  96. +293
    -0
      src/views/sunVillage_info/homeApplication/applicationNewList.vue
  97. +13
    -11
      src/views/sunVillage_info/homeApplication/proposerLite.vue
  98. +5678
    -0
      src/views/sunVillage_info/homeApplication/proposerLiteNew.vue
  99. +1
    -1
      src/views/sunVillage_info/index.vue
  100. +1
    -1
      src/views/sunVillage_info/index_code.vue

+ 1
- 1
index.html View File

@@ -9,7 +9,7 @@
<script src="/static/js/ol.js"></script>
<!-- <script type="text/javascript" src="http://api.tianditu.gov.cn/api?v=4.0&tk=cc4aba6e967096098249efa069733067"></script>-->
<script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=XzwOBaO4CElCsPdl8LIFEvv5rTemG6w1"></script>
<title>农燊高科</title>
<title>COMPANY</title>
</head>

<body>


+ 24
- 32
package-lock.json View File

@@ -5,25 +5,20 @@
"requires": true,
"dependencies": {
"@babel/runtime": {
"version": "7.13.9",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.9.tgz",
"integrity": "sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA==",
"version": "7.24.4",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.4.tgz",
"integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==",
"requires": {
"regenerator-runtime": "^0.13.4"
"regenerator-runtime": "^0.14.0"
},
"dependencies": {
"regenerator-runtime": {
"version": "0.13.7",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
"version": "0.14.1",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
}
}
},
"@popperjs/core": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.0.tgz",
"integrity": "sha512-wjtKehFAIARq2OxK8j3JrggNlEslJfNuSm2ArteIbKyRMts2g0a7KzTxfRVNUM+O0gnBJ2hNV8nWPOYBgI1sew=="
},
"@types/json-schema": {
"version": "7.0.11",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
@@ -41,22 +36,19 @@
"integrity": "sha512-efv7Yl/OTHjyy0irhJJPtgZb5mJZmroEtVOa8vkGRNTLY93+NgEcVuIBaC35hYCMsTrPHDQRvQGnI9Hyhtto0Q=="
},
"@vant/icons": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/@vant/icons/-/icons-1.5.2.tgz",
"integrity": "sha512-Gy2mFIgObvCh1azp6LklQYsNFrCjMLxf/mEzHD6WV0pZbMBNjsb7bWvAjPo3Wygo9IVtGqi/36wrtosv3PkyRg=="
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/@vant/icons/-/icons-3.0.2.tgz",
"integrity": "sha512-4OlRVMd0uiDtD9hgSISZW8hB95vU0fFtc41tQchRIyiXkR0tS+DydZOLb8/bQkithrNWhW7Uud38MbKjlJ9lJw=="
},
"@vant/popperjs": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@vant/popperjs/-/popperjs-1.0.4.tgz",
"integrity": "sha512-bqbmOoX0kYexGw65awNX9wxePR0ZIdTlVP+7JRahrbUjKW0+HxC2T27NE90cCDmqiFL/6+QYazhLvVa436jV0A==",
"requires": {
"@popperjs/core": "^2.5.4"
}
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz",
"integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
},
"@vue/babel-helper-vue-jsx-merge-props": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz",
"integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA=="
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz",
"integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA=="
},
"@zxing/library": {
"version": "0.18.6",
@@ -4286,7 +4278,7 @@
"fastclick": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/fastclick/-/fastclick-1.0.6.tgz",
"integrity": "sha1-FhYlsnsaWAZAWTa9qaLBkm0Gvmo=",
"integrity": "sha512-cXyDBT4g0uWl/Xe75QspBDAgAWQ0lkPi/zgp6YFEUHj6WV6VIZl7R6TiDZhdOVU3W4ehp/8tG61Jev1jit+ztQ==",
"dev": true
},
"fastparse": {
@@ -4441,7 +4433,7 @@
"font-awesome.css": {
"version": "4.7.2",
"resolved": "https://registry.npmjs.org/font-awesome.css/-/font-awesome.css-4.7.2.tgz",
"integrity": "sha1-B1pCARQo8gJyVO9phgx1ergWyVI="
"integrity": "sha512-FIyRbig4PDY15NGzejM3b8OQ/lWvId8PHnE4CnuDtc8/YYs07cvnqLCyfvIJPwJl5SA/Rq+9jAe9W+Fr1pv0DA=="
},
"for-in": {
"version": "1.0.2",
@@ -12277,13 +12269,13 @@
}
},
"vant": {
"version": "2.12.8",
"resolved": "https://registry.npmjs.org/vant/-/vant-2.12.8.tgz",
"integrity": "sha512-2Rs/LDGg+Dz2AbWRM88EmnH1OTDSB1vcWFZ8pIlHEUraLUM6SvwsqtMpLrnn15KZA1RToeKbrv0MZOVfzoEpSQ==",
"version": "2.13.2",
"resolved": "https://registry.npmmirror.com/vant/-/vant-2.13.2.tgz",
"integrity": "sha512-anZbbLqXCq+rUJk10D67mn+V/1/i9tfOTdoR+64B0e+0BzV3KFgpHBF76noLa+yX9i/L+8DeL560WMk0GEN38g==",
"requires": {
"@babel/runtime": "7.x",
"@vant/icons": "1.5.2",
"@vant/popperjs": "^1.0.0",
"@vant/icons": "^3.0.2",
"@vant/popperjs": "^1.1.0",
"@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
"vue-lazyload": "1.2.3"
}
@@ -12360,7 +12352,7 @@
"vue-html5-editor": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/vue-html5-editor/-/vue-html5-editor-1.1.1.tgz",
"integrity": "sha1-WRAhCoMNjI00eaHx/shHMZKqA7M=",
"integrity": "sha512-Ckmb8djta+XQMUQaxRcCUNBXEzjPF5p6c2nQ5ICcIuR8eYz4b0HAGzXlSDfL3ZxkrVHO2Hx0VrUORLu2Lwem4g==",
"dev": true
},
"vue-lazyload": {


+ 2
- 2
package.json View File

@@ -10,9 +10,9 @@
"build": "node build/build.js"
},
"dependencies": {
"bignumber.js": "^9.1.2",
"@vant/area-data": "^1.2.2",
"axios": "^0.21.1",
"bignumber.js": "^9.1.2",
"echarts": "^5.3.3",
"element-ui": "^2.15.6",
"font-awesome": "^4.7.0",
@@ -29,7 +29,7 @@
"quill": "^1.3.7",
"sass": "^1.32.8",
"sass-loader": "^6.0.6",
"vant": "^2.12.8",
"vant": "^2.13.2",
"vue": "^2.5.2",
"vue-baidu-map": "^0.21.22",
"vue-cookies": "^1.7.4",


+ 17
- 0
src/api/audit/aaudit.js View File

@@ -0,0 +1,17 @@
export const AAUDIT_INTENT = {
NONE: '', // 无
VIEW: 'VIEW', // 查看
AUDIT: 'audit', // 审批
HISTORY: 'history', // 审批历史
PIPELINE: 'pipeline', // 审批流程图
};
export const AAUDIT_STATUS = {
/* READY : "1", // 未提交
AUDITING : "3", // 审批中
PASS : "5", // 审批通过
REJECT : "7", // 审批驳回 */
READY : "0", // 未提交
AUDITING : "1", // 审批中
PASS : "3", // 审批通过
REJECT : "2", // 审批驳回
};

+ 44
- 0
src/api/audit/aauditmodel.js View File

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

// 查询审批模板列表
export function A_listAuditModel(query) {
return request({
url: '/open/home/mobile/modelList',
method: 'get',
params: query
})
}

// 查询审批模板详细
export function A_getAuditModel(id) {
return request({
url: '/approval/auditmodel/get/' + id,
method: 'get'
})
}

// 新增审批模板
export function A_addAuditModel(data) {
return request({
url: '/approval/auditmodel/add',
method: 'post',
data: data
})
}

// 修改审批模板
export function A_updateAuditModel(data) {
return request({
url: '/approval/auditmodel/edit',
method: 'post',
data: data
})
}

// 删除审批模板
export function A_deleteAuditModel(id) {
return request({
url: '/approval/auditmodel/remove/' + id,
method: 'post'
})
}

+ 76
- 0
src/api/audit/aauditpipeline.js View File

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

// 我的待办列表
export function A_myTodoList(query) {
return request({
url: '/approval/audit/todoList',
method: 'get',
params: query
})
}

// 我的已办列表
export function A_myDoneList(query) {
return request({
url: '/approval/audit/doneList',
method: 'get',
params: query
})
}

// 审批历史列表
export function A_auditHistoryList(id, query) {
return request({
url: '/approval/audit/historyList/' + id,
method: 'get',
params: query
})
}

// 获取后台流程图地址
export function A_pipelineImageUrl(no, format = 'png') {
return `/approval/audit/pipeline/${no}.${format}`;
}

// 审批状态列表
export function A_pipelineState(no) {
return request({
url: '/approval/audit/pipelineState/' + no,
method: 'get',
})
}

// 审批批次列表
export function A_auditBatchList(no) {
return request({
url: '/approval/audit/auditBatchList/' + no,
method: 'get',
})
}

// 审批历史详情
export function A_auditHistoryDetail(id, parms) {
return request({
url: '/approval/audit/history/' + id,
method: 'get',
params: parms,
})
}

// 审批
export function A_audit(data) {
return request({
url: '/approval/audit/audit',
method: 'post',
data: data,
})
}

// 提交
export function A_start(data) {
return request({
url: '/open/home/mobile/start',
method: 'post',
data: data,
})
}

+ 1
- 1
src/api/contracted/cbf.js View File

@@ -46,7 +46,7 @@ export function updateCbf(data) {
// 删除承包方信息
export function deleteCbf(id) {
return request({
url: '/service/cbf/mobile/remove/' + id,
url: '/service/cbf/delete/' + id,
method: 'get'
});
}


+ 80
- 0
src/api/onlineHome/bankAgriculture/cashExpense.js View File

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

// 查询资金审批申请列表
export function listCashExpense(query) {
return request({
url: '/yinnong/cashExpense/list',
method: 'get',
params: query
})
}

// 统计查询资金审批申请列表
export function statisticCashExpense(query) {
return request({
url: '/yinnong/cashExpense/statistic',
method: 'get',
params: query
})
}

// 导出资金审批申请
export function exportCashExpense(query) {
return request({
url: '/yinnong/cashExpense/export',
method: 'get',
params: query
})
}

// 查询资金审批申请详细
export function getCashExpense(id) {
return request({
url: '/yinnong/cashExpense/get/' + id,
method: 'get',
params: arguments[1] || {}
})
}

// 新增资金审批申请
export function addCashExpense(data) {
return request({
url: '/yinnong/cashExpense/add',
method: 'post',
data: data
})
}

// 修改资金审批申请
export function updateCashExpense(data) {
return request({
url: '/yinnong/cashExpense/edit',
method: 'post',
data: data
})
}

// 删除资金审批申请
export function delCashExpense(id) {
return request({
url: '/yinnong/cashExpense/remove/' + id,
method: 'get'
})
}

// 资金申请审批
export function applyCashExpense(id) {
return request({
url: '/yinnong/cashExpense/submitApply/' + id,
method: 'get'
});
}

// 撤销资金申请审批
export function revokeCashExpense(id) {
return request({
url: '/yinnong/cashExpense/revokeApply/' + id,
method: 'get'
});
}


+ 11
- 4
src/api/onlineHome/bankAgriculture/paymentApproval.js View File

@@ -194,7 +194,7 @@ export function addCashdetail(data) {
// 查询转账账户详情详细
export function getTransferProcess(id) {
return request({
url: '/yinnong/transfer/getProcessSchedule/' + id,
url: '/yinnong/transfer/getProcessScheduleInfoNew/' + id,
method: 'get'
})
}
@@ -223,12 +223,12 @@ export function getQmyeFlow(id) {
})
}

// 查询当前账期余额
// 审批
export function approval(data) {
return request({
url: '/activiti/process/complete',
url: '/approval/audit/audit',
method: 'post',
params:data
data:data
})
}

@@ -316,6 +316,13 @@ export function getTransferProcess1(id) {
method: 'get'
})
}
// 查询出纳账户设置详细
export function getCashierAccount(id) {
return request({
url: '/cashier/account/get/' + id,
method: 'get'
})
}

// 查询出纳账户设置列表
export function listAccount(query) {


+ 16
- 2
src/api/onlineHome/homestead/paidUtilize.js View File

@@ -43,8 +43,22 @@ export function ycsyAdd(data){
data:data
})
}


// 生成收费计划
export function generateFeePlan(data) {
return request({
url: '/home/ycsy/generateFeePlan',
method: 'post',
data: data
})
}
//有偿使用超期
export function overdueList(data) {
return request({
url:'/home/ycsy/overdueList',
method:'get',
params:data
})
}
//使用权人查询
export function listByDeptId(){
return request({


+ 64
- 0
src/api/onlineHome/homestead/ycsysfmx.js View File

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

// 查询有偿收费明细列表
export function listYcsysfmx(query) {
return request({
url: '/home/ycsysfmx/list',
method: 'get',
params: query
})
}

// 统计查询有偿收费明细列表
export function statisticYcsysfmx(query) {
return request({
url: '/home/ycsysfmx/statistic',
method: 'get',
params: query
})
}

// 导出有偿收费明细
export function exportYcsysfmx(query) {
return request({
url: '/home/ycsysfmx/export',
method: 'get',
params: query
})
}

// 查询有偿收费明细详细
export function getYcsysfmx(id) {
return request({
url: '/home/ycsysfmx/get/' + id,
method: 'get',
params: arguments[1] || {}
})
}

// 新增有偿收费明细
export function addYcsysfmx(data) {
return request({
url: '/home/ycsysfmx/add',
method: 'post',
data: data
})
}

// 修改有偿收费明细
export function updateYcsysfmx(data) {
return request({
url: '/home/ycsysfmx/edit',
method: 'post',
data: data
})
}

// 删除有偿收费明细
export function delYcsysfmx(id) {
return request({
url: '/home/ycsysfmx/remove/' + id,
method: 'get'
})
}


+ 33
- 0
src/api/sunVillage_info/homestead/application.js View File

@@ -196,6 +196,22 @@ export function customSubmitWLHT(id) {
method: 'post'
})
}
//新增地房申请(新)
export function submitApplication(id) {
return request({
url: '/open/home/mobile/submitApplication/' + id,
method: 'post'
})
}

// 新增地房申请-开工申请(新)
export function submitStart(id) {
return request({
url: '/open/home/mobile/submitStart/'+id,
method: 'post',
})
}

// 新增地房申请-开工申请
export function submitStartWLHT(id) {
return request({
@@ -213,6 +229,14 @@ export function updateStart(data) {
})
}

// 提交地房申请-验收意见(新)
export function submitCheck(id) {
return request({
url: '/open/home/mobile/submitCheck/'+id,
method: 'post',
})
}

// 提交地房申请-验收意见(乌兰浩特 简化流程)
export function submitEndWLHT(id) {
return request({
@@ -257,3 +281,12 @@ export function updateOpretion(id) {
method: 'post'
})
}


//获取用地建房申请状态信息
export function getHomeApplyStatus(id) {
return request({
url: '/open/home/mobile/homeApplyStatusNew/'+id,
method: 'get'
})
}

+ 6
- 1
src/api/sunVillage_info/homestead/paidExit.js View File

@@ -87,7 +87,12 @@ export function zyyctcApply(id){
method:'post',
})
}

export function zyyctcApplyNew(id){
return request({
url:'/open/home/mobile/paidExitSubmitApplyNew/'+id,
method:'post',
})
}
// 查询权利人列表
export function getShyqrs(query) {
return request({


+ 21
- 12
src/api/user/index.js View File

@@ -193,6 +193,15 @@ export function realtimeList(query){
})
}

// 查询审批历史
export function auditHistoryList(params) {
return request({
url: '/transaction/website/auditHistory/list',
method: 'get',
params: params
});
}

export const options = [
{
"value": "北京",
@@ -1289,23 +1298,23 @@ export const options = [
"value": "海东",
"label": "海东",
}, {
"value": "海北",
"label": "海北",
"value": "海北",
"label": "海北",
}, {
"value": "黄南",
"label": "黄南",
"value": "黄南",
"label": "黄南",
}, {
"value": "海南",
"label": "海南",
"value": "海南",
"label": "海南",
}, {
"value": "果洛",
"label": "果洛",
"value": "果洛",
"label": "果洛",
}, {
"value": "玉树",
"label": "玉树",
"value": "玉树",
"label": "玉树",
}, {
"value": "海西",
"label": "海西",
"value": "海西",
"label": "海西",
}]
}, {
"value": "宁夏",


BIN
src/assets/images/sunVillage_info/PDF.png View File

Before After
Width: 200  |  Height: 196  |  Size: 6.1 KiB

BIN
src/assets/images/sunVillage_info/PPT.png View File

Before After
Width: 200  |  Height: 196  |  Size: 5.0 KiB

BIN
src/assets/images/sunVillage_info/RAR.png View File

Before After
Width: 196  |  Height: 192  |  Size: 2.8 KiB

BIN
src/assets/images/sunVillage_info/index_block_27.png View File

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

BIN
src/assets/images/sunVillage_info/index_code_btn_15.png View File

Before After
Width: 355  |  Height: 134  |  Size: 16 KiB Width: 355  |  Height: 134  |  Size: 16 KiB

BIN
src/assets/images/weather/tianqi-baoxue.png View File

Before After
Width: 24  |  Height: 24  |  Size: 690 B

BIN
src/assets/images/weather/tianqi-baoyu.png View File

Before After
Width: 24  |  Height: 24  |  Size: 584 B

BIN
src/assets/images/weather/tianqi-daxue.png View File

Before After
Width: 24  |  Height: 24  |  Size: 585 B

BIN
src/assets/images/weather/tianqi-dayu.png View File

Before After
Width: 24  |  Height: 24  |  Size: 577 B

BIN
src/assets/images/weather/tianqi-duoyun.png View File

Before After
Width: 24  |  Height: 24  |  Size: 496 B

BIN
src/assets/images/weather/tianqi-feng.png View File

Before After
Width: 24  |  Height: 24  |  Size: 638 B

BIN
src/assets/images/weather/tianqi-fuchen.png View File

Before After
Width: 24  |  Height: 24  |  Size: 364 B

BIN
src/assets/images/weather/tianqi-leizhenyu.png View File

Before After
Width: 24  |  Height: 24  |  Size: 557 B

BIN
src/assets/images/weather/tianqi-qing.png View File

Before After
Width: 24  |  Height: 24  |  Size: 439 B

BIN
src/assets/images/weather/tianqi-shachenbao.png View File

Before After
Width: 24  |  Height: 24  |  Size: 527 B

BIN
src/assets/images/weather/tianqi-wu.png View File

Before After
Width: 24  |  Height: 24  |  Size: 492 B

BIN
src/assets/images/weather/tianqi-wumai.png View File

Before After
Width: 24  |  Height: 24  |  Size: 575 B

BIN
src/assets/images/weather/tianqi-xiaoxue.png View File

Before After
Width: 24  |  Height: 24  |  Size: 561 B

BIN
src/assets/images/weather/tianqi-xiaoyu.png View File

Before After
Width: 24  |  Height: 24  |  Size: 532 B

BIN
src/assets/images/weather/tianqi-yangsha.png View File

Before After
Width: 24  |  Height: 24  |  Size: 429 B

BIN
src/assets/images/weather/tianqi-yin.png View File

Before After
Width: 24  |  Height: 24  |  Size: 505 B

BIN
src/assets/images/weather/tianqi-zhenxue.png View File

Before After
Width: 24  |  Height: 24  |  Size: 550 B

BIN
src/assets/images/weather/tianqi-zhenyu.png View File

Before After
Width: 24  |  Height: 24  |  Size: 556 B

BIN
src/assets/images/weather/tianqi-zhongxue.png View File

Before After
Width: 24  |  Height: 24  |  Size: 564 B

BIN
src/assets/images/weather/tianqi-zhongyu.png View File

Before After
Width: 24  |  Height: 24  |  Size: 547 B

+ 111
- 0
src/components/common/nav_bar.vue View File

@@ -0,0 +1,111 @@
<template>
<div>
<div
:class='[background == "1"?"nav-wrap":"nav-wrap1",positionType=="fixed"?"nav-position-fixed":"nav-position-relative"]'
:style='{"height": 50+"px","overflow": "hidden"}'
>
<!-- // 导航栏 中间的标题 -->
<div class='nav-title' :style='{"line-height": 50+"px"}'>{{title}}</div>
<div style='display: flex; justify-content: center;flex-direction: column;height: 50px;padding-left: 2%;'>
<!-- // 其中wx:if='{{navbarData.showCapsule}}' 是控制左上角按钮的显示隐藏,首页不显示 -->
<van-icon name="arrow-left" color="#333333" size="25" @click="onClickLeft()" />
</div>
</div>
<div :style='{"height": 50+"px"}' v-if="positionType == 'fixed'"></div>
</div>
</template>

<script>
export default {
name: "nav_bar",
props: [
"background",
"positionType",
"showCapsule",
"title",
],
data() {
return {
height: '',
navHeight:'',
}
},
created() {

},
methods: {

},
}
</script>

<style scoped lang="scss">
.nav-wrap {
width: 100%;
top: 0;
background: transparent;
color: #000;
z-index: 9999999;
}

.nav-wrap1 {
width: 100%;
top: 0;
background: linear-gradient(to bottom right,#91E1CA,#E0F4E4);
color: #333333;
z-index: 9999999;
}

/* 标题要居中 */
.nav-title {
position: absolute;
text-align: center;
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
font-size: 16Px;
}

.nav-capsule {
display: flex;
align-items: center;
margin-left: 5px;
width: 70px;
justify-content: space-between;
height: 100%;
}

.navbar-v-line {
width: 1px;
height: 16px;
background-color: #e5e5e5;
}

/*.back-pre,*/
/*.back-home {*/
/* width: 18Px;*/
/* height: 25Px;*/
/* margin-top: 2px;*/
/* padding: 5px;*/
/* border-radius: 50%;*/
/*}*/

.nav-capsule .back-home {
width: 30px;
height: 30px;
margin-top: 1.5px;
}

.nav-position-fixed{
position: fixed;
}
.nav-position-relative{
position: relative;
}
</style>

+ 11
- 2
src/components/form/SubjectTreeChooser.vue View File

@@ -23,7 +23,7 @@ export default {
name: "SubjectTreeChooser",
components: {SubjectTreeChooserNodeItem},
props: [
'value', 'visible', 'height', 'canSelectNonLeaf',
'year','value', 'visible', 'height', 'canSelectNonLeaf',
],
watch: {
value: function (newVal, oldVal) {
@@ -33,6 +33,14 @@ export default {
this.syncIndex();
}
},
year: function (newVal, oldVal) {
console.log(newVal)
if(newVal != this.yearNews)
{
this.yearNews = newVal;
this.getSubjects();
}
},
visible: function(newVal, oldVal) {
if(this.popupVisible !== newVal)
{
@@ -53,6 +61,7 @@ export default {
return {
popupVisible: false,
internalValue: this.value,
yearNews: this.year,
searchValue: '',
active: '1',
subjects: [],
@@ -76,7 +85,7 @@ export default {
map[x.dictValue] = item;
return item;
});
let url = '/finance/subject/listAll'; // '/open/villageAffairs/public/subjects/153'
let url = '/finance/subject/listAll?year='+this.yearNews; // '/open/villageAffairs/public/subjects/153'
request(url).then((resp) => {
let list = this.makeTree(resp.rows || resp.data);
for(let v of list)


+ 254
- 226
src/components/home/HomeApplyUploadComp.vue View File

@@ -30,185 +30,214 @@
</template>

<script>
import { treeSingleProcessView , attach , removeFile , getAttachmentConfigTree, attachmentFind } from "@/api/sunVillage_info/homestead/application";
import {getToken} from "@/utils/auth";
import request from '@/utils/request'
import {Notify} from "vant";
/** 导入JS方法 */
import {
treeSingleProcessView,
attach,
removeFile,
getAttachmentConfigTree,
attachmentFind
} from "@/api/sunVillage_info/homestead/application";
import {getToken} from "@/utils/auth";
import request from '@/utils/request'
import {Notify} from "vant";

export default {
name: "houseApplyUploadComp",
components: {},
props: ["businessType", "proposerId", "houseApplyStatus", "processKey", "tableName", "readonly", 'full',"userName"],
data() {
return {
disabled: this.readonly,
loading: false,
attachmentList: [],
uploadImg: {
//上传图片配置
uploadImgUrl: "/open/home/mobile/common/attach",
/** 导入JS方法 */

export default {
name: "houseApplyUploadComp",
components: {},
props: ["businessType", "proposerId", "houseApplyStatus", "processKey", "tableName", "readonly", 'full', "userName"],
data() {
return {
disabled: this.readonly,
loading: false,
attachmentList: [],
uploadImg: {
//上传图片配置
uploadImgUrl: "/open/home/mobile/common/attach",
},
newAttachments: [],
fileTypeList:[],
active: -1,
has: false,
}
},
watch: {
proposerId: function (newVal, oldVal) {
this.showAttachmentComp(this.businessType, newVal, this.houseApplyStatus, this.processKey, this.tableName, this.full);
},
readonly: function (newVal, oldVal) {
this.disabled = newVal;
},
newAttachments: [],
active: -1,
has: false,
}
},
watch: {
proposerId: function (newVal, oldVal) {
this.showAttachmentComp(this.businessType, newVal, this.houseApplyStatus, this.processKey, this.tableName, this.full);
},
readonly: function (newVal, oldVal) {
this.disabled = newVal;
created() {
if (this.businessType !== null && this.proposerId == -1) {
this.showAttachmentComp(this.businessType, this.proposerId, this.houseApplyStatus, this.processKey, this.tableName, this.full)
}
},
},
created() {
if (this.businessType !== null && this.proposerId == -1) {
this.showAttachmentComp(this.businessType, this.proposerId, this.houseApplyStatus, this.processKey, this.tableName, this.full)
}
},
methods: {
handleUploadSuccess(file, detail, item) {
this.setFileStatus(file, 'uploading', '文件上传中...');
let formData = new FormData;
formData.set('file', file.file);
this.$set(item.postData, 'userName', this.userName);
request({
url: this.uploadImg.uploadImgUrl,
method: "post",
params: item.postData,
data: formData,
}).then((resp) => {
if(resp.code == 200)
{
file.response = resp;
console.log(resp);
file.fileList = item.fileList;
this.onFileListChanged("ADD", resp.id);
this.setFileStatus(file, 'done', '文件上传成功');
this.$emit('onUploadSuccess', file);
}
else
methods: {
handleUploadSuccess(file, detail, item) {
this.setFileStatus(file, 'uploading', '文件上传中...');
let formData = new FormData;
formData.set('file', file.file);
this.$set(item.postData, 'userName', this.userName);
request({
url: this.uploadImg.uploadImgUrl,
method: "post",
params: item.postData,
data: formData,
}).then((resp) => {

if (resp.code === 200) {
file.response = resp;
file.fileList = item.fileList;
this.onFileListChanged("ADD", resp);
this.setFileStatus(file, 'done', '文件上传成功');

this.$emit('onUploadSuccess', file);
} else
this.setFileStatus(file, 'fail', '文件上传失败!');
}).catch((e) => {
this.setFileStatus(file, 'fail', '文件上传失败!');
}).catch((e) => {
this.setFileStatus(file, 'fail', '文件上传失败!');
});
return true;
},
handleRemove(file, detail) {
console.log(file, detail);
this.setFileStatus(file, 'uploading', '文件删除中...');
let id = file.id || file.response.id;
removeFile(id).then(resp => {
if(this.proposerId != -1 && false) // 不刷新
this.showAttachmentComp(this.businessType, this.proposerId, this.houseApplyStatus, this.processKey, this.tableName, this.full)
/* else // 新增时
{
let fileList = file.fileList;
//console.log(fileList);
fileList.splice(fileList.indexOf(file), 1);
}*/
this.setFileStatus(file, 'done', '文件删除成功');
});
return true;
},
//获取ip
getPath() {
// 获取当前页面的URL
const url = window.location.href;
// 使用正则表达式解析URL以获取IP和端口
const ipAndPortRegex = /^(?:https?:\/\/)?(?:([^\s:@\/]+)(?::([^\s:@\/]+))?@)?([\da-z\.-]+)(?::(\d+))?(?:\/([^\?#]+))?(?:\?([^#]+))?(?:#(.+))?$/;
const match = url.match(ipAndPortRegex);
// 提取IP和端口
const ip = match[3];
const port = match[4];
return "http://"+ip + ":" + port + "/api"
},
handleRemove(file, detail) {
console.log(file);
this.setFileStatus(file, 'uploading', '文件删除中...');
let id = file.id || file.response.id;
this.onFileListChanged("REMOVE", id);
}).catch((e) => {
this.setFileStatus(file, 'fail', '文件删除失败!');
}).finally(() => {
//loading.close();
});
return true;
},
showAttachmentComp(businessType, proposerId, houseApplyStatus, processKey, tableName, full) {
this.attachmentList = [];
this.active = -1;
this.has = false;
if(!full && 0)
{
this.getCurrentFiles(businessType, proposerId, houseApplyStatus, processKey, tableName);
}
else
{
this.getHistoryFiles(businessType, proposerId, houseApplyStatus, processKey, tableName);
}
},
formatFile(list) {
if (list !== null && list !== undefined) {
const baseImgUrl = this.$store.getters.baseRoutingUrl;
let UfileList = []; //上传图片列表
list.forEach((value, index) => {
UfileList.push({
name: value.fileName,
fileUrl: value.fileUrl,
url: baseImgUrl + value.fileUrl,
id: value.id,
fileList: UfileList,
});
removeFile(id).then(resp => {
if (this.proposerId != -1 && false) // 不刷新
this.showAttachmentComp(this.businessType, this.proposerId, this.houseApplyStatus, this.processKey, this.tableName, this.full)
/* else // 新增时
{
let fileList = file.fileList;
//console.log(fileList);
fileList.splice(fileList.indexOf(file), 1);
}*/
this.setFileStatus(file, 'done', '文件删除成功');
}).catch((e) => {
this.setFileStatus(file, 'fail', '文件删除失败!');
}).finally(() => {
//loading.close();
});
return UfileList;
}
},
onFileListChanged(type, id) {
if(this.proposerId != -1) return;
if(type === "ADD")
{
this.newAttachments.push(id);
}
else if(type === "REMOVE")
{
let index = this.newAttachments.indexOf(id);
if(index !== -1)
this.newAttachments.splice(index, 1);
}
console.log(this.newAttachments);
this.$emit('uploadFinished', this.newAttachments);
},
getCurrentFiles(businessType, proposerId, houseApplyStatus, processKey, tableName) {
this.loading = true;
treeSingleProcessView({
businessType: businessType,
houseApplyStatus: houseApplyStatus,
processKey: processKey,
tableName: tableName,
}).then(res => {
this.handleResponse(res.rows, proposerId, houseApplyStatus, tableName);
if(this.attachmentList.length === 0)
{
this.disabled = true;
return true;
},
showAttachmentComp(businessType, proposerId, houseApplyStatus, processKey, tableName, full) {
this.attachmentList = [];
this.active = -1;
this.has = false;
if (!full && 0) {
this.getCurrentFiles(businessType, proposerId, houseApplyStatus, processKey, tableName);
} else {
this.getHistoryFiles(businessType, proposerId, houseApplyStatus, processKey, tableName);
}
}).finally(() => {
this.loading = false;
});
},
getHistoryFiles(businessType, proposerId, houseApplyStatus, processKey, tableName) {
this.loading = true;
getAttachmentConfigTree({
businessType: businessType,
nodeStatus: houseApplyStatus,
processKey: processKey,
dictTypeSort: 'home_stage_status',
nodeStatusSort: '',
}).then(resp => {
//console.log(resp);
try {
if(!resp.data || resp.data.length === 0)
return;
let rows = resp.data[0].children;
rows.forEach((value, index) => {
if (!value.children)
return;
this.handleResponse(value.children, proposerId, houseApplyStatus, tableName);
},
formatFile(list) {

if (list !== null && list !== undefined) {
let baseImgUrl = this.$store.getters.baseRoutingUrl;
if (baseImgUrl === "") {
baseImgUrl = this.getPath();
}

let UfileList = []; //上传图片列表
list.forEach((value, index) => {
UfileList.push({
name: value.fileName,
fileUrl: value.fileUrl,
url: baseImgUrl + value.fileUrl,
id: value.id,
fileList: UfileList,
});
if(list.length > 0){
this.newAttachments.push(value);
this.fileTypeList.push(value.fileType)
}
});
return UfileList;
}
catch (e)
},
onFileListChanged(type, data) {
console.info(data);
if(type === "ADD")
{
console.error(e);
this.newAttachments.push(data);
this.fileTypeList.push(data.fileType);
}
}).finally(() => {
this.loading = false;
});
},
handleResponse(rows, proposerId, houseApplyStatus, tableName) {
rows.forEach((value, index) => {
else if(type === "REMOVE")
{
this.fileTypeList = [];
this.newAttachments = this.newAttachments.filter((item)=>{
return item.id !== data;
});
this.newAttachments.forEach((item)=>{
this.fileTypeList.push(item.fileType);
});
}
console.log(this.newAttachments);
this.$emit('uploadFinished', this.newAttachments,this.fileTypeList);
},
getCurrentFiles(businessType, proposerId, houseApplyStatus, processKey, tableName) {
this.loading = true;
treeSingleProcessView({
businessType: businessType,
houseApplyStatus: houseApplyStatus,
processKey: processKey,
tableName: tableName,
}).then(res => {
this.handleResponse(res.rows, proposerId, houseApplyStatus, tableName);
if (this.attachmentList.length === 0) {
this.disabled = true;
this.getHistoryFiles(businessType, proposerId, houseApplyStatus, processKey, tableName);
}
}).finally(() => {
this.loading = false;
});
},
getHistoryFiles(businessType, proposerId, houseApplyStatus, processKey, tableName) {
this.loading = true;
getAttachmentConfigTree({
businessType: businessType,
nodeStatus: houseApplyStatus,
processKey: processKey,
dictTypeSort: 'home_stage_status',
nodeStatusSort: '',
tableId: proposerId,
}).then(resp => {
//console.log(resp);
try {
if (!resp.data || resp.data.length === 0)
return;
let rows = resp.data[0].children;
rows.forEach((value, index) => {
if (!value.children)
return;
this.handleResponse(value.children, proposerId, houseApplyStatus, tableName);
});
} catch (e) {
console.error(e);
}
}).finally(() => {
this.loading = false;
});
},
handleResponse(rows, proposerId, houseApplyStatus, tableName) {
rows.forEach((value, index) => {

let obj = {
fileTypeName: value.fileTypeName,
tableId: proposerId,
@@ -224,76 +253,75 @@ export default {
current: value.nodeStatus == houseApplyStatus,
collapse: this.disabled || value.nodeStatus == houseApplyStatus ? 0 : '',
};
if(value.nodeStatus != houseApplyStatus && !this.has)
if (value.nodeStatus != houseApplyStatus && !this.has)
this.active++;
if(value.nodeStatus == houseApplyStatus)
{
if(!this.has)
if (value.nodeStatus == houseApplyStatus) {
if (!this.has)
this.active++;
this.has = true;
}
this.attachmentList.push(obj);

});
if (proposerId !== -1) {
this.attachmentList.forEach((value, index) => {
attachmentFind(value).then(resp => {
let list = this.formatFile(resp.data);
this.$set(this.attachmentList[index], "fileList", list);
});
if(value.attachmentList != null){
if(value.attachmentList.length > 0){
let list = this.formatFile( value.attachmentList);
this.$set(obj, "fileList", list);
}
}
this.attachmentList.push(obj);
console.info(this.attachmentList);
});
}
console.info(this.attachmentList);
},
setFileStatus(file, status, message) {
file.status = status;
file.message = message;
},
checkFile(file) {
let mime = file.type;
if([
"image/png",
"image/jpeg",
"image/gif",
"image/bmp",
].indexOf(mime) === -1)
{
this.notify('请上传jpg/png/gif/bmp等格式图片!', 'danger');
return false;
}
return true;
},
notify(message, type) {
Notify.clear();
Notify({ type: type || 'primary', message: message });
},
}
};
if (proposerId !== -1) {
this.$emit('uploadFinished',this.newAttachments,this.fileTypeList);
}
},
setFileStatus(file, status, message) {
file.status = status;
file.message = message;
},
checkFile(file) {
let mime = file.type;
if ([
"image/png",
"image/jpeg",
"image/gif",
"image/bmp",
].indexOf(mime) === -1) {
this.notify('请上传jpg/png/gif/bmp等格式图片!', 'danger');
return false;
}
return true;
},
notify(message, type) {
Notify.clear();
Notify({type: type || 'primary', message: message});
},
}
};
</script>
<style scoped>
.my_class >>> .el-upload--picture-card {
width: 72px;
height: 72px;
line-height: 78px;
}
.my_class >>> .el-upload--picture-card {
width: 72px;
height: 72px;
line-height: 78px;
}

.my_class >>> .el-upload-list__item {
width: 72px;
height: 72px;
}
.my_class >>> .el-upload-list__item {
width: 72px;
height: 72px;
}

.my_class >>> .el-upload-list__item-preview {
width: 20px;
}
.my_class >>> .el-upload-list__item-preview {
width: 20px;
}

.my_class >>> .el-upload-list__item-delete {
width: 20px;
}
.my_class >>> .el-upload-list__item-delete {
width: 20px;
}

.main_title{
font-size: 0.4rem;
color: #1D6FE9;
margin: 0.2rem 6%;
position: relative;
}
.main_title {
font-size: 0.4rem;
color: #1D6FE9;
margin: 0.2rem 6%;
position: relative;
}
</style>

+ 4
- 4
src/components/home/HomeApplyUploadCompTc.vue View File

@@ -85,7 +85,7 @@ export default {
file.response = resp;
console.log(resp);
file.fileList = item.fileList;
this.onFileListChanged("ADD", resp.id);
this.onFileListChanged("ADD", resp);
this.setFileStatus(file, 'done', '文件上传成功');
this.$emit('onUploadSuccess', file);
}
@@ -147,15 +147,15 @@ export default {
return UfileList;
}
},
onFileListChanged(type, id) {
onFileListChanged(type, data) {
if(this.proposerId != -1) return;
if(type === "ADD")
{
this.newAttachments.push(id);
this.newAttachments.push(data);
}
else if(type === "REMOVE")
{
let index = this.newAttachments.indexOf(id);
let index = this.newAttachments.indexOf(data.id);
if(index !== -1)
this.newAttachments.splice(index, 1);
}


+ 1
- 2
src/components/house/CommonMap.vue View File

@@ -207,6 +207,7 @@ export default {
return this.setLayerVisible(name, true);
},
setDraw(on) {

if(!this.mapObject)
return;
/* if(this.allowDraw === on)
@@ -214,7 +215,6 @@ export default {
if(on) {
let self = this;
let draw;

// 不要使用 $('DOM-selector').click(function), 动态加载按钮时手机端会失效
$(document).on('click', "#drawPolygon" + this.elementId, function () {
self.drawResult = null;
@@ -274,7 +274,6 @@ export default {
addLayer(name, theGeom) {
if(!this.mapObject)
return false;

//地图只加载一次
//加载地图编辑
//图层查询定位开始 ---------start


+ 6
- 6
src/components/house/MultiImageUploadComp.vue View File

@@ -44,9 +44,9 @@ export default {
return {
uploadImg: {
//上传图片配置
attachImgUrl: "/common/attach",
uploadImgUrl: "/common/upload",
removeImgUrl: "/system/attachment/remove",
attachImgUrl: "/open/home/mobile/common/attach",
uploadImgUrl: "/open/home/mobile/common/upload",
removeImgUrl: "/open/home/mobile/attach/remove",
uploadImgHeaders: {
Authorization: "Bearer " + getToken(),
},
@@ -79,7 +79,7 @@ export default {
file.path = resp.fileName;
}
file.fileList = this.uploadImg.fileList;
this.$emit('fileChanged', this.uploadImg.fileList);
this.$emit('fileChanged', resp.fileUrl);
this.updateValue();
console.log('新增', this.uploadImg.fileList);
}).catch((e) => {
@@ -96,7 +96,7 @@ export default {
Notify({ type: type || 'primary', message: message });
},
handleRemove(file, detail) {
console.log(file, detail);
console.log(file.id);
if(file.id) // new upload
{
this.setFileStatus(file, 'uploading', '文件删除中...');
@@ -107,7 +107,7 @@ export default {
if(index !== -1)
this.uploadImg.fileList.splice(index, 1);
console.log(this.uploadImg.fileList);
this.$emit('fileChanged', this.uploadImg.fileList);
this.$emit('fileChanged', null);
this.updateValue();
console.log('删除', this.uploadImg.fileList);
})


+ 19
- 0
src/permission.js View File

@@ -109,11 +109,17 @@ const whiteList = [
'/sunVillage_info/list_message_add', //详情页
'/sunVillage_info/list_message_detail', //详情页
'/sunVillage_info/homeApplication/applicationList', //列表页面
'/sunVillage_info/homeApplication/applicationNewList', //列表页面
'/sunVillage_info/proposerLite',
'/sunVillage_info/proposerLiteNew',
'/sunVillage_info/paidExitAddNew',
'/sunVillage_info/paidExit/paidExitList', //列表页面
'/sunVillage_info/paidExit/paidExitNewList', //宅基地退出列表页面(新)
'/sunVillage_info/paidExitAdd',
'/sunVillage_info/paidExitModify',
'/sunVillage_info/paidExitModifyNew',
'/sunVillage_info/paidExitDetail',
'/sunVillage_info/paidExitDetailNew',
'/sunVillage_info/arbitrationList',
'/sunVillage_info/arbitrationDetail',
'/sunVillage_info/familyMember',
@@ -189,6 +195,16 @@ const whiteList = [
'/contracted/login',//登录
'/contracted/index',//首页

//虫害APP
'/pest/pestLogin',//登录
'/pest/index',//首页
'/pest/agriculturalRecords',//农事记录
'/pest/agriculturalRecordsAdd',//农事记录(新增)
'/pest/soilTesting',//土壤检测
'/pest/weather',//气象服务
'/pest/growthMonitoring',//长势监测
'/pest/temperatureAndHumidity',//温湿度

]

router.beforeEach((to, from, next) => {
@@ -205,6 +221,7 @@ router.beforeEach((to, from, next) => {
store.dispatch('GetInfo').then(res => {
// 拉取user_info
const roles = res.roles
Cookies.set('user',res.user)
// store.dispatch('GenerateRoutes', { roles }).then(accessRoutes => {
// // 根据roles权限生成可访问的路由表
// router.addRoutes(accessRoutes) // 动态添加可访问路由表
@@ -279,6 +296,8 @@ router.beforeEach((to, from, next) => {
next(`/lawEnforcement/login?redirect=${to.fullPath}`)
} else if (to.path.indexOf('/sunVillage') !== -1) {
next(`/sunVillage/login`)
} else if (to.path.indexOf('/pest') !== -1) {
next(`/pest/pestLogin`)
} else {
next(`/login?redirect=${to.fullPath}`)
}


+ 210
- 20
src/router/index.js View File

@@ -1068,6 +1068,33 @@ export const constantRoutes = [
},
component: (resolve) => require(['@/views/yinnong/homestead/paidUtilize/paidUtilizeList'], resolve)
},
{
path: '/paidUtilizeCqList',
name: 'paidUtilizeCqList',
meta: {
title: '有偿使用',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/homestead/paidUtilize/paidUtilizeCqList'], resolve)
},
{
path: '/paidUtilizeFeeplanList',
name: 'paidUtilizeFeeplanList',
meta: {
title: '收费计划',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/homestead/paidUtilizeFeeplan/paidUtilizeFeeplanList'], resolve)
},
{
path: '/paidUtilizeFeeplanDteail',
name: 'paidUtilizeFeeplanDteail',
meta: {
title: '收费计划详情',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/homestead/paidUtilizeFeeplan/paidUtilizeFeeplanDteail'], resolve)
},
{
path: '/paidUtilizeModify',
name: 'paidUtilizeModify',
@@ -1979,31 +2006,22 @@ export const constantRoutes = [
component: (resolve) => require(['@/views/yinnong/personalPicture'], resolve)
},
{
path: '/yinnong/done',
name: 'yinnongDone',
path: '/yinnong/doneCompleted/doneNew',
name: 'yinnongDoneCompletedDoneNew',
meta: {
title: '我的已办',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/done'], resolve)
component: (resolve) => require(['@/views/yinnong/doneCompleted/doneNew'], resolve)
},
{
path: '/yinnong/doneCompleted/done',
name: 'yinnongDoneCompletedDone',
path: '/yinnong/doneCompleted/completedNew',
name: 'yinnongDoneCompletedCompletedNew',
meta: {
title: '我的已办',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/doneCompleted/done'], resolve)
},
{
path: '/yinnong/doneCompleted/completed',
name: 'yinnongDoneCompletedCompleted',
meta: {
title: '我的待办',
title: '我的待办(新)',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/doneCompleted/completed'], resolve)
component: (resolve) => require(['@/views/yinnong/doneCompleted/completedNew'], resolve)
},
{
path: '/yinnong/advice',
@@ -2668,6 +2686,51 @@ export const constantRoutes = [
},
component: (resolve) => require(['@/views/yinnong/homestead/supervision/supervisionDetail'], resolve)
},
{
path: '/yinnong/cashExpenseList',
name: 'yinnongCashExpenseList',
meta: {
title: '资金审批申请列表',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/bankAgriculture/cashExpense/cashExpenseList'], resolve)
},
{
path: '/yinnong/cashExpenseForm',
name: 'yinnongCashExpenseForm',
meta: {
title: '资金审批申请表单',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/bankAgriculture/cashExpense/cashExpenseForm'], resolve)
},
{
path: '/yinnong/cashExpenseDetail',
name: 'yinnongCashExpenseDetail',
meta: {
title: '资金审批申请详情',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/bankAgriculture/cashExpense/cashExpenseDetail'], resolve)
},
{
path: '/yinnong/cashExpenseApproval',
name: 'yinnongCashExpenseApproval',
meta: {
title: '资金审批申请',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/bankAgriculture/cashExpense/cashExpenseApproval'], resolve)
},
{
path: '/yinnong/cashExpenseProcess',
name: 'yinnongCashExpenseProcess',
meta: {
title: '资金审批申请流程',
hidden: true,
},
component: (resolve) => require(['@/views/yinnong/bankAgriculture/cashExpense/cashExpenseProcess'], resolve)
},
{
path: '/lawEnforcement',
name: 'lawEnforcement',
@@ -4002,6 +4065,15 @@ export const constantRoutes = [
},
component: (resolve) => require(['@/views/sunVillage_info/homeApplication/applicationList'], resolve)
},
{ ////阳光村务(新)-- 宅基地申请
path: '/sunVillage_info/homeApplication/applicationNewList',
name: 'sunVillageInfoApplicationNewList',
meta: {
title: '宅基地申请(新)',
hidden: true,
},
component: (resolve) => require(['@/views/sunVillage_info/homeApplication/applicationNewList'], resolve)
},
{
path: '/sunVillage_info/proposerLite',
name: 'sunVillageInfoProposerLite',
@@ -4011,6 +4083,15 @@ export const constantRoutes = [
},
component: (resolve) => require(['@/views/sunVillage_info/homeApplication/proposerLite'], resolve)
},
{
path: '/sunVillage_info/proposerLiteNew',
name: 'sunVillageInfoProposerLiteNew',
meta: {
title: '农村宅基地申请(新)',
hidden: true,
},
component: (resolve) => require(['@/views/sunVillage_info/homeApplication/proposerLiteNew'], resolve)
},
{
path: '/homesteadProposerLite',
name: 'homesteadProposerLite',
@@ -4029,6 +4110,15 @@ export const constantRoutes = [
},
component: (resolve) => require(['@/views/sunVillage_info/paidExit/paidExitList'], resolve)
},
{
path: '/sunVillage_info/paidExit/paidExitNewList',
name: 'sunVillageInfoPaidExitNewList',
meta: {
title: '有偿退出',
hidden: true,
},
component: (resolve) => require(['@/views/sunVillage_info/paidExit/paidExitNewList'], resolve)
},
{
path: '/sunVillage_info/paidExitAdd',
name: 'sunVillageInfoPaidExitAdd',
@@ -4039,13 +4129,22 @@ export const constantRoutes = [
component: (resolve) => require(['@/views/sunVillage_info/paidExit/paidExitAdd'], resolve)
},
{
path: '/sunVillage_info/paidExitModify',
name: 'sunVillageInfoPaidExitModify',
path: '/sunVillage_info/paidExitAddNew',
name: 'sunVillageInfoPaidExitAddNew',
meta: {
title: '有偿退出修改',
title: '有偿退出新增(新)',
hidden: true,
},
component: (resolve) => require(['@/views/sunVillage_info/paidExit/paidExitAddNew'], resolve)
},
{
path: '/sunVillage_info/paidExitModifyNew',
name: 'sunVillageInfoPaidExitModifyNew',
meta: {
title: '有偿退出修改(新)',
hidden: true,
},
component: (resolve) => require(['@/views/sunVillage_info/paidExit/paidExitModify'], resolve)
component: (resolve) => require(['@/views/sunVillage_info/paidExit/paidExitModifyNew'], resolve)
},
{
path: '/sunVillage_info/paidExitDetail',
@@ -4056,6 +4155,15 @@ export const constantRoutes = [
},
component: (resolve) => require(['@/views/sunVillage_info/paidExit/paidExitDetail'], resolve)
},
{
path: '/sunVillage_info/paidExitDetailNew',
name: 'sunVillageInfoPaidExitDetailNew',
meta: {
title: '有偿退出审批',
hidden: true,
},
component: (resolve) => require(['@/views/sunVillage_info/paidExit/paidExitDetailNew'], resolve)
},
{
path: '/sunVillage_info/arbitrationList',
name: 'sunVillageInfoArbitrationList',
@@ -5873,6 +5981,88 @@ export const constantRoutes = [
},
component: (resolve) => require(['@/views/contracted/user/passWord'], resolve)
},
//<--------------------------------------虫害APP-------------------------------------->
{
path: '/pest/pestLogin',
name: 'pestLogin',
meta: {
title: '登录',
hidden: true,
},
component: (resolve) => require(['@/views/pest/pestLogin'], resolve)
},
{
path: '/pest/index',
name: 'pestIndex',
meta: {
title: '首页',
hidden: true,
},
component: (resolve) => require(['@/views/pest/index'], resolve)
},
{
path: '/pest/agriculturalRecords',
name: 'pestAgriculturalRecords',
meta: {
title: '农事记录',
hidden: true,
},
component: (resolve) => require(['@/views/pest/agriculturalRecords/agriculturalRecords'], resolve)
},
{
path: '/pest/agriculturalRecordsAdd',
name: 'agriculturalRecordsAdd',
meta: {
title: '新增农事记录',
hidden: true,
},
component: (resolve) => require(['@/views/pest/agriculturalRecords/agriculturalRecordsAdd'], resolve)
},
{
path: '/pest/insectMonitoring',
name: 'insectMonitoring',
meta: {
title: '虫情监测',
hidden: true,
},
component: (resolve) => require(['@/views/pest/insectMonitoring/insectMonitoring'], resolve)
},
{
path: '/pest/soilTesting',
name: 'soilTesting',
meta: {
title: '土壤检测',
hidden: true,
},
component: (resolve) => require(['@/views/pest/soilTesting/soilTesting'], resolve)
},
{
path: '/pest/weather',
name: 'weather',
meta: {
title: '气象服务',
hidden: true,
},
component: (resolve) => require(['@/views/pest/weather/weather'], resolve)
},
{
path: '/pest/growthMonitoring',
name: 'growthMonitoring',
meta: {
title: '长势监测',
hidden: true,
},
component: (resolve) => require(['@/views/pest/growthMonitoring/growthMonitoring'], resolve)
},
{
path: '/pest/temperatureAndHumidity',
name: 'temperatureAndHumidity',
meta: {
title: '温湿度',
hidden: true,
},
component: (resolve) => require(['@/views/pest/temperatureAndHumidity/temperatureAndHumidity'], resolve)
},
];




+ 7
- 1
src/store/modules/user.js View File

@@ -41,6 +41,9 @@ const user = {
SET_LOGINDEPTID: (state, loginDeptId) => {
state.loginDeptId = loginDeptId
},
SET_DEPTID: (state, deptId) => {
state.deptId = deptId
},
SET_LOGINBOOKID: (state, loginBookId) => {
state.loginBookId = loginBookId
},
@@ -74,7 +77,7 @@ const user = {
commit('SET_TOKEN', res.token)
getInfo(res.token).then(response => {
const user = response.user
console.info(user.nickName);
//console.info(user.nickName);
// const avatar = user.avatar == "" ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
const avatar = "";
if (response.roles && response.roles.length > 0) { // 验证返回的roles是否是一个非空数组
@@ -86,6 +89,7 @@ const user = {
commit('SET_BOOKNAME', user.bookName)
commit('SET_NAME', user.userName)
commit('SET_USERID', user.userId)
commit('SET_DEPTID', user.deptId)
commit('SET_LOGINDEPTID', user.loginDeptId)
commit('SET_LOGINBOOKID', user.loginBookId)
commit('SET_DEPTNAME', user.deptName)
@@ -157,6 +161,7 @@ const user = {
commit('SET_BOOKNAME', user.bookName)
commit('SET_NAME', user.userName)
commit('SET_USERID', user.userId)
commit('SET_DEPTID', user.deptId)
commit('SET_LOGINDEPTID', user.loginDeptId)
commit('SET_LOGINBOOKID', user.loginBookId)
commit('SET_DEPTNAME', user.deptName)
@@ -227,6 +232,7 @@ const user = {
commit('SET_BOOKNAME', user.bookName)
commit('SET_NAME', user.userName)
commit('SET_USERID', user.userId)
commit('SET_DEPTID', user.deptId)
commit('SET_LOGINDEPTID', user.loginDeptId)
commit('SET_LOGINBOOKID', user.loginBookId)
commit('SET_DEPTNAME', user.deptName)


+ 0
- 2
src/utils/global.js View File

@@ -1,10 +1,8 @@
const deptId = 100 ;
const severApi = 'http://192.168.31.107:8080';

export default
{
deptId,//区县ID
severApi,//全局API
}
export const REGION = {
YI_LONG_XIAN: '仪陇',


+ 3
- 2
src/utils/request.js View File

@@ -65,10 +65,11 @@ if(responseInterceptor === undefined){
responseInterceptor = service.interceptors.response.use(res => {
Toast.clear();
// 未设置状态码则默认成功状态
const code = res.data.code || 200;
const code = res.data.code || 200 || '200';
// 获取错误信息
const msg = errorCode[code] || res.data.msg || errorCode['default']
// console.info(gqnum); && gqnum === 0
console.log(code)
if (code === 401) {
// gqnum++;
Dialog.confirm({
@@ -135,7 +136,7 @@ if(responseInterceptor === undefined){
} else if (code === 500) {
Dialog.alert({ type: 'warning', message: msg });
return Promise.reject(new Error(msg))
} else if (code !== 200 && code !== 401) {
} else if (code !== 200 && code !== 401 && code !== '200') {
Dialog.alert({ type: 'warning', message: msg });
return Promise.reject('error')
} else {


+ 18
- 6
src/views/contracted/village/contractor/contractWord.vue View File

@@ -25,7 +25,9 @@
</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="form.fbfbm" label="发包方代码:" placeholder="请输入发包方代码" required :rules="[{ required: true }]" :border="false" input-align="left" :disabled="isDisabled" maxlength="14" />
<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" maxlength="50" />
<van-field
v-model="cbflxText"
label="承包方类型:"
@@ -48,8 +50,6 @@
@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" maxlength="50" />
<van-field
v-model="cbfsText"
label="承包方式:"
@@ -149,8 +149,9 @@
@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-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-field v-model="form.yhtzmjm" label="原合同总面积(亩):" placeholder="请输入原合同总面积(亩)" :border="false" input-align="left" type="number" />
</van-form>
<p class="btn" @click="submitForm" v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">保存</p>
</div>
@@ -248,6 +249,16 @@
});
},
submitForm() {
let householdStatus = Cookies.get('householdStatus');
if (householdStatus !== '1') {
let msg = '当前承包方已' + Cookies.get('householdStatusText') + ',不能保存承包合同信息';
this.$toast({
icon: 'fail', // 找到自己需要的图标
message: msg,
duration:"2000"
});
return;
}
this.$refs.formData.validate().then(() => {
if (this.form.id) {
updateCbht(this.form).then(response => {
@@ -293,6 +304,7 @@
cbqxz: null,
cbdkzs: null,
htzmjm: null,
yhtzmjm: null,
};
this.cbfsText = '家庭承包';
this.cbflxText = '农户';
@@ -359,7 +371,7 @@
}

/deep/ .van-field__label {
width: 225px;
width: 245px;
}

/deep/ .van-field--disabled .van-field__label {


+ 1
- 1
src/views/contracted/village/contractor/contractor.vue View File

@@ -186,7 +186,7 @@
},
deleteContractor(id, index) {
this.$dialog.confirm({
message: '是否确认删除此条承包方信息?',
message: '是否确认删除此条承包方信息以及与其相关联的家庭成员、承包合同、承包地块?',
}).then(() => {
// on confirm
deleteCbf(id).then(res => {


+ 113
- 2
src/views/contracted/village/contractor/contractorDetail.vue View File

@@ -70,7 +70,82 @@
<van-field v-model="form.cbfdz" label="地址:" placeholder="请输入地址" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="100" />
<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" maxlength="15" />
<van-field v-model="form.cbfcysl" label="成员数量:" placeholder="请输入成员数量" required :rules="[{ required: true }]" :border="false" input-align="left" type="number" />
<van-field name="radio" label="是否有住房" :border="false" input-align="left">
<template #input>
<van-radio-group v-model="form.sfyzf" direction="horizontal">
<van-radio name="Y">是</van-radio>
<van-radio name="N">否</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field name="radio" label="是否在村居住" :border="false" input-align="left">
<template #input>
<van-radio-group v-model="form.sfzcjz" direction="horizontal">
<van-radio name="Y">是</van-radio>
<van-radio name="N">否</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field
v-model="form.householdStatusText"
label="整户状态:"
placeholder="请选择整户状态"
:border="false"
input-align="left"
right-icon="arrow-down"
readonly
clickable
@click="showZhzt = true"
/>
<van-popup v-model="showZhzt" position="bottom">
<van-picker
show-toolbar
:columns="householdStatusOptions"
value-key="dictLabel"
@confirm="onConfirmHouseholdStatusOptions"
@cancel="showZhzt = false"
/>
</van-popup>
<van-field v-model="form.totalArea" label="总面积(亩):" placeholder="请输入总面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.qqArea" label="确权面积(亩):" placeholder="请输入确权面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.qtArea" label="其他面积(亩):" placeholder="请输入其他面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.dks" label="地块数(块):" placeholder="请输入地块数(块)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.zzjyArea" label="自主经营面积(亩):" placeholder="请输入自主经营面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.lzcArea" label="流转出面积(亩):" placeholder="请输入流转出面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.shArea" label="损毁面积(亩):" placeholder="请输入损毁面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.zzArea" label="征占面积(亩):" placeholder="请输入征占面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.cbfdcy" label="调查员:" placeholder="请输入调查员" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="50" />
<van-field v-model="form.cbfdcrq" label="调查日期:" placeholder="请选择调查日期" required :rules="[{ required: true }]"
:border="false" input-align="left" right-icon="arrow-down" readonly clickable @click="showDcrq = true" />
<van-popup v-model="showDcrq" position="bottom">
<van-datetime-picker
:value="form.cbfdcrq ? new Date(form.cbfdcrq) : new Date()"
type="date"
title="请选择调查日期"
:min-date="minDate"
:max-date="maxDate"
@confirm="onConfirmDcrq"
@cancel="showDcrq = false"
/>
</van-popup>
<van-field v-model="form.cbfdcjs" label="调查记事:" type="textarea" rows="3" placeholder="请输入调查记事" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="250" />
<van-field v-model="form.gsjsr" label="公示记事人:" placeholder="请输入公示记事人" :border="false" input-align="left" maxlength="50" />
<van-field v-model="form.gsjs" label="公示记事:" type="textarea" rows="3" placeholder="请输入公示记事" :border="false" input-align="left" maxlength="250" />
<van-field v-model="form.gsshr" label="公示审核人:" placeholder="请输入公示审核人" :border="false" input-align="left" maxlength="20" />
<van-field v-model="form.gsshrq" label="公示审核日期:" placeholder="请选择公示审核日期" :border="false" input-align="left" right-icon="arrow-down"
readonly clickable @click="showGsshrq = true" />
<van-popup v-model="showGsshrq" position="bottom">
<van-datetime-picker
:value="form.gsshrq ? new Date(form.gsshrq) : new Date()"
type="date"
title="请选择公示审核日期"
:min-date="minDate"
:max-date="maxDate"
@confirm="onConfirmGsshrq"
@cancel="showGsshrq = false"
/>
</van-popup>
</van-form>
<p class="btn" @click="submitForm" v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">保存</p>
</div>
@@ -81,17 +156,21 @@
<script>
import Cookies from "js-cookie";
import contractorHeader from "./contractorHeader";
import FieldRadio from "@/components/form/FieldRadio";
import { getCbf, updateCbf } from "@/api/contracted/cbf";

export default {
name: "contractedVillageContractor",
components: {
contractorHeader
contractorHeader,FieldRadio
},
data() {
return {
showType:false,
showZjType:false,
showZhzt:false,
showDcrq: false,
showGsshrq: false,
// 承包方信息表单
form: {},
// 承包方类型字典
@@ -100,6 +179,10 @@
credentialTypeOptions: [],
// 调查任务的完成状态:1表示已完成,2表示未完成
taskStatus: null,
// 整户状态类型字典
householdStatusOptions: [],
minDate: new Date(1978, 0, 1),
maxDate: new Date(2100, 11, 31),
};
},
created() {
@@ -110,6 +193,9 @@
this.getDicts("cert_type").then(response => {
this.credentialTypeOptions = response.data;
});
this.getDicts("household_status").then(response => {
this.householdStatusOptions = response.data;
});
},
mounted() {
setTimeout(() => {
@@ -122,6 +208,9 @@
this.form = response.data;
this.$set(this.form, 'cbflxText', this.selectDictLabel(this.contractorTypeOptions, response.data.cbflx));
this.$set(this.form, 'cbfzjlxText', this.selectDictLabel(this.credentialTypeOptions, response.data.cbfzjlx));
this.$set(this.form, 'householdStatusText', this.selectDictLabel(this.householdStatusOptions, response.data.householdStatus));
Cookies.set('householdStatus', this.form.householdStatus, { expires: 30 });
Cookies.set('householdStatusText', this.form.householdStatusText, { expires: 30 });
});
},
onConfirmTypeOptions(value){
@@ -134,6 +223,19 @@
this.form.cbfzjlxText = value.dictLabel;
this.showZjType = false;
},
onConfirmHouseholdStatusOptions(value){
this.form.householdStatus = value.dictValue;
this.form.householdStatusText = value.dictLabel;
this.showZhzt = false;
},
onConfirmDcrq(data) {
this.form.cbfdcrq = this.format(data, 'yyyy-MM-dd');
this.showDcrq = false;
},
onConfirmGsshrq(data) {
this.form.gsshrq = this.format(data, 'yyyy-MM-dd');
this.showGsshrq = false;
},
submitForm() {
this.$refs.formData.validate().then(() => {
updateCbf(this.form).then(response => {
@@ -178,7 +280,16 @@
padding: 0 4vw;
overflow: hidden;
}

/deep/ .van-field__label {
-webkit-box-flex: 0;
flex: none;
box-sizing: border-box;
width: 9em;
margin-right: 0.32rem;
color: #646566;
text-align: left;
word-wrap: break-word;
}
/deep/ .van-nav-bar{
background: transparent;
}


+ 133
- 3
src/views/contracted/village/contractor/contractorDetailAdd.vue View File

@@ -11,7 +11,7 @@

<div class="list_main">
<van-form ref="formData">
<van-field v-model="form.cbfbm" label="代码:" placeholder="<自动生成>" :border="false" input-align="left" maxlength="18">
<van-field v-model="form.cbfbm" label="代码:" placeholder="<自动生成>" :border="false" input-align="left" :disabled="true" maxlength="18">
<!-- <template #button>
<van-button size="mini" type="primary" native-type="button" @click="generateCode">生成代码</van-button>
</template> -->
@@ -66,7 +66,82 @@
<van-field v-model="form.cbfdz" label="地址:" placeholder="请输入地址" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="100" />
<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" maxlength="15" />
<van-field v-model="form.cbfcysl" label="成员数量:" placeholder="请输入成员数量" required :rules="[{ required: true }]" :border="false" input-align="left" type="number" />
<van-field name="radio" label="是否有住房" :border="false" input-align="left">
<template #input>
<van-radio-group v-model="form.sfyzf" direction="horizontal">
<van-radio name="Y">是</van-radio>
<van-radio name="N">否</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field name="radio" label="是否在村居住" :border="false" input-align="left">
<template #input>
<van-radio-group v-model="form.sfzcjz" direction="horizontal">
<van-radio name="Y">是</van-radio>
<van-radio name="N">否</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field
v-model="householdStatusText"
label="整户状态:"
placeholder="请选择整户状态"
:border="false"
input-align="left"
right-icon="arrow-down"
readonly
clickable
@click="showZhzt = true"
/>
<van-popup v-model="showZhzt" position="bottom">
<van-picker
show-toolbar
:columns="householdStatusOptions"
value-key="dictLabel"
@confirm="onConfirmHouseholdStatusOptions"
@cancel="showZhzt = false"
/>
</van-popup>
<van-field v-model="form.totalArea" label="总面积(亩):" placeholder="请输入总面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.qqArea" label="确权面积(亩):" placeholder="请输入确权面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.qtArea" label="其他面积(亩):" placeholder="请输入其他面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.dks" label="地块数(块):" placeholder="请输入地块数(块)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.zzjyArea" label="自主经营面积(亩):" placeholder="请输入自主经营面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.lzcArea" label="流转出面积(亩):" placeholder="请输入流转出面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.shArea" label="损毁面积(亩):" placeholder="请输入损毁面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.zzArea" label="征占面积(亩):" placeholder="请输入征占面积(亩)" :border="false" input-align="left" type="number"/>
<van-field v-model="form.cbfdcy" label="调查员:" placeholder="请输入调查员" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="50" />
<van-field v-model="form.cbfdcrq" label="调查日期:" placeholder="请选择调查日期" required :rules="[{ required: true }]"
:border="false" input-align="left" right-icon="arrow-down" readonly clickable @click="showDcrq = true" />
<van-popup v-model="showDcrq" position="bottom">
<van-datetime-picker
:value="new Date()"
type="date"
title="请选择调查日期"
:min-date="minDate"
:max-date="maxDate"
@confirm="onConfirmDcrq"
@cancel="showDcrq = false"
/>
</van-popup>
<van-field v-model="form.cbfdcjs" label="调查记事:" type="textarea" rows="3" placeholder="请输入调查记事" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="250" />
<van-field v-model="form.gsjsr" label="公示记事人:" placeholder="请输入公示记事人" :border="false" input-align="left" maxlength="50" />
<van-field v-model="form.gsjs" label="公示记事:" type="textarea" rows="3" placeholder="请输入公示记事" :border="false" input-align="left" maxlength="250" />
<van-field v-model="form.gsshr" label="公示审核人:" placeholder="请输入公示审核人" :border="false" input-align="left" maxlength="20" />
<van-field v-model="form.gsshrq" label="公示审核日期:" placeholder="请选择公示审核日期" :border="false" input-align="left" right-icon="arrow-down"
readonly clickable @click="showGsshrq = true" />
<van-popup v-model="showGsshrq" position="bottom">
<van-datetime-picker
:value="new Date()"
type="date"
title="请选择公示审核日期"
:min-date="minDate"
:max-date="maxDate"
@confirm="onConfirmGsshrq"
@cancel="showGsshrq = false"
/>
</van-popup>
</van-form>
<p class="btn" @click="submitForm">保存</p>
</div>
@@ -77,13 +152,21 @@
<script>
import Cookies from "js-cookie";
import { addCbf, generateContractorCode } from "@/api/contracted/cbf";
import FieldRadio from "@/components/form/FieldRadio";
import FieldSelect from "@/components/form/FieldSelect";

export default {
name: "contractedVillageContractorAdd",
components: {
FieldRadio,FieldSelect
},
data() {
return {
showType:false,
showZjType:false,
showZhzt:false,
showDcrq: false,
showGsshrq: false,
// 承包方信息表单
form: {
deptId: null,
@@ -96,16 +179,38 @@
yzbm: null,
lxdh: null,
cbfcysl: null,
cbfdcy: null,
cbfdcrq: null,
cbfdcjs: null,
gsjsr: null,
gsjs: null,
gsshr: null,
gsshrq: null,
sfyzf: 'Y',
sfzcjz: 'Y',
householdStatus: '1',
totalArea: null,
qqArea: null,
qtArea: null,
dks: null,
zzjyArea: null,
lzcArea: null,
shArea: null,
zzArea: null,
},
// 承包方类型(标签名)
cbflxText: '农户',
// 承包方证件类型(标签名)
cbfzjlxText: '居民身份证',
householdStatusText: "正常",
// 承包方类型字典
contractorTypeOptions: [],
// 承包方证件类型字典
credentialTypeOptions: [],
// 整户状态类型字典
householdStatusOptions: [],
minDate: new Date(1978, 0, 1),
maxDate: new Date(2100, 11, 31),
};
},
created() {
@@ -115,6 +220,9 @@
this.getDicts("cert_type").then(response => {
this.credentialTypeOptions = response.data;
});
this.getDicts("household_status").then(response => {
this.householdStatusOptions = response.data;
});
},
methods: {
onConfirmTypeOptions(value){
@@ -127,10 +235,23 @@
this.cbfzjlxText = value.dictLabel;
this.showZjType = false;
},
onConfirmHouseholdStatusOptions(value){
this.form.householdStatus = value.dictValue;
this.householdStatusText = value.dictLabel;
this.showZhzt = false;
},
onConfirmDcrq(data) {
this.form.cbfdcrq = this.format(data, 'yyyy-MM-dd');
this.showDcrq = false;
},
onConfirmGsshrq(data) {
this.form.gsshrq = this.format(data, 'yyyy-MM-dd');
this.showGsshrq = false;
},
submitForm() {
this.$refs.formData.validate().then(() => {
this.form.deptId = this.$route.params.deptId;
this.form.cbfcysl = 1;
// this.form.cbfcysl = 1;
addCbf(this.form).then(response => {
if (response.code == 200) {
this.$toast({
@@ -164,7 +285,16 @@
padding: 0 4vw;
overflow: hidden;
}

/deep/ .van-field__label {
-webkit-box-flex: 0;
flex: none;
box-sizing: border-box;
width: 9em;
margin-right: 0.32rem;
color: #646566;
text-align: left;
word-wrap: break-word;
}
/deep/ .van-nav-bar{
background: transparent;
}


+ 65
- 3
src/views/contracted/village/contractor/contractorFamily.vue View File

@@ -59,8 +59,8 @@
</div>
</template>
</van-swipe-cell>
<!-- getDetail不加(), 第一个参数默认传递的是event,getDetail加(), 需要手动传递$event -->
<p class="btn" @click="goDetail()" v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">新增</p>
<!-- addMember不加(), 第一个参数默认传递的是event,addMember加(), 需要手动传递$event -->
<p class="btn" @click="addMember()" v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">新增</p>
</div>
<van-popup v-model="showContractorPopup" position="bottom">
<van-search v-model="searchKeyword" placeholder="请输入姓名搜索" />
@@ -120,7 +120,7 @@
});
},
getContractorList() {
listCbf({deptId: this.$route.params.deptId}).then(response => {
listCbf({deptId: this.$route.params.deptId, householdStatus: '1'}).then(response => {
this.contractorList = response.rows;
});
},
@@ -135,6 +135,28 @@
}
});
},
addMember() {
let householdStatus = Cookies.get('householdStatus');
if (householdStatus !== '1') {
let msg = '当前承包方已' + Cookies.get('householdStatusText') + ',不能新增家庭成员信息';
this.$toast({
icon: 'fail', // 找到自己需要的图标
message: msg,
duration:"2000"
});
return;
}
this.$router.push({
name: 'contractedVillageContractorFamilyDetail',
params: {
id: undefined,
deptId: this.$route.params.deptId,
cbfbm: this.$route.params.cbfbm,
cbfmc: this.$route.params.cbfmc,
surveyStatus: this.$route.params.surveyStatus
}
});
},
goDetail(id) {
this.$router.push({
name: 'contractedVillageContractorFamilyDetail',
@@ -148,6 +170,16 @@
});
},
deleteFamilyMember(id, index) {
let householdStatus = Cookies.get('householdStatus');
if (householdStatus !== '1') {
let msg = '当前承包方已' + Cookies.get('householdStatusText') + ',不能删除家庭成员信息';
this.$toast({
icon: 'fail', // 找到自己需要的图标
message: msg,
duration:"2000"
});
return;
}
this.$dialog.confirm({
message: '是否确认删除此条家庭成员信息?',
}).then(() => {
@@ -163,6 +195,16 @@
});
},
householdDivision(item, index) {
let householdStatus = Cookies.get('householdStatus');
if (householdStatus !== '1') {
let msg = '当前承包方已' + Cookies.get('householdStatusText') + ',不能执行分户操作';
this.$toast({
icon: 'fail', // 找到自己需要的图标
message: msg,
duration:"2000"
});
return;
}
if (item.yhzgx === '户主') {
this.$toast.fail('该成员身份为户主,不能分户');
return false;
@@ -188,6 +230,16 @@
});
},
householdTransfer(item) {
let householdStatus = Cookies.get('householdStatus');
if (householdStatus !== '1') {
let msg = '当前承包方已' + Cookies.get('householdStatusText') + ',不能执行移户操作';
this.$toast({
icon: 'fail', // 找到自己需要的图标
message: msg,
duration:"2000"
});
return;
}
if (item.yhzgx === '户主') {
this.$toast.fail('该成员身份为户主,不能移户');
return false;
@@ -220,6 +272,16 @@
});
},
houseHolder(item) {
let householdStatus = Cookies.get('householdStatus');
if (householdStatus !== '1') {
let msg = '当前承包方已' + Cookies.get('householdStatusText') + ',不能执行设为户主操作';
this.$toast({
icon: 'fail', // 找到自己需要的图标
message: msg,
duration:"2000"
});
return;
}
if (item.yhzgx === '户主') {
this.$toast.fail('该成员身份为户主,无需设置');
return false;


+ 133
- 22
src/views/contracted/village/contractor/contractorFamilyDetail.vue View File

@@ -27,6 +27,29 @@
</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 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" maxlength="20" />
<van-field
v-model="familyStatusText"
label="与户主关系:"
@@ -56,29 +79,74 @@
</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"
<field-select
v-if="form.sfgyr === '2'"
v-model="form.wdyy"
label="无地原因:"
value-key="dictLabel"
data-key="dictValue"
placeholder="选择无地原因"
remote-url="/open/zdzh/list/wdyy_type"
:on-remote-response="'data'"
/>
<van-popup v-model="showCredentialType" position="bottom">
<van-picker
show-toolbar
:columns="cyzjlxOptions"
value-key="dictLabel"
@confirm="onConfirmCredentialTypeOptions"
@cancel="showCredentialType = false"
<FieldRadio
v-if="form.sfgyr === '2'"
v-model="form.sfhdr"
label="是否侯地人员:"
value-key="dictLabel"
data-key="dictValue"
remote-url="/open/zdzh/list/sys_yes_no"
:on-remote-response="'data'"
/>
<FieldRadio
v-model="form.sfjtjjzzcy"
label="是否集体经济组织成员:"
value-key="dictLabel"
data-key="dictValue"
remote-url="/open/zdzh/list/sys_yes_no"
:on-remote-response="'data'"
/>
<FieldRadio
v-model="form.isNew"
label="是否新数据:"
value-key="dictLabel"
data-key="dictValue"
remote-url="/open/zdzh/list/sys_yes_no"
:on-remote-response="'data'"
/>
<!-- <field-date-picker-->
<!-- v-model="form.newAt"-->
<!-- label="新增时间"-->
<!-- placeholder="请选择新增时间"-->
<!-- formatter="yyyy-MM-dd"-->
<!-- input-align="right"-->
<!-- />-->

<van-field v-model="form.newAt" label="新增时间:" placeholder="请选择新增时间" :border="false"
input-align="right" right-icon="arrow-down" readonly clickable @click="showNewAt = true" />
<van-popup v-model="showNewAt" position="bottom">
<van-datetime-picker
:value="form.newAt ? new Date(form.newAt) : new Date()"
type="date"
title="请选择新增时间"
:min-date="minDate"
:max-date="maxDate"
@confirm="onConfirmNewAt"
@cancel="showNewAt = false"
/>
</van-popup>
<van-field v-model="form.cyzjhm" label="证件号码:" placeholder="请输入证件号码" required :rules="[{ required: true }]" :border="false" input-align="right" maxlength="20" />

<van-field v-model="form.elcbshjd" class="elcbshjd_css" label="二轮承包时户籍地:" placeholder="请输入二轮承包时户籍地" :border="false" input-align="right" maxlength="100" />
<van-field v-model="form.xhjd" label="现户籍地:" placeholder="请输入现户籍地" :border="false" input-align="right" maxlength="100" />
<!-- <field-select
v-model="form.householdStatus"
label="整户状态:"
value-key="dictLabel"
data-key="dictValue"
placeholder="请选择整户状态"
remote-url="/open/zdzh/list/household_status"
:on-remote-response="'data'"
/> -->
<van-field
v-model="cybzText"
label="成员备注:"
@@ -111,10 +179,16 @@
</template>
<script>
import Cookies from "js-cookie";
import FieldRadio from "@/components/form/FieldRadio";
import FieldSelect from "@/components/form/FieldSelect";
import FieldDatePicker from "@/components/form/FieldDatePicker";
import { getJtcy, addJtcy, updateJtcy } from "@/api/contracted/cbfjtcy";

export default {
name: "contractedVillageContractor",
components: {
FieldRadio, FieldSelect, FieldDatePicker
},
data() {
return {
titleName: '', // 顶部标题名
@@ -131,6 +205,9 @@
familyStatusText: null, // 家庭身份标签名
showFamilyStatus: false, // 控制家庭身份字典弹出层的显示和隐藏
taskStatus: null, // 调查任务的完成状态:1表示已完成,2表示未完成
showNewAt: false, // 控制新建日期弹出层的显示和隐藏
minDate: new Date(1978, 0, 1),
maxDate: new Date(2100, 11, 31),
};
},
created() {
@@ -186,6 +263,10 @@
this.cybzText = value.dictLabel;
this.showMemberRemark = false;
},
onConfirmNewAt(data) {
this.form.newAt = this.format(data, 'yyyy-MM-dd');
this.showNewAt = false;
},
goBack() {
this.$router.push({
name: 'contractedVillageContractorFamily',
@@ -198,6 +279,18 @@
});
},
submitForm() {
if (this.$route.params.id) {
let householdStatus = Cookies.get('householdStatus');
if (householdStatus !== '1') {
let msg = '当前承包方已' + Cookies.get('householdStatusText') + ',不能修改家庭成员信息';
this.$toast({
icon: 'fail', // 找到自己需要的图标
message: msg,
duration:"2000"
});
return;
}
}
this.$refs.formData.validate().then(() => {
if (this.$route.params.id) {
updateJtcy(this.form).then(response => {
@@ -251,7 +344,15 @@
cybz: null,
cybzsm: null,
cycgfs: null,
gqzbh: null
gqzbh: null,
sfjtjjzzcy: 'Y',
isNew: 'N',
newAt: null,
elcbshjd: null,
xhjd: null,
wdyy: null,
sfhdr: 'N',
// householdStatus: '1',
};
this.cyzjlxText = '居民身份证';
}
@@ -267,7 +368,17 @@
padding: 0 4vw;
overflow: hidden;
}

/deep/ .elcbshjd_css .van-field__label {
-webkit-box-flex: 0;
-webkit-flex: none;
flex: none;
box-sizing: border-box;
width: 10.2em;
margin-right: 0.32rem;
color: #646566;
text-align: left;
word-wrap: break-word;
}
/deep/ .van-nav-bar{
background: transparent;
}


+ 3
- 0
src/views/contracted/village/contractor/contractorHeader.vue View File

@@ -45,6 +45,7 @@
import { contractorSignature, hangUp } from "@/api/contracted/cbf";
import vueEsign from "vue-esign";
import $ from "jquery";
import Cookies from "js-cookie";

export default {
name: 'contractedVillageHeader',
@@ -86,6 +87,8 @@
goBack() {
getDept(this.deptId).then(response => {
this.$router.push({path:'/contracted/village/contractor', query: { deptId: this.deptId, deptName: response.data.deptName }});
Cookies.remove('householdStatus');
Cookies.remove('householdStatusText');
});
},
handleSign() {


+ 1
- 1
src/views/contracted/village/contractor/contractorLand.vue View File

@@ -122,7 +122,7 @@
});
},
getContractorList() {
listCbf({deptId: this.$route.params.deptId}).then(response => {
listCbf({deptId: this.$route.params.deptId, householdStatus: '1'}).then(response => {
this.contractorList = response.rows;
});
},


+ 93
- 5
src/views/contracted/village/contractor/contractorLandDetail.vue View File

@@ -30,6 +30,28 @@
</van-picker>
</van-popup>
<van-field v-model="form.dkmc" label="地块名称:" placeholder="请输入地块名称" required :rules="[{ required: true }]" :border="false" input-align="right" maxlength="50" />
<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">
<van-picker
show-toolbar
:columns="syqxzOptions"
value-key="dictLabel"
@confirm="onConfirmOwnershipOptions"
@cancel="showOwnership = false"
/>
</van-popup>
<van-field
v-model="tdlylxText"
label="土地利用类型:"
@@ -103,13 +125,45 @@
</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" maxlength="100" />
<van-field v-model="form.dkdz" label="地块东至:" placeholder="请输入地块东至" required :rules="[{ required: true }]" :border="false" input-align="right" maxlength="50" />
<van-field v-model="form.dkxz" label="地块西至:" placeholder="请输入地块西至" required :rules="[{ required: true }]" :border="false" input-align="right" maxlength="50" />
<van-field v-model="form.dknz" label="地块南至:" placeholder="请输入地块南至" required :rules="[{ required: true }]" :border="false" input-align="right" maxlength="50" />
<van-field v-model="form.dkbz" label="地块北至:" placeholder="请输入地块北至" required :rules="[{ required: true }]" :border="false" input-align="right" maxlength="50" />
<van-field v-model="form.dkbzxx" label="地块备注信息:" placeholder="请输入地块备注信息" type="textarea" rows="3" :border="false" input-align="right" maxlength="250" />
<van-field v-model="form.dkbzxx" label="地块备注信息:" placeholder="请输入地块备注信息" :border="false" input-align="right" maxlength="250" /> <!-- type="textarea" rows="3" -->

<van-field
v-model="qdfsText"
label="经营权取得方式:"
placeholder="请选择经营权取得方式"
required
:rules="[{ required: true }]"
:border="false"
input-align="right"
right-icon="arrow-down"
readonly
clickable
@click="showQdfs = true"
/>
<van-popup v-model="showQdfs" position="bottom">
<van-picker
show-toolbar
:columns="qdfsOptions"
value-key="dictLabel"
@confirm="onConfirmQdfsOptions"
@cancel="showQdfs = false"
/>
</van-popup>
<van-field v-model="form.htmjm" type="number" label="合同面积(亩):" placeholder="请输入合同面积(亩)" required :rules="[{ required: true }]" :border="false" input-align="right" />
<van-field v-model="form.yhtmjm" type="number" label="原合同面积(亩):" placeholder="请输入原合同面积(亩)" :border="false" input-align="right" />
<van-field v-model="form.lzhtbm" label="流转合同代码:" placeholder="请输入流转合同代码" :border="false" input-align="right" maxlength="18" />
<van-field v-model="form.sfqqqg" label="是否确权确股:" placeholder="请选择是否确权确股" :border="false" input-align="right">
<template #input>
<van-radio-group v-model="form.sfqqqg" direction="horizontal">
<van-radio v-for="item in sfqqqgOptions" :key="item.dictValue" :name="item.dictValue">{{ item.dictLabel }}</van-radio>
</van-radio-group>
</template>
</van-field>

<div class="mapBox">
<common-map ref="contractedLandMap" :minMapZoom="15" :maxMapZoom="18" :allowDraw="true" @drawFinished="onMapDrawFinished" />
@@ -139,6 +193,9 @@
isDisabled: false, // 是否禁用
form: {}, // 承包地信息表单
showLandCode: false, // 控制地块代码弹出层的显示和隐藏
syqxzOptions: [], // 所有权性质字典
syqxzText: null, // 所有权性质标签名
showOwnership: false, // 控制所有权性质字典弹出层的显示和隐藏
tdlylxOptions: [], // 土地利用类型字典
tdlylxText: null, // 土地利用类型标签名
showLandUseType: false, // 控制土地利用类型字典弹出层的显示和隐藏
@@ -149,6 +206,10 @@
tdytText: null, // 土地用途标签名
showLandPurpose: false, // 控制土地用途字典弹出层的显示和隐藏
sfjbntOptions: [], // 是否基本农田字典
qdfsOptions: [], // 承包经营权取得方式字典
qdfsText: null, // 经营权取得方式标签名
showQdfs: false, // 控制土地用途字典弹出层的显示和隐藏
sfqqqgOptions: [], // 是否确权确股字典
landList: [], // 地块信息列表
taskStatus: null, // 调查任务的完成状态:1表示已完成,2表示未完成
searchKeyword: '', // 弹出框查询关键字
@@ -156,6 +217,9 @@
},
created() {
this.taskStatus = Cookies.get('taskStatus');
this.getDicts("land_ownership").then(response => {
this.syqxzOptions = response.data;
});
this.getDicts("land_use").then(response => {
this.tdlylxOptions = response.data;
});
@@ -167,6 +231,10 @@
});
this.getDicts("is_common").then(response => {
this.sfjbntOptions = response.data;
this.sfqqqgOptions = response.data;
});
this.getDicts("jyq_method").then(response => {
this.qdfsOptions = response.data;
});
},
mounted() {
@@ -211,9 +279,11 @@
getDetail(){
getCbdkxx(this.$route.params.id).then(response => {
this.form = response.data;
this.syqxzText = this.selectDictLabel(this.syqxzOptions, response.data.syqxz);
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);
this.qdfsText = this.selectDictLabel(this.qdfsOptions, response.data.cbjyqqdfs);
if (response.data.theGeomJson) {
this.form.theGeom = JSON.stringify(JSON.parse(response.data.theGeomJson).coordinates);
this.$nextTick(() => {
@@ -230,19 +300,25 @@
cbfbm: null,
dkbm: null,
dkmc: null,
syqxz: 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
theGeom: null,
cbjyqqdfs: '110',
htmjm: null,
yhtmjm: null,
lzhtbm: null,
sfqqqg: null
};
this.qdfsText = '家庭承包';
},
openLandCodePopup() {
/* if (this.form.dkbm) {
@@ -257,6 +333,8 @@
onConfirmLandCodeOptions(value) {
this.form.dkbm = value.dkbm;
this.form.dkmc = value.dkmc;
this.form.syqxz = value.syqxz;
this.syqxzText = this.selectDictLabel(this.syqxzOptions, value.syqxz);
this.form.tdlylx = value.tdlylx;
this.tdlylxText = this.selectDictLabel(this.tdlylxOptions, value.tdlylx);
this.form.dldj = value.dldj;
@@ -279,6 +357,11 @@
}
this.showLandCode = false;
},
onConfirmOwnershipOptions(value){
this.form.syqxz = value.dictValue;
this.syqxzText = value.dictLabel;
this.showOwnership = false;
},
onConfirmLandUseTypeOptions(value) {
this.form.tdlylx = value.dictValue;
this.tdlylxText = value.dictLabel;
@@ -294,6 +377,11 @@
this.tdytText = value.dictLabel;
this.showLandPurpose = false;
},
onConfirmQdfsOptions(value) {
this.form.cbjyqqdfs = value.dictValue;
this.qdfsText = value.dictLabel;
this.showQdfs = false;
},
goBack() {
this.$router.push({
name: 'contractedVillageContractorLand',
@@ -382,7 +470,7 @@
}

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

.tb_main{


+ 26
- 0
src/views/contracted/village/employer/employer.vue View File

@@ -50,6 +50,20 @@
<van-field v-model="form.lxdh" label="联系电话:" placeholder="请输入联系电话" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" maxlength="15" />
<van-field v-model="form.fbfdz" label="地址:" placeholder="请输入地址" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" maxlength="100" />
<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.fbfdcy" label="调查员:" placeholder="请输入调查员" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" maxlength="30" />
<van-field v-model="form.fbfdcrq" label="调查日期:" placeholder="请选择调查日期" required :rules="[{ required: true }]"
:border="false" input-align="right" right-icon="arrow-down" readonly clickable @click="showDcrq = true" />
<van-popup v-model="showDcrq" position="bottom">
<van-datetime-picker
:value="form.fbfdcrq ? new Date(form.fbfdcrq) : new Date()"
type="date"
title="请选择调查日期"
:min-date="minDate"
:max-date="maxDate"
@confirm="onConfirmDcrq"
@cancel="showDcrq = false"
/>
</van-popup>
<van-field v-model="form.fbfdcjs" label="调查记事:" placeholder="请输入调查记事" type="textarea" rows="3" required :rules="[{ required: true }]" :border="false" input-align="right" label-width="auto" maxlength="200" />
<van-field label="签字图片:" readonly :border="false" label-width="auto" />
<img :src="'/api'+form.fbfdcqz" width="100%" alt="" />
@@ -115,6 +129,10 @@
resultImg: "", // 最终画布生成的base64图片
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
},
// 调查日期弹出层
showDcrq: false,
minDate: new Date(1978, 0, 1),
maxDate: new Date(2100, 11, 31),
};
},
created() {
@@ -123,6 +141,8 @@
this.getDicts("cert_type").then(response => {
this.credentialTypeOptions = response.data;
});
},
mounted() {
this.getDetail();
},
methods: {
@@ -150,6 +170,10 @@
this.credentialTypeText = value.dictLabel;
this.showCredentialType = false;
},
onConfirmDcrq(data) {
this.form.fbfdcrq = this.format(data, 'yyyy-MM-dd');
this.showDcrq = false;
},
submitForm() {
this.$refs.formData.validate().then(() => {
if (this.form.id) {
@@ -192,6 +216,8 @@
lxdh: null,
fbfdz: null,
yzbm: null,
fbfdcy: null,
fbfdcrq: null,
fbfdcjs: null,
fbfdcqz: null
};


+ 2
- 2
src/views/lawEnforcement/index.vue View File

@@ -165,7 +165,7 @@ export default {
})
},
/** 查询待办列表 */
getTaskList() {
/*getTaskList() {
this.loading = true;
return request({
url: "/activiti/process/taskList",
@@ -181,7 +181,7 @@ export default {
})
.then(() => {
});
},
},*/
getList(){
this.loading = true;
this.queryParams.number = 2 ;


+ 3
- 3
src/views/lawEnforcement/user/index.vue View File

@@ -188,10 +188,10 @@ export default {
console.log(res.data.companyName)
this.companyName = res.data.companyName;
});
this.getTaskList();
//this.getTaskList();
});
},
getTaskList() {
/*getTaskList() {
this.loading = true;
return request({
url: "/activiti/process/taskList",
@@ -208,7 +208,7 @@ export default {
.then(() => {

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


+ 6
- 6
src/views/lawEnforcement/user/waitingProcessing.vue View File

@@ -169,7 +169,7 @@ export default {
});
},
methods: {
getTaskList() {
/*getTaskList() {
this.loading = true;
return request({
url: "/activiti/process/taskList",
@@ -189,8 +189,8 @@ export default {
}).then(() => {

});
},
getTaskDoneList(){
},*/
/*getTaskDoneList(){
this.doneLoading = true;
return request({
url: "/activiti/process/taskDoneList",
@@ -211,18 +211,18 @@ export default {
})
.then(() => {
});
},
},*/
getListchange(type){
if(type == 'db'){
this.taskList = [];
this.queryParamsTask.pageNum = 1;
this.finished = false;
this.getTaskList()
//this.getTaskList()
} else {
this.taskDoneList = [];
this.queryParams.pageNum = 1 ;
this.doneFinished = false;
this.getTaskDoneList()
//this.getTaskDoneList()
}
}
},


+ 3
- 3
src/views/lawEnforcement/userNew/user_new.vue View File

@@ -134,10 +134,10 @@ export default {
console.log(res.data.companyName)
this.companyName = res.data.companyName;
});
this.getTaskList();
//this.getTaskList();
});
},
getTaskList() {
/*getTaskList() {
this.loading = true;
return request({
url: "/activiti/process/taskList",
@@ -154,7 +154,7 @@ export default {
.then(() => {

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


+ 77
- 15
src/views/news/index.vue View File

@@ -7,21 +7,48 @@
placeholder
@click-left="onClickLeft"
/>
<van-list
v-model="loading"
:finished="finished"
finished-text="没有更多了"
@load="getList()"
>
<!-- @load="newList"-->
<van-cell v-for="item in newList" :key="item.id" :title="item.title" :label="item.newsTime" :to="{name:'newDetailCJ', query: {id:item.id}}">
<!-- 使用 right-icon 插槽来自定义右侧图标 -->
<template #right-icon>
<van-image :src="item.img" class="search-icon" width="30%" style="margin-left: 10px;" v-if="item.img" />
<van-image src="../../static/images/zwtpxw.jpg" class="search-icon" width="30%" v-else/>
</template>
</van-cell>
</van-list>
<van-tabs animated type="card" color="#007b76" style="margin-top: 10px;">

<van-tab title="新闻资讯">
<van-list
v-model="loading"
:finished="finished"
finished-text="没有更多了"
style="margin-top: 10px;"
@load="getList()"
>
<!-- @load="newList"-->
<van-cell v-for="item in newList" :key="item.id" :title="item.title" :label="item.newsTime" :to="{name:'newDetailCJ', query: {id:item.id}}">
<!-- 使用 right-icon 插槽来自定义右侧图标 -->
<template #right-icon>
<van-image :src="item.img" class="search-icon" width="30%" style="margin-left: 10px;" v-if="item.img" />
<van-image src="../../static/images/zwtpxw.jpg" class="search-icon" width="30%" v-else/>
</template>
</van-cell>
</van-list>
</van-tab>

<van-tab title="价格指数">
<van-list
v-model="secondLoading"
:finished="secondFinished"
finished-text="没有更多了"
style="margin-top: 10px;"
@load="getSecondList"
>
<van-cell v-for="item in secondList" :key="item.id" :title="item.title" :label="item.newsTime" :to="{name:'newDetailCJ', query: {id:item.id}}">
<!-- 使用 right-icon 插槽来自定义右侧图标 -->
<template #right-icon>
<van-image :src="item.img" class="search-icon" width="30%" style="margin-left: 10px;" v-if="item.img" />
<van-image src="../../static/images/zwtpxw.jpg" class="search-icon" width="30%" v-else/>
</template>
</van-cell>
</van-list>
</van-tab>

</van-tabs>


</div>
</template>

@@ -35,8 +62,14 @@ export default {
loading: false,
//是否滚动到底部
finished: false,
//是否显示加载
secondLoading: false,
//是否滚动到底部
secondFinished: false,
//新闻集合
newList:[],
//交易规则集合
secondList:[],
//查询参数
queryParams: {
pageNum: 1,
@@ -44,6 +77,13 @@ export default {
deptId:100,
number:2
},
//交易规则查询参数
querySecondParams: {
deptId:100,
pageNum:1,
pageSize:10,
number:9
},
};
},
created() {},
@@ -70,6 +110,28 @@ export default {
this.loading = false;
});
},
getSecondList(){
this.loading = true;
newList(this.querySecondParams).then(response => {
console.log(response);
for (var i = 0; i < response.rows.length; i++) {
this.secondList.push(response.rows[i]);
var imgStrs = response.rows[i].content.match(/<IMG src=\"([^\"]*?)\">/gi)
if (imgStrs != null && imgStrs != '') {
console.log(imgStrs[0].length-2)
console.log(imgStrs[0])
this.secondList[i].img = imgStrs[0].substr(10,(imgStrs[0].length-12));
}
}
console.log(this.secondList)
if(this.secondList.length >= response.total){
this.secondFinished = true;
return;
}
this.querySecondParams.pageNum += 1 ;
this.secondLoading = false;
});
},
},
};
</script>


+ 31
- 0
src/views/news/newDetail.vue View File

@@ -15,6 +15,16 @@
<van-col span="2"></van-col>
</van-row>
<div id="content"></div>

<div v-if="attachmentQueryList.length>0">
<van-divider>附件</van-divider>
<van-cell :title="item.fileName" :url="'/api'+item.fileUrl" is-link v-for="(item,index) in attachmentQueryList">
<!-- 使用 right-icon 插槽来自定义右侧图标 -->
<template #icon>
<img src="../../assets/images/file_icon.png" style="display: block;width: 24px;margin-right: 5px;" alt="">
</template>
</van-cell>
</div>
</div>
</template>

@@ -25,6 +35,7 @@ export default {
data() {
return {
detail:'',
attachmentQueryList:[]
};
},
created() {
@@ -36,6 +47,19 @@ export default {
console.log(response)
this.detail = response.data
document.getElementById('content').innerHTML = response.data.content;

if(response.data.attachment){
var content = response.data.attachment.split(',');
let list = [];
content.map(rr=>{
list.push({
fileUrl:rr,
fileName:rr.substr(27,rr.length)
})
})

this.attachmentQueryList = list;
}
});
},
},
@@ -60,4 +84,11 @@ export default {
img{
width: 100%;
}
/deep/.van-cell__title, .van-cell__value{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
}
</style>

+ 1
- 1
src/views/onlineHome/bankAgriculture/paymentApproval/approvalProcess.vue View File

@@ -152,7 +152,7 @@ export default {
getTransfer(id).then((response) => {
this.form = response.data;
this.processList = {}
this.getTransferProcess(this.$route.query.id);
this.getTransferProcess(id);
if(this.form.capitalExpenditureType==2){
this.capitalExpenditureOpen = true
let param={


+ 344
- 0
src/views/pest/agriculturalRecords/agriculturalRecords.vue View File

@@ -0,0 +1,344 @@
<template>
<div class="app-container">

<van-nav-bar
title="农事记录"
left-arrow
fixed
placeholder
@click-left="$router.push({path:'/pest/index'})"
@click-right="$router.push({path:'/pest/agriculturalRecordsAdd'})"
>
<template #right>
<van-icon name="add-o" size="20" />
</template>
</van-nav-bar>

<van-search align="center" placeholder="请输入搜索关键词" left-icon="../../../static/images/pest/search_icon.png" />

<div class="file_main">
<van-field
readonly
clickable
label="地块选择 |"
placeholder="请选择"
@click="showLand = true"
right-icon="list-switching"
label-width="auto"
:border="false"
:rules="[{ required: true , message:'请选择折旧方式' }]"
/>
<van-popup v-model="showLand" position="bottom">
<van-picker
show-toolbar
:columns="landOptions"
@cancel="showLand = false"
/>
</van-popup>

<van-field
readonly
clickable
label="时间选择 |"
placeholder="请选择"
@click="showTime = true"
right-icon="notes-o"
label-width="auto"
:border="false"
:rules="[{ required: true , message:'请选择折旧方式' }]"
/>
<van-popup v-model="showTime" position="bottom">
<van-datetime-picker
v-model="currentDate"
type="date"
title="选择年月日"
:min-date="minDate"
:max-date="maxDate"
/>
</van-popup>

<van-field readonly label="标题名称 |" placeholder="请输入" label-width="auto" :border="false" >
<template #button>
<p class="clear_file">重置</p>
</template>
</van-field>
</div>

<div class="statistics_main">
<p class="statistics_tt">共14条</p>
<div class="statistics_block">
<p>排序</p>
<van-icon name="exchange" style="transform: rotate(90deg)" />
</div>
</div>

<div class="list_main">
<van-list>
<van-swipe-cell v-for="(item,index) in 10" :key="index" >
<div class="item" @click="goDetail(item)">
<img src="../../../../static/images/pest/list_img.png" alt="">
<div class="info">
<div class="title">
<p class="news_title">记录人员</p>
<p class="tips_mark">王响</p>
</div>
<div class="title">
<p class="news_title">农事记录</p>
<p class="tips_mark">耕地浇灌农事记录</p>
</div>
<div class="title">
<p class="news_title">记录日期</p>
<p class="tips_mark">2023.02.02 21:57 星期四</p>
</div>
</div>
</div>
<!-- <template #right>
<div class="operation">
delete 删除 edit编辑 view查看 list榜单
<div class="opera_btn">
<img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35">
<p>签名</p>
</div>
<div class="opera_btn" style="margin: 0 10px;">
<img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35">
<p>预览</p>
</div>
<div class="opera_btn">
<img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35">
<p>电子合同</p>
</div>
<div class="opera_btn">
<img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35">
<p>线下合同</p>
</div>
</div>
</template> -->
</van-swipe-cell>
</van-list>
</div>

</div>
</template>
<script>
import Cookies from "js-cookie";

export default {
name: "agriculturalRecords",
data() {
return {
landOptions:[],
showLand:false,
showTime:false,
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date(2021, 0, 17),
};
},
created() {

},
methods: {

},
};
</script>
<style scoped lang="scss">

.app-container{
background: #F2F6F2 url("../../../../static/images/pest/index/pest_index_bg.png") no-repeat top;
background-size: 100% auto;
height: 100vh;
padding: 0 4vw;
}

.clear_file{
background: linear-gradient(to right , #8AE15B , #BBFE9C);
color: #ffffff;
padding: 0 25px;
border-radius: 100vh;
font-size: .3rem;
}

/deep/ .van-nav-bar{
background: transparent;
}

/deep/ .van-nav-bar .van-icon{
color: #000000;
}

/deep/ .van-hairline--bottom::after{
border: none;
}

/deep/ .van-search{
padding: 0;
background: transparent;
}
/deep/ .van-search__content{
padding: 5px 25px;
border-radius: 20px;
}
/deep/ .van-search .van-cell{
align-items: center;
}
.file_main{
background: #ffffff;
margin: 25px auto 0;
border-radius: 15PX;
overflow: hidden;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
}
.statistics_main{
display: flex;
align-items: center;
position: relative;
margin-top: 15PX;
font-size: .35rem;
line-height: 1;
.statistics_tt{
flex: 1; /* 占据剩余空间 */
text-align: center; /* 文字水平居中 */
}
.statistics_block{
display: flex;
align-items: center;
position: absolute;
right: 0;
}
}
.list_main{
margin-top: 15PX;
height: 65vh;
overflow-y: scroll;
.item{
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
padding:25px 32px;
margin-bottom: 20px;
display: flex;
align-items: center;
img{
width: 174px;
height: 174px;
border-radius: 10px;
margin-right: 2vh;
display: block;
}
.info{
flex: 1;
.title{
display: flex;
align-items: center;
height: 58px;
.news_title{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
font-size: .35rem;
color: rgba(28,35,76,.7);
margin-right: 15px;
}
.tips_mark{
font-size: .35rem;
color: #1C234C;
text-align: center;
border-radius: 100vh;
}
}
.time{
font-size: 16PX;
color: #c1c1c1;
display: flex;
align-items: center;
margin-top: 5PX;
justify-content: space-between;
p:first-child{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
span{
color: #5fe495;
font-weight: bold;
}
}
p:last-child{
font-size: 16PX;
text-align: center;
flex-shrink: 0;
span{
color: #5fe495;
font-weight: bold;
}
}
}
}
}

.operation{
display: flex;
align-items: center;
justify-content: right;
text-align: center;
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
height: 100%;
padding: 0 15Px;
margin-left: 10PX;
.opera_btn{
border-radius: 50%;
&.delete{
background:#df0707;
margin-left: 10PX;
.icon{
width: 22PX;
height: 29PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_03.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.edit{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 26PX;
height: 25PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_02.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.view{
background: #3494ff;
margin-left: 10PX;
.icon {
width: 29PX;
height: 21PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_04.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.list{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 29px;
height: 21px;
background: url('../../../assets/images/sunVillage_info/list_icon_10.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
}
}
}

</style>

+ 300
- 0
src/views/pest/agriculturalRecords/agriculturalRecordsAdd.vue View File

@@ -0,0 +1,300 @@
<template>
<div class="app-container">

<van-nav-bar
title="农事记录"
left-arrow
fixed
placeholder
@click-left="$router.push({path:'/pest/agriculturalRecords'})"
/>

<div class="file_main top">
<van-field
readonly
clickable
label="地块选择"
placeholder="请选择"
@click="showLand = true"
right-icon="arrow-down"
:border="false"
:rules="[{ required: true , message:'请选择折旧方式' }]"
/>
<van-popup v-model="showLand" position="bottom">
<van-picker
show-toolbar
:columns="landOptions"
@cancel="showLand = false"
/>
</van-popup>
<van-field label="记录人" placeholder="请输入" :border="false" />
<van-field label="标题" placeholder="请输入" :border="false" />
</div>

<div class="file_main center">
<van-field readonly label="内容" :border="false" />
<van-field placeholder="请输入" type="textarea" rows="4" autosize :border="false" style="padding-top: 0;" />
</div>

<div class="file_main bottom">
<van-field readonly label="农事图片" :border="false" />
<div class="load_block">
<van-uploader :after-read="afterRead" />
</div>
</div>

<div class="btn_main">
<van-button color="#CECECE" round block>取消</van-button>
<van-button color="linear-gradient(to right , #8AE15B , #BBFE9C)" round block>确定</van-button>
</div>

</div>
</template>
<script>
import Cookies from "js-cookie";

export default {
name: "agriculturalRecordsAdd",
data() {
return {
landOptions:[],
showLand:false,
showTime:false,
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date(2021, 0, 17),
};
},
created() {

},
methods: {
afterRead(file) {
// 此时可以自行将文件上传至服务器
console.log(file);
},
},
};
</script>
<style scoped lang="scss">

.app-container{
background: #F2F6F2 url("../../../../static/images/pest/index/pest_index_bg.png") no-repeat top;
background-size: 100% auto;
height: 100vh;
padding: 0 4vw;
}

.btn_main{
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 5vh;
button:nth-child(2){
margin-left: 5vh;
}
}

.clear_file{
background: linear-gradient(to right , #8AE15B , #BBFE9C);
color: #ffffff;
padding: 0 25px;
border-radius: 100vh;
}

/deep/ .van-nav-bar{
background: transparent;
}

/deep/ .top.van-field__label{
border-right: 1px solid #ddd;
}

/deep/ .center textarea{
background: #F5F8F6;
padding: 20px;
}

/deep/ .van-nav-bar .van-icon{
color: #000000;
}

/deep/ .van-hairline--bottom::after{
border: none;
}

/deep/ .van-search{
padding: 0;
background: transparent;
}
/deep/ .van-search__content{
padding: 5px 25px;
border-radius: 20px;
}
/deep/ .van-search .van-cell{
align-items: center;
}

.load_block{
padding: 0 32px;
}
.file_main{
background: #ffffff;
margin: 25px auto 0;
border-radius: 15PX;
overflow: hidden;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
}
.statistics_main{
display: flex;
align-items: center;
position: relative;
margin-top: 15PX;
font-size: .35rem;
line-height: 1;
.statistics_tt{
flex: 1; /* 占据剩余空间 */
text-align: center; /* 文字水平居中 */
}
.statistics_block{
display: flex;
align-items: center;
position: absolute;
right: 0;
}
}
.list_main{
margin-top: 15PX;
height: 65vh;
overflow-y: scroll;
.item{
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
padding:25px 32px;
margin-bottom: 20px;
display: flex;
align-items: center;
img{
width: 174px;
height: 174px;
border-radius: 10px;
margin-right: 2vh;
display: block;
}
.info{
flex: 1;
.title{
display: flex;
align-items: center;
height: 58px;
.news_title{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
font-size: .35rem;
color: rgba(28,35,76,.7);
margin-right: 15px;
}
.tips_mark{
font-size: .35rem;
color: #1C234C;
text-align: center;
border-radius: 100vh;
}
}
.time{
font-size: 16PX;
color: #c1c1c1;
display: flex;
align-items: center;
margin-top: 5PX;
justify-content: space-between;
p:first-child{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
span{
color: #5fe495;
font-weight: bold;
}
}
p:last-child{
font-size: 16PX;
text-align: center;
flex-shrink: 0;
span{
color: #5fe495;
font-weight: bold;
}
}
}
}
}

.operation{
display: flex;
align-items: center;
justify-content: right;
text-align: center;
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
height: 100%;
padding: 0 15Px;
margin-left: 10PX;
.opera_btn{
border-radius: 50%;
&.delete{
background:#df0707;
margin-left: 10PX;
.icon{
width: 22PX;
height: 29PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_03.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.edit{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 26PX;
height: 25PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_02.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.view{
background: #3494ff;
margin-left: 10PX;
.icon {
width: 29PX;
height: 21PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_04.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.list{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 29px;
height: 21px;
background: url('../../../assets/images/sunVillage_info/list_icon_10.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
}
}
}

</style>

+ 481
- 0
src/views/pest/growthMonitoring/growthMonitoring.vue View File

@@ -0,0 +1,481 @@
<template>
<div class="app-container">

<van-nav-bar
title="长势监测"
left-arrow
fixed
placeholder
@click-left="$router.push({path:'/pest/index'})"
/>

<div class="flex_app">
<div class="flex_main flex_main_left">
<p class="flex_num">小麦<span>(皖麦50号)</span></p>
<p class="flex_name">当前作物</p>
<i></i>
</div>

<div class="flex_main">
<div class="flex_block">
<i class="icon icon1"></i>
<div class="flex_nr">
<p class="flex_num">返青期</p>
<p class="flex_name">物候期</p>
</div>
</div>
<div class="flex_block">
<i class="icon icon2"></i>
<div class="flex_nr">
<p class="flex_num">35.5<span class="flex_unit">亩</span></p>
<p class="flex_name">种植面积</p>
</div>
</div>
</div>
</div>

<div class="file_main">
<van-field readonly label="作物长势地图" input-align="right">
<template #input>
<p class="time_box">2024-03-01<van-icon name="arrow-down" /></p>
</template>
</van-field>
<div class="file_swipe">
<img src="../../../../static/images/pest/map_bg.png" width="100%" alt="">
</div>
</div>

<div class="file_main">
<van-field readonly label="植被指数" input-align="right"/>
<div class="charts" id="main3"></div>
</div>

<div class="bottom"></div>

</div>
</template>
<script>
import Cookies from "js-cookie";
import * as echarts from "echarts";

export default {
name: "insectMonitoring",
data() {
return {
landOptions:[],
showLand:false,
showTime:false,
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date(2021, 0, 17),
};
},
created() {

},
mounted() {
this.chart3();
},
methods: {
chart3(){
var chartDom = document.getElementById('main3');
var myChart = echarts.init(chartDom);
var option;

option = {
grid: {
top:'15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
legend: {
top: 10,
right: "5%",
itemWidth: 10,
itemHeight: 10,
// padding: [5, 10],
textStyle: {
fontSize: 14,
color: "#a6c8dd",
padding: [3, 0, 0, 0],
},
},
xAxis: {
type: 'category',
data: [
'03-03',
'03-04',
'03-05',
'03-06',
'03-07',
'03-08',
'03-09',
'03-10',
'03-11',
'03-12',
'03-13',
'03-14',
'03-15',
'03-16',
'03-17',
'03-18',
]
},
yAxis: {
type: 'value',
name: '虫害只'
},
series: [
{
data: [
1,
2,
3,
4,
5,
6,
10,
0,
0,
0,
0,
0,
5,
0,
7,
0,
],
type: 'line',
lineStyle: {
width: 1,
color: 'rgba(142, 277, 97, 1)'
},
stack: 'Total',
smooth: true,
showSymbol: false,
areaStyle: {
opacity: 0.8,
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgba(142, 277, 97, .8)'
},
{
offset: 1,
color: 'rgba(142, 277, 97, 0)'
}
])
},
}
]
};

option && myChart.setOption(option);
}
},
};
</script>
<style scoped lang="scss">

.app-container{
background: #F2F6F2 url("../../../../static/images/pest/index/pest_index_bg.png") no-repeat top;
background-size: 100% auto;
height: 100vh;
padding: 0 4vw;
}

.flex_app{
display: flex;
.flex_main_left{
flex: 1;
background: url("../../../../static/images/pest/flex_main_left_bg.png") no-repeat center;
background-size: 100% 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
padding: 0 20px;
margin-right: 16px;
.flex_num{font-size: .45rem;color: #ffffff;font-weight: bold;span{font-size: .25rem;font-weight: normal;}}
.flex_unit{font-size: .25rem;color: #9F9F9F;font-weight: normal;}
.flex_name{font-size: .3rem;color: #ffffff;}
i{
display: block;
width: 4.5vh;
height: 4.5vh;
background: url("../../../../static/images/pest/flex_main_left_icon.png") no-repeat center;
background-size: 100% 100%;
}
}
}

.flex_main{
flex: 1;
display: flex;
margin-top: 16px;
flex-direction: column;
.flex_block{
flex: 1;
position: relative;
padding: 1vh;
margin-top: 16px;
display: flex;
align-items: center;
border-radius: 15PX;
background: #ffffff;
.flex_y{
font-size: .35rem;
position: absolute;
top: 0;
right: 0;
padding: 10px 10px 10px 20px;
line-height: 1;
border-bottom-left-radius: 15PX;
}
.flex_nr{
display: flex;
flex-direction: column;
align-items: baseline;
justify-content: space-evenly;
.flex_num{font-size: .45rem;color: #000000;font-weight: bold;}
.flex_unit{font-size: .25rem;color: #9F9F9F;font-weight: normal;}
.flex_name{font-size: .3rem;color: #9F9F9F;}
}
&:nth-child(1){
margin-top: 0px;
}
i{
display: block;
width: 4.5vh;
height: 4.5vh;
margin-right: 15px;
}
.icon1{
background: url("../../../../static/images/pest/growth_icon_01.png") no-repeat center;
background-size: 100% 100%;
}
.icon2{
background: url("../../../../static/images/pest/growth_icon_02.png") no-repeat center;
background-size: 100% 100%;
}
}
}

.time_box{
font-size: .3rem;
background: #F5F8F6;
color: rgba(28,35,76,.5);
padding:0 15PX;
border-radius: 100vh;
}

.my-swipe .van-swipe-item {
color: #fff;
font-size: 20PX;
line-height: 300PX;
text-align: center;
background-color: #39a9ed;
border-radius: 15PX;
}

.charts{
height: 30vh;
}

.file_swipe{
padding: 36px;
}

.bottom{
padding-bottom: 10vh;
}

/deep/ .center textarea{
background: #F5F8F6;
padding: 20px;
}

/deep/ .van-nav-bar{
background: transparent;
}

/deep/ .van-nav-bar .van-icon{
color: #000000;
}

/deep/ .van-hairline--bottom::after{
border: none;
}

/deep/ .van-search{
padding: 0;
background: transparent;
}
/deep/ .van-search__content{
padding: 5px 25px;
border-radius: 20px;
}
/deep/ .van-search .van-cell{
align-items: center;
}
.file_main{
background: #ffffff;
margin: 25px auto 0;
border-radius: 15PX;
overflow: hidden;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
}
.statistics_main{
display: flex;
align-items: center;
position: relative;
margin-top: 15PX;
font-size: .35rem;
line-height: 1;
.statistics_tt{
flex: 1; /* 占据剩余空间 */
text-align: center; /* 文字水平居中 */
}
.statistics_block{
display: flex;
align-items: center;
position: absolute;
right: 0;
}
}
.list_main{
margin-top: 15PX;
height: 65vh;
overflow-y: scroll;
.item{
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
padding:25px 32px;
margin-bottom: 20px;
display: flex;
align-items: center;
img{
width: 174px;
height: 174px;
border-radius: 10px;
margin-right: 2vh;
display: block;
}
.info{
flex: 1;
.title{
display: flex;
align-items: center;
height: 58px;
.news_title{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
font-size: .35rem;
color: rgba(28,35,76,.7);
margin-right: 15px;
}
.tips_mark{
font-size: .35rem;
color: #1C234C;
text-align: center;
border-radius: 100vh;
}
}
.time{
font-size: 16PX;
color: #c1c1c1;
display: flex;
align-items: center;
margin-top: 5PX;
justify-content: space-between;
p:first-child{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
span{
color: #5fe495;
font-weight: bold;
}
}
p:last-child{
font-size: 16PX;
text-align: center;
flex-shrink: 0;
span{
color: #5fe495;
font-weight: bold;
}
}
}
}
}

.operation{
display: flex;
align-items: center;
justify-content: right;
text-align: center;
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
height: 100%;
padding: 0 15Px;
margin-left: 10PX;
.opera_btn{
border-radius: 50%;
&.delete{
background:#df0707;
margin-left: 10PX;
.icon{
width: 22PX;
height: 29PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_03.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.edit{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 26PX;
height: 25PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_02.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.view{
background: #3494ff;
margin-left: 10PX;
.icon {
width: 29PX;
height: 21PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_04.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.list{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 29px;
height: 21px;
background: url('../../../assets/images/sunVillage_info/list_icon_10.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
}
}
}

</style>

+ 479
- 0
src/views/pest/index.vue View File

@@ -0,0 +1,479 @@
<template>
<div class="app-container">

<div class="header">
<div class="header_block">
<img class="header_img" src="../../../static/images/contracted/contracted_index_head.png" alt="">
<p>{{ nickName }}</p>
</div>
<div class="icon_block">
<img class="header_setting" src="../../../static/images/pest/index/index_icon_01.png" alt="">
<img class="header_setting" src="../../../static/images/pest/index/login_out.png" alt="">
</div>
</div>

<div class="tab">
<div class="tab_block">
<div style="flex: 1;">
<p>新住作物有限公司</p>
<p>部门名称名称</p>
</div>
<img src="../../../static/images/pest/index/pest_index_icon_4.png" alt="">
</div>
<div class="tab_block" @click="changeTaskOption('UNFINISHED')">
<div style="flex: 1;">
<div class="tab_tit">
<p>小麦</p>
<span>切换作物 ></span>
</div>
<p>返青期</p>
</div>
<img src="../../../static/images/pest/index/pest_index_icon_5.png" alt="">
</div>
</div>

<img src="../../../static/images/pest/index/pest_index_icon_6.png" width="100%" style="border-radius: 4vw;margin-top: 15px;box-shadow: 0 5PX 10PX #DDDDDD;" alt="">

<van-grid :column-num="4" :border="false" style="background-color: #ffffff;border-radius: 4vw;overflow: hidden;margin-top: 15px;box-shadow: 0 5PX 10PX #DDDDDD;">
<van-grid-item :to="{name:'pestAgriculturalRecords'}">
<img src="../../../static/images/pest/index/pest_index_icon_7.png" alt="">
<p>农事记录</p>
</van-grid-item>
<van-grid-item :to="{name:'insectMonitoring'}">
<img src="../../../static/images/pest/index/pest_index_icon_8.png" alt="">
<p>虫情监测</p>
</van-grid-item>
<van-grid-item :to="{name:'soilTesting'}">
<img src="../../../static/images/pest/index/pest_index_icon_9.png" alt="">
<p>土壤检测</p>
</van-grid-item>
<van-grid-item :to="{name:'weather'}">
<img src="../../../static/images/pest/index/pest_index_icon_10.png" alt="">
<p>气象服务</p>
</van-grid-item>
<van-grid-item :to="{name:'temperatureAndHumidity'}">
<img src="../../../static/images/pest/index/pest_index_icon_11.png" alt="">
<p>温湿度</p>
</van-grid-item>
<van-grid-item :to="{name:'growthMonitoring'}">
<img src="../../../static/images/pest/index/pest_index_icon_12.png" alt="">
<p>长势监测</p>
</van-grid-item>
<van-grid-item>
<img src="../../../static/images/pest/index/pest_index_icon_13.png" alt="">
<p>物联网设备</p>
</van-grid-item>
</van-grid>

<div class="list_tt">
<p>预警 <img src="../../../static/images/pest/index/pest_index_icon_14.png" style="vertical-align: middle;" alt=""></p>
<p>
<span>查看全部 ></span>
</p>
</div>

<div class="list_main">
<van-list>
<van-swipe-cell v-for="(item,index) in 10" :key="index" >
<div class="item" @click="goDetail(item)">
<img src="../../../static/images/pest/index/pest_index_icon_15.png" alt="">
<div class="info">
<div class="title">
<p class="news_title">物品名称名称名称名称</p>
<p class="tips_mark">仓库</p>
</div>
<div class="time">
<p>库存量 <span>+100</span></p>
<p>预警值 <span>50</span></p>
</div>
</div>
</div>
<!-- <template #right>
<div class="operation">
delete 删除 edit编辑 view查看 list榜单
<div class="opera_btn">
<img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35">
<p>签名</p>
</div>
<div class="opera_btn" style="margin: 0 10px;">
<img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35">
<p>预览</p>
</div>
<div class="opera_btn">
<img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35">
<p>电子合同</p>
</div>
<div class="opera_btn">
<img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35">
<p>线下合同</p>
</div>
</div>
</template> -->
</van-swipe-cell>
</van-list>
</div>

</div>
</template>
<script>
import Cookies from "js-cookie";
import { listSurveyTask } from "@/api/contracted";
import { getInfo, logout } from "@/api/login";

export default {
name: "contractedIndex",
data() {
return {
showPopover: false,
// 通过 actions 属性来定义菜单选项
actions: [
{ text: '修改密码',value:1 },
{ text: '退出登录',value:2 }
],
nickName: null,
phone: null,
// 调查任务
surveyTask: {
'FINISHED': [], // 已完成任务
'UNFINISHED': [] // 进行中任务
},
// 任务选项
taskOption: 'FINISHED',
};
},
created() {
this.getUserInfo();
},
methods: {
getUserInfo() {
getInfo().then(response => {
this.nickName = response.user.nickName;
this.phone = response.user.phonenumber;
this.getList(response.user.userId);
});
},
getList(userId){
listSurveyTask({userId: userId}).then(response => {
this.surveyTask = response.data;
});
},
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 }})
},
onSelect(action) {
switch (action.value) {
case 1:
this.$router.push({path:'/contracted/user/passWord'})
break;
case 2:
this.loginOut();
break;
}
},
changeTaskOption(option) {
this.taskOption = option;
},
loginOut() {
logout().then(res => {
this.$router.push({ path: '/contracted/login' });
})
}
},
};
</script>
<style scoped lang="scss">

.app-container{
background: #F2F6F2 url("../../../static/images/pest/index/pest_index_bg.png") no-repeat top;
background-size: 100% auto;
height: 100vh;
padding: 0 4vw;
}

/deep/ .van-popover__wrapper{
margin-left: auto;
}

/deep/ .van-grid-item{
&:nth-child(-n+4){
.van-grid-item__content {
padding-bottom: 0;
}
}
}

/deep/ .van-grid-item__content{
p{
margin-top: 15px;
color: #1C234C;
}
}

.header{
display: flex;
align-items: center;
padding: 5vh 0 0;
.header_img{
display: block;
width: 10vw;
height: 10vw;
border-radius: 50%;
border: 3PX solid #ffffff;
}
.header_block{
display: flex;
align-items: center;
background-color: rgba(255,255,255,.8);
padding-right: 5vw;
border-radius: 100vh;
p{
font-size: .4rem;
margin-left: 10px;
}
}
.icon_block{
display: flex;
margin-left: auto;
}
.header_setting{
width: 4.5vw;
margin-bottom: auto;
margin-left: 40px;
}
}

.tab{
display: flex;
align-items: center;
justify-content: space-between;
.tab_block{
width: 45vw;
height: 18vw;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 2vw;
border-radius: 4vw;
margin-top: 3vh;
position: relative;
box-shadow: 0 5PX 10PX #DDDDDD;
&:nth-child(1){
background: #ffffff url("../../../static/images/pest/index/pest_index_icon_2.png") no-repeat center;
background-size: 100% 100%;
}
&:nth-child(2){
background: #ffffff url("../../../static/images/pest/index/pest_index_icon_3.png") no-repeat center;
background-size: 100% 100%;
}
img{
width: 10vw;
display: block;
margin-left: 2vw;
}
.tab_tit{
display: flex;
align-items: center;
span{
font-size: .25rem;
border: 1px solid #FCC762;
background-color: #FED565;
color: #F58D1F;
padding: 2px 10px;
border-radius: 100vh;
margin-left: auto;
}
}
p{
display: flex;
align-items: center;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
&:nth-child(1){
font-size: .35rem;
}
&:nth-child(2){
font-size: .3rem;
align-items: end;
line-height: 1;
margin-top: 2vw;
color: rgba(28,35,76,.5);
}
}
}
}

.list_tt{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 3vh;
p{
&:first-child{
font-size: .38rem;
}
&:last-child{
span{
color: #999999;
margin-left: 2vh;
i{
display: inline-block;
width: 1vh;
height: 1vh;
border-radius: 100%;
margin-right: 5PX;
}
&:first-child i{
background: #fc8e13;
}
&:last-child i{
background: #5fe495;
}
}
}
}
}

.list_main{
margin-top: 15PX;
height: 35vh;
overflow-y: scroll;
.item{
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
padding:25px 32px;
margin-bottom: 20px;
display: flex;
align-items: center;
img{
width: 12%;
margin-right: 2vh;
}
.info{
flex: 1;
.title{
display: flex;
font-size: 32px;
align-items: center;
height: 58px;
justify-content: space-between;
.news_title{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
font-weight: bold;
}
.tips_mark{
font-size: 14PX;
color: #1C234C;
text-align: center;
flex-shrink: 0;
background: linear-gradient(to right,#8AE15B,#BBFE9C);
padding: 5px 25px;
border-radius: 100vh;
}
}
.time{
font-size: 16PX;
color: #c1c1c1;
display: flex;
align-items: center;
margin-top: 5PX;
justify-content: space-between;
p:first-child{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
span{
color: #5fe495;
font-weight: bold;
}
}
p:last-child{
font-size: 16PX;
text-align: center;
flex-shrink: 0;
span{
color: #5fe495;
font-weight: bold;
}
}
}
}
}

.operation{
display: flex;
align-items: center;
justify-content: right;
text-align: center;
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
height: 100%;
padding: 0 15Px;
margin-left: 10PX;
.opera_btn{
border-radius: 50%;
&.delete{
background:#df0707;
margin-left: 10PX;
.icon{
width: 22PX;
height: 29PX;
background: url('../../assets/images/sunVillage_info/signature_icon_03.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.edit{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 26PX;
height: 25PX;
background: url('../../assets/images/sunVillage_info/signature_icon_02.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.view{
background: #3494ff;
margin-left: 10PX;
.icon {
width: 29PX;
height: 21PX;
background: url('../../assets/images/sunVillage_info/signature_icon_04.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.list{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 29px;
height: 21px;
background: url('../../assets/images/sunVillage_info/list_icon_10.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
}
}
}

</style>

+ 396
- 0
src/views/pest/insectMonitoring/insectMonitoring.vue View File

@@ -0,0 +1,396 @@
<template>
<div class="app-container">

<van-nav-bar
title="虫情监测"
left-arrow
fixed
placeholder
@click-left="$router.push({path:'/pest/index'})"
/>

<div class="file_main">
<van-field
readonly
clickable
label="虫情设备"
placeholder="请选择"
@click="showLand = true"
right-icon="arrow-down"
label-width="auto"
:border="false"
input-align="right"
:rules="[{ required: true , message:'请选择' }]"
/>
<van-popup v-model="showLand" position="bottom">
<van-picker
show-toolbar
:columns="landOptions"
@cancel="showLand = false"
/>
</van-popup>
</div>

<div class="file_main center">
<van-field readonly label="内容" :border="false" />
<van-field placeholder="请输入" type="textarea" rows="4" autosize :border="false" style="padding-top: 0;" />
</div>

<div class="file_main">
<van-field readonly label="实景图片" input-align="right">
<template #input>
<p class="time_box">2024-03-01<van-icon name="arrow-down" /></p>
</template>
</van-field>
<div class="file_swipe">
<van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
<van-swipe-item>1</van-swipe-item>
<van-swipe-item>2</van-swipe-item>
<van-swipe-item>3</van-swipe-item>
<van-swipe-item>4</van-swipe-item>
</van-swipe>
</div>
</div>

<div class="file_main">
<van-field readonly label="虫害趋势" input-align="right">
<template #input>
<p class="time_box">2024-03-01<van-icon name="arrow-down" /></p>
</template>
</van-field>
<div class="charts" id="main3"></div>
</div>

<div class="bottom"></div>

</div>
</template>
<script>
import Cookies from "js-cookie";
import * as echarts from "echarts";

export default {
name: "insectMonitoring",
data() {
return {
landOptions:[],
showLand:false,
showTime:false,
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date(2021, 0, 17),
};
},
created() {

},
mounted() {
this.chart3();
},
methods: {
chart3(){
var chartDom = document.getElementById('main3');
var myChart = echarts.init(chartDom);
var option;

option = {
grid: {
top:'15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
legend: {
top: 10,
right: "5%",
itemWidth: 10,
itemHeight: 10,
// padding: [5, 10],
textStyle: {
fontSize: 14,
color: "#a6c8dd",
padding: [3, 0, 0, 0],
},
},
xAxis: {
type: 'category',
data: [
'03-03',
'03-04',
'03-05',
'03-06',
'03-07',
'03-08',
'03-09',
'03-10',
'03-11',
'03-12',
'03-13',
'03-14',
'03-15',
'03-16',
'03-17',
'03-18',
]
},
yAxis: {
type: 'value',
name: '虫害只'
},
series: [
{
data: [
0,
0,
0,
0,
0,
0,
10,
0,
0,
0,
0,
0,
5,
0,
0,
0,
],
type: 'line'
}
]
};

option && myChart.setOption(option);
}
},
};
</script>
<style scoped lang="scss">

.app-container{
background: #F2F6F2 url("../../../../static/images/pest/index/pest_index_bg.png") no-repeat top;
background-size: 100% auto;
height: 100vh;
padding: 0 4vw;
}

.time_box{
font-size: .3rem;
background: #F5F8F6;
color: rgba(28,35,76,.5);
padding:0 15PX;
border-radius: 100vh;
}

.my-swipe .van-swipe-item {
color: #fff;
font-size: 20PX;
line-height: 300PX;
text-align: center;
background-color: #39a9ed;
border-radius: 15PX;
}

.charts{
height: 30vh;
}

.file_swipe{
padding: 36px;
}

.bottom{
padding-bottom: 10vh;
}

/deep/ .center textarea{
background: #F5F8F6;
padding: 20px;
}

/deep/ .van-nav-bar{
background: transparent;
}

/deep/ .van-nav-bar .van-icon{
color: #000000;
}

/deep/ .van-hairline--bottom::after{
border: none;
}

/deep/ .van-search{
padding: 0;
background: transparent;
}
/deep/ .van-search__content{
padding: 5px 25px;
border-radius: 20px;
}
/deep/ .van-search .van-cell{
align-items: center;
}
.file_main{
background: #ffffff;
margin: 25px auto 0;
border-radius: 15PX;
overflow: hidden;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
}
.statistics_main{
display: flex;
align-items: center;
position: relative;
margin-top: 15PX;
font-size: .35rem;
line-height: 1;
.statistics_tt{
flex: 1; /* 占据剩余空间 */
text-align: center; /* 文字水平居中 */
}
.statistics_block{
display: flex;
align-items: center;
position: absolute;
right: 0;
}
}
.list_main{
margin-top: 15PX;
height: 65vh;
overflow-y: scroll;
.item{
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
padding:25px 32px;
margin-bottom: 20px;
display: flex;
align-items: center;
img{
width: 174px;
height: 174px;
border-radius: 10px;
margin-right: 2vh;
display: block;
}
.info{
flex: 1;
.title{
display: flex;
align-items: center;
height: 58px;
.news_title{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
font-size: .35rem;
color: rgba(28,35,76,.7);
margin-right: 15px;
}
.tips_mark{
font-size: .35rem;
color: #1C234C;
text-align: center;
border-radius: 100vh;
}
}
.time{
font-size: 16PX;
color: #c1c1c1;
display: flex;
align-items: center;
margin-top: 5PX;
justify-content: space-between;
p:first-child{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
span{
color: #5fe495;
font-weight: bold;
}
}
p:last-child{
font-size: 16PX;
text-align: center;
flex-shrink: 0;
span{
color: #5fe495;
font-weight: bold;
}
}
}
}
}

.operation{
display: flex;
align-items: center;
justify-content: right;
text-align: center;
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
height: 100%;
padding: 0 15Px;
margin-left: 10PX;
.opera_btn{
border-radius: 50%;
&.delete{
background:#df0707;
margin-left: 10PX;
.icon{
width: 22PX;
height: 29PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_03.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.edit{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 26PX;
height: 25PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_02.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.view{
background: #3494ff;
margin-left: 10PX;
.icon {
width: 29PX;
height: 21PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_04.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.list{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 29px;
height: 21px;
background: url('../../../assets/images/sunVillage_info/list_icon_10.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
}
}
}

</style>

+ 470
- 0
src/views/pest/pestLogin.vue View File

@@ -0,0 +1,470 @@
<template>
<div class="app-container">
<div class="title">
<img style="display: block;width: 90%;margin: 0 auto;" src="../../../static/images/pest/pest_login_header.png" alt="">
</div>
<van-tabs v-model="active" color="#1D6FE9" :swipeable="true" style="margin-top:0.5rem;padding:0 10px;">
<van-tab title="密码登录" name="1">
<van-form style="padding:50px 0;height: 100vh;" v-if="!showMessage">
<van-field
v-model="formData.username"
placeholder="请输入手机号/账号"
left-icon="contact"
:rules="[{ required: true, message:'' }]"
/>
<van-field
v-model="formData.password"
type="password"
left-icon="edit"
style="margin-top: 20px"
placeholder="请输入密码"
:rules="[{ required: true, message:'' }]"
/>
<div style="display: flex;width: 90%;margin: 20px auto 0;">
<van-field
v-model="formData.code"
left-icon="shield-o"
center
clearable
placeholder="图形验证码"
/>
<div style="border-radius: 100vh;width: 120px;margin-left: 20px;overflow: hidden;flex-shrink: 0;">
<img style="width: 120px;display: block;transform: scale(1.1);" :src="codeUrl" @click="getCode" />
</div>
</div>

<van-checkbox style="float: left;margin-top:10px;margin-left:20px;" v-model="formData.rememberMe" checked-color="#44da6e" shape="square">{{showMessage ? "记住手机号" : "记住密码"}}</van-checkbox>
<p style="float: right;margin-top:10px;margin-right:20px;color:#44da6e ">忘记密码</p>
<div class="clear"></div>
<div style="margin: 50px 16px 16px;border-radius: 100vh;overflow: hidden;">
<van-button block type="info" native-type="submit" color="linear-gradient(to right, #a4f68b, #38d375)" @click="handleLogin">登录</van-button>
<!-- <p style="text-align: center;margin-top: 20px;color:#878787 " @click="showMessagePop">短信验证码登录</p>-->
</div>
</van-form>
</van-tab>
<van-tab title="短信登录" name="2">
<van-form style="padding:50px 0;height: 100vh;">
<van-field
v-model="formData.mobile"
left-icon="phone-o"
name="请输入手机号"
placeholder="请输入手机号"
:rules="[{ required: true, message: '' }]"
/>
<div style="display: flex;width: 90%;margin: 20px auto 0;">
<van-field
v-model="formData.code"
left-icon="shield-o"
center
clearable
placeholder="图形验证码"
/>
<div style="border-radius: 100vh;width: 120px;margin-left: 20px;overflow: hidden;flex-shrink: 0;">
<img style="width: 120px;display: block;transform: scale(1.1);" :src="codeUrl" @click="getCode" />
</div>
</div>
<div style="margin: 50px 16px 16px;">
<van-button block type="info" native-type="submit" color="linear-gradient(to right, #a4f68b, #38d375)" @click="getSmsCode">获取验证码</van-button>
<!-- <p style="text-align: center;margin-top: 20px;color:#878787 " @click="showMessagePop">密码登录</p>-->
</div>
</van-form>
<!-- <van-form style="margin:50px 0;">-->
<!-- <van-field-->
<!-- v-model="formData.memberName"-->
<!-- name="请输入姓名"-->
<!-- placeholder="请输入姓名"-->
<!-- :rules="[{ required: true, message: '' }]"-->
<!-- />-->
<!-- <van-field-->
<!-- v-model="formData.idcard"-->
<!-- name="请输入身份证号"-->
<!-- style="margin-top: 20px"-->
<!-- placeholder="请输入身份证号"-->
<!-- :rules="[{ required: true, message: '' }]"-->
<!-- />-->
<!-- <van-field-->
<!-- v-model="formData.mobile"-->
<!-- name="请输入手机号"-->
<!-- style="margin-top: 20px"-->
<!-- placeholder="请输入手机号"-->
<!-- :rules="[{ required: true, message: '' }]"-->
<!-- />-->
<!-- <van-field-->
<!-- v-model="formData.code"-->
<!-- center-->
<!-- clearable-->
<!-- label="验证码"-->
<!-- placeholder="图形验证码"-->
<!-- >-->
<!-- <template #button>-->
<!-- <img style="width: 100px" :src="codeUrl" @click="getCode" />-->
<!-- </template>-->
<!-- </van-field>-->
<!-- <van-field-->
<!-- v-model="formData.smsCode"-->
<!-- style="margin-top: 20px"-->
<!-- placeholder="请输入验证码"-->
<!-- :rules="[{ required: true, message: '' }]"-->
<!-- >-->
<!-- <template #button>-->
<!-- &lt;!&ndash; <van-button size="mini" type="info" @click="getRegisterSmsCode" >获取验证码</van-button> &ndash;&gt;-->
<!-- <div class="registerSmsBtn" @click="getRegisterSmsCode">{{-->
<!-- computeTime > 0 ? `(${computeTime}s)已发送` : "获取短信码"-->
<!-- }}</div>-->


<!-- </template>-->
<!-- </van-field>-->
<!-- <div style="margin: 50px 16px 16px;">-->
<!-- <van-button block type="info" native-type="submit" @click="registerSubmit">注册</van-button>-->
<!-- </div>-->
<!-- </van-form>-->
</van-tab>
</van-tabs>
<van-popup v-model="showKeyboard" :style="{ height: '100%',width:'100%' }" >
<van-nav-bar
left-arrow
fixed
placeholder
@click-left="showPopup"
/>
<div style="padding: 20px">
<h1>输入短信验证码</h1>
<h3 style="color: #878787">验证码已发送至{{(formData.mobile+"").substr(0,3) + "****" + (formData.mobile+"").substr(7)}},请在下方输入框内输入4位数字验证码</h3>
</div>
<van-password-input
:value="smsCodeValue"
:length="4"
:focused="showKeyboard"
@focus="showKeyboard = true"
/>
<van-number-keyboard
v-model="smsCodeValue"
:show="showKeyboard"
theme="custom"
close-button-text="完成"
/>
</van-popup>
</div>
</template>
<style scoped>
.app-container{
background: url("../../../static/images/pest/pest_login_bg.png") no-repeat center;
background-size: 100% 100%;
height: 100vh;
overflow: hidden;
}
/deep/ .van-tabs__content{
background: #ffffff;
border-radius: 30px;
}
/deep/ .van-tabs__nav--line{
background: transparent;
}
.title{
/*padding-top: 20%;*/
width: 100%;
margin: 0 auto;
}
.van-tab--active{
font-size: .6rem;
font-weight: bold;
}
.van-tabs__line{
background:#1D6FE9;
width: 0.15rem;
height: 0.15rem;
border-radius: 0.07rem;
bottom: 0.3rem;
}
.van-tabs__nav{
padding:0
}
.van-tab{
display: inline-block;
flex: inherit;
margin-left: 30px;
line-height: .8rem;
}
.van-tab__text--ellipsis {
overflow: auto;
}
.van-password-input{
width: 50%;
margin: 0 auto;
}
[class*=van-hairline]::after{
border:none;
}
.van-password-input__security li{
margin: 0 10px;
border-bottom: 3px solid black;
}
.registerSmsBtn{
color: rgb(29, 111, 233);
font-size: 0.34rem;
}
/deep/ .van-tabs__line{
background-color: transparent!important;
width: 0;
height: 0;
border-top: .5rem solid transparent;
border-right: .5rem solid transparent;
border-left: .5rem solid transparent;
border-bottom: .3rem solid #ffffff;
}
/deep/ .van-cell{
background: #f6f8f4;
border-radius: 100vh;
width: 90%;
margin: 0 auto;
}
</style>
<script>
import { getCodeImg, getSmsCode ,getRegisterSmsCode,registerCheck,registerOn} from "../../api/login";
import Cookies from "js-cookie";
import { encrypt, decrypt } from "../../utils/jsencrypt";
//引用wx sdk
import wx from "weixin-js-sdk";
export default {
name: "yinnongLogin",
data() {
return {
showMessage:false,
smsCodeValue:"",
showKeyboard:false,
formData: {
username: "", //账号
password: "", //密码
code: null, //图片验证码
uuid: null, //识别uuid
mobile: null, //手机号
smsCode: null, //短信验证码
memberName:null, //身份信息
idcard:null, //身份号码
rememberMe:false
},
loading: false,
codeUrl: "", //验证码
isSmsLogin: false, //是否手机验证码
computeTime: 0,
active:1
};
},
created() {
this.getCode();
this.getCookie();
this.reset();
},
methods: {
reset(){

},
showPopup(){
this.showKeyboard = !this.showKeyboard
},
showMessagePop(){
this.showMessage = !this.showMessage
},
getCode() {
getCodeImg().then((res) => {
this.formData.uuid = res.uuid;
this.codeUrl = "data:image/gif;base64," + res.img;
});
},
getCookie() {
const username = Cookies.get("username");
const password = Cookies.get("password");
const rememberMe = Cookies.get("rememberMe");
this.formData = {
username: username === undefined ? this.formData.username : username,
password:
password === undefined ? this.formData.password : decrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
};
},
getSmsCode() {
if (this.formData.code == "") {
this.$dialog.alert({
message: '图片验证码不能为空',
});
return false;
}
if (!this.computeTime) {
let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
if (!myreg.test(this.formData.mobile)) {
this.$dialog.alert({
message: '手机号格式不正确',
});
return false;
}
/* getSmsCode(this.formData.mobile).then((res) => {
if (res.code === 200) {
this.$dialog.alert({
message: '验证码已发送',
});
this.showKeyboard = !this.showKeyboard;
this.loginForm.uuid = res.uuid;
this.computeTime = 60;
this.timer = setInterval(() => {
this.computeTime--;
if (this.computeTime <= 0) {
clearInterval(this.timer);
}
}, 1000);
}
});*/
}
},
handleLogin(values) {
if (this.isSmsLogin) {
//短信登录
let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
if (!myreg.test(this.formData.mobile)) {
this.$dialog.alert({
message: '手机号格式不正确',
});
return false;
} else if (this.formData.smsCode == "") {
this.$dialog.alert({
message: '短信验证码不能为空',
});
return false;
}
this.loading = true;
this.$store
.dispatch("SmsLogin", this.formData)
.then(() => {
this.$router.push({ path: "/pest/index" }).catch(() => {});
})
.catch((error) => {
this.loading = false;
});
} else {
if (this.formData.rememberMe) {
Cookies.set("username", this.formData.username, { expires: 30 });
Cookies.set("password", encrypt(this.formData.password), { expires: 30 });
Cookies.set("rememberMe", this.formData.rememberMe, { expires: 30 });
} else {
Cookies.remove("username");
Cookies.remove("password");
Cookies.remove("rememberMe");
}
//账号密码登录
if (this.formData.username == "") {
this.$dialog.alert({
message: '账号不能为空',
});
return false;
} else if (this.formData.password == "") {
this.$dialog.alert({
message: '密码不能为空',
});
return false;
} else if (!this.formData.code) {
this.$dialog.alert({
message: '图片验证码不能为空',
});
return false;
}
this.$store
.dispatch("Login", this.formData)
.then(() => {
this.$router.push({ path: "/pest/index" }).catch(() => {});
})
.catch((error) => {
console.log(error)
this.loading = false;
this.getCode();
});
}
},
getRegisterSmsCode(){
if (!this.computeTime) {
let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
if (!myreg.test(this.formData.mobile)) {
this.$dialog.alert({
message: '手机号格式不正确',
});
return false;
}else if (this.formData.code == "") {
this.$dialog.alert({
message: '图片验证码不能为空',
});
return false;
}
if (this.active==2) {
let formObj = {
code :this.formData.code,
mobile:this.formData.mobile,
uuid:this.formData.uuid
}
getRegisterSmsCode(formObj).then((res) => {
console.log(res)
console.log(res.code == 200)
if(res.code == 200) {
this.$dialog.alert({
message: '验证码已发送',
});
this.formData.uuid = res.uuid;
this.computeTime = 60;
this.timer = setInterval(() => {
this.computeTime--;
if (this.computeTime <= 0) {
clearInterval(this.timer);
}
}, 1000);
}
}).catch((res)=>{
if(res=='Error: 验证码已失效'){
this.getCode()
}
});
}
}
},
registerSubmit(){

//注册
if (this.formData.memberName == "") {
this.$dialog.alert({
message: '姓名不能为空',
});
return false;
} else if (this.formData.idcard == "") {
this.$dialog.alert({
message: '身份证号不能为空',
});
return false;
} else if (this.formData.mobile == "") {
this.$dialog.alert({
message: '手机号码不能为空',
});
return false;
}else if (this.formData.smsCode == "") {
this.$dialog.alert({
message: '短信验证码不能为空',
});
return false;
}
//registerCheck,registerOn
console.log(this.formData)
registerCheck(this.formData).then((res)=>{
if(res.code == 200){
registerOn(this.formData).then((res)=>{
if(res.code == 200){
//
this.$dialog.alert({
message: '您的初始密码:'+res.password,
}).then(() => {
this.$router.push({ path: "/pest/index" }).catch(() => {});
});
}
})
}
})

}
},
};
</script>

+ 350
- 0
src/views/pest/soilTesting/soilTesting.vue View File

@@ -0,0 +1,350 @@
<template>
<div class="app-container">

<van-nav-bar
title="土壤检测"
left-arrow
fixed
placeholder
@click-left="$router.push({path:'/pest/index'})"
/>

<div class="file_main">
<van-field readonly label="土壤检测" input-align="right">
<template #input>
<p class="time_box">采集时间:2024-03-18 17:17</p>
</template>
</van-field>
<div style="padding: 16px;">
<div class="flex_main">
<div class="flex_block green">
<p class="flex_y green">优</p>
<div class="flex_nr">
<p class="flex_num">17.0</p>
<p class="flex_unit">℃</p>
<p class="flex_name">土壤温度</p>
</div>
</div>
<div class="flex_block orange">
<p class="flex_y orange">良</p>
<div class="flex_nr">
<p class="flex_num">35.5</p>
<p class="flex_unit">%</p>
<p class="flex_name">土壤湿度</p>
</div>
</div>
</div>
<div class="flex_main">
<div class="flex_block blue">
<p class="flex_y blue">优</p>
<div class="flex_nr">
<p class="flex_num">567.86</p>
<p class="flex_unit">mg/L</p>
<p class="flex_name">土壤盐分</p>
</div>
</div>
<div class="flex_block green">
<div class="flex_nr">
<p class="flex_num">-0.631</p>
<p class="flex_unit">m</p>
<p class="flex_name">土壤深度</p>
</div>
</div>
</div>
</div>
</div>

<div class="file_main center">
<van-field readonly label="内容" :border="false" />
<van-field readonly v-model="textarea" placeholder="请输入" type="textarea" autosize :border="false" style="padding-top: 0;" />
</div>

</div>
</template>
<script>
import Cookies from "js-cookie";
import * as echarts from "echarts";

export default {
name: "soilTesting",
data() {
return {
textarea:'当前土壤湿度较低,土壤温度较低,请注意农事的防护'
};
},
created() {

},
mounted() {

},
methods: {

},
};
</script>
<style scoped lang="scss">

.app-container{
background: #F2F6F2 url("../../../../static/images/pest/index/pest_index_bg.png") no-repeat top;
background-size: 100% auto;
height: 100vh;
padding: 0 4vw;
}

.flex_main{
display: flex;
&:nth-child(1){
margin-bottom: 16px;
}
.flex_block{
flex: 1;
position: relative;
padding: 2vh 0;
.flex_y{
font-size: .35rem;
position: absolute;
top: 0;
right: 0;
padding: 10px 10px 10px 20px;
line-height: 1;
border-bottom-left-radius: 15PX;
&.green{
background: #ADF1C2;
color: #19D77C;
}
&.orange{
background: #FFE9BA;
color: #FDCD63;
}
&.blue{
background: #B3DCFB;
color: #53B1F6;
}
}
.flex_nr{
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-evenly;
.flex_num{font-size: .6rem;color: #000000;font-weight: bold;}
.flex_unit{font-size: .4rem;color: #9F9F9F;}
.flex_name{font-size: .35rem;color: #666666;}
}
&.green{
background: #EDFCE1;
}
&.orange{
background: #FEF4DF;
}
&.blue{
background: #DCEFFD;
}
&:nth-child(2){
margin-left: 16px;
}
}
}

.time_box{
font-size: .3rem;
color: rgba(28,35,76,.5);
}

.file_swipe{
padding: 36px;
}

.bottom{
padding-bottom: 10vh;
}

/deep/ .center textarea{
background: #FEECEF;
color: #F7738C;
padding: 20px;
}

/deep/ .van-nav-bar{
background: transparent;
}

/deep/ .van-nav-bar .van-icon{
color: #000000;
}

/deep/ .van-hairline--bottom::after{
border: none;
}

/deep/ .van-search{
padding: 0;
background: transparent;
}
/deep/ .van-search__content{
padding: 5px 25px;
border-radius: 20px;
}
/deep/ .van-search .van-cell{
align-items: center;
}
.file_main{
background: #ffffff;
margin: 25px auto 0;
border-radius: 15PX;
overflow: hidden;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
}
.statistics_main{
display: flex;
align-items: center;
position: relative;
margin-top: 15PX;
font-size: .35rem;
line-height: 1;
.statistics_tt{
flex: 1; /* 占据剩余空间 */
text-align: center; /* 文字水平居中 */
}
.statistics_block{
display: flex;
align-items: center;
position: absolute;
right: 0;
}
}
.list_main{
margin-top: 15PX;
height: 65vh;
overflow-y: scroll;
.item{
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
padding:25px 32px;
margin-bottom: 20px;
display: flex;
align-items: center;
img{
width: 174px;
height: 174px;
border-radius: 10px;
margin-right: 2vh;
display: block;
}
.info{
flex: 1;
.title{
display: flex;
align-items: center;
height: 58px;
.news_title{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
font-size: .35rem;
color: rgba(28,35,76,.7);
margin-right: 15px;
}
.tips_mark{
font-size: .35rem;
color: #1C234C;
text-align: center;
border-radius: 100vh;
}
}
.time{
font-size: 16PX;
color: #c1c1c1;
display: flex;
align-items: center;
margin-top: 5PX;
justify-content: space-between;
p:first-child{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
span{
color: #5fe495;
font-weight: bold;
}
}
p:last-child{
font-size: 16PX;
text-align: center;
flex-shrink: 0;
span{
color: #5fe495;
font-weight: bold;
}
}
}
}
}

.operation{
display: flex;
align-items: center;
justify-content: right;
text-align: center;
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
height: 100%;
padding: 0 15Px;
margin-left: 10PX;
.opera_btn{
border-radius: 50%;
&.delete{
background:#df0707;
margin-left: 10PX;
.icon{
width: 22PX;
height: 29PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_03.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.edit{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 26PX;
height: 25PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_02.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.view{
background: #3494ff;
margin-left: 10PX;
.icon {
width: 29PX;
height: 21PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_04.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.list{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 29px;
height: 21px;
background: url('../../../assets/images/sunVillage_info/list_icon_10.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
}
}
}

</style>

+ 512
- 0
src/views/pest/temperatureAndHumidity/temperatureAndHumidity.vue View File

@@ -0,0 +1,512 @@
<template>
<div class="app-container">

<van-nav-bar
title="温湿度"
left-arrow
fixed
placeholder
@click-left="$router.push({path:'/pest/index'})"
/>

<div class="file_main">
<van-field
readonly
clickable
label="当前地块"
placeholder="请选择"
@click="showLand = true"
right-icon="arrow-down"
label-width="auto"
:border="false"
input-align="right"
:rules="[{ required: true , message:'请选择' }]"
/>
<van-popup v-model="showLand" position="bottom">
<van-picker
show-toolbar
:columns="landOptions"
@cancel="showLand = false"
/>
</van-popup>
</div>

<div class="file_main">
<van-field readonly label="采集数据" input-align="right">
<template #input>
<p class="time_box">设备1<van-icon name="arrow-down" /></p>
</template>
</van-field>
<div class="charts" id="main3"></div>
</div>

<div class="bottom"></div>

</div>
</template>
<script>
import Cookies from "js-cookie";
import * as echarts from "echarts";

export default {
name: "insectMonitoring",
data() {
return {
landOptions:[],
showLand:false,
showTime:false,
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date(2021, 0, 17),
};
},
created() {

},
mounted() {
this.chart3();
},
methods: {
chart3(){
var chartDom = document.getElementById('main3');
var myChart = echarts.init(chartDom);
let colors = ['#8CE25E','#2562FE']
var option;

option = {
grid: {
top:'15%',
left: '5%',
right: '4%',
bottom: '3%',
containLabel: true
},
legend: {
top: 10,
right: "5%",
itemWidth: 10,
itemHeight: 10,
// padding: [5, 10],
textStyle: {
fontSize: 14,
color: "#a6c8dd",
padding: [3, 0, 0, 0],
},
},
xAxis: {
type: 'category',
data: [
'03-03',
'03-04',
'03-05',
'03-06',
'03-07',
'03-08',
'03-09',
'03-10',
'03-11',
'03-12',
'03-13',
'03-14',
'03-15',
'03-16',
'03-17',
'03-18',
]
},
yAxis: [
{
type: 'value',
name: '温度\n℃',
position: 'left',
alignTicks: true,
axisLine: {
show: true,
lineStyle: {
color: colors[0]
}
}
},
{
type: 'value',
name: '湿度\n%',
position: 'left',
alignTicks: true,
offset: 30,
axisLine: {
show: true,
lineStyle: {
color: colors[1]
}
},
}
],
series: [
{
data: [
1,
2,
3,
4,
5,
6,
10,
0,
0,
0,
0,
0,
5,
0,
7,
0,
],
type: 'line',
lineStyle: {
width: 1,
color: colors[0]
},
stack: 'Total',
smooth: true,
showSymbol: false,
yAxisIndex: 0, // 使用Y轴1
},
{
data: [
10,
20,
30,
40,
50,
60,
10,
11,
35,
28,
15,
8,
5,
18,
7,
1,
],
type: 'line',
lineStyle: {
width: 1,
color: colors[1]
},
stack: 'Total',
smooth: true,
showSymbol: false,
yAxisIndex: 1, // 使用Y轴1
}
]
};

option && myChart.setOption(option);
}
},
};
</script>
<style scoped lang="scss">

.app-container{
background: #F2F6F2 url("../../../../static/images/pest/index/pest_index_bg.png") no-repeat top;
background-size: 100% auto;
height: 100vh;
padding: 0 4vw;
}

.flex_app{
display: flex;
.flex_main_left{
flex: 1;
background: url("../../../../static/images/pest/flex_main_left_bg.png") no-repeat center;
background-size: 100% 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
padding: 0 20px;
margin-right: 16px;
.flex_num{font-size: .45rem;color: #ffffff;font-weight: bold;span{font-size: .25rem;font-weight: normal;}}
.flex_unit{font-size: .25rem;color: #9F9F9F;font-weight: normal;}
.flex_name{font-size: .3rem;color: #ffffff;}
i{
display: block;
width: 4.5vh;
height: 4.5vh;
background: url("../../../../static/images/pest/flex_main_left_icon.png") no-repeat center;
background-size: 100% 100%;
}
}
}

.flex_main{
flex: 1;
display: flex;
margin-top: 16px;
flex-direction: column;
.flex_block{
flex: 1;
position: relative;
padding: 1vh;
margin-top: 16px;
display: flex;
align-items: center;
border-radius: 15PX;
background: #ffffff;
.flex_y{
font-size: .35rem;
position: absolute;
top: 0;
right: 0;
padding: 10px 10px 10px 20px;
line-height: 1;
border-bottom-left-radius: 15PX;
}
.flex_nr{
display: flex;
flex-direction: column;
align-items: baseline;
justify-content: space-evenly;
.flex_num{font-size: .45rem;color: #000000;font-weight: bold;}
.flex_unit{font-size: .25rem;color: #9F9F9F;font-weight: normal;}
.flex_name{font-size: .3rem;color: #9F9F9F;}
}
&:nth-child(1){
margin-top: 0px;
}
i{
display: block;
width: 4.5vh;
height: 4.5vh;
margin-right: 15px;
}
.icon1{
background: url("../../../../static/images/pest/growth_icon_01.png") no-repeat center;
background-size: 100% 100%;
}
.icon2{
background: url("../../../../static/images/pest/growth_icon_02.png") no-repeat center;
background-size: 100% 100%;
}
}
}

.time_box{
font-size: .3rem;
background: #F5F8F6;
color: rgba(28,35,76,.5);
padding:0 15PX;
border-radius: 100vh;
}

.my-swipe .van-swipe-item {
color: #fff;
font-size: 20PX;
line-height: 300PX;
text-align: center;
background-color: #39a9ed;
border-radius: 15PX;
}

.charts{
height: 30vh;
}

.file_swipe{
padding: 36px;
}

.bottom{
padding-bottom: 10vh;
}

/deep/ .center textarea{
background: #F5F8F6;
padding: 20px;
}

/deep/ .van-nav-bar{
background: transparent;
}

/deep/ .van-nav-bar .van-icon{
color: #000000;
}

/deep/ .van-hairline--bottom::after{
border: none;
}

/deep/ .van-search{
padding: 0;
background: transparent;
}
/deep/ .van-search__content{
padding: 5px 25px;
border-radius: 20px;
}
/deep/ .van-search .van-cell{
align-items: center;
}
.file_main{
background: #ffffff;
margin: 25px auto 0;
border-radius: 15PX;
overflow: hidden;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
}
.statistics_main{
display: flex;
align-items: center;
position: relative;
margin-top: 15PX;
font-size: .35rem;
line-height: 1;
.statistics_tt{
flex: 1; /* 占据剩余空间 */
text-align: center; /* 文字水平居中 */
}
.statistics_block{
display: flex;
align-items: center;
position: absolute;
right: 0;
}
}
.list_main{
margin-top: 15PX;
height: 65vh;
overflow-y: scroll;
.item{
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
padding:25px 32px;
margin-bottom: 20px;
display: flex;
align-items: center;
img{
width: 174px;
height: 174px;
border-radius: 10px;
margin-right: 2vh;
display: block;
}
.info{
flex: 1;
.title{
display: flex;
align-items: center;
height: 58px;
.news_title{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
font-size: .35rem;
color: rgba(28,35,76,.7);
margin-right: 15px;
}
.tips_mark{
font-size: .35rem;
color: #1C234C;
text-align: center;
border-radius: 100vh;
}
}
.time{
font-size: 16PX;
color: #c1c1c1;
display: flex;
align-items: center;
margin-top: 5PX;
justify-content: space-between;
p:first-child{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
span{
color: #5fe495;
font-weight: bold;
}
}
p:last-child{
font-size: 16PX;
text-align: center;
flex-shrink: 0;
span{
color: #5fe495;
font-weight: bold;
}
}
}
}
}

.operation{
display: flex;
align-items: center;
justify-content: right;
text-align: center;
border-radius: 30px;
background: #fff;
box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1);
height: 100%;
padding: 0 15Px;
margin-left: 10PX;
.opera_btn{
border-radius: 50%;
&.delete{
background:#df0707;
margin-left: 10PX;
.icon{
width: 22PX;
height: 29PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_03.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.edit{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 26PX;
height: 25PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_02.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.view{
background: #3494ff;
margin-left: 10PX;
.icon {
width: 29PX;
height: 21PX;
background: url('../../../assets/images/sunVillage_info/signature_icon_04.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
&.list{
background: #79cf13;
margin-left: 10PX;
.icon {
width: 29px;
height: 21px;
background: url('../../../assets/images/sunVillage_info/list_icon_10.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
}
}
}

</style>

+ 1652
- 0
src/views/pest/weather/weather.vue
File diff suppressed because it is too large
View File


+ 33
- 0
src/views/policy/policyDetail.vue View File

@@ -15,6 +15,16 @@
<van-col span="2"></van-col>
</van-row>
<div id="content"></div>

<div v-if="attachmentQueryList.length>0">
<van-divider>附件</van-divider>
<van-cell :title="item.fileName" :url="'/api'+item.fileUrl" is-link v-for="(item,index) in attachmentQueryList">
<!-- 使用 right-icon 插槽来自定义右侧图标 -->
<template #icon>
<img src="../../assets/images/file_icon.png" style="display: block;width: 24px;margin-right: 5px;" alt="">
</template>
</van-cell>
</div>
</div>
</template>

@@ -25,6 +35,7 @@ export default {
data() {
return {
detail:'',
attachmentQueryList:[]
};
},
created() {
@@ -36,6 +47,20 @@ export default {
console.log(response)
this.detail = response.data
document.getElementById('content').innerHTML = response.data.content;

if(response.data.attachment){
var content = response.data.attachment.split(',');
let list = [];
content.map(rr=>{
list.push({
fileUrl:rr,
fileName:rr.substr(27,rr.length)
})
})

this.attachmentQueryList = list;
}

});
},
},
@@ -52,5 +77,13 @@ export default {
}
#content{
overflow: hidden;
font-size: 14PX;
}
/deep/.van-cell__title, .van-cell__value{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
overflow: hidden;
}
</style>

+ 1
- 0
src/views/project/index.vue View File

@@ -124,6 +124,7 @@ export default {
};
},
created() {
clearInterval();
this.getDicts("project_type").then(response => {
console.log(response)
response.data.map(item => {


+ 15
- 3
src/views/project/projectDetail.vue View File

@@ -33,6 +33,10 @@
<van-col span="5">挂牌价</van-col>
<van-col span="19" class="price"><span>{{detail.price}}</span> {{detail.unit}}</van-col>
</van-row>
<van-row v-if="detail.priceMax">
<van-col span="5">最高限价</van-col>
<van-col span="19" class="money"><span>{{ detail.priceMax }}</span> 元</van-col>
</van-row>
<van-row>
<van-col span="5">保证金</van-col>
<van-col span="19" class="money"><span>{{ detail.deposit }}</span> 元</van-col>
@@ -370,7 +374,7 @@ export default {
isSign=true
}
})
if (resresponse.data.auditStatus == 'Y'){
if (resresponse.data.activitiStatus == '3'){
if (isSign){
this.$toast({
icon: 'error', // 找到自己需要的图标
@@ -539,7 +543,11 @@ export default {
if(this.getSignupData=="1"){
this.isSignup=true
this.btnMsg="立即竞价"
this.showBtn=true
if(this.detail.biddingType!='线下竞价'){
this.showBtn=true
}else{
this.btnMsg="立即竞价(暂不支持线上出价)"
}
// this.price=this.detail.ladderPrice?this.biddinglistInformation[0].money+this.detail.ladderPrice:this.biddinglistInformation[0].money+1
}else{
this.btnMsg="未报名"
@@ -637,7 +645,11 @@ export default {
if(this.getSignupData=="1"){
this.isSignup=true
this.btnMsg="立即竞价"
this.showBtn=true
if(this.detail.biddingType!='线下竞价'){
this.showBtn=true
}else{
this.btnMsg="立即竞价(暂不支持线上出价)"
}
// this.price=this.detail.ladderPrice?this.biddinglistInformation[0].money+this.detail.ladderPrice:this.biddinglistInformation[0].money+1
}else{
this.btnMsg="未报名"


+ 198
- 77
src/views/sunVillage_info/assetMapOpen.vue View File

@@ -72,26 +72,78 @@
</van-col>
</van-row>
<div class="gl_main">
<div class="headers">
<div class="flex3">合同编码</div>
<div class="flex3">合同名称</div>
<div class="flex3">发包对象</div>
<div class="flex3">承包款(元)</div>
<div class="flex3">状态</div>
<template v-if="!contractionVisible">
<div class="headers">
<div class="flex3">合同编码</div>
<div class="flex3">合同名称</div>
<div class="flex3">发包对象</div>
<div class="flex3">承包款(元)</div>
<div class="flex3">状态</div>

</div>
<div class="desc_main">
<ul class="analysisTable_list">
<!--1-->
<li v-for="item in contractionList" class="flex_item">
<div class="flex3" @click="lookName(item.code)">{{item.code}}</div>
<div class="flex3" @click="lookName(item.name)">{{item.name}}</div>
<div class="flex3">{{item.secondParty}}</div>
<div class="flex3">{{item.totalAmount}}</div>
<div class="flex3">{{selectDictLabel(contractionStatuOptions, item.contractionStatus)}}</div>
</li>
</ul>
</div>
</div>
<div class="desc_main">
<ul class="analysisTable_list">
<!--1-->
<li v-for="item in contractionList" class="flex_item" @click="viewContractionInfo(item)">
<div class="flex3" @click="lookName(item.code)">{{item.code}}</div>
<div class="flex3" @click="lookName(item.name)">{{item.name}}</div>
<div class="flex3">{{item.secondParty}}</div>
<div class="flex3">{{item.totalAmount}}</div>
<div class="flex3">{{item.contractionStatus}}</div>
</li>
</ul>
</div>
</template>
<template v-else>
<div class="headers">
<div>关联合同</div>
<div class="back" @click="hideContractionInfo">&lt; 返回</div>
</div>
<van-row>
<van-col :span="4"><span class="title">合同编码:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.code }}</span></van-col>
<van-col :span="4"><span class="title">合同名称:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.name }}</span></van-col>
</van-row>
<van-row>
<van-col :span="4"><span class="title">签订日期:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.buildingTime }}</span></van-col>
<van-col :span="4"><span class="title">合同类型:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.assetType }}</span></van-col>
</van-row>
<van-row>
<van-col :span="4"><span class="title">开始时间:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.startTime }}</span></van-col>
<van-col :span="4"><span class="title">结束时间:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.endTime }}</span></van-col>
</van-row>
<van-row>
<van-col :span="4"><span class="title">承包价款:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.totalAmount }}</span></van-col>
<van-col :span="4"><span class="title">承包年限:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.contractYears }}</span></van-col>
</van-row>

<van-row>
<van-col :span="24"><span class="title">附件图片:</span></van-col>
</van-row>
<van-row>
<van-col :span="24" style="height: 120px;overflow-y: auto;">
<div class="fileList">
<template v-for="(item,index) in contractionAttachmentList">
<a :href="item.url" v-if="item.url.indexOf('xlsx') > -1 || item.url.indexOf('xls') > -1">
<img src="../../assets/images/homestead/icon_excel.jpg" alt="" style="width:100px;height: 100px;">
</a>
<a :href="item.url" v-else-if="item.url.indexOf('docx') > -1 || item.url.indexOf('dox') > -1">
<img src="../../assets/images/homestead/icon_word.jpg" alt="" style="width:100px;height: 100px;">
</a>
<img v-else :src="item.url" alt="" @click="openImage(item.url)" style="width:100px;height: 100px;">
</template>
<van-empty v-if="contractionAttachmentList.length<1" description="暂无附件"></van-empty>
</div>
</van-col>
</van-row>
</template>
</div>
<!-- <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList"/>-->
</div>
@@ -161,26 +213,78 @@
</van-col>
</van-row>
<div class="gl_main">
<div class="headers">
<div class="flex3">合同编码</div>
<div class="flex3">合同名称</div>
<div class="flex3">发包对象</div>
<div class="flex3">承包款(元)</div>
<div class="flex3">状态</div>
<template v-if="!contractionVisible">
<div class="headers">
<div class="flex3">合同编码</div>
<div class="flex3">合同名称</div>
<div class="flex3">发包对象</div>
<div class="flex3">承包款(元)</div>
<div class="flex3">状态</div>

</div>
<div class="desc_main">
<ul class="analysisTable_list">
<!--1-->
<li v-for="item in contractionList" class="flex_item" @click="viewContractionInfo(item)">
<div class="flex3" @click="lookName(item.code)">{{item.code}}</div>
<div class="flex3" @click="lookName(item.name)">{{item.name}}</div>
<div class="flex3">{{item.secondParty}}</div>
<div class="flex3" >{{item.totalAmount}}</div>
<div class="flex3">{{item.contractionStatus}}</div>
</li>
</ul>
</div>
</template>
<template v-else>
<div class="headers">
<div>关联合同</div>
<div class="back" @click="hideContractionInfo">&lt; 返回</div>
</div>
<van-row>
<van-col :span="4"><span class="title">合同编码:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.code }}</span></van-col>
<van-col :span="4"><span class="title">合同名称:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.name }}</span></van-col>
</van-row>
<van-row>
<van-col :span="4"><span class="title">签订日期:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.buildingTime }}</span></van-col>
<van-col :span="4"><span class="title">合同类型:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.assetType }}</span></van-col>
</van-row>
<van-row>
<van-col :span="4"><span class="title">开始时间:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.startTime }}</span></van-col>
<van-col :span="4"><span class="title">结束时间:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.endTime }}</span></van-col>
</van-row>
<van-row>
<van-col :span="4"><span class="title">承包价款:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.totalAmount }}</span></van-col>
<van-col :span="4"><span class="title">承包年限:</span></van-col>
<van-col :span="8"><span class="desc">{{ contractionData.contractYears }}</span></van-col>
</van-row>

</div>
<div class="desc_main">
<ul class="analysisTable_list">
<!--1-->
<li v-for="item in contractionList" class="flex_item">
<div class="flex3" @click="lookName(item.code)">{{item.code}}</div>
<div class="flex3" @click="lookName(item.name)">{{item.name}}</div>
<div class="flex3">{{item.secondParty}}</div>
<div class="flex3" >{{item.totalAmount}}</div>
<div class="flex3">{{selectDictLabel(contractionStatuOptions, item.contractionStatus)}}</div>
</li>
</ul>
</div>
<van-row>
<van-col :span="24"><span class="title">附件图片:</span></van-col>
</van-row>
<van-row>
<van-col :span="24" style="height: 120px;overflow-y: auto;">
<div class="fileList">
<template v-for="(item,index) in contractionAttachmentList">
<a :href="item.url" v-if="item.url.indexOf('xlsx') > -1 || item.url.indexOf('xls') > -1">
<img src="../../assets/images/homestead/icon_excel.jpg" alt="" style="width:100px;height: 100px;">
</a>
<a :href="item.url" v-else-if="item.url.indexOf('docx') > -1 || item.url.indexOf('dox') > -1">
<img src="../../assets/images/homestead/icon_word.jpg" alt="" style="width:100px;height: 100px;">
</a>
<img v-else :src="item.url" alt="" @click="openImage(item.url)" style="width:100px;height: 100px;">
</template>
<van-empty v-if="contractionAttachmentList.length<1" description="暂无附件"></van-empty>
</div>
</van-col>
</van-row>
</template>
</div>
</div>
<!--<div class="basic_block">
@@ -283,7 +387,7 @@
width: 94%;
position: fixed;
z-index: 1001;
top: 50%;
top: 54%;
transform: translateY(-50%);
right: 3%;
display: flex;
@@ -377,7 +481,7 @@
}
.gl_main{
margin-top: .8vh;
height: 28.15vh;
height: 38.15vh;
padding:0.92vh 0 0 0;
.headers {
height: 3.24vh;
@@ -390,10 +494,16 @@
background: rgba(11,239,202,.3);
padding-right: 0.53vw;
margin-bottom: 1vh;
position: relative;
.flex_left{
text-align: left;
padding-left: 0.83vw;
}
.back {
cursor: pointer;
position: absolute;
left: 0.83vw;
}
}
.desc_main{
height: 21.5vh;
@@ -422,6 +532,7 @@
color: #fff;
font-size: 1.29vh;
position: relative;
cursor: pointer;
// border-bottom: 1px solid rgba(255, 255, 255, 0.2);
// &:hover {
// background: rgba(8, 85, 255, 0.6);
@@ -477,7 +588,7 @@
getResourceList,
assetPropertyDetail,
assetResourceDetail,
openAttachmentList
openAttachmentList as attachmentList
} from "@/api/sunVillage_info/fixedAssets";
import {getQueryLand} from "@/api/sunVillage_info/homestead/application";
import { getConfigKey } from "@/api/system/config";
@@ -506,6 +617,9 @@
dialogImageUrl:'',
mapGeoServerUrl: "", // geoserver地址
villageBorderLayerName: "", // 乡镇边界图层名称
contractionData: {},
contractionAttachmentList: [],
contractionVisible:false,
};
},
created() {
@@ -516,6 +630,7 @@
},
mounted() {
let mapTheGeomAll =this.$cookies.get("bookId");
mapTheGeomAll = 166;
console.info(mapTheGeomAll);
getPermanentList(mapTheGeomAll).then((response) => {
if (response.code == 200) {
@@ -761,11 +876,19 @@
var ifConsole = feature.values_.name;

if (ifConsole !="标注点") {
assetResourceDetail(feature.values_.id, {translate_dict: 1}).then((resp) => {
that.contractionList = resp.data.params.contractionAssetList;
let obj = {};
assetResourceDetail(feature.values_.id, {translate_dict: 1, getAttachments: true,}).then((resp) => {
that.contractionList = resp.data.params.contractionAssetList || [];
that.$set(obj, 'fileList', resp.data.params.attachments.map(rr=>{
return {
url:'/api'+rr.fileUrl
};
}));
that.contractionData = {};
that.contractionAttachmentList = [];
that.contractionVisible = false;
that.mapHaDataValue = true;
});
let obj = {};
that.mapHasDateStatus = 0;
obj.code = feature.values_.code;//资源编码
obj.name = feature.values_.name;//资源名称
@@ -834,27 +957,20 @@
}
});

obj.fileList = [];
let parmasData = {
tableId: feature.values_.id,
tableName: 't_asset_resource',
bizPath: 'asset',
};
openAttachmentList(parmasData).then((res) => {
if (res.code == 200) {
res.rows.map(rr=>{
obj.fileList.push({
url:'/api'+rr.fileUrl
})
})
}
});
console.log(obj)
that.mapHasData = obj;
} else {
let obj = {};
assetPropertyDetail(feature.values_.properties[0].value.values_.id, {translate_dict: 1}).then((resp) => {
that.contractionList = resp.data.params.contractionAssetList;
assetPropertyDetail(feature.values_.properties[0].value.values_.id, {translate_dict: 1, getAttachments: true,}).then((resp) => {
that.contractionList = resp.data.params.contractionAssetList || [];
that.$set(obj, 'fileList', resp.data.params.attachments.map(rr=>{
return {
url:'/api'+rr.fileUrl
};
}));
that.contractionData = {};
that.contractionAttachmentList = [];
that.contractionVisible = false;
that.mapHaDataValue = true;
});
that.mapHasDateStatus = 1;
@@ -887,22 +1003,6 @@
obj.assetStatus = feature.values_.properties[0].value.values_.assetStatus; //资产状态
obj.unit = feature.values_.properties[0].value.values_.unit; //计量单位

obj.fileList = [];
let parmasData = {
tableId: feature.values_.properties[0].value.values_.id,
tableName: 't_asset_permanent',
bizPath: 'asset',
};
openAttachmentList(parmasData).then((res) => {
if (res.code == 200) {
res.rows.map(rr=>{
obj.fileList.push({
url:'/api'+rr.fileUrl
})
})
}
});

//固定资产字典项
that.getDicts("asset_type").then((response) => {
var assetTypeOptions = response.data;
@@ -984,6 +1084,7 @@
that.mapHasData = obj;
}
}else {
that.contractionVisible = false;
that.mapHaDataValue = false;
}
});
@@ -1014,6 +1115,26 @@
});
}
},
viewContractionInfo(row) {
this.contractionData = row || {};
this.contractionAttachmentList = [];
attachmentList({
tableId: row.id,
tableName: 't_contraction_info',
}).then((resp) => {
this.contractionAttachmentList = resp.rows.map(rr=>{
return {
url:'/api'+rr.fileUrl
};
});
});
this.contractionVisible = true;
},
hideContractionInfo() {
this.contractionData = {};
this.contractionAttachmentList = [];
this.contractionVisible = false;
},
},
};
</script>

+ 7
- 6
src/views/sunVillage_info/bankAgriculture/collectionAccount/collectionAdd.vue View File

@@ -127,6 +127,7 @@

<script>
import { addPayee,listDeposit } from "@/api/onlineHome/bankAgriculture/collectionAccount";
import { isBankCard} from "@/utils/utils";
export default {
name: "collectionAdd",
data() {
@@ -180,17 +181,17 @@

},
changeInform(val){
console.log(val)
var that = this;
var str = val;
var numArr = str.match(/\d+/g)
var nameArr = str.match(/[\u4e00-\u9fa5]/g).join("")
console.log(numArr)
console.log(nameArr)
var nameArr = str.match(/[\u4e00-\u9fa5]/g);
if(nameArr != null){
nameArr = nameArr.join("")
}
if (numArr) {
numArr.map(rr=>{
if (rr.length>16) {
const carId = this.isBankCard(rr);
if (rr.length>=16) {
const carId = isBankCard(rr);
if (carId) {
that.form.payee = nameArr;
that.form.payeeAccount = rr


+ 178
- 39
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalAdd.vue View File

@@ -132,7 +132,7 @@
label-width="auto"
maxlength="20"
required
show-word-limit
show-word-limit
v-if="form.bankType == '6'"
:rules="[{ required: true , message:'请输入转账附言' }]"
/>
@@ -146,7 +146,7 @@
label-width="auto"
maxlength="30"
required
show-word-limit
show-word-limit
v-if="form.bankType != '5' && form.bankType != '6'"
:rules="[{ required: true , message:'请输入转账附言' }]"
/>
@@ -252,7 +252,8 @@
@cancel="showpayer = false"
/>
</van-popup>
<van-field :rules="[{ required: true , message:'请输入付款方账户' }]" required label="付款方账户" v-model="form.payerAccount" placeholder="请输入账户" input-align="right" label-width="auto"/>
<van-field :rules="[{ required: true , message:'请输入付款方账户' }]" readonly required label="付款方账户" v-model="form.payerAccount" placeholder="请输入账户" input-align="right" label-width="auto"/>
<van-field required label="余额" readonly v-model="form.balance" placeholder="请输入余额" input-align="right" label-width="auto"/>
</div>

<div class="main_title main_title_box">
@@ -302,8 +303,8 @@
@cancel="item.showPayee = false"
/>
</van-popup>
<van-field required :rules="[{ required: true , message:'请输入账户' }]" v-model="item.payeeAccount" label="收款账户" placeholder="请输入账户" input-align="right" label-width="auto"/>
<van-field required :rules="[{ required: true , message:'请输入开户银行' }]" v-model="item.bankDeposit" label="开户银行" placeholder="请输入开户银行银行" input-align="right" label-width="auto"/>
<van-field required :rules="[{ required: true , message:'请输入账户' }]" readonly v-model="item.payeeAccount" label="收款账户" placeholder="请输入账户" input-align="right" label-width="auto"/>
<van-field required :rules="[{ required: true , message:'请输入开户银行' }]" readonly v-model="item.bankDeposit" label="开户银行" placeholder="请输入开户银行银行" input-align="right" label-width="auto"/>
<van-field required :rules="[{ required: true , message:'请输入金额' }]" v-model="item.incomeAmount" type="number" label="收入金额" placeholder="请输入金额" input-align="right" label-width="auto" @change="moneyChange"/>
<van-field
readonly
@@ -328,11 +329,41 @@
<p class="main_title" v-if="isModifyOrder" style="margin: 0.2rem 3%;">上传附件<i style="margin-right: 0.5em;"></i><span style="font-size: 12px;color: red;">(若申请单未变动可不必点击底部的修改按钮)</span></p>
<div class="main_box" style="padding: 5px 0 0 0;" v-if="isModifyOrder">
<van-cell value="收据" />
<van-uploader v-model="fileList1" :after-read="beforeRead('1')" @delete="deleteFile" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList1" :after-read="beforeRead('1')" @delete="deleteFile" @click-preview="previewPreview" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
<van-cell title="发票" />
<van-uploader v-model="fileList2" :after-read="beforeRead('2')" @delete="deleteFile" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList2" :after-read="beforeRead('2')" @delete="deleteFile" @click-preview="previewPreview" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
<van-cell title="其他" />
<van-uploader v-model="fileList3" :after-read="beforeRead('3')" @delete="deleteFile" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList3" :after-read="beforeRead('3')" @delete="deleteFile" @click-preview="previewPreview" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
</div>
<div style="padding: 16px 0;">
<van-row v-if="!isModifyOrder">
@@ -646,7 +677,7 @@
}
// if(this.form.bankType == '2' && this.form.isPeers == 'N' && this.chargeItme.length>0 && this.chargeItme != []){
// this.$notify({ type: 'danger', message: '目前农商行仅支持单笔跨行转账,即仅能有一个收款方!' });
// }else
// }else
if(this.form.bankType == '7' && this.chargeItme.length>0 && this.chargeItme != []){
this.$notify({ type: 'danger', message: '目前农商行仅支持单笔转账,即仅能有一个收款方!' });
}else{
@@ -680,6 +711,120 @@
})
});
},
previewPreview(file, index, len) {
const baseImgUrl = this.$store.getters.baseRoutingUrl;
if (file.url) {
//已上传文件
let fileName = file.file.name || file.url;
let subIndex = fileName.lastIndexOf(".");
let ext = fileName.substring(subIndex + 1, fileName.length);
let imgi = file.listIndex
//console.log(ext)
let allUrl = file.url;
if(ext !== 'jpg' && ext !== 'png' && ext !== 'gif' && ext !== 'svg' && ext !== 'ico' && ext !== 'bmp'){
const link = document.createElement("a");
link.style.display = "none";
link.target = "_blank"
link.href = allUrl;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}

} else {
//新上传文件
let fileName = file.file.name;
// console.info(file.file.name)
let subIndex = fileName.lastIndexOf(".");
let ext = fileName.substring(subIndex + 1, fileName.length);
if(ext !== 'jpg' && ext !== 'png' && ext !== 'gif' && ext !== 'svg' && ext !== 'ico' && ext !== 'bmp'){
let type = this.getfileType(ext);
// 将文件转换为base64编码
this.fileToBase64(file.file, ext).then(res => {
this.downloadFile(res, fileName, ext, type);
})
}
}
},
downloadFile(base64, fileName, fileType, mimetype) {
const typeHeader = 'data:application/' + fileType + ';base64,';
const blob = this.base64ToBlob(base64, mimetype);
this.downloadFileDownload(blob, fileName, fileType);
},
fileToBase64(file,fileType){
return new Promise((resolve,reject)=>{
//创建一个新的FileReader 对象
const reader = new FileReader();
//读取file对象
reader.readAsDataURL(file);
reader.onload=function () {
const base64String = reader.result.split(",")[1];
resolve('data:application/' + fileType + ';base64,'+base64String);
}
reader.onerror=function () {
reject(new Error("Failed to load file") )
}
})
},
base64ToBlob(base64, mime) {
//解码base64得到二进制字符串

let raw = window.atob(base64.substring(base64.indexOf(',') + 1));
let rawLength = raw.length
//创建8位无符号整数值的类型化数组
let uInt8Array = new Uint8Array(rawLength)
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], {type: mime})
},
getfileType(type) {
switch (type) {
case 'txt':
return 'text/plain';
case 'doc':
return 'application/msword';
case 'docx':
return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
case 'xls':
return 'application/vnd.ms-excel';
case 'xlsx':
return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
case 'pdf':
return 'application/pdf';
case 'pptx':
return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
case 'png':
return 'image/png';
case 'jpg':
return 'image/jpeg';
case 'gif':
return 'image/gif';
case 'svg':
return 'image/svg+xml';
case 'ico':
return 'image/x-icon';
case 'bmp':
return 'image/bmp,';
}
},
downloadFileDownload(blob, fileName, fileType) {
const downloadElement = document.createElement('a');
let href = blob;
if (typeof blob === 'string') {
downloadElement.target = '_blank'
} else {
href = window.URL.createObjectURL(blob)
}
downloadElement.href = href;
downloadElement.download = fileName + '.' + fileType;//下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click();
document.body.removeChild(downloadElement)
if (typeof blob !== 'string') {
window.URL.revokeObjectURL(href)
}
},
payeeDictLabel(datas, value) {
var actions = [];
Object.keys(datas).some((key) => {
@@ -873,56 +1018,29 @@
this.$set(this.projectForm, "ynType", '1');
if(this.form.capitalExpenditureType==2){
addProjectto(this.projectForm).then(res => {
if(_this.form.approvalMode === '1'){
customSubmit(this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},1500)
})
}else{
offlineCustomSubmit(this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},1500)
})
}
})
} else if(this.form.capitalExpenditureType==4){
addInfoto(this.infoForm).then(res => {
if(_this.form.approvalMode === '1'){
customSubmit(this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},1500)
})
}else{
offlineCustomSubmit(this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},1500)
})
}
})
}else{
if(_this.form.approvalMode === '1'){
customSubmit(this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},1500)
})
}else{
offlineCustomSubmit(this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},1500)
})
}
}
})
},
@@ -1131,6 +1249,7 @@
this.$set(this.form, "cashierId", obj.id);
this.$set(this.form, "payer", obj.accountName);
this.$set(this.form, "payerAccount", obj.bankAccountNumber);
this.$set(this.form, "balance", obj.balance);
this.$set(this.form, "operatorCode", obj.operatorCode);
this.$set(this.form, "enterpriseCode", obj.enterpriseCode);
this.$set(this.form, "bankType", obj.bankType);
@@ -1214,6 +1333,20 @@
commonAttach(params1).then((r1) => {
file.id=r1.id;
file.fileUrl = r1.fileUrl;
let subIndex = r1.fileUrl.lastIndexOf(".");
let ext = r1.fileUrl.substring(subIndex + 1, r1.fileUrl.length);
let baseUrl = location.protocol + "//" + location.host + request.defaults.baseURL;
let fileData = {"url": baseUrl + r1.fileUrl, "file": new File([], "name", {}), "id": r1.id,"type":ext};
if(obj === '1'){
this.fileList1.splice(-1, 1);
this.fileList1.push(fileData);
}else if(obj === '2'){
this.fileList2.splice(-1, 1);
this.fileList2.push(fileData);
}else{
this.fileList3.splice(-1, 1);
this.fileList3.push(fileData);
}
})
}
},
@@ -1230,7 +1363,9 @@
attachmentList(oData1).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList1.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{})})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList1.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
let oData2= {
@@ -1242,7 +1377,9 @@
attachmentList(oData2).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList2.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{})})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList2.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
let oData3= {
@@ -1254,7 +1391,9 @@
attachmentList(oData3).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList3.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{})})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList3.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
},


+ 1026
- 1226
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalAdd11.vue
File diff suppressed because it is too large
View File


+ 1
- 1
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalApproval.vue View File

@@ -239,7 +239,7 @@
}
},
goFlow(){
window.location='approvalProcess?id='+this.$route.query.id;
window.location='approvalProcess?id='+this.$route.query.id+'&auditbatchNo='+this.$route.query.auditbatchNo;
},
getDictionaries(){
getTransfer(this.$route.query.id).then((response) => {


+ 4
- 7
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalApproval11.vue View File

@@ -354,13 +354,10 @@
submitForm() {
const data = {
taskId: this.$route.query.taskId,
instanceId: this.form.instanceId,
variables: JSON.stringify({
comment: this.comment,
pass: this.pass,
}),
};
console.log(data);
auditbatchNo: this.$route.query.auditbatchNo,
remark: this.comment,
pass: this.pass,
};
approval(data).then((response) => {
if(response.code==200 && response.msg=="操作成功"){
this.$toast.success("操作成功");


+ 162
- 8
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalDetail.vue View File

@@ -41,6 +41,7 @@
<div class="main_box">
<van-field readonly label="付款方" v-model="form.payer" input-align="right" label-width="auto"/>
<van-field readonly label="付款方账户" v-model="form.payerAccount" input-align="right" label-width="auto"/>
<van-field readonly label="余额" v-model="form.balance" input-align="right" label-width="auto"/>
</div>

<div class="main_box" v-if="capitalExpenditureOpen" style="margin-bottom: 10px;margin-top: 10px;position:relative;">
@@ -82,19 +83,49 @@
<div class="main_box" style="padding: 5px 0 0 0;">
<van-cell value="收据" />
<van-uploader v-model="fileList1" v-if="fileList1==null||fileList1.length==0" :deletable="false" disabled :upload-text="'未上传附件'" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList1" v-if="fileList1!=null&&fileList1.length>0" :deletable="false" :max-count="fileList1.length" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList1" v-if="fileList1!=null&&fileList1.length>0" :deletable="false" @click-preview="previewPreview" :max-count="fileList1.length" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
<van-cell value="发票" />
<van-uploader v-model="fileList2" v-if="fileList2==null||fileList2.length==0" :deletable="false" disabled :upload-text="'未上传附件'" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList2" v-if="fileList2!=null&&fileList2.length>0" :deletable="false" :max-count="fileList2.length" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList2" v-if="fileList2!=null&&fileList2.length>0" :deletable="false" @click-preview="previewPreview" :max-count="fileList2.length" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
<van-cell value="其他" />
<van-uploader v-model="fileList3" v-if="fileList3==null||fileList3.length==0" :deletable="false" disabled :upload-text="'未上传附件'" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList3" v-if="fileList3!=null&&fileList3.length>0" :deletable="false" :max-count="fileList3.length" style="margin-left:8px;" ></van-uploader>
<van-uploader v-model="fileList3" v-if="fileList3!=null&&fileList3.length>0" :deletable="false" @click-preview="previewPreview" :max-count="fileList3.length" style="margin-left:8px;" >
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
</div>
</div>
</template>

<script>
import { getTransfer , queryTransferDetail , listPayee , updateTransfer , getProjectto , listProject , addProjectto , customSubmit,getInfoto,listTemplate} from "@/api/onlineHome/bankAgriculture/paymentApproval";
import { getCashierAccount,getTransfer , queryTransferDetail , listPayee , updateTransfer , getProjectto , listProject , addProjectto , customSubmit,getInfoto,listTemplate} from "@/api/onlineHome/bankAgriculture/paymentApproval";
import request from '@/utils/request'
import {
attachmentList,
@@ -207,10 +238,127 @@
return name
},
goFlow(){
window.location='approvalProcess?id='+this.$route.query.id;
window.location='approvalProcess?id='+this.$route.query.id+'&auditbatchNo='+this.$route.query.auditbatchNo;
},
previewPreview(file, index, len) {
const baseImgUrl = this.$store.getters.baseRoutingUrl;
if (file.url) {
//已上传文件
let fileName = file.file.name || file.url;
let subIndex = fileName.lastIndexOf(".");
let ext = fileName.substring(subIndex + 1, fileName.length);
let imgi = file.listIndex
//console.log(ext)
let allUrl = file.url;
if(ext !== 'jpg' && ext !== 'png' && ext !== 'gif' && ext !== 'svg' && ext !== 'ico' && ext !== 'bmp'){
const link = document.createElement("a");
link.style.display = "none";
link.target = "_blank"
link.href = allUrl;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}

} else {
//新上传文件
let fileName = file.file.name;
// console.info(file.file.name)
let subIndex = fileName.lastIndexOf(".");
let ext = fileName.substring(subIndex + 1, fileName.length);
if(ext !== 'jpg' && ext !== 'png' && ext !== 'gif' && ext !== 'svg' && ext !== 'ico' && ext !== 'bmp'){
let type = this.getfileType(ext);
// 将文件转换为base64编码
this.fileToBase64(file.file, ext).then(res => {
this.downloadFile(res, fileName, ext, type);
})
}
}
},
getfileType(type) {
switch (type) {
case 'txt':
return 'text/plain';
case 'doc':
return 'application/msword';
case 'docx':
return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
case 'xls':
return 'application/vnd.ms-excel';
case 'xlsx':
return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
case 'pdf':
return 'application/pdf';
case 'pptx':
return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
case 'png':
return 'image/png';
case 'jpg':
return 'image/jpeg';
case 'gif':
return 'image/gif';
case 'svg':
return 'image/svg+xml';
case 'ico':
return 'image/x-icon';
case 'bmp':
return 'image/bmp,';
}
},
downloadFile(base64, fileName, fileType, mimetype) {
const typeHeader = 'data:application/' + fileType + ';base64,';
const blob = this.base64ToBlob(base64, mimetype);
this.downloadFileDownload(blob, fileName, fileType);
},
base64ToBlob(base64, mime) {
//解码base64得到二进制字符串

let raw = window.atob(base64.substring(base64.indexOf(',') + 1));
let rawLength = raw.length
//创建8位无符号整数值的类型化数组
let uInt8Array = new Uint8Array(rawLength)
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], {type: mime})
},
downloadFileDownload(blob, fileName, fileType) {
const downloadElement = document.createElement('a');
let href = blob;
if (typeof blob === 'string') {
downloadElement.target = '_blank'
} else {
href = window.URL.createObjectURL(blob)
}
downloadElement.href = href;
downloadElement.download = fileName + '.' + fileType;//下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click();
document.body.removeChild(downloadElement)
if (typeof blob !== 'string') {
window.URL.revokeObjectURL(href)
}
},
fileToBase64(file,fileType){
return new Promise((resolve,reject)=>{
//创建一个新的FileReader 对象
const reader = new FileReader();
//读取file对象
reader.readAsDataURL(file);
reader.onload=function () {
const base64String = reader.result.split(",")[1];
resolve('data:application/' + fileType + ';base64,'+base64String);
}
reader.onerror=function () {
reject(new Error("Failed to load file") )
}
})
},
getDictionaries(){
getTransfer(this.$route.query.id).then((response) => {
getCashierAccount(response.data.cashierId).then(res => {
this.form.balance = res.data.balance
})
this.getDicts("capital_expenditure_type").then((res) => {
for (var i = 0; i < res.data.length; i++) {
this.capitalExpenditureTypeOptions.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
@@ -274,7 +422,9 @@
attachmentList(oData1).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList1.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList1.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
let oData2= {
@@ -286,7 +436,9 @@
attachmentList(oData2).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList2.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList2.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
let oData3= {
@@ -298,7 +450,9 @@
attachmentList(oData3).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList3.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList3.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
},


+ 158
- 8
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalDetail11.vue View File

@@ -40,7 +40,7 @@
<p class="main_title">付款方信息</p>
<div class="main_box">
<van-field readonly label="付款方" v-model="form.payer" input-align="right" label-width="auto"/>
<van-field readonly label="付款方账户" v-model="form.payerAccount" input-align="right" label-width="auto"/>
<van-field readonly label="可用余额(元)" v-model="form.payerAccount" input-align="right" label-width="auto"/>
</div>

<div class="main_box" v-if="capitalExpenditureOpen" style="margin-bottom: 10px;margin-top: 10px;position:relative;">
@@ -72,13 +72,43 @@
<div class="main_box" style="padding: 5px 0 0 0;">
<van-cell value="收据" />
<van-uploader v-model="fileList1" v-if="fileList1==null||fileList1.length==0" :deletable="false" disabled :upload-text="'未上传附件'" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList1" v-if="fileList1!=null&&fileList1.length>0" :deletable="false" :max-count="fileList1.length" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList1" v-if="fileList1!=null&&fileList1.length>0" :deletable="false" @click-preview="previewPreview" :max-count="fileList1.length" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
<van-cell value="发票" />
<van-uploader v-model="fileList2" v-if="fileList2==null||fileList2.length==0" :deletable="false" disabled :upload-text="'未上传附件'" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList2" v-if="fileList2!=null&&fileList2.length>0" :deletable="false" :max-count="fileList2.length" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList2" v-if="fileList2!=null&&fileList2.length>0" :deletable="false" @click-preview="previewPreview" :max-count="fileList2.length" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
<van-cell value="其他" />
<van-uploader v-model="fileList3" v-if="fileList3==null||fileList3.length==0" :deletable="false" disabled :upload-text="'未上传附件'" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList3" v-if="fileList3!=null&&fileList3.length>0" :deletable="false" :max-count="fileList3.length" style="margin-left:8px;" ></van-uploader>
<van-uploader v-model="fileList3" v-if="fileList3!=null&&fileList3.length>0" :deletable="false" @click-preview="previewPreview" :max-count="fileList3.length" style="margin-left:8px;" >
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
</div>
</div>
</template>
@@ -194,7 +224,7 @@
return name
},
goFlow(){
window.location='approvalProcess?id='+this.$route.query.id;
window.location='approvalProcess?id='+this.$route.query.id+'&auditbatchNo='+this.$route.query.auditbatchNo;
},
getDictionaries(){
getCash(this.$route.query.id).then((response) => {
@@ -253,6 +283,120 @@
}
});
},
previewPreview(file, index, len) {
const baseImgUrl = this.$store.getters.baseRoutingUrl;
if (file.url) {
//已上传文件
let fileName = file.file.name || file.url;
let subIndex = fileName.lastIndexOf(".");
let ext = fileName.substring(subIndex + 1, fileName.length);
let imgi = file.listIndex
//console.log(ext)
let allUrl = file.url;
if(ext !== 'jpg' && ext !== 'png' && ext !== 'gif' && ext !== 'svg' && ext !== 'ico' && ext !== 'bmp'){
const link = document.createElement("a");
link.style.display = "none";
link.target = "_blank"
link.href = allUrl;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}

} else {
//新上传文件
let fileName = file.file.name;
// console.info(file.file.name)
let subIndex = fileName.lastIndexOf(".");
let ext = fileName.substring(subIndex + 1, fileName.length);
if(ext !== 'jpg' && ext !== 'png' && ext !== 'gif' && ext !== 'svg' && ext !== 'ico' && ext !== 'bmp'){
let type = this.getfileType(ext);
// 将文件转换为base64编码
this.fileToBase64(file.file, ext).then(res => {
this.downloadFile(res, fileName, ext, type);
})
}
}
},
getfileType(type) {
switch (type) {
case 'txt':
return 'text/plain';
case 'doc':
return 'application/msword';
case 'docx':
return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
case 'xls':
return 'application/vnd.ms-excel';
case 'xlsx':
return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
case 'pdf':
return 'application/pdf';
case 'pptx':
return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
case 'png':
return 'image/png';
case 'jpg':
return 'image/jpeg';
case 'gif':
return 'image/gif';
case 'svg':
return 'image/svg+xml';
case 'ico':
return 'image/x-icon';
case 'bmp':
return 'image/bmp,';
}
},
downloadFile(base64, fileName, fileType, mimetype) {
const typeHeader = 'data:application/' + fileType + ';base64,';
const blob = this.base64ToBlob(base64, mimetype);
this.downloadFileDownload(blob, fileName, fileType);
},
base64ToBlob(base64, mime) {
//解码base64得到二进制字符串

let raw = window.atob(base64.substring(base64.indexOf(',') + 1));
let rawLength = raw.length
//创建8位无符号整数值的类型化数组
let uInt8Array = new Uint8Array(rawLength)
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], {type: mime})
},
downloadFileDownload(blob, fileName, fileType) {
const downloadElement = document.createElement('a');
let href = blob;
if (typeof blob === 'string') {
downloadElement.target = '_blank'
} else {
href = window.URL.createObjectURL(blob)
}
downloadElement.href = href;
downloadElement.download = fileName + '.' + fileType;//下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click();
document.body.removeChild(downloadElement)
if (typeof blob !== 'string') {
window.URL.revokeObjectURL(href)
}
},
fileToBase64(file,fileType){
return new Promise((resolve,reject)=>{
//创建一个新的FileReader 对象
const reader = new FileReader();
//读取file对象
reader.readAsDataURL(file);
reader.onload=function () {
const base64String = reader.result.split(",")[1];
resolve('data:application/' + fileType + ';base64,'+base64String);
}
reader.onerror=function () {
reject(new Error("Failed to load file") )
}
})
},
getFileList(){
let oData1= {
tableId: this.$route.query.id,
@@ -263,7 +407,9 @@
attachmentList(oData1).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList1.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList1.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
let oData2= {
@@ -275,7 +421,9 @@
attachmentList(oData2).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList2.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList2.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
let oData3= {
@@ -287,7 +435,9 @@
attachmentList(oData3).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList3.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList3.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
},


+ 14
- 9
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalList.vue View File

@@ -27,7 +27,7 @@
finished-text="没有更多了"
@load="getList">
<van-swipe-cell v-for="(item,index) in applicationList" :key="index">
<van-cell :title="item.payer" center :to="{name:'sunVillageApprovalDetail', query: {id:item.id}}">
<van-cell :title="item.remark" center :to="{name:'sunVillageApprovalDetail', query: {id:item.id,auditbatchNo:item.auditbatchNo}}">
<template #icon>
<van-icon name="../../../../../static/images/onlineHome/icon_yn1.png" size="30" color="#FF4646" style="margin-right: 10px;" />
</template>
@@ -35,22 +35,25 @@
<p><span><i>¥</i>{{stateFormat(item.expenditureAmount)}}</span><i style="margin-right: 30px;"></i>{{item.applyDate}}</p>
</template>
<template #default>
<p style="width: 80px;display: inline-block">{{item.auditStatus}}</p>
<span v-if="item.auditStatus === '0'" style="color: #696969">{{ selectDictLabel(auditStatusOptions, item.auditStatus)}} </span>
<span v-else-if="item.auditStatus === '2' " style="color: #F56C6C">{{ selectDictLabel(auditStatusOptions, item.auditStatus)}} </span>
<span v-else-if="item.auditStatus === '3' " style="color: #00FF00">{{ selectDictLabel(auditStatusOptions, item.auditStatus)}} </span>
<span v-else style="color: #FFA500;">{{ selectDictLabel(auditStatusOptions, item.auditStatus) }} </span>
</template>
</van-cell>
<template #right>
<van-row>
<van-col>
<van-button v-if="item.auditStatus=='草稿'||item.auditStatus=='驳回'" square text="修改" type="info" :to="{name:'sunVillageApprovalModify', query: {id:item.id}}" class="delete-button" />
<van-button v-if="item.auditStatus=='0'||item.auditStatus=='2'" square text="修改" type="info" :to="{name:'sunVillageApprovalModify', query: {id:item.id}}" class="delete-button" />
</van-col>
<van-col>
<van-button v-if="item.auditStatus=='草稿'||item.auditStatus=='驳回'" color="#FFA63E" square text="提交" type="info" @click="onSubmit(item.id)" class="delete-button" />
<van-button v-if="item.auditStatus=='0'||item.auditStatus=='2'" color="#FFA63E" square text="提交" type="info" @click="onSubmit(item.id)" class="delete-button" />
</van-col>
<van-col>
<van-button v-if="item.auditStatus=='草稿'||item.auditStatus=='驳回'" square text="删除" type="danger" @click="deleteList(item.id,index)" class="delete-button" />
<van-button v-if="item.auditStatus=='0'||item.auditStatus=='2'" square text="删除" type="danger" @click="deleteList(item.id,index)" class="delete-button" />
</van-col>
<van-col>
<van-button v-if="item.auditStatus=='待审'" square text="撤回" type="danger" @click="cancelApply(item)" class="delete-button" />
<van-button v-if="item.auditStatus=='1'" square text="撤回" type="danger" @click="cancelApply(item)" class="delete-button" />
</van-col>
</van-row>
</template>
@@ -60,7 +63,7 @@
</template>

<script>
import { listTransfer , customSubmit , delTransfer , updateTYinnongTransferFoStatus } from "@/api/onlineHome/bankAgriculture/paymentApproval";
import { listTransfer , offlineCustomSubmit , delTransfer , updateTYinnongTransferFoStatus } from "@/api/onlineHome/bankAgriculture/paymentApproval";
export default {
name: "approvalList",
data() {
@@ -106,7 +109,9 @@ export default {
listTransfer(this.queryParams).then(response => {
console.log(response)
for (var i = 0; i < response.rows.length; i++) {
response.rows[i].auditStatus = this.selectDictLabel(this.auditStatusOptions, response.rows[i].auditStatus);
if(response.rows[i].remark.length > 12){
response.rows[i].remark = response.rows[i].remark.substring(0,12)+"...";
}
this.applicationList.push(response.rows[i]);
}
console.log(this.applicationList.length >= response.total)
@@ -142,7 +147,7 @@ export default {
message: '您确认提交草稿?',
})
.then(() => {
customSubmit(id).then(res => {
offlineCustomSubmit(id).then(res => {
this.$toast.success('提交成功');
setTimeout(function(){
history.go(0)


+ 14
- 8
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalList11.vue View File

@@ -28,10 +28,14 @@
@load="getList"
>
<van-swipe-cell v-for="(item,index) in applicationList" :key="index">
<van-cell :title="item.payer" :value="item.auditStatus" center :to="{name:'sunVillageApprovalDetail11', query: {id:item.id}}">
<van-cell :title="item.remark" center :to="{name:'sunVillageApprovalDetail11', query: {id:item.id,auditbatchNo:item.auditbatchNo}}">
<template #icon>
<van-icon name="../../../../../static/images/onlineHome/icon_yn7.png" size="30" color="#539FFD" style="margin-right: 10px;" />
</template>
<span v-if="item.auditStatus === '0'" style="color: #696969">{{ selectDictLabel(auditStatusOptions, item.auditStatus)}} </span>
<span v-else-if="item.auditStatus === '2' " style="color: #F56C6C">{{ selectDictLabel(auditStatusOptions, item.auditStatus)}} </span>
<span v-else-if="item.auditStatus === '3' " style="color: #00FF00">{{ selectDictLabel(auditStatusOptions, item.auditStatus)}} </span>
<span v-else style="color: #FFA500;">{{ selectDictLabel(auditStatusOptions, item.auditStatus) }} </span>
<template #label>
<p><span><i>¥</i>{{stateFormat(item.expenditureAmount)}}</span><i style="margin-right: 1rem;"></i>{{item.applyDate}}</p>
</template>
@@ -39,16 +43,16 @@
<template #right>
<van-row>
<van-col>
<van-button v-if="item.auditStatus=='草稿'||item.auditStatus=='驳回'" square text="修改" type="info" :to="{name:'sunVillageApprovalModify11', query: {id:item.id}}" class="delete-button" />
<van-button v-if="item.auditStatus=='0'||item.auditStatus=='2'" square text="修改" type="info" :to="{name:'sunVillageApprovalModify11', query: {id:item.id}}" class="delete-button" />
</van-col>
<van-col>
<van-button v-if="item.auditStatus=='草稿'||item.auditStatus=='驳回'" color="#FFA63E" square text="提交" type="info" @click="onSubmit(item.id)" class="delete-button" />
<van-button v-if="item.auditStatus=='0'||item.auditStatus=='2'" color="#FFA63E" square text="提交" type="info" @click="onSubmit(item.id)" class="delete-button" />
</van-col>
<van-col>
<van-button v-if="item.auditStatus=='草稿'||item.auditStatus=='驳回'" square text="删除" type="danger" @click="deleteList(item.id,index)" class="delete-button" />
<van-button v-if="item.auditStatus=='0'||item.auditStatus=='2'" square text="删除" type="danger" @click="deleteList(item.id,index)" class="delete-button" />
</van-col>
<van-col>
<van-button v-if="item.auditStatus=='待审'" square text="撤回" type="danger" @click="cancelApply(item)" class="delete-button" />
<van-button v-if="item.auditStatus=='1'" square text="撤回" type="danger" @click="cancelApply(item)" class="delete-button" />
</van-col>
</van-row>
</template>
@@ -59,7 +63,7 @@

<script>
import { listTransfer , customSubmit , delTransfer } from "@/api/onlineHome/bankAgriculture/paymentApproval";
import {cashSubmit, delCash, listCash} from "../../../../api/onlineHome/bankAgriculture/paymentApproval";
import {offlineCustomSubmit, delCash, listCash} from "../../../../api/onlineHome/bankAgriculture/paymentApproval";
export default {
name: "approvalList11",
data() {
@@ -101,7 +105,9 @@ export default {
listCash(this.queryParams).then(response => {
console.log(response)
for (var i = 0; i < response.rows.length; i++) {
response.rows[i].auditStatus = this.selectDictLabel(this.auditStatusOptions, response.rows[i].auditStatus);
if(response.rows[i].remark.length > 12){
response.rows[i].remark = response.rows[i].remark.substring(0,12)+"...";
}
this.applicationList.push(response.rows[i]);
}
console.log(this.applicationList.length >= response.total)
@@ -137,7 +143,7 @@ export default {
message: '您确认提交草稿?',
})
.then(() => {
cashSubmit(id).then(res => {
offlineCustomSubmit(id).then(res => {
this.$toast.success('提交成功');
setTimeout(function(){
history.go(0)


+ 182
- 41
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalModify.vue View File

@@ -127,7 +127,7 @@
label-width="auto"
maxlength="20"
required
show-word-limit
show-word-limit
v-if="form.bankType == '6'"
:rules="[{ required: true , message:'请输入转账附言' }]"
/>
@@ -141,7 +141,7 @@
label-width="auto"
maxlength="30"
required
show-word-limit
show-word-limit
v-if="form.bankType != '5' && form.bankType != '6'"
:rules="[{ required: true , message:'请输入转账附言' }]"
/>
@@ -246,7 +246,8 @@
@cancel="showpayer = false"
/>
</van-popup>
<van-field :rules="[{ required: true , message:'请输入账户' }]" required label="付款方账户" v-model="form.payerAccount" placeholder="请输入账户" input-align="right" label-width="auto"/>
<van-field :rules="[{ required: true , message:'请输入账户' }]" readonly required label="付款方账户" v-model="form.payerAccount" placeholder="请输入账户" input-align="right" label-width="auto"/>
<van-field required label="余额" readonly v-model="form.balance" placeholder="请输入余额" input-align="right" label-width="auto"/>
</div>

<p class="main_title">收款方信息<van-button icon="plus" @click="addChargeItme(chargeItme.length)" size="mini" type="info" native-type="button" class="addFamily"/></p>
@@ -296,8 +297,8 @@
@cancel="item.showPayee = false"
/>
</van-popup>
<van-field required :rules="[{ required: true , message:'请输入账户' }]" v-model="item.payeeAccount" label="收款账户" placeholder="请输入账户" input-align="right" label-width="auto"/>
<van-field required :rules="[{ required: true , message:'请输入银行' }]" v-model="item.bankDeposit" label="开户银行" placeholder="请输入银行" input-align="right" label-width="auto"/>
<van-field required :rules="[{ required: true , message:'请输入账户' }]" readonly v-model="item.payeeAccount" label="收款账户" placeholder="请输入账户" input-align="right" label-width="auto"/>
<van-field required :rules="[{ required: true , message:'请输入银行' }]" readonly v-model="item.bankDeposit" label="开户银行" placeholder="请输入银行" input-align="right" label-width="auto"/>
<van-field required :rules="[{ required: true , message:'请输入金额' }]" v-model="item.incomeAmount" label="收入金额" placeholder="请输入金额" input-align="right" label-width="auto" @change="moneyChange"/>
<van-field
readonly
@@ -322,11 +323,41 @@
<p class="main_title" style="margin: 0.2rem 3%;">上传附件<i style="margin-right: 0.5em;"></i><span style="font-size: 12px;color: red;">(若申请单未变动可不必点击底部的修改按钮)</span></p>
<div class="main_box" style="padding: 5px 0 0 0;">
<van-cell value="收据" />
<van-uploader v-model="fileList1" :after-read="beforeRead('1')" @delete="deleteFile" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList1" :after-read="beforeRead('1')" @delete="deleteFile" @click-preview="previewPreview" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
<van-cell title="发票" />
<van-uploader v-model="fileList2" :after-read="beforeRead('2')" @delete="deleteFile" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList2" :after-read="beforeRead('2')" @delete="deleteFile" @click-preview="previewPreview" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
<van-cell title="其他" />
<van-uploader v-model="fileList3" :after-read="beforeRead('3')" @delete="deleteFile" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList3" :after-read="beforeRead('3')" @delete="deleteFile" @click-preview="previewPreview" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
</div>
<div style="padding: 16px 0;">
<van-row>
@@ -344,7 +375,7 @@
</template>

<script>
import { getAccount , getTransfer , queryTransferDetail , listPayee , updateTransfer , getProjectto , listProject , addProjectto ,
import { getCashierAccount,getAccount , getTransfer , queryTransferDetail , listPayee , updateTransfer , getProjectto , listProject , addProjectto ,
customSubmit ,offlineCustomSubmit, getQmyeFlow ,listInfo ,getInfoto ,addInfoto,listTemplate,selectApprovalByTemplateId} from "@/api/onlineHome/bankAgriculture/paymentApproval";
import {
attachmentList,
@@ -502,7 +533,9 @@
},
getDictionaries(){
getTransfer(this.$route.query.id).then((response) => {

getCashierAccount(response.data.cashierId).then(res => {
this.form.balance = res.data.balance
})
this.getDicts("capital_expenditure_type").then((res) => {
for (var i = 0; i < res.data.length; i++) {
this.capitalExpenditureTypeOptions.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
@@ -592,7 +625,7 @@
}
// if(this.form.bankType == '2' && this.form.isPeers == 'N' && this.chargeItme.length==1){
// this.$notify({ type: 'danger', message: '目前农商行仅支持单笔跨行转账,即仅能有一个收款方!' });
// }else
// }else
if(this.form.bankType == '7' && this.chargeItme.length==1){
this.$notify({ type: 'danger', message: '目前农商行仅支持单笔转账,即仅能有一个收款方!' });
}else{
@@ -810,6 +843,120 @@
this.saveRelease()
}
},
previewPreview(file, index, len) {
const baseImgUrl = this.$store.getters.baseRoutingUrl;
if (file.url) {
//已上传文件
let fileName = file.file.name || file.url;
let subIndex = fileName.lastIndexOf(".");
let ext = fileName.substring(subIndex + 1, fileName.length);
let imgi = file.listIndex
//console.log(ext)
let allUrl = file.url;
if(ext !== 'jpg' && ext !== 'png' && ext !== 'gif' && ext !== 'svg' && ext !== 'ico' && ext !== 'bmp'){
const link = document.createElement("a");
link.style.display = "none";
link.target = "_blank"
link.href = allUrl;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}

} else {
//新上传文件
let fileName = file.file.name;
// console.info(file.file.name)
let subIndex = fileName.lastIndexOf(".");
let ext = fileName.substring(subIndex + 1, fileName.length);
if(ext !== 'jpg' && ext !== 'png' && ext !== 'gif' && ext !== 'svg' && ext !== 'ico' && ext !== 'bmp'){
let type = this.getfileType(ext);
// 将文件转换为base64编码
this.fileToBase64(file.file, ext).then(res => {
this.downloadFile(res, fileName, ext, type);
})
}
}
},
getfileType(type) {
switch (type) {
case 'txt':
return 'text/plain';
case 'doc':
return 'application/msword';
case 'docx':
return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
case 'xls':
return 'application/vnd.ms-excel';
case 'xlsx':
return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
case 'pdf':
return 'application/pdf';
case 'pptx':
return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
case 'png':
return 'image/png';
case 'jpg':
return 'image/jpeg';
case 'gif':
return 'image/gif';
case 'svg':
return 'image/svg+xml';
case 'ico':
return 'image/x-icon';
case 'bmp':
return 'image/bmp,';
}
},
downloadFile(base64, fileName, fileType, mimetype) {
const typeHeader = 'data:application/' + fileType + ';base64,';
const blob = this.base64ToBlob(base64, mimetype);
this.downloadFileDownload(blob, fileName, fileType);
},
base64ToBlob(base64, mime) {
//解码base64得到二进制字符串

let raw = window.atob(base64.substring(base64.indexOf(',') + 1));
let rawLength = raw.length
//创建8位无符号整数值的类型化数组
let uInt8Array = new Uint8Array(rawLength)
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], {type: mime})
},
downloadFileDownload(blob, fileName, fileType) {
const downloadElement = document.createElement('a');
let href = blob;
if (typeof blob === 'string') {
downloadElement.target = '_blank'
} else {
href = window.URL.createObjectURL(blob)
}
downloadElement.href = href;
downloadElement.download = fileName + '.' + fileType;//下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click();
document.body.removeChild(downloadElement)
if (typeof blob !== 'string') {
window.URL.revokeObjectURL(href)
}
},
fileToBase64(file,fileType){
return new Promise((resolve,reject)=>{
//创建一个新的FileReader 对象
const reader = new FileReader();
//读取file对象
reader.readAsDataURL(file);
reader.onload=function () {
const base64String = reader.result.split(",")[1];
resolve('data:application/' + fileType + ';base64,'+base64String);
}
reader.onerror=function () {
reject(new Error("Failed to load file") )
}
})
},
saveRelease(){
let _this = this;
this.$set(this.form, "payeeList", this.chargeItme);
@@ -822,56 +969,29 @@
this.$set(this.projectForm, "ynType", '1');
if(this.form.capitalExpenditureType==2){
addProjectto(this.projectForm).then(res => {
if(this.form.approvalMode === '1'){
customSubmit(this.form.id).then(res => {
this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},2000)
})
}else{
offlineCustomSubmit(this.form.id).then(res => {
this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},2000)
})
}
})
}else if(this.form.capitalExpenditureType==4){
addInfoto(this.infoForm).then(res => {
if(this.form.approvalMode === '1'){
customSubmit(this.form.id).then(res => {
this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},2000)
})
}else{
offlineCustomSubmit(this.form.id).then(res => {
this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},2000)
})
}
})
}else{
if(this.form.approvalMode === '1'){
customSubmit(this.form.id).then(res => {
this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},2000)
})
}else{
offlineCustomSubmit(this.form.id).then(res => {
this.$toast.success('提交成功');
setTimeout(function(){
_this.$router.push('/sunVillage_info/approvalList')
},2000)
})
}
}
});
},
@@ -1015,6 +1135,7 @@
this.$set(this.form, "operatorCode", obj.operatorCode);
this.$set(this.form, "enterpriseCode", obj.enterpriseCode);
this.$set(this.form, "bankType", obj.bankType);
this.$set(this.form, "balance", obj.balance);
this.$set(this.form, "payerFrom", '1');
console.log(obj.bankType)
if(obj.bankType==1){
@@ -1074,6 +1195,20 @@
commonAttach(params1).then((r1) => {
file.id=r1.id;
file.fileUrl = r1.fileUrl;
let subIndex = r1.fileUrl.lastIndexOf(".");
let ext = r1.fileUrl.substring(subIndex + 1, r1.fileUrl.length);
let baseUrl = location.protocol + "//" + location.host + request.defaults.baseURL;
let fileData = {"url": baseUrl + r1.fileUrl, "file": new File([], "name", {}), "id": r1.id,"type":ext};
if(obj === '1'){
this.fileList1.splice(-1, 1);
this.fileList1.push(fileData);
}else if(obj === '2'){
this.fileList2.splice(-1, 1);
this.fileList2.push(fileData);
}else{
this.fileList3.splice(-1, 1);
this.fileList3.push(fileData);
}
})
}
},
@@ -1091,7 +1226,9 @@
attachmentList(oData1).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList1.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList1.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
let oData2= {
@@ -1103,7 +1240,9 @@
attachmentList(oData2).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList2.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList2.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
let oData3= {
@@ -1115,7 +1254,9 @@
attachmentList(oData3).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList3.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList3.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
},


+ 210
- 450
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalModify11.vue View File

@@ -215,7 +215,7 @@
@cancel="showpayer = false"
/>
</van-popup>
<van-field :rules="[{ required: true , message:'请输入账户' }]" required label="可用余额(元)" v-model="form.payerAccount" placeholder="请输入账户" input-align="right" label-width="auto"/>
<van-field :rules="[{ required: true , message:'请输入账户' }]" readonly required label="可用余额(元)" v-model="form.payerAccount" placeholder="请输入账户" input-align="right" label-width="auto"/>
</div>

<p class="main_title">收款方信息<van-button icon="plus" @click="addChargeItme(chargeItme.length)" size="mini" type="info" native-type="button" class="addFamily"/></p>
@@ -234,11 +234,41 @@
<p class="main_title">上传附件</p>
<div class="main_box" style="padding: 5px 0 0 0;">
<van-cell value="收据" />
<van-uploader v-model="fileList1" :after-read="beforeRead1" @delete="deleteFile1" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList1" :after-read="beforeRead1" @click-preview="previewPreview" @delete="deleteFile1" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
<van-cell title="发票" />
<van-uploader v-model="fileList2" :after-read="beforeRead2" @delete="deleteFile2" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList2" :after-read="beforeRead2" @click-preview="previewPreview" @delete="deleteFile2" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
<van-cell title="其他" />
<van-uploader v-model="fileList3" :after-read="beforeRead3" @delete="deleteFile3" style="margin-left:8px;"></van-uploader>
<van-uploader v-model="fileList3" :after-read="beforeRead3" @click-preview="previewPreview" @delete="deleteFile3" style="margin-left:8px;">
<template #preview-cover="file">
<div class="preview-cover">
<img src="../../../../assets/images/sunVillage_info/WORD.png" width="75" v-if="file.type == 'docx' || file.type == 'doc'"/>
<img src="../../../../assets/images/sunVillage_info/ECEL.png" width="75" v-if="file.type == 'xlsx' || file.type == 'xls'" />
<img src="../../../../assets/images/sunVillage_info/PDF.png" width="75" v-if="file.type == 'pdf'" />
<img src="../../../../assets/images/sunVillage_info/PPT.png" width="75" v-if="file.type == 'ppt'" />
<img src="../../../../assets/images/sunVillage_info/RAR.png" width="75" v-if="file.type == 'zip' || file.type == 'rar'" />
</div>
</template>
</van-uploader>
</div>
<div style="padding: 16px 0;">
<van-row>
@@ -257,7 +287,7 @@

<script>
import { listAccount1 , getTransfer , queryTransferDetail , listPayee , updateTransfer , getProjectto , listProject , addProjectto
, cashSubmit , offlineCashSubmit, getQmyeFlow,listInfo ,getInfoto ,addInfoto,listTemplate,selectApprovalByTemplateId} from "@/api/onlineHome/bankAgriculture/paymentApproval";
, offlineCustomSubmit , offlineCashSubmit, getQmyeFlow,listInfo ,getInfoto ,addInfoto,listTemplate,selectApprovalByTemplateId} from "@/api/onlineHome/bankAgriculture/paymentApproval";
import {
addCash, addCashdetail,
attachmentList,
@@ -395,6 +425,120 @@
}
})
},
previewPreview(file, index, len) {
const baseImgUrl = this.$store.getters.baseRoutingUrl;
if (file.url) {
//已上传文件
let fileName = file.file.name || file.url;
let subIndex = fileName.lastIndexOf(".");
let ext = fileName.substring(subIndex + 1, fileName.length);
let imgi = file.listIndex
//console.log(ext)
let allUrl = file.url;
if(ext !== 'jpg' && ext !== 'png' && ext !== 'gif' && ext !== 'svg' && ext !== 'ico' && ext !== 'bmp'){
const link = document.createElement("a");
link.style.display = "none";
link.target = "_blank"
link.href = allUrl;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}

} else {
//新上传文件
let fileName = file.file.name;
// console.info(file.file.name)
let subIndex = fileName.lastIndexOf(".");
let ext = fileName.substring(subIndex + 1, fileName.length);
if(ext !== 'jpg' && ext !== 'png' && ext !== 'gif' && ext !== 'svg' && ext !== 'ico' && ext !== 'bmp'){
let type = this.getfileType(ext);
// 将文件转换为base64编码
this.fileToBase64(file.file, ext).then(res => {
this.downloadFile(res, fileName, ext, type);
})
}
}
},
getfileType(type) {
switch (type) {
case 'txt':
return 'text/plain';
case 'doc':
return 'application/msword';
case 'docx':
return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
case 'xls':
return 'application/vnd.ms-excel';
case 'xlsx':
return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
case 'pdf':
return 'application/pdf';
case 'pptx':
return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
case 'png':
return 'image/png';
case 'jpg':
return 'image/jpeg';
case 'gif':
return 'image/gif';
case 'svg':
return 'image/svg+xml';
case 'ico':
return 'image/x-icon';
case 'bmp':
return 'image/bmp,';
}
},
downloadFile(base64, fileName, fileType, mimetype) {
const typeHeader = 'data:application/' + fileType + ';base64,';
const blob = this.base64ToBlob(base64, mimetype);
this.downloadFileDownload(blob, fileName, fileType);
},
base64ToBlob(base64, mime) {
//解码base64得到二进制字符串

let raw = window.atob(base64.substring(base64.indexOf(',') + 1));
let rawLength = raw.length
//创建8位无符号整数值的类型化数组
let uInt8Array = new Uint8Array(rawLength)
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], {type: mime})
},
downloadFileDownload(blob, fileName, fileType) {
const downloadElement = document.createElement('a');
let href = blob;
if (typeof blob === 'string') {
downloadElement.target = '_blank'
} else {
href = window.URL.createObjectURL(blob)
}
downloadElement.href = href;
downloadElement.download = fileName + '.' + fileType;//下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click();
document.body.removeChild(downloadElement)
if (typeof blob !== 'string') {
window.URL.revokeObjectURL(href)
}
},
fileToBase64(file,fileType){
return new Promise((resolve,reject)=>{
//创建一个新的FileReader 对象
const reader = new FileReader();
//读取file对象
reader.readAsDataURL(file);
reader.onload=function () {
const base64String = reader.result.split(",")[1];
resolve('data:application/' + fileType + ';base64,'+base64String);
}
reader.onerror=function () {
reject(new Error("Failed to load file") )
}
})
},
initProjectInfo(){
let _this = this
let queryParams={
@@ -633,7 +777,7 @@
total = (parseFloat(total) + parseFloat(money.incomeAmount)).toFixed(2)
});
this.$set(this.form, "expenditureAmount", total);
if(this.form.payerAccount<this.form.expenditureAmount){
if(parseInt(this.form.payerAccount)< parseInt(this.form.expenditureAmount)){
this.$notify({ type: 'danger', message: '申请使用金额不能大于可用余额!' });
return false;
}else{
@@ -693,57 +837,30 @@
_this.projectForm.outId = _this.form.id
_this.$set(_this.projectForm, "ynType", '2');
addProjectto(_this.projectForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
})
}
})
}else if(_this.form.capitalExpenditureType==4){
_this.infoForm.transferId = _this.form.id
addInfoto(_this.infoForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
})
}
})
}else{
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
})
}
}
}
})
@@ -787,22 +904,7 @@
if(idx3 == (_this.uploadFiles3.length-1)){
if(_this.form.capitalExpenditureType==2){
addProjectto(_this.projectForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -815,12 +917,10 @@
})
})
})
}
})
} else if(_this.form.capitalExpenditureType==4){
addInfoto(_this.infoForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -833,39 +933,9 @@
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}
})
}else{
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -878,7 +948,6 @@
})
})
})
}
}
}
})
@@ -886,22 +955,7 @@
}else{
if(_this.form.capitalExpenditureType==2){
addProjectto(_this.projectForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -914,12 +968,10 @@
})
})
})
}
})
} else if(_this.form.capitalExpenditureType==4){
addInfoto(_this.infoForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -932,39 +984,9 @@
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}
})
}else{
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -977,7 +999,6 @@
})
})
})
}
}
}
}
@@ -995,8 +1016,7 @@
if(idx3 ==(_this.uploadFiles3.length-1)){
if(_this.form.capitalExpenditureType==2){
addProjectto(_this.projectForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1009,40 +1029,10 @@
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}
})
} else if(_this.form.capitalExpenditureType==4){
addInfoto(_this.infoForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1055,25 +1045,9 @@
})
})
})
}
})
}else{
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1086,7 +1060,6 @@
})
})
})
}
}
}
})
@@ -1094,8 +1067,7 @@
}else{
if(_this.form.capitalExpenditureType==2){
addProjectto(_this.projectForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1108,40 +1080,10 @@
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}
})
} else if(_this.form.capitalExpenditureType==4){
addInfoto(_this.infoForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1154,11 +1096,9 @@
})
})
})
}
})
}else{
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1171,21 +1111,6 @@
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}
}
}
}
@@ -1213,22 +1138,7 @@
if(idx3 == (_this.uploadFiles3.length-1)){
if(_this.form.capitalExpenditureType==2){
addProjectto(_this.projectForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1241,12 +1151,10 @@
})
})
})
}
})
} else if(_this.form.capitalExpenditureType==4){
addInfoto(_this.infoForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1259,39 +1167,9 @@
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}
})
}else{
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1304,7 +1182,6 @@
})
})
})
}
}
}
})
@@ -1312,22 +1189,7 @@
}else{
if(_this.form.capitalExpenditureType==2){
addProjectto(_this.projectForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1340,12 +1202,10 @@
})
})
})
}
})
} else if(_this.form.capitalExpenditureType==4){
addInfoto(_this.infoForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1358,39 +1218,9 @@
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}
})
}else{
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1403,7 +1233,6 @@
})
})
})
}
}
}
}
@@ -1421,8 +1250,7 @@
if(idx3 == (_this.uploadFiles3.length-1)){
if(_this.form.capitalExpenditureType==2){
addProjectto(_this.projectForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1435,40 +1263,10 @@
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}
})
} else if(_this.form.capitalExpenditureType==4){
addInfoto(_this.infoForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1481,25 +1279,9 @@
})
})
})
}
})
}else{
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1512,7 +1294,6 @@
})
})
})
}
}
}
})
@@ -1520,8 +1301,7 @@
}else{
if(this.form.capitalExpenditureType==2){
addProjectto(this.projectForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1534,40 +1314,10 @@
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}
})
} else if(this.form.capitalExpenditureType==4){
addInfoto(this.infoForm).then(res => {
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1580,11 +1330,9 @@
})
})
})
}
})
}else{
if(_this.form.approvalMode === '1'){
cashSubmit(_this.form.id).then(res => {
offlineCustomSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
@@ -1597,21 +1345,6 @@
})
})
})
}else{
offlineCashSubmit(_this.form.id).then(res => {
_this.chargeItme.map((resD,b) => {
resD.cashId = _this.form.id
addCashdetail(resD).then((a,rD) => {
if(b == (_this.chargeItme.length-1)){
_this.$toast.success('提交成功');
setTimeout(function(){
history.go(-1)
},2000)
}
})
})
})
}
}
}
});
@@ -2218,7 +1951,14 @@
}
},
beforeRead1(file) {
this.uploadFiles1.push(file.file);
let subIndex = file.file.name.lastIndexOf(".");
let ext = file.file.name.substring(subIndex + 1, file.file.name.length);
if(ext !== 'png' || ext !== 'jpg'){
this.$set(file, "type", ext);
this.fileList1.splice(-1, 1);
this.fileList1.push(file);
this.uploadFiles1.push(file.file);
}
},
deleteFile1(file){
this.uploadFiles1.map((response,index) => {
@@ -2232,7 +1972,14 @@
}
},
beforeRead2(file) {
this.uploadFiles2.push(file.file);
let subIndex = file.file.name.lastIndexOf(".");
let ext = file.file.name.substring(subIndex + 1, file.file.name.length);
if(ext !== 'png' || ext !== 'jpg'){
this.$set(file, "type", ext);
this.fileList2.splice(-1, 1);
this.fileList2.push(file);
this.uploadFiles2.push(file.file);
}
},
deleteFile2(file){
this.uploadFiles2.map((response,index) => {
@@ -2246,7 +1993,14 @@
}
},
beforeRead3(file) {
this.uploadFiles3.push(file.file);
let subIndex = file.file.name.lastIndexOf(".");
let ext = file.file.name.substring(subIndex + 1, file.file.name.length);
if(ext !== 'png' || ext !== 'jpg'){
this.$set(file, "type", ext);
this.fileList3.splice(-1, 1);
this.fileList3.push(file);
this.uploadFiles3.push(file.file);
}
},
deleteFile3(file){
this.uploadFiles3.map((response,index) => {
@@ -2269,7 +2023,9 @@
attachmentList(oData1).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList1.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList1.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
let oData2= {
@@ -2281,7 +2037,9 @@
attachmentList(oData2).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList2.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList2.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
let oData3= {
@@ -2293,7 +2051,9 @@
attachmentList(oData3).then(res => {
res.rows.map(r => {
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
this.fileList3.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
let subIndex = r.fileName.lastIndexOf(".");
let ext = r.fileName.substring(subIndex + 1, r.fileName.length);
this.fileList3.push({"url": baseUrl + r.fileUrl, "file": new File([], r.fileName, {}), "id": r.id,"type":ext})
})
})
},


+ 38
- 59
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalProcess.vue View File

@@ -11,51 +11,41 @@
</template>
</van-nav-bar>
<div class="main_box">
<van-row v-if="processList.待申请!=2">
<van-col span="4" align="right"><p class="icon_jian blue"><van-icon name="success" size="14" /></p></van-col>
<van-col span="20" class="textBlue">草稿</van-col>
</van-row>
<van-row v-if="processList.待申请==2">
<van-col span="4" align="right"><p class="icon_jian blue"><van-icon name="success" size="14" /></p></van-col>
<van-col span="20" class="textBlue">已申请
<van-row>
<van-col span="8" style="padding: 0;" class="textBlue" v-show="processList.待申请==2">{{processList.申请人}}</van-col>
<van-col span="16" style="padding: 0;" class="textBlue" v-show="processList.待申请==2">{{processList.申请时间}}</van-col>
</van-row>
</van-col>
</van-row>
<van-row v-if="processList.status==2" v-for="(item1,index,i) in processList.审批事项" :key="i">
<van-col span="4" align="right">
<p class="icon_jian" v-show="item1.approverStatus==1"><van-icon name="minus" size="14" /></p>
<p class="icon_jian blue" v-show="item1.approverStatus==2"><van-icon name="success" size="14" /></p>
<p class="icon_jian red" v-show="item1.approverStatus==3"><van-icon name="cross" size="14" /></p>
</van-col>
<van-col span="20">
<van-row>
<van-col span="8" style="padding: 0;">
<p v-show="item1.approverStatus == 1">{{item1.deptLabel}}</p>
<p v-show="item1.approverStatus == 2" class="textBlue">{{item1.deptLabel}}</p>
<p v-show="item1.approverStatus == 3" class="textRed">{{item1.deptLabel}}</p>
</van-col>
<van-col span="16" style="padding: 0;" >
<p v-show="item1.approverStatus == 1">{{item1.time}}</p>
<p v-show="item1.approverStatus == 2" class="textBlue">{{item1.time}}</p>
<p v-show="item1.approverStatus == 3" class="textRed">{{item1.time}}</p>
</van-col>
</van-row>
<van-row>
<van-col span="16" style="padding: 0;" >
<p v-show="item1.approverStatus == 1">{{item1.assigneeName}}</p>
<p v-show="item1.approverStatus == 2" class="textBlue">{{item1.assigneeName}}</p>
<p v-show="item1.approverStatus == 3" class="textRed">{{item1.assigneeName}}</p>
</van-col>
<van-col span="8" style="padding: 0;">
<p v-show="item1.approverStatus == 1">{{item1.comment}}</p>
<p v-show="item1.approverStatus == 2" class="textBlue">{{item1.comment}}</p>
<p v-show="item1.approverStatus == 3" class="textRed">{{item1.comment}}</p>
</van-col>
</van-row>
</van-col>
<van-row v-for="(item,index) in processList" :key="index">
<van-divider content-position="center"><h4>批次号:{{index}}</h4></van-divider>
<van-row v-for="(item1,index,i) in item" :key="i">
<van-col span="4" align="right">
<p class="icon_jian" v-show="item1.auditStatus=='1'"><van-icon name="minus" size="14" /></p>
<p class="icon_jian blue" v-show="item1.auditStatus=='3'"><van-icon name="success" size="14" /></p>
<p class="icon_jian red" v-show="item1.auditStatus=='2'"><van-icon name="cross" size="14" /></p>
</van-col>
<van-col span="20">
<van-row>
<van-col span="12" style="padding: 0;">
<p v-show="item1.auditStatus == '1'">{{item1.actorName}}</p>
<p v-show="item1.auditStatus == '3'" class="textBlue">{{item1.actorName}}</p>
<p v-show="item1.auditStatus == '2'" class="textRed">{{item1.actorName}}</p>
</van-col>
<van-col span="12" style="padding: 0;" >
<p v-show="item1.auditStatus == '1'">{{item1.auditTime}}</p>
<p v-show="item1.auditStatus == '3'" class="textBlue">{{item1.auditTime}}</p>
<p v-show="item1.auditStatus == '2'" class="textRed">{{item1.auditTime}}</p>
</van-col>
</van-row>
<van-row>
<van-col span="12" style="padding: 0;" >
<p v-show="item1.auditStatus == '1'">{{item1.auditBy}}</p>
<p v-show="item1.auditStatus == '3'" class="textBlue">{{item1.auditBy}}</p>
<p v-show="item1.auditStatus == '2'" class="textRed">{{item1.auditBy}}</p>
</van-col>
<van-col span="12" style="padding: 0;">
<p v-show="item1.auditStatus == '1'">{{item1.auditRemark}}</p>
<p v-show="item1.auditStatus == '3'" class="textBlue">{{item1.auditRemark}}</p>
<p v-show="item1.auditStatus == '2'" class="textRed">{{item1.auditRemark}}</p>
</van-col>
</van-row>
</van-col>
</van-row>
</van-row>
<van-divider content-position="center" v-if="approvalTemplateDetailList.length>0"><h4>审批流程</h4></van-divider>
<van-row v-if="approvalTemplateDetailList.length>0" v-for="(item1,index,i) in approvalTemplateDetailList" :key="i">
@@ -110,11 +100,8 @@ export default {
//查询审批进程
getTransferProcess(id){
getTransferProcess(id).then(res => {
this.processList = res.data.processSchedule
this.processList.乡镇审批时间 = this.processList.乡镇审批时间?this.format(this.processList.乡镇审批时间, "yyyy-MM-dd HH:mm:ss"):""
this.processList.区县审批时间 = this.processList.区县审批时间?this.format(this.processList.区县审批时间, "yyyy-MM-dd HH:mm:ss"):""
this.processList.支付状态时间 = this.processList.支付状态时间?this.format(this.processList.支付状态时间, "yyyy-MM-dd HH:mm:ss"):""
this.processList.入账状态时间 = this.processList.入账状态时间?this.format(this.processList.入账状态时间, "yyyy-MM-dd HH:mm:ss"):""
this.processList = res.data
console.info( this.processList);
})
},
handleUpdate(id) {
@@ -122,7 +109,7 @@ export default {
this.form = response.data;
this.processList = {}
if(this.form.auditStatus != 0){
this.getTransferProcess(this.$route.query.id);
this.getTransferProcess(id);
}
if(this.form.approvalMode == 1){
selectApprovalByTemplateId(this.form.approvalTemplateId).then(rs => {
@@ -212,12 +199,4 @@ export default {
color: #878787;
line-height: 22Px;
}
.van-row{
.van-row{
.van-col{
padding: 5Px 0 0 0!important;
color: #878787;
}
}
}
</style>

+ 1
- 1
src/views/sunVillage_info/bankAgriculture/paymentApproval/approvalProcess2.vue View File

@@ -127,7 +127,7 @@ export default {
this.form = response.data;
this.processList = {}
if(this.form.auditStatus != 0){
this.getTransferProcess1(this.$route.query.id);
this.getTransferProcess1(id);
}
if(this.form.approvalMode == 1){
selectApprovalByTemplateId(this.form.approvalTemplateId).then(rs => {


+ 230
- 68
src/views/sunVillage_info/detailed_ledger.vue View File

@@ -26,71 +26,55 @@
</div>
</div>
<!--内容-->
<div style="width: 100vw;overflow-y: scroll;padding: 11px 0 0 11px;">
<div class="center_box">
<div class="vocher_name">
<van-row class="head_m">
<van-col :span="14" class="year_m">
<div class="year_text">{{queryParams.startDate.substr(0,4)}}</div>
<div class="unit_m">
<div class="ubs">月</div>
<div class="ubs">日</div>
</div>
</van-col>
<van-col :span="10" class="credential_m">凭证字</van-col>
</van-row>
<van-row class="head_m_s">
<van-col :span="9">摘要</van-col>
<van-col :span="4">借方</van-col>
<van-col :span="4">贷方</van-col>
<van-col :span="3">方向</van-col>
<van-col :span="4">余额</van-col>
</van-row>

</div>
<div class="vocher_content">
<div class="vocher_cmain">

<div style="width: 20%;">
<van-row class="vocher_mTitle" v-for="(item,index) in tableList" :key="index">
<van-col :span="7">{{item.month}}</van-col>
<van-col :span="7">{{item.day}}</van-col>
<van-col :span="10">
<div class="pz_tx" @click="subjectNameFun(item.voucherWordNum,item.voucherId)">{{item.voucherWordNum}}</div>
</van-col>
</van-row>
</div>
<div class="content_m">
<van-row class="content_m_b" v-for="(item,index) in tableList" :key="index">
<van-col :span="9" class="zy">
<span>{{item.voucherSummary}}</span>
</van-col>
<van-col :span="4" class="je">{{item.jieAmount}}</van-col>
<van-col :span="4" class="je">{{item.daiAmount}}</van-col>
<van-col :span="3" class="km">{{item.balanceDirection}}</van-col>
<van-col :span="4" class="je">{{item.balance}}</van-col>
</van-row>
<!-- <van-row >
<van-col :span="9" class="zy">摘要</van-col>
<van-col :span="4" class="je">200.00</van-col>
<van-col :span="4" class="je">20000.00</van-col>
<van-col :span="3" class="km">借</van-col>
<van-col :span="4" class="je">200.00</van-col>
</van-row> -->


</div>
</div>
<div class="balance-main">
<!-- <div class="main-title">-->
<!-- <div class="company">单位:{{ this.$store.getters.bookName }}</div>-->
<!-- <div class="nper">{{ accountingYear }}年{{ accountingMonth }}期</div>-->
<!-- <div class="amountOf">金额:元</div>-->
<!-- </div>-->
<div class="main-center">
<div class="datagrid">
<div class="header">
<div class="xmmc">{{queryParams.startDate.substr(0,4)}}</div>
<div class="qj">凭证字</div>
<div class="zy">摘要</div>
<div class="dfje">借方</div>
<div class="qj">贷方</div>
<div class="zy">方向</div>
<div class="dfje">余额</div>
</div>
<!-- <div class="header header_sec">-->
<!-- <div class="xmmc">编码</div>-->
<!-- <div class="qj">名称</div>-->
<!-- <div class="zy">本期发生</div>-->
<!-- <div class="dfje">期末余额</div>-->
<!-- <div class="xmmc">科目</div>-->
<!-- <div class="qj">期初余额</div>-->
<!-- <div class="zy">本期发生</div>-->
<!-- <div class="dfje">期末余额</div>-->
<!-- </div>-->
<div class="mok_list">
<ul class="list">
<li class="header_sec" v-for="(item, index) in tableList" :key="index">
<div class="xmmc" style="display: flex;justify-content: space-evenly;"><span>月:{{item.month}}</span><span>日:{{item.day==null?'无':item.day}}</span></div>
<div class="qj pz_tx" @click="subjectNameFun(item.voucherWordNum,item.voucherId)">{{item.voucherWordNum}}</div>
<div class="zy">{{item.voucherSummary}}</div>
<div class="dfje">{{item.jieAmount}}</div>
<div class="qj">{{item.daiAmount}}</div>
<div class="zy">{{item.balanceDirection}}</div>
<div class="dfje">{{item.balance}}</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>

<!--开始日期-->
<van-action-sheet v-model="dateObj.startVisbile" duration="0.2" >
<van-datetime-picker
v-model="dateObj.startDate"
title="选择日期"
:min-date="dateObj.minDate"
:max-date="dateObj.maxDate"
@confirm="startConfirm"
@cancel ="startCancel"
type="year-month"
@@ -153,7 +137,7 @@ export default {
startVisbile:false,
startDate: new Date(),
minDate:new Date(2018, 0, 1),
maxDate:new Date(2028, 5, 1),
maxDate:new Date(2018, 0, 1),
//结束日期-弹窗显隐
endVisbile:false,
endDate:new Date(),
@@ -192,7 +176,8 @@ export default {
}
this.$set(this.queryParams, "startDate", currentDays);
this.$set(this.queryParams, "endDate", currentDays);

this.$set(this.dateObj, "maxDate", new Date(new Date(currentDays).getFullYear(),11));
this.$set(this.dateObj, "minDate", new Date(currentDays));
let dataArr = currentDays.split('-')
this.$set(this.dateObj, "startDate", new Date(dataArr[0], dataArr[1]-1), 1);
this.$set(this.dateObj, "endDate", new Date(dataArr[0], dataArr[1]-1), 1);
@@ -219,9 +204,12 @@ export default {

this.initPage()
this.makeSubjectsTree(res.rows, resp.data);
}else{
this.subjectText = '暂无数据';
}
}else{
this.subjectText = '暂无数据';
this.subjectsTree = []; //会计科目显示列表(树)
this.cascaderValue = ""; //科目选择
this.initPage()
}
});
});
},
@@ -318,10 +306,15 @@ export default {
let years = this.format(value,'yyyy');
let months = this.format(value,'MM');
this.queryParams.startDate = years+'-'+months;
this.dateObj.startVisbile = false;

this.queryParams.endDate = years+'-'+months;
this.subjectYear = years;

this.dateObj.startVisbile = false;
this.initPage();
const end = new Date(value.getFullYear(),11) //年份的最后一个月+1,就是次年的1月
this.dateObj.minDate = value;
this.dateObj.maxDate = end;
this.initAxios();
},
//弹窗-开始日期-取消
startCancel(){
@@ -337,16 +330,185 @@ export default {
let years = this.format(value,'yyyy');
let months = this.format(value,'MM');
this.queryParams.endDate = years+'-'+months;


this.dateObj.endVisbile = false;
this.initPage();
this.initAxios();
}

}
}
</script>
<style scoped lang="scss">
.balance-main {
background: #fff;
margin-top: 20px;
.main-title {
margin-bottom: 5PX;
padding: 0 10PX;
height: 33PX;
line-height: 33PX;
color: #333;
font-size: 13PX;
display: flex;
justify-content: space-between;
.company {
}
.nper {
text-align: center;
}
.amountOf {
text-align: right;
}
}
.main-center {
// min-height: 404PX;
border: 1PX solid #CACBCC;
border-bottom: 0;
overflow-x: scroll;
.datagrid {
min-height: 100PX;
width: 250%;
.header {
background: #f8f8f9;
font-weight: bold;
display: flex;
color: #278dff;
}
.header_sec{
div{
width: 14.2%;
}
}
.kmbm,
.xmmc,
.qj,
.zy,
.jfje,
.dfje,
.fx,
.ye {
height: 29PX;
line-height: 29PX;
font-size: 13PX;
border-bottom: 1PX solid #CACBCC;
border-right: 1PX solid #CACBCC;
text-align: center;
}
.xmmc {
width: 14.2%;
text-align: center;
padding-left: 10PX;
}
.qj {
width: 14.2%;
text-align: center;
padding-right: 10PX;
}
.zy {
width: 14.2%;
text-align: center;
padding-right: 10PX;
}

.dfje {
width: 14.2%;
text-align: center;
padding-left: 10PX;
}
.fx {
width: 12%;
text-align: right;
padding-right: 10PX;
}
.ye {
width: 12%;
text-align: right;
padding-right: 10PX;
border-right: 0;
}
.mok_list {
display: block;
overflow-y: scroll;
height: calc(100vh - 230PX);
//background: url("~@/assets/images/report_line.png") repeat;
}
.list {
width: 100%;
}
ul {
margin: 0;
padding: 0;
li {
display: block;
overflow: hidden;
list-style: none;
&.header {
background: #f8f8f9;
font-weight: bold;
}
&.header_sec{
div{
width: 14.2%;
}
}
&:nth-child(even){
background: #e9e9e9;
}
.pz_tx{
color: #278dff;
}
.kmbm,
.xmmc,
.qj,
.zy,
.jfje,
.dfje,
.fx,
.ye {
height: 29PX;
line-height: 29PX;
float: left;
font-size: 13PX;
border-bottom: 1PX solid #CACBCC;
border-right: 1PX solid #CACBCC;
text-align: center;
}
.xmmc {
width: 26%;
text-align: center;
padding-left: 10PX;
}
.qj {
width: 12%;
text-align: center;
padding-right: 10PX;
}
.zy {
width: 12%;
text-align: center;
padding-right: 10PX;
}

.dfje {
width: 26%;
text-align: center;
padding-left: 10PX;
}
.fx {
width: 12%;
text-align: right;
padding-right: 10PX;
}
.ye {
width: 12%;
text-align: right;
padding-right: 10PX;
border-right: 0;
}
}
}
}
}
}
.home_wrapper{
background: #e9e9e9;
min-height: 100vh;


+ 4
- 0
src/views/sunVillage_info/detailed_liabilities.vue View File

@@ -223,6 +223,7 @@
background: #f8f8f9;
font-weight: bold;
display: flex;
color: #278dff;
}
.kmbm,
.xmmc,
@@ -291,6 +292,9 @@
background: #f8f8f9;
font-weight: bold;
}
&:nth-child(even){
background: #e9e9e9;
}
.kmbm,
.xmmc,
.qj,


+ 293
- 0
src/views/sunVillage_info/homeApplication/applicationNewList.vue View File

@@ -0,0 +1,293 @@
<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="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
v-model="loading"
:finished="finished"
finished-text="没有更多了"
@load="getList('+1')"
>
<van-swipe-cell v-for="(item,index) in applicationList" :key="index">
<van-cell :title="item.sqhhzxm" 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>-->
<template #icon>
<van-icon name="../../../static/images/onlineHome/icon_zjd1.png" size="30" color="#539FFD" style="margin-right: 10px;" />
</template>
<span v-if="item.auditStatus === '0'">{{ formatDict(houseApplyStatus, item.homeApplyStatus) }} </span>
<span v-else-if="item.auditStatus === '2' " style="color: #F56C6C">{{ formatDict(houseApplyStatus, item.homeApplyStatus)}} </span>
<span v-else style="color: #67c23a;">{{ formatDict(houseApplyStatus, item.homeApplyStatus) }} </span>
<template #label>
<p>{{item.projectName}}</p>
</template>
</van-cell>
<template #right>
<van-row>
<van-col>
<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:'sunVillageInfoProposerLiteNew', query: {id:item.id, type: 'modify'}}" class="delete-button" />
</van-col>
<van-col>
<van-button square text="删除" type="danger" v-if="item.homeApplyStatus=='11'" @click="deleteList(item.id,index)" class="delete-button" />
</van-col>
</van-row>
</template>
</van-swipe-cell>
</van-list>
</van-pull-refresh>
</div>
</template>

<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,
deptId:null,
idcard:null,
total: 0,
queryParams:{
pageNum:1,
pageSize:10,
deptId:null,
orderByColumn:'createTime',
isAsc:'desc'
}
};
},
created() {
this.houseGetDicts("home_stage_status").then((response) => {
this.houseApplyStatus = response.data;
});
let user = JSON.parse(Cookies.get('user'));
this.$set(this.queryParams, "deptId", user.deptId);
this.$set(this.queryParams, "sqhhzsfzh", user.idcard);
console.info( user)
this.getList();
},
methods: {
goAdd(){
window.location = 'applicationAdd';
},
goAddLite(){
//window.location = 'applicationAdd'
this.$router.push({name:'sunVillageInfoProposerLiteNew',query:{type:"add"}})
},
viewItem(row){
let type = row.houseApplyStatus == '11' // 申请草稿
|| row.houseApplyStatus == '1F' // 申请通过
|| row.houseApplyStatus == '31' // 开工草稿
|| row.houseApplyStatus == '3F' // 开工通过
|| row.houseApplyStatus == '71' // 验收草稿
? 'modify' : 'view';
this.$router.push({name:'sunVillageInfoProposerLiteNew',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;
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('删除成功');
}
});
})
.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:'sunVillageInfoProposerLiteNew',query:{type:"edit",id:item.id}})
// if(item.homeApplyStatus === '11'){
// customSubmitWLHT(item.id).then((resp) => {
// this.$toast.success("提交成功");
// this.refresh();
// }).catch((e) => {
// this.$toast.fail("提交失败!");
// });
// }else if(item.homeApplyStatus === '31'){
// submitStartWLHT(item.id).then((resp) => {
// this.$toast.success("提交成功");
// this.refresh();
// }).catch((e) => {
// this.$toast.fail("提交失败!");
// });
// }else if(item.homeApplyStatus === '71'){
// submitEndWLHT(item.id).then((resp) => {
// this.$toast.success("提交成功");
// this.refresh();
// }).catch((e) => {
// this.$toast.fail("提交失败!");
// });
// }
},
},
}
</script>

<style scoped lang="scss">
.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;
}
}
}
/deep/.van-list{
padding: 0.2rem 3%;
}
/deep/.van-cell__title{
flex: 0.7;
}
/deep/.van-cell__title span{
font-family: Arial;
font-size: 0.4rem;
font-weight: normal;
}
/deep/.van-cell__value{
flex: 0.3;
color: #1D6FE9;
font-weight: bold;
}
/deep/.van-swipe-cell{
margin-bottom: 0.2rem;
border-radius: 0.2rem;
overflow: hidden;
box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
}
/deep/van-ellipsis{
font-weight: bold;
}
.van-row{
height: 100%;
}
.van-col{
height: 100%;
}
.delete-button {
height: 100%;
}
</style>

+ 13
- 11
src/views/sunVillage_info/homeApplication/proposerLite.vue View File

@@ -4208,18 +4208,20 @@ export default {
}
else {
console.info(this.deptId);
getQueryLand(this.deptId).then((response) => {
if (response.code == 200) {
let InsertCode = response.data;
this.form.orgCode = InsertCode.orgCode;
this.tGeoOrganizationLat = InsertCode.lat;
this.tGeoOrganizationLng = InsertCode.lng;
if(func)
{
func(this.tGeoOrganizationLng, this.tGeoOrganizationLat);
if(this.deptId != null){
getQueryLand(this.deptId).then((response) => {
if (response.code == 200) {
let InsertCode = response.data;
this.form.orgCode = InsertCode.orgCode;
this.tGeoOrganizationLat = InsertCode.lat;
this.tGeoOrganizationLng = InsertCode.lng;
if(func)
{
func(this.tGeoOrganizationLng, this.tGeoOrganizationLat);
}
}
}
});
});
}
}
},
validateBaseApplyFormBase() {


+ 5678
- 0
src/views/sunVillage_info/homeApplication/proposerLiteNew.vue
File diff suppressed because it is too large
View File


+ 1
- 1
src/views/sunVillage_info/index.vue View File

@@ -50,7 +50,7 @@

</div>
<div class="footer">
{{configValue == ""?'技术支持:北京农燊高科信息技术有限公司':configValue}}
{{configValue == ""?'技术支持:公司':configValue}}
</div>

</div>


+ 1
- 1
src/views/sunVillage_info/index_code.vue View File

@@ -59,7 +59,7 @@
</div>
</div>
<div :class="{'footer':xsgsList.length < 9 , 'footer2':xsgsList.length > 8}">
{{configValue == ""?'技术支持:北京农燊高科信息技术有限公司':configValue}}
{{configValue == ""?'技术支持:公司':configValue}}
</div>
<img src="../../assets/images/sunVillage_info/index_btn_green.png" class="fixed_btn" @click="goCode">
</div>


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save