1.对接商户进件

2.新增商户的分账功能
huipay-master
杨杰 2 years ago
parent 106179eb6c
commit 14abcdac7a
  1. 16
      App.vue
  2. 30
      Utils/Api.js
  3. 1156
      Utils/js/qqmap-wx-jssdk.js
  4. 16
      index.html
  5. 9
      main.js
  6. 7
      manifest.json
  7. 5
      node_modules/.package-lock.json
  8. 21
      node_modules/vue-jsonp/LICENSE
  9. 153
      node_modules/vue-jsonp/README.md
  10. 73
      node_modules/vue-jsonp/dist/index.d.ts
  11. 8
      node_modules/vue-jsonp/dist/index.esm.js
  12. 8
      node_modules/vue-jsonp/dist/index.js
  13. 20
      node_modules/vue-jsonp/dist/utils/index.d.ts
  14. 50
      node_modules/vue-jsonp/package.json
  15. 13
      package-lock.json
  16. 3
      package.json
  17. 60
      pages.json
  18. 389
      pages/index/bindDividedMerchant/bindDividedMerchant.vue
  19. 118
      pages/index/bindMerchants/bindMerchants.vue
  20. 62
      pages/index/ledgerReceiverList/ledgerReceiverList.vue
  21. 220
      pages/index/map/map.vue
  22. 69
      pages/index/merchant-incoming-parts/merchant-incoming-parts.vue
  23. 47
      pages/index/merchant-management/merchant-management.vue
  24. 272
      pages/index/open-Divide_accounts/open-Divide_accounts.vue
  25. 42
      pages/welcome/welcome.vue
  26. BIN
      static/img/businesslic13.png
  27. BIN
      static/img/businesslic14.png
  28. BIN
      static/img/businesslic15.png
  29. BIN
      static/img/businesslic16.png
  30. BIN
      static/img/location.png
  31. 4
      uni.scss
  32. 2
      unpackage/dist/build/h5/index.html

@ -4,11 +4,11 @@
// url: 'http://192.168.3.4:9301/crest',
// imgUrl: 'https://192.168.3.4:9301/filesystem/',
//
url: 'https://pay.dctpay.com/crest',
imgUrl: 'https://gratia-pay.obs.cn-southwest-2.myhuaweicloud.com',
// url: 'https://pay.dctpay.com/crest',
// imgUrl: 'https://gratia-pay.obs.cn-southwest-2.myhuaweicloud.com',
//
// url: 'https://gratia-pay.dctpay.com/crest',
// imgUrl: 'https://xuan-pay-private.obs.cn-southwest-2.myhuaweicloud.com',
url: 'https://gratia-pay.dctpay.com/crest',
imgUrl: 'https://gratia-pay-test.obs.cn-east-3.myhuaweicloud.com',
userInfo: "",
openId: '',
h5code: '',
@ -30,7 +30,13 @@
//
clearNo: '',
//
bankareaCode: ''
bankareaCode: '',
//
receiverNo: '',
//
receiverName: '',
//
storeAddress: ''
},
onLaunch: function() {
let that = this;

@ -190,3 +190,33 @@ export const getSalesmanQrCodeList = params => {
export const getStoreQrCodeList = params => {
return POST('GET', `${base}/payQrCode/getStoreQrCodeList`, params).then(res => res.data);
}
//商户分账功能申请
export const merLedgerApply = params => {
return POST('POST', `${base}/merLedger/merLedgerApply`, params).then(res => res.data);
}
//查询商户分账功能
export const getMerLedgerApply = params => {
return POST('GET', `${base}/merLedger/getMerLedgerApply`, params).then(res => res.data);
}
//商户分账绑定接受方申请
export const merLedgerReceiverApply = params => {
return POST('POST', `${base}/merLedger/merLedgerReceiverApply`, params).then(res => res.data);
}
//查询分账接收方列表
export const getLedgerReceiverListByMer = params => {
return POST('GET', `${base}/merLedger/getLedgerReceiverListByMer`, params).then(res => res.data);
}
//查询接收方列表
export const getLedgerReceiverList = params => {
return POST('GET', `${base}/merLedger/getLedgerReceiverList`, params).then(res => res.data);
}
//分账解绑接收方申请
export const merLedgerReceiverDelApply = params => {
return POST('POST', `${base}/merLedger/merLedgerReceiverDelApply`, params).then(res => res.data);
}
//查询接收方详情
export const getLedgerReceiverById = params => {
return POST('GET', `${base}/merLedger/getLedgerReceiverById`, params).then(res => res.data);
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
<title></title>
<!--preload-links-->
<!--app-context-->
<script src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>
</head>
<body>
<div id="app"><!--app-html--></div>
<script type="module" src="/main.js"></script>
</body>
</html>

@ -1,13 +1,16 @@
import Vue from 'vue'
import App from './App'
import * as filters from './Utils/js/date.js'
//引入vue
import * as filters from './Utils/js/date.js';
import {
VueJsonp
} from 'vue-jsonp'
Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key])
})
Vue.config.productionTip = false
Vue.use(VueJsonp);
App.mpType = 'app'
const app = new Vue({

@ -77,6 +77,13 @@
"title" : "惠支付",
"devServer" : {
"https" : false
},
"sdkConfigs" : {
"maps" : {
"qqmap" : {
"key" : "7UMBZ-HFEHX-HSD4Q-Z3QY6-OQKN7-2QBDB"
}
}
}
}
}

5
node_modules/.package-lock.json generated vendored

@ -8,6 +8,11 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
"integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
},
"node_modules/vue-jsonp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/vue-jsonp/-/vue-jsonp-2.0.0.tgz",
"integrity": "sha512-Mzd9GNeuKP5hHFDWZNMWOsCuMILSkA6jo2l4A02wheFz3qqBzH7aSEFTey1BRCZCLizlaf1EqJ5YUtF392KspA=="
}
}
}

21
node_modules/vue-jsonp/LICENSE generated vendored

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 LancerComet
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

153
node_modules/vue-jsonp/README.md generated vendored

@ -0,0 +1,153 @@
# Vue-jsonp
[![VueJsonp](https://github.com/LancerComet/vue-jsonp/workflows/Test/badge.svg)](https://github.com/LancerComet/vue-jsonp/actions)
A tiny library for handling JSONP request.
## Quick Start
As Vue plugin:
```ts
import { VueJsonp } from 'vue-jsonp'
// Vue Plugin.
Vue.use(VueJsonp)
// Now you can use this.$jsonp in Vue components.
const vm = new Vue()
vm.$jsonp('/some-jsonp-url', {
myCustomUrlParam: 'veryNice'
})
```
Use function directly:
```ts
import { jsonp } from 'vue-jsonp'
jsonp('/some-jsonp-url', {
myCustomUrlParam: 'veryNice'
})
```
## Send data and set query & function name
### Send data
```ts
// The request url will be "/some-jsonp-url?name=LancerComet&age=100&callback=jsonp_{RANDOM_STR}".
jsonp('/some-jsonp-url', {
name: 'LancerComet',
age: 100
})
```
### Custom query & function name
The url uniform is `/url?{callbackQuery}={callbackName}&...`, the default is `/url?callback=jsonp_{RANDOM_STRING}&...`.
And you can change it like this:
```ts
// The request url will be "/some-jsonp-url?name=LancerComet&age=100&cb=jsonp_func".
jsonp('/some-jsonp-url', {
callbackQuery: 'cb',
callbackName: 'jsonp_func',
name: 'LancerComet',
age: 100
})
```
## Module exports
- `VueJsonp: PluginObject<never>`
- `jsonp<T>: (url: string, param?: IJsonpParam, timeout?: number) => Promise<T>`
## API
### IJsonpParam
IJsonpParam is the type of param for jsonp function.
```ts
/**
* JSONP parameter declaration.
*/
interface IJsonpParam {
/**
* Callback query name.
* This param is used to define the query name of the callback function.
*
* @example
* // The request url will be "/some-url?myCallback=jsonp_func&myCustomUrlParam=veryNice"
* jsonp('/some-url', {
* callbackQuery: 'myCallback',
* callbackName: 'jsonp_func',
* myCustomUrlParam: 'veryNice'
* })
*
* @default callback
*/
callbackQuery?: string
/**
* Callback function name.
* This param is used to define the jsonp function name.
*
* @example
* // The request url will be "/some-url?myCallback=jsonp_func&myCustomUrlParam=veryNice"
* jsonp('/some-url', {
* callbackQuery: 'myCallback',
* callbackName: 'jsonp_func',
* myCustomUrlParam: 'veryNice'
* })
*
* @default jsonp_ + randomStr()
*/
callbackName?: string
/**
* Custom data.
*/
[key: string]: any
}
```
## Example
```ts
import Vue from 'vue'
import { VueJsonp } from 'vue-jsonp'
Vue.use(VueJsonp)
const vm = new Vue()
const { code, data, message } = await vm.$jsonp<{
code: number,
message: string,
data: {
id: number,
nickname: string
}
}>('/my-awesome-url', {
name: 'MyName', age: 20
})
assert(code === 0)
assert(message === 'ok')
assert(data.id === 1)
assert(data.nickname === 'John Smith')
```
```ts
import { jsonp } from 'vue-jsonp'
const result = await jsonp<string>('/my-awesome-url')
assert(result === 'such a jsonp')
```
## License
MIT

@ -0,0 +1,73 @@
/**
* Vue Jsonp.
* # Carry Your World #
*
* @author: LancerComet
* @license: MIT
*/
import { PluginObject } from 'vue/types/plugin';
declare module 'vue/types/vue' {
interface Vue {
$jsonp: typeof jsonp;
}
}
/**
* Vue JSONP.
*/
declare const VueJsonp: PluginObject<never>;
/**
* JSONP function.
*
* @param { string } url Target URL address.
* @param { IJsonpParam } param Querying params object.
* @param { number } timeout Timeout setting (ms).
*
* @example
* jsonp('/url', {
* callbackQuery: ''
* callbackName: '',
* name: 'LancerComet',
* age: 26
* }, 1000)
*/
declare function jsonp<T = any>(url: string, param?: IJsonpParam, timeout?: number): Promise<T>;
export { VueJsonp, jsonp };
/**
* JSONP parameter declaration.
*/
interface IJsonpParam {
/**
* Callback query name.
* This param is used to define the query name of the callback function.
*
* @example
* // The request url will be "/some-url?myCallback=jsonp_func&myCustomUrlParam=veryNice"
* jsonp('/some-url', {
* callbackQuery: 'myCallback',
* callbackName: 'jsonp_func',
* myCustomUrlParam: 'veryNice'
* })
*
* @default callback
*/
callbackQuery?: string;
/**
* Callback function name.
* This param is used to define the jsonp function name.
*
* @example
* // The request url will be "/some-url?myCallback=jsonp_func&myCustomUrlParam=veryNice"
* jsonp('/some-url', {
* callbackQuery: 'myCallback',
* callbackName: 'jsonp_func',
* myCustomUrlParam: 'veryNice'
* })
*
* @default jsonp_ + randomStr()
*/
callbackName?: string;
/**
* Custom data.
*/
[key: string]: any;
}

@ -0,0 +1,8 @@
function e(t,n){t=t.replace(/=/g,"");var o=[];switch(n.constructor){case String:case Number:case Boolean:o.push(encodeURIComponent(t)+"="+encodeURIComponent(n));break;case Array:n.forEach((function(n){o=o.concat(e(t+"[]=",n))}));break;case Object:Object.keys(n).forEach((function(r){var a=n[r];o=o.concat(e(t+"["+r+"]",a))}))}return o}function t(e){var n=[];return e.forEach((function(e){"string"==typeof e?n.push(e):n=n.concat(t(e))})),n}
/**
* Vue Jsonp.
* # Carry Your World #
*
* @author: LancerComet
* @license: MIT
*/var n={install:function(e){e.prototype.$jsonp=o}};function o(n,o,r){if(void 0===o&&(o={}),"string"!=typeof n)throw new Error('[Vue-jsonp] Type of param "url" is not string.');if("object"!=typeof o||!o)throw new Error("[Vue-jsonp] Invalid params, should be an object.");return r="number"==typeof r?r:5e3,new Promise((function(a,c){var u="string"==typeof o.callbackQuery?o.callbackQuery:"callback",i="string"==typeof o.callbackName?o.callbackName:"jsonp_"+(Math.floor(1e5*Math.random())*Date.now()).toString(16);o[u]=i,delete o.callbackQuery,delete o.callbackName;var s=[];Object.keys(o).forEach((function(t){s=s.concat(e(t,o[t]))}));var l=t(s).join("&"),f=function(){p(),clearTimeout(m),c({status:400,statusText:"Bad Request"})},p=function(){b.removeEventListener("error",f)},d=function(){document.body.removeChild(b),delete window[i]},m=null;r>-1&&(m=setTimeout((function(){p(),d(),c({statusText:"Request Timeout",status:408})}),r)),window[i]=function(e){clearTimeout(m),p(),d(),a(e)};var b=document.createElement("script");b.addEventListener("error",f),b.src=n+(/\?/.test(n)?"&":"?")+l,document.body.appendChild(b)}))}export{n as VueJsonp,o as jsonp};

@ -0,0 +1,8 @@
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VueJsonp={})}(this,(function(e){"use strict";function t(e,o){e=e.replace(/=/g,"");var n=[];switch(o.constructor){case String:case Number:case Boolean:n.push(encodeURIComponent(e)+"="+encodeURIComponent(o));break;case Array:o.forEach((function(o){n=n.concat(t(e+"[]=",o))}));break;case Object:Object.keys(o).forEach((function(r){var c=o[r];n=n.concat(t(e+"["+r+"]",c))}))}return n}function o(e){var t=[];return e.forEach((function(e){"string"==typeof e?t.push(e):t=t.concat(o(e))})),t}
/**
* Vue Jsonp.
* # Carry Your World #
*
* @author: LancerComet
* @license: MIT
*/var n={install:function(e){e.prototype.$jsonp=r}};function r(e,n,r){if(void 0===n&&(n={}),"string"!=typeof e)throw new Error('[Vue-jsonp] Type of param "url" is not string.');if("object"!=typeof n||!n)throw new Error("[Vue-jsonp] Invalid params, should be an object.");return r="number"==typeof r?r:5e3,new Promise((function(c,a){var i="string"==typeof n.callbackQuery?n.callbackQuery:"callback",s="string"==typeof n.callbackName?n.callbackName:"jsonp_"+(Math.floor(1e5*Math.random())*Date.now()).toString(16);n[i]=s,delete n.callbackQuery,delete n.callbackName;var u=[];Object.keys(n).forEach((function(e){u=u.concat(t(e,n[e]))}));var f=o(u).join("&"),l=function(){p(),clearTimeout(b),a({status:400,statusText:"Bad Request"})},p=function(){m.removeEventListener("error",l)},d=function(){document.body.removeChild(m),delete window[s]},b=null;r>-1&&(b=setTimeout((function(){p(),d(),a({statusText:"Request Timeout",status:408})}),r)),window[s]=function(e){clearTimeout(b),p(),d(),c(e)};var m=document.createElement("script");m.addEventListener("error",l),m.src=e+(/\?/.test(e)?"&":"?")+f,document.body.appendChild(m)}))}e.VueJsonp=n,e.jsonp=r,Object.defineProperty(e,"__esModule",{value:!0})}));

@ -0,0 +1,20 @@
/**
* Generate random string.
*
* @return { string }
*/
declare function randomStr(): string;
/**
* Format params into querying string.
*
* @return {string[]}
*/
declare function formatParams(queryKey: string, value: any): string[];
/**
* Flat querys.
*
* @param {string[] | (string[])[]} array
* @returns
*/
declare function flatten(array: string[] | (string[])[]): string[];
export { formatParams, flatten, randomStr };

@ -0,0 +1,50 @@
{
"name": "vue-jsonp",
"version": "2.0.0",
"description": "A tiny library for handling JSONP request.",
"main": "./dist/index.js",
"module": "./dist/index.esm.js",
"keywords": [
"Vue",
"JSONP"
],
"files": [
"dist/",
"index.d.ts",
"README.md"
],
"scripts": {
"build": "rollup -c",
"test": "jest",
"pretest": "npm run build",
"preversion": "npm run test",
"prepublish": "npm run test"
},
"author": {
"name": "LancerComet",
"email": "chw644@hotmail.com"
},
"repository": {
"type": "git",
"url": "https://github.com/LancerComet/vue-jsonp.git"
},
"license": "MIT",
"devDependencies": {
"@types/expect-puppeteer": "^4.4.3",
"@types/jest": "^26.0.14",
"@types/jest-environment-puppeteer": "^4.4.0",
"@types/puppeteer": "^3.0.2",
"jest": "^26.4.2",
"jest-puppeteer": "^4.4.0",
"puppeteer": "^5.3.1",
"rollup": "^2.28.2",
"rollup-plugin-cleanup": "^3.2.1",
"rollup-plugin-delete": "^2.0.0",
"rollup-plugin-terser": "^7.0.2",
"rollup-plugin-typescript2": "^0.27.3",
"ts-jest": "^26.4.1",
"tslint": "^6.1.3",
"typescript": "^4.0.3",
"vue": "^2.6.12"
}
}

13
package-lock.json generated

@ -8,13 +8,19 @@
"name": "基于uview职位分类选择,具备模糊搜索功能,使用更方便",
"version": "1.1.1",
"dependencies": {
"jweixin-module": "^1.6.0"
"jweixin-module": "^1.6.0",
"vue-jsonp": "^2.0.0"
}
},
"node_modules/jweixin-module": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
"integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
},
"node_modules/vue-jsonp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/vue-jsonp/-/vue-jsonp-2.0.0.tgz",
"integrity": "sha512-Mzd9GNeuKP5hHFDWZNMWOsCuMILSkA6jo2l4A02wheFz3qqBzH7aSEFTey1BRCZCLizlaf1EqJ5YUtF392KspA=="
}
},
"dependencies": {
@ -22,6 +28,11 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
"integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
},
"vue-jsonp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/vue-jsonp/-/vue-jsonp-2.0.0.tgz",
"integrity": "sha512-Mzd9GNeuKP5hHFDWZNMWOsCuMILSkA6jo2l4A02wheFz3qqBzH7aSEFTey1BRCZCLizlaf1EqJ5YUtF392KspA=="
}
}
}

@ -9,6 +9,7 @@
"分类模糊搜索"
],
"dependencies": {
"jweixin-module": "^1.6.0"
"jweixin-module": "^1.6.0",
"vue-jsonp": "^2.0.0"
}
}

@ -302,6 +302,66 @@
}
}
}, {
"path": "pages/index/open-Divide_accounts/open-Divide_accounts",
"style": {
"navigationBarTitleText": "开通分账",
"navigationBarTextStyle": "white",
"enablePullDownRefresh": false,
"app-plus": {
"titleNView": false, //
"softinputNavBar": "none"
}
}
}, {
"path": "pages/index/bindMerchants/bindMerchants",
"style": {
"navigationBarTitleText": "绑定商户",
"navigationBarTextStyle": "white",
"enablePullDownRefresh": false,
"app-plus": {
"titleNView": false, //
"softinputNavBar": "none"
}
}
}, {
"path": "pages/index/bindDividedMerchant/bindDividedMerchant",
"style": {
"navigationBarTitleText": "绑定分账商户",
"navigationBarTextStyle": "white",
"enablePullDownRefresh": false,
"app-plus": {
"titleNView": false, //
"softinputNavBar": "none"
}
}
}, {
"path": "pages/index/ledgerReceiverList/ledgerReceiverList",
"style": {
"navigationBarTitleText": "接收方列表",
"navigationBarTextStyle": "white",
"enablePullDownRefresh": false,
"app-plus": {
"titleNView": false, //
"softinputNavBar": "none"
}
}
}, {
"path": "pages/index/map/map",
"style": {
"navigationBarTitleText": "选择地址",
"navigationBarTextStyle": "white",
"enablePullDownRefresh": false,
"app-plus": {
"titleNView": false, //
"softinputNavBar": "none"
}
}
}
],
"subpackages": [{

@ -0,0 +1,389 @@
<template>
<view>
<!-- <view class="width100 line10 "></view> -->
<view class="width100 height100p" style="background-color: #eb6a53;"
v-if="ledgerReceiverApply != null && ledgerReceiverApply != '' && ledgerReceiverApply.auditStatus != 2">
<view class="font18 fcorfff paddtop35 fotct" v-if="ledgerReceiverApply.auditStatus == 1">
绑定分账审核中
</view>
<view class="font18 fcorfff paddtop35 fotct" v-if="ledgerReceiverApply.auditStatus == 4">
解除分账审核中
</view>
<view class="font18 fcorfff paading10 aliitem"
v-if="ledgerReceiverApply.auditStatus == 3 || ledgerReceiverApply.auditStatus == 5">
<image src="../../../static/img/error.png" mode="widthFix" class="iconw25 marglerig"></image>审核失败
</view>
<view class="font14 fcorfff paading10"
v-if="ledgerReceiverApply.auditStatus == 3 || ledgerReceiverApply.auditStatus == 5">
{{ledgerReceiverApply.rejectReason}}</view>
</view>
<view class="username">
<view class="namecont">接收方名称</view>
<input placeholder="请选择接收方名称" v-model="receiverName" style="width: 70%;"
placeholder-style="color: #bfbfbf;font-size:14px;padding-top:2px;" />
<image src="../../../static/img/jtg.png" mode="widthFix" class="iconw" @click="jumpMerchantlist()"></image>
</view>
<view class="username">
<view class="namecont">接收方编号</view>
<input placeholder="请输入接收方编号" v-model="receiverNo" style="width: 70%;"
placeholder-style="color: #bfbfbf;font-size:14px;padding-top:2px;" />
</view>
<view class="notes font16" style="border-bottom: 0px;">
<view class="width70 aliitem fcor666"
v-if="typeId == 1 || (typeId == 2 && (ledgerReceiverApply.auditStatus == 1 || ledgerReceiverApply.auditStatus == 2|| ledgerReceiverApply.auditStatus == 3))">
合作协议
</view>
<view class="width70 aliitem fcor666"
v-if="typeId == 3 || (typeId == 2 && (ledgerReceiverApply.auditStatus == 4 || ledgerReceiverApply.auditStatus == 5))">
解除分账说明
</view>
<!-- <view class="fcor666 alijusend width30 font14" @click="perImage('../../../static/img/businesslic13.png')">
查看示例
<image mode="widthFix" style="width: 12px;" src="../../../static/img/jtg.png"></image>
</view> -->
</view>
<view class="width94 displ mart5">
<image mode="widthFix" class="width100" :src="imgUrls+entrustFilePath" v-if="entrustFilePath"
@click="upload()">
</image>
<image src="../../../static/img/businesslic15.png" mode="widthFix" class="width100"
v-if="!entrustFilePath && typeId == 1" @click="upload()"></image>
<image src="../../../static/img/businesslic16.png" mode="widthFix" class="width100"
v-if="!entrustFilePath && typeId == 3" @click="upload()"></image>
</view>
<view class="btn" @click="submitbtn()"
v-if="typeId == 1 && ledgerReceiverApply.auditStatus !=1 && ledgerReceiverApply.auditStatus != 4">提交审核
</view>
<view class="btn" @click="submitbtn()"
v-if="typeId == 3 && ledgerReceiverApply.auditStatus !=1 && ledgerReceiverApply.auditStatus != 4">解除合作
</view>
<view class="height60"></view>
</view>
</template>
<script>
import {
merLedgerReceiverApply,
getLedgerReceiverById,
merLedgerReceiverDelApply
} from '../../../Utils/Api.js'
let app = getApp();
export default {
data() {
return {
receiverName: '', //
reqUrl: app.globalData.url, //
imgUrls: app.globalData.imgUrl, //
receiverNo: '', //
entrustFilePath: '', //
merLedgerId: '', //id
typeId: '', //id 1 2
ledgerReceiverId: '', //id
ledgerReceiverApply: '', //
}
},
onLoad(options) {
this.merLedgerId = options.id;
this.typeId = options.typeid;
if (this.typeId == 2 || this.typeId == 3) {
this.ledgerReceiverId = options.ledgerReceiverId;
this.getLedgerReceiverById();
}
},
onShow() {
if (app.globalData.receiverNo) {
this.receiverNo = app.globalData.receiverNo;
}
if (app.globalData.receiverName) {
this.receiverName = app.globalData.receiverName;
}
},
onUnload() {
app.globalData.receiverNo = '';
app.globalData.receiverName = '';
},
methods: {
//
jumpMerchantlist() {
if (this.typeId == 1) {
uni.navigateTo({
url: '/pages/index/ledgerReceiverList/ledgerReceiverList'
})
}
},
//
perImage(item) {
uni.previewImage({
current: 0, //
urls: [item] //
})
},
//
upload() {
if (this.ledgerReceiverApply.auditStatus == 1 || this.ledgerReceiverApply.auditStatus == 4 || this
.typeId == 2) {
return;
}
let that = this;
uni.chooseImage({
count: 1,
sizeType: ['compressed'], //
sourceType: ['camera', 'album'],
success: function(res) {
const tempFilePaths = res.tempFilePaths;
that.uploadFile(tempFilePaths[0]);
},
error: function(e) {
console.log(e);
}
});
},
//
uploadFile(item) {
let that = this
that.translate(item, 0.2, imgURL => {
const uploadTask = uni.uploadFile({
url: that.reqUrl + '/fileUpload/uploadBase64File',
filePath: imgURL,
header: {
"Authorization": app.globalData.token
},
name: 'file',
formData: {
'merId': that.merId,
'base64File': imgURL
},
success: function(uploadFileRes) {
that.entrustFilePath = JSON.parse(uploadFileRes.data).return_data[0];
}
});
})
},
/**
* H5端图片压缩
* 参数说明
* imgSrc 图片url
* scale缩放比例 0-1
* 返回base64
* callback 回调设置返回值
*/
translate(imgSrc, scale, callback) {
var img = new Image();
img.src = imgSrc;
img.onload = function() {
var that = this;
var h = that.height; //
var w = that.width;
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var width = document.createAttribute("width");
width.nodeValue = w;
var height = document.createAttribute("height");
height.nodeValue = h;
canvas.setAttributeNode(width);
canvas.setAttributeNode(height);
ctx.drawImage(that, 0, 0, w, h);
var base64 = canvas.toDataURL('image/jpeg', scale); //
canvas = null;
callback(base64);
}
},
//
getLedgerReceiverById() {
uni.showLoading({
title: '加载中'
})
let datas = {
"ledgerReceiverId": this.ledgerReceiverId
}
getLedgerReceiverById(datas).then(res => {
uni.hideLoading();
if (res.return_code == '000000') {
this.ledgerReceiverApply = res.return_data;
this.receiverNo = res.return_data.receiverNo;
this.receiverName = res.return_data.receiverName;
if (this.typeId == 2 && (res.return_data.auditStatus == 3 || res.return_data.auditStatus ==
2 || res.return_data.auditStatus == 1)) {
this.entrustFilePath = res.return_data.entrustFilePath;
}
if (this.typeId == 2 && res.return_data.auditStatus == 4) {
this.entrustFilePath = res.return_data.relieveEntrustFilePath;
}
if (this.typeId == 2 && res.return_data.auditStatus == 5) {
this.entrustFilePath = res.return_data.relieveEntrustFilePath;
}
if (this.typeId == 3 && res.return_data.status == 2 && res.return_data.auditStatus == 3) {
this.entrustFilePath = res.return_data.relieveEntrustFilePath;
}
} else {
uni.showToast({
title: res.return_msg,
icon: 'none',
duration: 2000
})
}
})
},
//
submitbtn() {
if (!this.receiverNo) {
uni.showToast({
title: '请输入或选择接收方名称',
icon: "none",
duration: 2000
});
return;
}
if (!this.receiverName) {
uni.showToast({
title: '请输入接收方编号',
icon: "none",
duration: 2000
});
return;
}
if (!this.entrustFilePath) {
uni.showToast({
title: '请上传合作协议',
icon: "none",
duration: 2000
});
return;
}
uni.showModal({
title: '提交审核',
content: '确认信息是否正确。',
success: (res) => {
if (res.confirm) {
uni.showLoading({
title: '提交审核中...'
})
if (this.typeId == 1) {
let datas = {
"merLedgerId": this.merLedgerId,
"receiverNo": this.receiverNo,
"receiverName": this.receiverName,
"entrustFilePath": this.entrustFilePath
}
merLedgerReceiverApply(datas).then(res => {
uni.hideLoading();
if (res.return_code == '000000') {
uni.showToast({
title: '提交成功',
icon: 'none',
duration: 2000,
success() {
setTimeout(() => {
uni.navigateBack({})
}, 2000);
}
})
} else {
uni.showToast({
title: res.return_msg,
icon: 'none',
duration: 2000
})
}
})
}
if (this.typeId == 3) {
let datas = {
"merLedgerId": this.merLedgerId,
"receiverNo": this.receiverNo,
"receiverName": this.receiverName,
"relieveEntrustFilePath": this.entrustFilePath
}
merLedgerReceiverDelApply(datas).then(res => {
uni.hideLoading();
if (res.return_code == '000000') {
uni.showToast({
title: '提交成功',
icon: 'none',
duration: 2000,
success() {
setTimeout(() => {
uni.navigateBack({})
}, 2000);
}
})
} else {
uni.showToast({
title: res.return_msg,
icon: 'none',
duration: 2000
})
}
})
}
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
}
}
</script>
<style lang="scss">
.username {
width: calc(100% - 90upx);
height: 100upx;
display: flex;
align-items: center;
background-color: rgba($color: #ffffff, $alpha: 0.1);
border-bottom: 1px solid #f6f6f6;
padding: 8upx 45upx;
input {
width: 50%;
height: 50upx;
font-size: 16px;
color: #333333;
font-weight: blod;
}
.namecont {
color: #666666;
width: 28%;
}
}
.btn {
color: #FFFFFF;
background-color: #0083f5;
width: 90%;
margin-left: 5%;
margin-top: 80rpx;
height: 90rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 10rpx;
font-size: 40rpx;
}
.notes {
width: calc(100% - 90upx);
display: flex;
align-items: center;
background-color: rgba($color: #ffffff, $alpha: 0.1);
border-bottom: 1px solid #f6f6f6;
padding: 20rpx 45rpx;
color: #bfbfbf;
}
</style>

@ -0,0 +1,118 @@
<template>
<view>
<view v-if="merchantList == ''" class="mart60 fotct font14 fcor666">
<image mode="widthFix" style="width: 70vw;" src="../../../static/img/noorder.png"></image>
</view>
<view class="width94 paddbotm10 backcorfff mart20" v-for="(item,indexs) in merchantList" :key="indexs"
@click="jumpBindMerchants(2,item.id)">
<view class="font18 font306adb paddtop10 fontwig6 padleft15 alijusstart">
<view class="width80p">{{item.receiverName}}</view>
<view class="statucs font14" v-if="item.status == 1 && item.auditStatus == 2">正常</view>
<view class="otstatucs font14" v-if="item.status == 1 && item.auditStatus == 4">审核中</view>
<view class="otstatucs font14" v-if="item.status == 2 && item.auditStatus == 1">审核中</view>
<view class="otstatucs font14" v-if="item.status == 2 && item.auditStatus == 3">审核驳回</view>
<view class="otstatucs font14" v-if="item.status == 1 && item.auditStatus == 5">审核驳回</view>
</view>
<view class="mart10 fcor666 padleft15 font14">绑定时间:
{{item.createTime | timeFormat('yyyy-mm-dd')}}
{{item.createTime | timeFormat('hh:mm')}}
</view>
<view class="height45 width100 paddbotm10" v-if="item.status == 1 && item.auditStatus == 2">
<button class="btns mart10 margle10" @click.stop="jumpBindMerchants(3,item.id)">解除绑定</button>
</view>
</view>
<image src="../../../static/img/addser.png" mode="widthFix" class="xfimg" @click="jumpBindMerchants(1,'')">
</image>
</view>
</template>
<script>
import {
getLedgerReceiverListByMer
} from '../../../Utils/Api.js';
export default {
data() {
return {
merchantList: [], //
merLedgerId: '', //ID
merId: '' //id
}
},
onLoad(options) {
this.merId = options.merId;
this.merLedgerId = options.id;
},
onShow() {
this.getLedgerReceiverListByMer();
},
methods: {
//
getLedgerReceiverListByMer() {
let datas = {
merId: this.merId,
platformType: 1
}
getLedgerReceiverListByMer(datas).then(res => {
if (res.return_code == '000000' && res.return_data != null) {
this.merchantList = res.return_data;
}
})
},
//
jumpBindMerchants(item, item1) {
uni.navigateTo({
url: '/pages/index/bindDividedMerchant/bindDividedMerchant?id=' + this.merLedgerId +
'&typeid=' + item + '&ledgerReceiverId=' + item1
})
}
}
}
</script>
<style lang="scss">
page {
background-color: #f8f9f9;
}
.borbtom {
border-bottom: 3px solid #089bf5;
}
.font306adb {
color: #306adb;
}
.xfimg {
width: 100rpx;
bottom: 60rpx;
position: fixed;
right: 40rpx;
}
//
.statucs {
background-color: #e9f9e5;
color: #84b878;
text-align: center;
padding: 2px 5px;
}
//
.otstatucs {
background-color: #fbeee4;
color: #db8c73;
text-align: center;
padding: 2px 5px;
}
.btns {
width: 21%;
float: left;
height: 35px;
line-height: 35px;
background-color: #0083f5;
color: #FFFFFF;
font-weight: bold;
font-size: 12px;
padding: 0px;
}
</style>

@ -0,0 +1,62 @@
<template>
<view>
<view v-if="receiverList == ''" class="mart60 fotct font14 fcor666">
<image mode="widthFix" style="width: 70vw;" src="../../../static/img/noorder.png"></image>
</view>
<view class="width100">
<view class=" mcclist font15 fcor666" v-for="(item,index) in receiverList" :key="index"
@click="changebank(item)">
{{item.receiverName}}
</view>
</view>
</view>
</template>
<script>
import {
getLedgerReceiverList
} from '../../../Utils/Api.js';
let app = getApp();
export default {
data() {
return {
receiverList: '' //
}
},
onLoad(options) {
this.getLedgerReceiverList();
},
methods: {
//
getLedgerReceiverList() {
let datas = {
platformType: 1,
pageNum: 1,
pageSize: 10
}
getLedgerReceiverList(datas).then(res => {
if (res.return_code == '000000' && res.return_data.list != null) {
this.receiverList = res.return_data.list;
}
})
},
//
changebank(item) {
app.globalData.receiverNo = item.receiverNo;
app.globalData.receiverName = item.receiverName;
uni.navigateBack();
}
}
}
</script>
<style lang="scss">
.mcclist {
width: calc(100% - 50upx);
height: 100upx;
display: flex;
align-items: center;
background-color: rgba($color: #ffffff, $alpha: 0.1);
border-bottom: 1px solid #f6f6f6;
padding: 12upx 25upx;
}
</style>

@ -0,0 +1,220 @@
<template>
<view class="map-box">
<map id="maps" class="tui-maps" :longitude="longitude" :latitude="latitude" :scale="16"
@regionchange="regionchange" :style="{'width':windowWidth+'px','height':'300px'}">
<cover-image class="cover-image" src="../../../static/img/location.png" />
<cover-view class="tip">您可以拖动地图标记当前精准位置</cover-view>
</map>
<view class="gps-body" v-if="poiss.length > 0">
<scroll-view scroll-y="true" :scroll-top="scrollTop" scroll-with-animation="true" style="height:720rpx;">
<block v-for="(item,index) in poiss" :key="item.id">
<view class="gps-lists">
<text class="gps-title">{{item.title}}</text>
<view class="gps-flex">
<view class="gps-view">{{item.address}}</view>
<view style="margin-top:-18rpx;">
<radio-group @change="radioChange(item,index)">
<radio :checked="index === current" />
</radio-group>
</view>
</view>
</view>
</block>
</scroll-view>
</view>
<view class="but">
<button type="primary" @click="handleConfirm">
确认位置
</button>
</view>
</view>
</template>
<script>
const QQMapWX = require('../../../Utils/js/qqmap-wx-jssdk')
const qqmapsdk = new QQMapWX({
key: '7UMBZ-HFEHX-HSD4Q-Z3QY6-OQKN7-2QBDB'
})
let app = getApp();
export default {
data() {
return {
longitude: null,
latitude: null,
windowWidth: 0,
poiss: [],
scrollTop: 0,
current: 0,
address: {},
mapContext: null
}
},
//
onLoad() {
try {
var th_is = this;
th_is.mapContext = uni.createMapContext('maps')
const res = uni.getSystemInfoSync();
th_is.windowWidth = res.windowWidth;
uni.showLoading({
title: '正在获取定位中',
});
uni.getLocation({
type: 'gcj02',
isHighAccuracy: 'true',
geocode: 'true',
success: (res) => {
th_is.longitude = res.longitude;
th_is.latitude = res.latitude;
uni.hideLoading();
th_is.getAddress(th_is.latitude, th_is.longitude);
}
})
} catch (e) {
// error
}
},
methods: {
//
regionchange(e) {
var th_is = this;
if (e.type == "end") {
th_is.longitude = e.detail.centerLocation.longitude;
th_is.latitude = e.detail.centerLocation.latitude;
th_is.getAddress(th_is.latitude, th_is.longitude);
}
},
//
getAddress(longitude, latitude) {
let location = [longitude, latitude]
let StringLocation = location.toString();
var th_is = this;
qqmapsdk.reverseGeocoder({
location: StringLocation,
get_poi: 1,
poi_options: 'policy=1;page_size=20;page_index=1',
success: res => {
th_is.poiss = res.result.pois;
th_is.address = res.result.pois.length > 0 ? res.result.pois[0] : {}
},
fail: err => {
uni.showToast({
title: err.message,
icon: 'none',
duration: 3000
})
}
})
},
radioChange(item, evt) {
this.current = evt;
this.mapContext.moveToLocation({
latitude: item.location.lat,
longitude: item.location.lng
})
this.address = Object.assign(item);
// console.log(item);
},
//
handleConfirm() {
console.log('======-----------' + JSON.stringify(this.address));
uni.$emit('onAddressChange', this.address);
app.globalData.storeMessage = this.address;
setTimeout(function() {
uni.navigateBack({
delta: 1
});
}, 500)
}
}
}
</script>
<style scoped lang="scss">
.map-box {
padding-bottom: constant(safe-area-inset-bottom); //
padding-bottom: env(safe-area-inset-bottom); //
box-sizing: content-box;
}
.tui-maps {
width: 100%;
height: 600rpx;
// position: relative;
}
.cover-image {
width: 62rpx;
height: 62rpx;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.tip {
font-size: 20rpx;
color: #b6b6b6;
line-height: 42rpx;
padding: 0 20rpx;
position: absolute;
left: 50%;
bottom: 30rpx;
box-shadow: 0px 1px 10px 1px rgba(153, 153, 153, 0.34);
background-color: #fff;
border-radius: 4px;
transform: translateX(-50%);
}
.gps-body {
width: 100%;
padding-top: 20rpx;
// padding-bottom: 32rpx;
// box-sizing: border-box;
background-color: #FFFFFF;
// position: absolute;
// top: 600rpx;
// bottom: 0;
font-size: 26rpx;
.gps-lists {
width: 98%;
height: 100rpx;
margin: 0px auto;
border: 1px solid #f9f9f9;
.gps-flex {
display: flex;
justify-content: space-between;
}
.gps-flex /deep/ .uni-radio-input {
width: 40rpx;
height: 40rpx;
}
.gps-title {
padding-left: 10rpx;
display: block;
padding-top: 15rpx;
}
.gps-view {
width: 70%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
padding-left: 10rpx;
color: #b6b6b6;
font-size: 25rpx;
margin-top: 15rpx;
}
}
}
.but {
margin-top: 32rpx;
padding: 0 32rpx;
}
</style>

@ -631,6 +631,13 @@
<input placeholder="请输入门店电话" v-model="storephone" style="width: 70%;"
placeholder-style="color: #bfbfbf;font-size:14px;padding-top:2px;" />
</view>
<view class="username">
<view class="namecont">门店地址</view>
<input placeholder="请选择门店或者输入地址" v-model="storeAddress" style="width: 70%;"
placeholder-style="color: #bfbfbf;font-size:14px;padding-top:2px;" />
<image src="../../../static/img/location.png" mode="widthFix" class="iconw" @click="jumpChangeAddress()">
</image>
</view>
<view class="notes font16" style="border-bottom: 0px;">
<view class="width70 aliitem fcor666">
门店照片
@ -821,6 +828,10 @@
storeaccount: '', //
storename: '', //
storephone: '', //
storeAddress: '', //
storeareaCode: '', //
storelongitude: '', //
storelatitude: '', //
storeimg1: '', //
storeimg2: '', //
storeimg3: '', //
@ -891,6 +902,12 @@
if (app.globalData.clearNo) {
this.clearbankNo = app.globalData.clearNo;
}
if (app.globalData.storeMessage) {
this.storeAddress = app.globalData.storeMessage.address;
this.storeareaCode = app.globalData.storeMessage.ad_info.adcode;
this.storelongitude = app.globalData.storeMessage.location.lng;
this.storelatitude = app.globalData.storeMessage.location.lat;
}
},
onUnload() {
app.globalData.businessid = '';
@ -899,6 +916,8 @@
app.globalData.mccname = '';
app.globalData.branchBankNo = '';
app.globalData.clearNo = '';
app.globalData.storeMessage = '';
app.globalData.depositaryBank = '';
},
methods: {
//
@ -1996,14 +2015,14 @@
}
}
if (!that.openingbankNo) {
uni.showToast({
title: '请填写开户行号',
icon: "none",
duration: 2000
});
return;
}
// if (!that.openingbankNo) {
// uni.showToast({
// title: '',
// icon: "none",
// duration: 2000
// });
// return;
// }
if (!that.bankareaCode) {
uni.showToast({
@ -2045,14 +2064,14 @@
// });
// return;
// }
if (!that.clearbankNo) {
uni.showToast({
title: '请填写清算行号',
icon: "none",
duration: 2000
});
return;
}
// if (!that.clearbankNo) {
// uni.showToast({
// title: '',
// icon: "none",
// duration: 2000
// });
// return;
// }
if (that.merRateList.length != that.rateCodeList.length) {
uni.showToast({
title: '请完善商户费率',
@ -2116,6 +2135,12 @@
}
})
},
//
jumpChangeAddress() {
uni.navigateTo({
url: '/pages/index/map/map'
})
},
//
submitsotre() {
let that = this;
@ -2143,6 +2168,14 @@
});
return;
}
if (!that.storeAddress) {
uni.showToast({
title: '请填写门店地址',
icon: "none",
duration: 2000
});
return;
}
if (!that.storeimg1) {
uni.showToast({
title: '请上传门头照片',
@ -2185,6 +2218,10 @@
"doorHeadImg": that.uploadstoreimg1,
"cashRegisterImg": that.uploadstoreimg2,
"internalImg": that.uploadstoreimg3,
"address": that.storeAddress,
"areaCode": that.storeareaCode,
"longitude": that.storelongitude,
"latitude": that.storelatitude
}
configMerStore(datas).then(res => {
uni.hideLoading();

@ -32,6 +32,10 @@
<view class="width30 fcor999 font15" v-if="item.regName">{{item.regName}}</view>
<view class="width30 fcor999 font15" v-else>-</view>
</view>
<view class="height45 width100 paddbotm10" v-if="item.merStatus == 1">
<button class="btns mart10 margle10" @click.stop="openAccounts(item.id)">开通分账</button>
<button class="btns mart10 margle10" @click.stop="bindMerchants(item.id)">绑定商户</button>
</view>
</view>
</view>
</view>
@ -40,7 +44,8 @@
<script>
import QSTabs from '../../../components/QS-tabs/QS-tabs.vue';
import {
getMerListBySalesman
getMerListBySalesman,
getMerLedgerApply
} from '../../../Utils/Api.js';
export default {
components: {
@ -134,6 +139,34 @@
url: '../merchant-details/merchant-details?id=' + ids
})
}
},
//
openAccounts(item) {
uni.navigateTo({
url: '/pages/index/open-Divide_accounts/open-Divide_accounts?id=' + item
})
},
//
bindMerchants(item) {
//
let datas = {
merId: item,
platformType: 1
}
getMerLedgerApply(datas).then(res => {
if (res.return_code == '000000' && res.return_data != null && res.return_data.status == 1) {
uni.navigateTo({
url: '/pages/index/bindMerchants/bindMerchants?id=' + res.return_data.id +
'&merId=' + item
})
} else {
uni.showToast({
title: '请开通商户分账',
duration: 2000,
icon: 'none'
})
}
})
}
}
}
@ -166,4 +199,16 @@
text-align: center;
padding: 2px 5px;
}
.btns {
width: 21%;
float: left;
height: 35px;
line-height: 35px;
background-color: #0083f5;
color: #FFFFFF;
font-weight: bold;
font-size: 12px;
padding: 0px;
}
</style>

@ -0,0 +1,272 @@
<template>
<view>
<!-- <view class="width100 line10" v-if="merLedgerApply !=null && merLedgerApply !=''"></view> -->
<view class="width100 height100p" style="background-color: #eb6a53;"
v-if="merLedgerApply !=null && merLedgerApply !='' && merLedgerApply.status != 1">
<view class="font18 fcorfff paddtop35 fotct" v-if="merLedgerApply !=null && merLedgerApply.status == 2">
审核中
</view>
<view class="font18 fcorfff paading10 aliitem" v-if="merLedgerApply !=null && merLedgerApply.status == 3">
<image src="../../../static/img/error.png" mode="widthFix" class="iconw25 marglerig"></image>审核驳回
</view>
<view class="font14 fcorfff paading10" v-if="merLedgerApply !=null && merLedgerApply.status == 3">
{{merLedgerApply.rejectReason}}
</view>
</view>
<view class="username">
<view class="namecont">最低分账比例</view>
<input placeholder="请输入最低分账比例" v-model="splitLowestRatio" type="digit"
style="width: 70%;padding-right:10px;text-align: right;"
placeholder-style="color: #bfbfbf;font-size:14px;padding-top:2px;padding-right:10px;text-align: right;" />
%
</view>
<view class="notes font16" style="border-bottom: 0px;">
<view class="width70 aliitem fcor666">
分账结算委托书
</view>
<view class="fcor666 alijusend width30 font14" @click="perImage('../../../static/img/businesslic13.png')">
查看示例
<image mode="widthFix" style="width: 12px;" src="../../../static/img/jtg.png"></image>
</view>
</view>
<view class="width94 displ mart5">
<image mode="widthFix" class="width100" :src="imgUrls+powerofattorney" v-if="powerofattorney"
@click="upload()">
</image>
<image src="../../../static/img/businesslic14.png" mode="widthFix" class="width100" v-else
@click="upload()"></image>
</view>
<view class="btn" @click="submitbtn()" v-if="merLedgerApply == null || merLedgerApply.status == 3">提交审核</view>
<view class="height60"></view>
</view>
</template>
<script>
import {
getMerLedgerApply,
merLedgerApply
} from '../../../Utils/Api.js'
let app = getApp();
export default {
data() {
return {
splitLowestRatio: '', //
powerofattorney: '', //
imgUrls: app.globalData.imgUrl, //
reqUrl: app.globalData.url, //
merId: '', //id
merLedgerApply: '' //
}
},
onLoad(options) {
this.merId = options.id;
this.getMerLedgerApply();
},
methods: {
//
getMerLedgerApply() {
let datas = {
merId: this.merId,
platformType: 1
}
getMerLedgerApply(datas).then(res => {
if (res.return_code == '000000' && res.return_data != null) {
this.merLedgerApply = res.return_data;
this.splitLowestRatio = res.return_data.splitLowestRatio;
this.powerofattorney = res.return_data.splitEntrustFilePath;
}else{
this.merLedgerApply = null;
}
})
},
//item
perImage(item) {
uni.previewImage({
current: 0, //
urls: [item] //
})
},
//
upload() {
let that = this;
uni.chooseImage({
count: 1,
sizeType: ['compressed'], //
sourceType: ['camera', 'album'],
success: function(res) {
const tempFilePaths = res.tempFilePaths;
that.uploadFile(tempFilePaths[0]);
},
error: function(e) {
console.log(e);
}
});
},
//
uploadFile(item) {
let that = this
that.translate(item, 0.2, imgURL => {
const uploadTask = uni.uploadFile({
url: that.reqUrl + '/fileUpload/uploadBase64File',
filePath: imgURL,
header: {
"Authorization": app.globalData.token
},
name: 'file',
formData: {
'merId': that.merId,
'base64File': imgURL
},
success: function(uploadFileRes) {
that.powerofattorney = JSON.parse(uploadFileRes.data).return_data;
}
});
})
},
/**
* H5端图片压缩
* 参数说明
* imgSrc 图片url
* scale缩放比例 0-1
* 返回base64
* callback 回调设置返回值
*/
translate(imgSrc, scale, callback) {
var img = new Image();
img.src = imgSrc;
img.onload = function() {
var that = this;
var h = that.height; //
var w = that.width;
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var width = document.createAttribute("width");
width.nodeValue = w;
var height = document.createAttribute("height");
height.nodeValue = h;
canvas.setAttributeNode(width);
canvas.setAttributeNode(height);
ctx.drawImage(that, 0, 0, w, h);
var base64 = canvas.toDataURL('image/jpeg', scale); //
canvas = null;
callback(base64);
}
},
//
submitbtn() {
if (!this.splitLowestRatio) {
uni.showToast({
title: '请输入最低分账比例',
icon: "none",
duration: 2000
});
return;
}
if (!this.powerofattorney) {
uni.showToast({
title: '请上传分账结算委托书',
icon: "none",
duration: 2000
});
return;
}
uni.showModal({
title: '提交审核',
content: '确认信息是否正确。',
success: (res) => {
if (res.confirm) {
uni.showLoading({
title: '提交审核中...'
})
let datas = {
"merId": this.merId,
"platformType": 1,
"splitLowestRatio": this.splitLowestRatio,
"splitEntrustFilePath": this.powerofattorney[0]
}
merLedgerApply(datas).then(res => {
uni.hideLoading();
if (res.return_code == '000000') {
uni.showToast({
title: '提交成功',
icon: 'none',
duration: 2000,
success() {
setTimeout(() => {
uni.navigateBack({})
}, 2000);
}
})
} else {
uni.showToast({
title: res.return_msg,
icon: 'none',
duration: 2000
})
}
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
}
}
</script>
<style lang="scss">
.username {
width: calc(100% - 90upx);
height: 100upx;
display: flex;
align-items: center;
background-color: rgba($color: #ffffff, $alpha: 0.1);
border-bottom: 1px solid #f6f6f6;
padding: 8upx 45upx;
input {
width: 50%;
height: 50upx;
font-size: 16px;
color: #333333;
font-weight: blod;
}
.namecont {
color: #666666;
width: 28%;
}
}
.btn {
color: #FFFFFF;
background-color: #0083f5;
width: 90%;
margin-left: 5%;
margin-top: 150rpx;
height: 90rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 10rpx;
font-size: 40rpx;
}
.notes {
width: calc(100% - 90upx);
display: flex;
align-items: center;
background-color: rgba($color: #ffffff, $alpha: 0.1);
border-bottom: 1px solid #f6f6f6;
padding: 20rpx 45rpx;
color: #bfbfbf;
}
</style>

@ -17,28 +17,28 @@
},
onLoad(options) {
let that = this;
// uni.reLaunch({
// url: '../tabBar/home/home'
// })
// #ifdef H5
let arr1 = window.location.href;
let arr2 = arr1.split('=');
if (arr2[2]) {
var arr3 = arr2[2].split('&');
if (arr3[0] != undefined && arr3[0]) {
app.globalData.h5code = arr3[0];
uni.setStorage({
key: "h5code",
data: arr3[0]
uni.reLaunch({
url: '../tabBar/home/home'
})
}
} else {
// #ifdef H5
// let arr1 = window.location.href;
// let arr2 = arr1.split('=');
// if (arr2[2]) {
// var arr3 = arr2[2].split('&');
// if (arr3[0] != undefined && arr3[0]) {
// app.globalData.h5code = arr3[0];
// uni.setStorage({
// key: "h5code",
// data: arr3[0]
// })
// }
// } else {
// openid
that.jumpcdx();
}
if (app.globalData.h5code) {
that.getAccessToken();
}
// that.jumpcdx();
// }
// if (app.globalData.h5code) {
// that.getAccessToken();
// }
// #endif
},
methods: {
@ -71,7 +71,7 @@
},
jumpcdx() {
location.href =
'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxa075e8509802f826&redirect_uri=https://hsg.dctpay.com/wechat_authorize/?redirect_uri=https://pay.dctpay.com/cweb&response_type=code&scope=snsapi_base#wechat_redirect';
'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxa075e8509802f826&redirect_uri=https://hsg.dctpay.com/wechat_authorize/?redirect_uri=https://gratia-pay.dctpay.com/cweb&response_type=code&scope=snsapi_base#wechat_redirect';
},
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 B

@ -628,6 +628,10 @@ $uni-font-size-paragraph:30upx;
padding-top: 25px;
}
.paddtop35 {
padding-top: 35px;
}
.paddleft5 {
padding-left: 5px;
}

@ -1,2 +1,2 @@
<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>惠支付</title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/cweb/static/index.63b34199.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/cweb/static/js/chunk-vendors.65d11cca.js></script><script src=/cweb/static/js/index.a731bc12.js></script></body></html>
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/cweb/static/index.63b34199.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/cweb/static/js/chunk-vendors.65d11cca.js></script><script src=/cweb/static/js/index.95963628.js></script></body></html>
Loading…
Cancel
Save