This commit is contained in:
gyq
2024-05-23 09:48:22 +08:00
parent f832e312bf
commit c6f49f161e
6 changed files with 719 additions and 604 deletions

View File

@@ -1,20 +1,69 @@
<!DOCTYPE html>
<html lang="en">
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<!-- Open Graph data -->
<!-- <meta property="og:title" content="Title Here" /> -->
<!-- <meta property="og:url" content="http://www.example.com/" /> -->
<!-- <meta property="og:image" content="http://example.com/image.jpg" /> -->
<!-- <meta property="og:description" content="Description Here" /> -->
<script>
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
CSS.supports('top: constant(a)'))
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' : '') + '" />')
(coverSupport ? ', viewport-fit=cover' : '') +
'" />')
</script>
<title></title>
<!--preload-links-->
<!--app-context-->
<!-- <script src="https://qzs.gdtimg.com/union/res/union_sdk/page/h5_sdk/i.js"></script> -->
<link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
</head>
<body>
<div id="app"><!--app-html--></div>
<script type="module" src="/main.js"></script>
<noscript>
<strong>Please enable JavaScript to continue.</strong>
</noscript>
<div id="app"></div>
<!-- <script type="text/javascript">
// H5 SDK 在线文档地址http://developers.adnet.qq.com/doc/web/js_develop
// 全局命名空间申明TencentGDT对象
window.TencentGDT = window.TencentGDT || [];
// 广告初始化
window.TencentGDT.push({
app_id: '1206941502', // {String} - appid - 必填
placement_id: '9019288881405424', // {String} - 广告位id - 必填
type: 'interstitial', // {String} - 原生广告类型 - 必填
muid_type: '1', // {String} - 移动终端标识类型1imei2idfa3mac号 - 选填
muid: '******', // {String} - 加密终端标识详细加密算法见API说明 - 选填
count: 1, // {Number} - 拉取广告的数量默认是3最高支持10 - 选填
onComplete: function(res) {
if (res && res.ret === 0) {
// 原生模板广告位调用 window.TencentGDT.NATIVE.renderAd(res[0], 'containerId') 进行模板广告的渲染
// res[0] 代表取广告数组第一个数据
TencentGDT.NATIVE.renderAd(res.data[0]);
} else {
// 加载广告API如广告回调无广告可使用loadAd再次拉取广告
// 注意拉取广告频率每分钟不要超过20次否则会被广告接口过滤影响广告位填充率
setTimeout(function() {
window.TencentGDT.NATIVE.loadAd(placement_id)
}, 3000)
}
}
});
// H5 SDK接入全局只需运行一次
(function() {
var doc = document,
h = doc.getElementsByTagName('head')[0],
s = doc.createElement('script');
s.async = true;
s.src = '//qzs.qq.com/qzone/biz/res/i.js';
h && h.insertBefore(s, h.firstChild);
})();
</script> -->
</body>
</html>

View File

@@ -84,7 +84,8 @@
"title" : "发票",
"sdkConfigs" : {
"maps" : {}
}
},
"template" : "index.html"
},
"mp-alipay" : {
"usingComponents" : true

View File

@@ -2,6 +2,7 @@
"dependencies": {
"dayjs": "^1.11.11",
"html2canvas": "^1.4.1",
"uview-ui": "^2.0.36"
"uview-ui": "^2.0.36",
"weixin-js-sdk": "^1.6.5"
}
}

View File

@@ -1,12 +1,8 @@
<template>
<view class="content">
<view class="content_top">
<view :class="form.user_type == 1 ? 'content_topview':''" @click="clickakex(1)">
个人
</view>
<view :class="form.user_type == 2 ? 'content_topview':''" @click="clickakex(2)">
企业
</view>
<view :class="form.user_type == 1 ? 'content_topview' : ''" @click="clickakex(1)">个人</view>
<view :class="form.user_type == 2 ? 'content_topview' : ''" @click="clickakex(2)">企业</view>
</view>
<view class="content_item">
<view class="Box_box flex-between" v-if="form.user_type == 1">
@@ -15,12 +11,10 @@
</view>
<view class="Box_box flex-between" v-if="form.user_type == 2">
<view>*单位名称</view>
<view style="position: relative; width:70%;">
<input type="text" v-if="subCategoryList.length == 0" v-model="form.user_name" placeholder="请填写公司名称"
@input="onInput" />
<view style="position: relative; width: 70%">
<input type="text" v-if="subCategoryList.length == 0" v-model="form.user_name" placeholder="请填写公司名称" @input="onInput" />
<view class="position" v-else>
<view class="positionitem" v-for="(item,index) in subCategoryList" :key="index"
@click="categorySubClick(item)">
<view class="positionitem" v-for="(item, index) in subCategoryList" :key="index" @click="categorySubClick(item)">
{{ item.companyName }}
</view>
</view>
@@ -38,6 +32,33 @@
<view>*手机号</view>
<view><input type="text" v-model="form.mobile" placeholder="请填写联系电话" /></view>
</view>
<template v-if="form.user_type == 2">
<view class="Box_box flex-between" @click="showElse = !showElse">
<view>其他信息</view>
<view class="arrow">
<text class="t">地址开户行</text>
<u-icon name="arrow-down" class="arrow-icon" :class="{ active: showElse }"></u-icon>
</view>
</view>
<template v-if="showElse">
<view class="Box_box flex-between">
<view>公司地址</view>
<view><input type="text" v-model="form.c_address" placeholder="请填写公司地址" /></view>
</view>
<view class="Box_box flex-between">
<view>联系电话</view>
<view><input type="text" v-model="form.c_phone" placeholder="请填写公司联系电话" /></view>
</view>
<view class="Box_box flex-between">
<view>开户行名称</view>
<view><input type="text" v-model="form.c_bank_name" placeholder="请填写公司开户行名称" /></view>
</view>
<view class="Box_box flex-between">
<view>开户行账号</view>
<view><input type="text" v-model="form.c_bank_account" placeholder="请填写公司开户行账号" /></view>
</view>
</template>
</template>
<!-- <view class="Box_box flex-between">
<view>备注</view>
<view><input type="text" v-model="form.notes" placeholder="请输入内容" /></view>
@@ -56,20 +77,17 @@
</view>
</view> -->
<view class="preservation flex-colum">
<view v-if="form.status_note"
style="width: 100%; color: #FF2B2B; padding: 28rpx 0;word-wrap: break-word;">
({{form.status_note|| '无'}})</view>
<view v-if="form.status_note" style="width: 100%; color: #ff2b2b; padding: 28rpx 0; word-wrap: break-word">({{ form.status_note || '' }})</view>
</view>
</view>
<view class="content_bottom" @click="saveMerchantBaseInfo">
确定
</view>
<view class="content_bottom" @click="saveMerchantBaseInfo">确定</view>
</view>
</template>
<script>
// import jWeixin from 'jweixin-module's
import _ from 'lodash'
import wx from 'weixin-js-sdk';
import _ from 'lodash';
export default {
data() {
return {
@@ -78,58 +96,75 @@
form: {
user_type: 2,
img: '',
user_name: "",
user_duty: "",
email: "",
user_name: '',
user_duty: '',
email: '',
mobile: '',
status_note: ''
}
}
status_note: '',
c_address: '',
c_phone: '',
c_bank_name: '',
c_bank_account: ''
},
showElse: false
};
},
async onLoad(e) {
this.form.id = e.id
this.form.open_id = e.open_id
this.form.id = e.id;
this.form.open_id = e.open_id;
if (e.view_type == 'fail') {
this.form.view_type = e.view_type
this.form.view_type = e.view_type;
let res = await this.api.szzpyfailccho({
id: this.form.id,
view_type: this.form.view_type
})
});
try {
if (res.code == 1) {
this.form = res.data.data
this.form.status_note = res.data.status_note
this.form = res.data.data;
this.form.status_note = res.data.status_note;
}
} catch (e) {
//TODO handle the exception
}
}
},
methods: {
wxInit() {
wx.config({
debug: false, // true:调试时候弹窗
appId: res.appId, // 微信appid
timestamp: res.timestamp, // 时间戳
nonceStr: res.nonceStr, // 随机字符串
signature: res.signature, // 签名
jsApiList: [
// 所有要调用的 API 都要加到这个列表中
'onMenuShareTimeline', // 分享到朋友圈接口
'onMenuShareAppMessage', // 分享到朋友接口
'onMenuShareQQ', // 分享到QQ接口
'onMenuShareWeibo' // 分享到微博接口
]
});
},
onInput(e) {
if (this.form.user_type == 2) {
if ([...e.detail.value].length >= 6) {
console.log(100000)
this.handleClick()
console.log(100000);
this.handleClick();
} else {
this.subCategoryList = []
this.subCategoryList = [];
}
}
},
handleClick: _.debounce(function () {
console.log(100000)
this.getOrder()
console.log(100000);
this.getOrder();
// 函数执行内容
}, 500),
categorySubClick(category) {
console.log(category, 86)
this.form.user_name = category.companyName
this.form.user_duty = category.creditCode
this.subCategoryList = []
console.log(category, 86);
this.form.user_name = category.companyName;
this.form.user_duty = category.creditCode;
this.subCategoryList = [];
},
upload() {
uni.chooseImage({
@@ -144,17 +179,17 @@
filePath: tempFilePaths[0],
name: 'file',
formData: {
open_id: this.form.open_id,
open_id: this.form.open_id
},
success: (uploadFileRes) => {
uni.showToast({
title: '上传成功',
icon: 'none',
})
icon: 'none'
});
uni.pro.hideLoading();
let data = JSON.parse(uploadFileRes.data)
this.form.img = data.data[0]
console.log(this.form)
let data = JSON.parse(uploadFileRes.data);
this.form.img = data.data[0];
console.log(this.form);
},
fail: () => {
uni.pro.hideLoading();
@@ -162,7 +197,7 @@
});
},
fail: () => {
console.log(111)
console.log(111);
uni.pro.hideLoading();
}
});
@@ -201,24 +236,50 @@
let res = await this.api.usersubopeninvoice({
id: this.form.id,
open_id: this.form.open_id,
user_name: this.form.user_name,
user_type: this.form.user_type,
user_duty: this.form.user_duty,
email: this.form.email,
img: this.form.img,
mobile: this.form.mobile,
notes: this.form.notes
})
...this.form
});
if (res.code == 1) {
uni.showToast({
title: res.msg,
icon: 'none'
});
console.log('t_type===', res.data.t_type);
switch (res.data.t_type) {
case '1':
console.log(1);
// 内链
setTimeout(() => {
if (res.data.url) {
window.location.href = res.data.url
}
window.location.href = res.data.n_url;
}, 1000);
break;
case '2':
console.log(2);
// 外链
setTimeout(() => {
window.location.href = res.data.url;
}, 1000);
break;
// case '3':
// console.log(3);
// // 小程序
// setTimeout(() => {
// plus.share.getServices(function (plusRes) {
// var sweixin = null;
// for (var i = 0; i < plusRes.length; i++) {
// var t = plusRes[i];
// if (t.id == 'weixin') {
// sweixin = t;
// }
// }
// if (sweixin) {
// sweixin.launchMiniProgram({ ...res.data.mini });
// }
// });
// }, 1000);
// break;
default:
break;
}
// window.location.href = "https://i.hangzhouyiyao.cn/activities?appKey=3f4ca8be626445e8b306c2badafd6f46&appEntrance=1&business=money"
}
// uni.request({
@@ -258,14 +319,15 @@
// });
},
clickakex(e) {
this.form.user_type = e
this.form.user_name = ''
this.form.img = ''
this.form.user_duty = ''
this.form.email = ''
this.form.mobile = ''
this.form.user_type = e;
this.form.user_name = '';
this.form.img = '';
this.form.user_duty = '';
this.form.email = '';
this.form.mobile = '';
},
async getOrder() { //搜索值
async getOrder() {
//搜索值
uni.request({
url: 'https://invoice.sxczgkj.cn/api/' + 'store/enterprise',
data: {
@@ -274,7 +336,7 @@
open_id: this.form.open_id
},
method: 'POST', //请求方式,必须为大写
success: res => {
success: (res) => {
console.log('接口返回------', res);
setTimeout(() => {
if (this.page == 1) {
@@ -282,22 +344,35 @@
} else {
this.subCategoryList.push(...res.data.data);
}
}, 500)
}, 500);
}
});
}
}
}
};
</script>
<style lang="scss" scoped>
page {
background: #F9F9F9;
background: #f9f9f9;
}
.arrow {
display: flex;
align-items: center;
.t {
margin-right: 8upx;
color: #808080;
font-size: 32upx;
}
.arrow-icon {
transition: all 0.3s ease-in-out;
&.active {
transform: rotate(180deg);
}
}
}
.content {
padding: 0 28rpx;
padding: 0 28rpx 28upx;
.content_top {
padding: 32rpx 110rpx;
@@ -306,7 +381,7 @@
justify-content: space-between;
.content_topview {
background: #288EFB;
background: #288efb;
color: #fff;
}
@@ -314,7 +389,7 @@
width: 142rpx;
height: 56rpx;
background: #fff;
color: #288EFB;
color: #288efb;
border-radius: 6rpx 6rpx 6rpx 6rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
@@ -326,7 +401,7 @@
.content_item {
width: 100%;
background: #FFFFFF;
background: #ffffff;
border-radius: 18rpx 18rpx 18rpx 18rpx;
.Box_box {
@@ -358,7 +433,6 @@
border-bottom: 1rpx solid #ccc;
}
}
}
.preservation {
@@ -410,7 +484,7 @@
margin: 0 auto;
width: 254rpx;
height: 156rpx;
background: #FFFFFF;
background: #ffffff;
border: 1rpx dashed #707070;
}
}
@@ -420,15 +494,14 @@
margin: 100rpx auto;
width: 80%;
height: 84rpx;
background: #288EFB;
background: #288efb;
border-radius: 50rpx 50rpx 50rpx 50rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 36rpx;
color: #FFFFFF;
color: #ffffff;
line-height: 84rpx;
text-align: center;
}
}
</style>

View File

@@ -4,21 +4,11 @@
<view class="content_boxtopone">
{{ datalsit.type }}
</view>
<view class="content_boxtoptow" v-if="datalsit.status == 0">
客户未扫码
</view>
<view class="content_boxtoptow" v-if="datalsit.status ==1">
开票中
</view>
<view class="content_boxtoptow" style="color:#FD482C;" v-if="datalsit.status == 3">
开票失败
</view>
<view class="content_boxtoptow" style="color:#3DC85E;" v-if="datalsit.status == 2">
开票成功
</view>
<view class="content_boxtoptow" v-if="datalsit.status == 4">
已作废
</view>
<view class="content_boxtoptow" v-if="datalsit.status == 0">客户未扫码</view>
<view class="content_boxtoptow" v-if="datalsit.status == 1">开票中</view>
<view class="content_boxtoptow" style="color: #fd482c" v-if="datalsit.status == 3">开票失败</view>
<view class="content_boxtoptow" style="color: #3dc85e" v-if="datalsit.status == 2">开票成功</view>
<view class="content_boxtoptow" v-if="datalsit.status == 4">已作废</view>
</view>
<view class="content_boxt_one">
<view class="content_boxt_oneone" v-if="datalsit.status == 2">
@@ -34,7 +24,7 @@
</view>
<view class="classvie_item flex-start">
<text class="classvie_itemone">发票金额</text>
<text class="classvie_itemtow" style="color: #FF6565;">{{datalsit.price}}</text>
<text class="classvie_itemtow" style="color: #ff6565">{{ datalsit.price }}</text>
</view>
<view class="classvie_item flex-start">
<text class="classvie_itemone">发票类型</text>
@@ -49,7 +39,6 @@
<text class="classvie_itemtow">{{ datalsit.createtime }}</text>
</view>
</view>
</view>
</template>
@@ -66,22 +55,21 @@
};
},
onLoad(e) {
this.ID = e.id
this.status = e.status
this.ID = e.id;
this.status = e.status;
},
onReady() {
this.storeinvoicelist()
this.storeinvoicelist();
},
methods: {
storeinvoicelist() {
uni.request({
url: uni.conf.baseUrl + 'store/invoicedetail',
data: {
id: this.ID,
id: this.ID
},
method: 'POST', //请求方式,必须为大写
success: res => {
success: (res) => {
this.datalsit = res.data.data;
// 获取uQRCode实例
var qr = new uQRCode();
@@ -102,7 +90,7 @@
},
savealbum(e) {
uni.pro.navigateBack();
},
}
// savealbum(e) {
// // #ifdef APP
// uni.showLoading({
@@ -150,12 +138,12 @@
// // #endif
// },
}
}
};
</script>
<style lang="scss">
page {
background: #F9F9F9;
background: #f9f9f9;
}
.content {
@@ -163,7 +151,7 @@
.content_boxtop {
padding: 22rpx 16rpx;
background: #FFFFFF;
background: #ffffff;
border-radius: 18rpx 18rpx 18rpx 18rpx;
.content_boxtopone {
@@ -185,13 +173,13 @@
margin-top: 32rpx;
padding: 32rpx;
border-radius: 18rpx 18rpx 18rpx 18rpx;
background: #FFFFFF;
background: #ffffff;
.content_boxt_oneone {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 28rpx;
color: #FF6565;
color: #ff6565;
}
.classvie_item {
@@ -220,7 +208,7 @@
.content_boxt_tow {
margin: 32rpx 0;
width: 100%;
background: #FFFFFF;
background: #ffffff;
border-radius: 18rpx 18rpx 18rpx 18rpx;
padding-bottom: 50rpx;
@@ -238,16 +226,15 @@
margin: 50rpx auto 0 auto;
width: 558rpx;
height: 84rpx;
background: #288EFB;
background: #288efb;
border-radius: 50rpx 50rpx 50rpx 50rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 36rpx;
color: #FFFFFF;
color: #ffffff;
line-height: 84rpx;
text-align: center;
font-style: normal;
}
.content_boxt_towrelative {

View File

@@ -1,2 +1,6 @@
<!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=/static/index.2da1efab.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src="/chunk-vendors.js?v=1716359286335"></script><script src="/index.js?v=1716359286335"></script></body></html>
<!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=/static/index.2da1efab.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src="/chunk-vendors.js?v=1716373696937"></script><script src="/index.js?v=1716373696937"></script></body></html>