Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

open-account.vue 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. <template>
  2. <view class='content'>
  3. <view class='up_img_wrap'>
  4. <view class='title'>请上传图片</view>
  5. <view class='tips'>注意事项:1.请上传有效图片;2.图片大小不超过2M</view>
  6. <view class='item_wrap'>
  7. <view class='item' @click="cardImageOcrYY()">
  8. <image v-if="!state.form.url1" class="icon" :src="`${$imgUrl}applyCard/renxiang.png`">
  9. </image>
  10. <image v-else class="icon" :src="state.form.url1"></image>
  11. <view>公司营业执照</view>
  12. </view>
  13. <view class='item' @click="cardDbImageOcr('2')">
  14. <image v-if="!state.form.url2" class="icon" :src="`${$imgUrl}applyCard/renxiang.png`">
  15. </image>
  16. <image v-else class="icon" :src="state.form.url2"></image>
  17. <view>单位授权书</view>
  18. </view>
  19. <view class='item' @click="cardDbImageOcr('3')">
  20. <image v-if="!state.form.url3" class="icon" :src="`${$imgUrl}applyCard/renxiang.png`">
  21. </image>
  22. <image v-else class="icon" :src="state.form.url3"></image>
  23. <view>被委托人身份证正页照</view>
  24. </view>
  25. <view class='item' @click="cardDbImageOcr('4')">
  26. <image v-if="!state.form.url4" class="icon" :src="`${$imgUrl}applyCard/renxiang.png`">
  27. </image>
  28. <image v-else class="icon" :src="state.form.url4"></image>
  29. <view>被委托人身份证副页</view>
  30. </view>
  31. </view>
  32. </view>
  33. <view class='up_img_wrap message'>
  34. <u-form :model="form" ref="form1" label-width=210 border-bottom=false>
  35. <u-form-item label="对公用户登录名 " border-bottom=true >
  36. <u-input placeholder='请输入7-16位字母加数字组成的账号' type="text" v-model="state.form.name"/>
  37. </u-form-item>
  38. <u-form-item label="对公用户密码" >
  39. <u-input placeholder='请输入对公用户密码' type="text" v-model="state.form.password"/>
  40. </u-form-item>
  41. <u-form-item label="支付密码" >
  42. <u-input placeholder='请输入支付密码' type="text" v-model="state.form.consumePassword"/>
  43. </u-form-item>
  44. <!-- <u-form-item label="公司证件类型 ">
  45. <u-input v-model="state.form.type" type="select" :select-open="state.showType" @click="state.showType = true" placeholder='请选择'/>
  46. </u-form-item> -->
  47. <u-form-item label="公司证件编码 " >
  48. <u-input placeholder='请输入公司证件编码' type="text" v-model="state.form.code"/>
  49. </u-form-item>
  50. <u-form-item label="公司名称" >
  51. <u-input placeholder='请输入公司名称' type="text" v-model="state.form.companyName"/>
  52. </u-form-item>
  53. <u-form-item label="经办人姓名" >
  54. <u-input placeholder='请输入经办人姓名' type="text" v-model="state.form.handlerName"/>
  55. </u-form-item>
  56. <u-form-item label="经办人手机号" >
  57. <u-input placeholder='请输入经办人手机号' type="text" v-model="state.form.handlerPhone"/>
  58. </u-form-item>
  59. <u-form-item label="银行卡号" >
  60. <u-input placeholder='请输入银行卡号' type="text" v-model="state.form.bankCardId"/>
  61. </u-form-item>
  62. <u-form-item label="开户行" >
  63. <u-input placeholder='请输入开户行' type="text" v-model="state.form.bankAddress"/>
  64. </u-form-item>
  65. </u-form>
  66. <!-- <view class='pay_msg'>付款银行账户信息</view>
  67. <view class='company' @click='goBankCard()'>
  68. <view>
  69. <view><text>123456</text><text>贵阳银行股份有限公司</text></view>
  70. <view class='phone'>123****5678</view>
  71. </view>
  72. <u-icon name="arrow-right" color='#ccc' size='40'></u-icon>
  73. </view> -->
  74. </view>
  75. <view class='attention'>
  76. <view>注意事项:</view>
  77. <view>1.开户成功后,请先设置密码,否则不能进行圈存操作</view>
  78. <view>2.付款账户:贵单位打款银行卡</view>
  79. <view>3.开户申请审核结果将于两个工作日发送短信告知</view>
  80. <view>4.只支持黔通卡充值</view>
  81. </view>
  82. <button class='open' type="success" @click='open()'>开户</button>
  83. </view>
  84. <u-picker mode="selector" :range="state.typeList" v-model="state.showType" @confirm="regionConfirmType"></u-picker>
  85. </template>
  86. <script setup lang="ts">
  87. import {reactive} from "vue";
  88. import {etcOcrCard,envs,ocrAllQuery,fileUpload,openRecharge} from "@/utils/network/api.js";
  89. import {pathToBase64} from "@/utils/image-tools/index.js";
  90. import { navTo } from "@/utils/utils";
  91. import {request} from "@/utils/network/request.js";
  92. import {stringToJson} from "@/utils/network/encryption.js";
  93. import { msg } from "@/utils/utils";
  94. const state = reactive({
  95. isBusinessLicense:false, //是否上传公司营业执照
  96. form:{
  97. url1:'', //公司营业执照
  98. url2:'', //
  99. url3:'', //
  100. url4:'', //
  101. name:'',//对公用户登录名
  102. password:'',//对公用户登录密码
  103. consumePassword:'', //支付密码
  104. // type:'',//公司证件类型
  105. code:'', //公司证件编码
  106. companyName:'',
  107. handlerName:'',
  108. handlerPhone:'',
  109. bankAddress:"", //开户行
  110. bankCardId:"", //充值银行卡号
  111. },
  112. showType:false, //公司证件类型下拉
  113. // typeList:['营业执照','统一社会信用代码证','组织结构代码证'],
  114. })
  115. const cardDbImageOcr = (val : any) => {
  116. var imageType = val;
  117. uni.chooseImage({
  118. count: 1, //只能选取一张照片
  119. sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有
  120. sourceType: ["camera", "album"], //从相册选择
  121. success: function (res) {
  122. pathToBase64(res.tempFilePaths[0])
  123. .then((path) => {
  124. var data = {
  125. source: "1",
  126. agencyId: "52010106004",
  127. imageType: imageType,
  128. fileName: res.tempFilePaths[0],
  129. imageBase64: path,
  130. };
  131. const options = {
  132. type: 2,
  133. data: data,
  134. method: "POST",
  135. showLoading: true,
  136. };
  137. console.log("cdfdf")
  138. request(etcOcrCard, options).then((res) => {
  139. const data = stringToJson(res.bizContent);
  140. console.log("图片信息",data)
  141. if (val === "2"){
  142. state.form.url2 = data.imageUrl;
  143. }else if (val === "3"){
  144. state.form.url3 = data.imageUrl;
  145. }else if (val === "4"){
  146. state.form.url4 = data.imageUrl;
  147. }
  148. });
  149. })
  150. .catch((error) => { });
  151. },
  152. });
  153. };
  154. // 选择公司证件类型的回调
  155. // const regionConfirmType=(e : any)=>{
  156. // state.form.type=state.typeList[e]
  157. // }
  158. //替换图片地址
  159. const strReplace = (str : string) => {
  160. return str.replace('192.168.101.145:9000', envs[process.env.NODE_ENV].baseUrl)
  161. }
  162. const goBankCard=()=>{
  163. navTo(`/subpackage/personal-center/setting/bank-card/bank-card`);
  164. }
  165. const open=()=>{
  166. for(var i in state.form){
  167. if(!state.form[i]){
  168. msg('请把信息填写完整!')
  169. return;
  170. }
  171. }
  172. const options = {
  173. type: 2,
  174. data: {
  175. 'accountId':state.form.name, //账户编号
  176. 'corporateIdNum':state.form.code, //公司营业执照统一社会信用代码
  177. 'corporateName':state.form.companyName, //对公名称
  178. 'photoUrl':state.form.url1, //营业执照图片路径
  179. 'authBookUrl':state.form.url2, //授权书图片路径
  180. 'agentName':state.form.handlerName, //经办人姓名
  181. 'agentTel':state.form.handlerPhone, //经办人手机号
  182. 'idCardImageUrl':state.form.url3, //经办人身份证正面
  183. 'idCardBackImageUrl':state.form.url4, //经办人身份证反面
  184. 'bankAddress':state.form.bankAddress, //开户行
  185. 'bankCardId':state.form.bankCardId, //充值银行卡号
  186. 'password':state.form.password, //密码
  187. 'consumePassword':state.form.consumePassword,//支付密码
  188. },
  189. method: "POST",
  190. showLoading: true,
  191. };
  192. request(openRecharge, options)
  193. .then((res) => {
  194. let data = stringToJson(res.bizContent)
  195. console.log("开户成功",data.status)
  196. if(data.status==1){
  197. navTo(`/subpackage/after-sale/account-recharge/login`)
  198. }
  199. })
  200. .catch((err) => {
  201. console.log(err);
  202. });
  203. }
  204. //营业执照Orc接口调用
  205. const cardImageOcrYY = () => {
  206. uni.chooseImage({
  207. count: 1, //只能选取一张照片
  208. sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有
  209. sourceType: ["camera", "album"], //从相册选择
  210. success: function(res) {
  211. pathToBase64(res.tempFilePaths[0])
  212. .then((path) => {
  213. var data = {
  214. type: 'business_license',
  215. base64: path,
  216. };
  217. const options = {
  218. type: 2,
  219. data: data,
  220. method: "POST",
  221. showLoading: true,
  222. };
  223. request(ocrAllQuery, options).then((res) => {
  224. const data = stringToJson(res.bizContent);
  225. console.log("营业执照",data)
  226. if (data.result) {
  227. state.form.url2 = '';
  228. state.form.companyName = stringToJson(data.result
  229. .businessLicense)[
  230. '名称'];
  231. state.form.code = stringToJson(data.result
  232. .businessLicense)[
  233. '统一社会信用代码'];
  234. cardFileImageUpdateyy(path)
  235. }
  236. });
  237. })
  238. .catch((error) => {});
  239. },
  240. });
  241. };
  242. //委托书获取图片给后端
  243. const cardFileImageUpdateyy = (val: any) => {
  244. var data = {
  245. fileBase64: val,
  246. };
  247. const options = {
  248. type: 2,
  249. data: data,
  250. method: "POST",
  251. showLoading: true,
  252. };
  253. request(fileUpload, options).then((res) => {
  254. const data = stringToJson(res.bizContent);
  255. state.form.url1 = data.data.url;
  256. });
  257. };
  258. const shiqu=()=>{
  259. console.log("state.form.handlerPhone",state.form.handlerPhone)
  260. }
  261. </script>
  262. <style scoped>
  263. .content{
  264. background-color:rgb(246,246,246);
  265. font-size:30rpx;
  266. padding-bottom: 30rpx;
  267. }
  268. .up_img_wrap{
  269. background-color:white;
  270. padding:0 20rpx;
  271. }
  272. .title{
  273. margin:0 0 20rpx 0;
  274. }
  275. .tips{
  276. color:red;
  277. font-size:30rpx;
  278. }
  279. .item_wrap{
  280. display: flex;
  281. flex-shrink: 1;
  282. flex-wrap: wrap;
  283. justify-content: space-between;
  284. padding:10rpx 0 20rpx 0;
  285. }
  286. .item{
  287. width:45%;
  288. height:250rpx;
  289. margin-top:20rpx;
  290. }
  291. .item image{
  292. width:100%;
  293. height:80%;
  294. }
  295. .item view{
  296. text-aline:center;
  297. text-align: center;
  298. }
  299. .message{
  300. margin-top:30rpx;
  301. }
  302. .pay_msg{
  303. border-bottom: 2px dotted rgb(75,217,97);
  304. padding:30rpx 0;
  305. }
  306. .company{
  307. padding: 20rpx 50rpx 20rpx 6rpx;
  308. display:flex;
  309. align-items: center;
  310. justify-content: space-between;
  311. }
  312. .phone{
  313. margin-top:20rpx;
  314. }
  315. .attention{
  316. background-color:rgb(246,246,246);
  317. color:red;
  318. font-size:30rpx;
  319. padding:30rpx 20rpx 20rpx 20rpx;
  320. }
  321. .open{
  322. height: 80rpx;
  323. background: linear-gradient(-90deg, #43a1e0 0%, #13e7c1 100%);
  324. border-radius: 40rpx;
  325. font-size: 32rpx;
  326. font-weight: 400;
  327. color: #ffffff;
  328. margin:0 30rpx;
  329. }
  330. </style>