提交 15827421 编写于 作者: D Devil

qq小程序新增开票功能

上级 9821179c
......@@ -147,7 +147,7 @@ Page({
success(res) {
app.showToast('复制成功', 'success');
}
})
});
} else {
app.showToast('链接地址有误');
}
......
......@@ -114,7 +114,7 @@ Page({
success(res) {
app.showToast('复制成功', 'success');
}
})
});
} else {
app.showToast('链接地址有误');
}
......
......@@ -41,7 +41,12 @@
"pages/plugins/wallet/user-cash-detail/user-cash-detail",
"pages/plugins/excellentbuyreturntocash/profit/profit",
"pages/plugins/excellentbuyreturntocash/profit-detail/profit-detail",
"pages/plugins/exchangerate/currency/currency"
"pages/plugins/exchangerate/currency/currency",
"pages/plugins/invoice/user/user",
"pages/plugins/invoice/invoice/invoice",
"pages/plugins/invoice/invoice-detail/invoice-detail",
"pages/plugins/invoice/invoice-saveinfo/invoice-saveinfo",
"pages/plugins/invoice/order/order"
],
"window": {
"navigationBarTitleText": "{{application_title}}",
......
const app = getApp();
Page({
data: {
params: null,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_bottom_line_status: false,
detail: null,
detail_list: [],
express_data: [],
},
onLoad(params) {
//params['id'] = 1;
this.setData({ params: params });
this.init();
},
onShow() {},
init() {
var self = this;
qq.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
qq.request({
url: app.get_request_url("detail", "user", "invoice"),
method: "POST",
data: {
id: this.data.params.id
},
dataType: "json",
success: res => {
qq.hideLoading();
qq.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
detail: data.data,
detail_list: [
{ name: "业务类型", value: data.data.business_type_name || '' },
{ name: "申请类型", value: data.data.apply_type_name || '' },
{ name: "发票类型", value: data.data.invoice_type_name || '' },
{ name: "发票金额", value: data.data.total_price || '' },
{ name: "状态", value: data.data.status_name || '' },
{ name: "发票内容", value: data.data.invoice_content || '' },
{ name: "发票抬头", value: data.data.invoice_title || '' },
{ name: "纳税识别号", value: data.data.invoice_code || '' },
{ name: "企业开户行名称", value: data.data.invoice_bank || '' },
{ name: "企业开户帐号", value: data.data.invoice_account || '' },
{ name: "企业联系电话", value: data.data.invoice_tel || '' },
{ name: "企业注册地址", value: data.data.invoice_address || '' },
{ name: "收件人姓名", value: data.data.name || '' },
{ name: "收件人电话", value: data.data.tel || '' },
{ name: "收件人地址", value: data.data.address || '' },
{ name: "电子邮箱", value: data.data.email || '' },
{ name: "拒绝原因", value: data.data.refuse_reason || '' },
{ name: "用户备注", value: data.data.user_note || '' },
{ name: "创建时间", value: data.data.add_time || '' },
{ name: "更新时间", value: data.data.upd_time || '' },
],
express_data: [
{ name: "快递名称", value: data.data.express_name || '' },
{ name: "快递单号", value: data.data.express_number || '' },
],
data_list_loding_status: 3,
data_bottom_line_status: true,
data_list_loding_msg: '',
});
} else {
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg,
});
if (app.is_login_check(res.data, self, 'init')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
qq.hideLoading();
qq.stopPullDownRefresh();
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错',
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.init();
},
// 电子发票复制
electronic_invoice_event(e) {
var value = e.currentTarget.dataset.value || null;
if (value != null) {
qq.setClipboardData({
data: value,
success(res) {
app.showToast('复制成功', 'success');
}
});
} else {
app.showToast('链接地址有误');
}
},
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "发票详情"
}
\ No newline at end of file
<view qq:if="{{detail != null}}">
<view qq:if="{{detail_list.length > 0}}" class="panel-item">
<view class="panel-title">申请信息</view>
<view class="panel-content bg-white">
<view qq:for="{{detail_list}}" qq:key="item" class="item br-b oh">
<view class="title fl">{{item.name}}</view>
<view class="content fl br-l">{{item.value}}</view>
</view>
</view>
</view>
<!-- 快递信息 -->
<view qq:if="{{detail.status == 2 && detail.invoice_type != 0 && express_data.length > 0}}" class="panel-item spacing-mt">
<view class="panel-title">快递信息</view>
<view class="panel-content bg-white">
<view qq:for="{{express_data}}" qq:key="item" class="item br-b oh">
<view class="title fl">{{item.name}}</view>
<view class="content fl br-l">{{item.value}}</view>
</view>
</view>
</view>
<!-- 电子发票 -->
<view qq:if="{{detail.status == 2 && detail.invoice_type == 0 && (detail.electronic_invoice || null) != null}}" class="panel-item spacing-mt">
<view class="panel-title">电子发票</view>
<view class="panel-content bg-white">
<view qq:for="{{detail.electronic_invoice}}" qq:key="item" class="item br-b oh">
<view class="content" bindtap="electronic_invoice_event" data-value="{{item.url}}">{{item.title}}</view>
</view>
</view>
<view class="tips">可点击发票名称复制后到浏览器打开地址下载发票</view>
</view>
<import src="/pages/common/bottom_line.qml" />
<template is="bottom_line" data="{{status: data_bottom_line_status}}"></template>
</view>
<view qq:if="{{detail == null}}">
<import src="/pages/common/nodata.qml" />
<template is="nodata" data="{{status: data_list_loding_status, msg: data_list_loding_msg}}"></template>
<view class="nav-back tc wh-auto">
<navigator open-type="navigateBack" hover-class="none">
<button type="default" size="mini" class="cr-888 br" hover-class="none">返回</button>
</navigator>
</view>
</view>
\ No newline at end of file
.panel-item .panel-title {
background: #fff;
font-weight: bold;
padding: 15rpx;
border-bottom: 2px solid #eee;
font-size: 34rpx;
}
.panel-item .panel-content .item {
padding: 20rpx 0;
}
.panel-item .panel-content .item:last-child {
border: 0;
}
.panel-item .panel-content .item .title {
width: 25%;
padding-left: 20rpx;
}
.panel-item .panel-content .item .content {
width: calc(75% - 50rpx);
padding-left: 20rpx;
min-height: 46rpx;
word-wrap: break-word;
word-break: normal;
}
.panel-item .panel-content .item view {
line-height: 46rpx;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
params: null,
form_submit_loading: false,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_bottom_line_status: false,
data_base: null,
apply_type_list: [],
can_invoice_type_list: [],
invoice_content_list: [],
save_base_data: null,
data: null,
form_invoice_type_index: 0,
form_apply_type_index: 0,
form_invoice_content_index: 0,
form_apply_type_disabled: false,
company_container: false,
company_special_container: false,
addressee_container: false,
email_container: true,
},
onLoad(params) {
this.setData({ params: params });
this.init();
},
onShow() {},
init() {
var self = this;
qq.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
qq.request({
url: app.get_request_url("saveinfo", "user", "invoice"),
method: "POST",
data: this.data.params,
dataType: "json",
success: res => {
qq.hideLoading();
qq.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
data_base: data.base || null,
apply_type_list: data.apply_type_list || [],
can_invoice_type_list: data.can_invoice_type_list || [],
invoice_content_list: data.invoice_content_list || [],
save_base_data: data.save_base_data,
data: ((data.data || null) == null || data.data.length == 0) ? null : data.data,
data_list_loding_status: 0,
data_bottom_line_status: true,
data_list_loding_msg: (data.save_base_data.total_price <= 0) ? '发票金额必须大于0' : '',
});
// 数据容器处理
this.invoice_container_handle();
} else {
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg,
});
if (app.is_login_check(res.data, self, 'init')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
qq.hideLoading();
qq.stopPullDownRefresh();
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错',
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.init();
},
// 发票类型事件
form_invoice_type_event(e) {
this.setData({
form_invoice_type_index: e.detail.value
});
this.invoice_container_handle();
},
// 发票类型事件
form_apply_type_event(e) {
this.setData({
form_apply_type_index: e.detail.value
});
this.invoice_container_handle();
},
// 发票内容事件
form_invoice_content_event(e) {
this.setData({
form_invoice_content_index: e.detail.value
});
},
// 容器显隐处理
invoice_container_handle() {
// 发票类型
var invoice_type = this.data.can_invoice_type_list[this.data.form_invoice_type_index]['id'];
if(invoice_type == 2)
{
// 选择专票的时候申请类型必须是企业
this.setData({
form_apply_type_index: 1,
form_apply_type_disabled: true,
});
} else {
this.setData({
form_apply_type_disabled: false,
});
}
// 申请类型
switch(invoice_type)
{
// 增值税普通电子发票
case 0 :
this.setData({
company_special_container: false,
addressee_container: false,
email_container: true,
});
break;
// 增值税普通纸质发票
case 1 :
this.setData({
company_special_container: false,
addressee_container: true,
email_container: false,
});
break;
// 增值税专业纸质发票
case 2 :
this.setData({
company_container: true,
company_special_container: true,
addressee_container: true,
email_container: false,
});
break;
}
// 增值税专业纸质发票情况下个人类型处理
if(invoice_type != 2)
{
var apply_type = this.data.apply_type_list[this.data.form_apply_type_index]['id'];
if(apply_type == 0)
{
this.setData({
company_container: false,
});
} else {
this.setData({
company_container: true,
});
}
}
},
// 表单提交
formSubmit(e)
{
var data = e.detail.value;
if((this.data.data || null) == null)
{
data['ids'] = this.data.params.ids || '';
data['type'] = this.data.params.type || '';
} else {
data['id'] = this.data.data.id;
}
// 数据验证
var validation = [
{fields: 'invoice_type', msg: '请选择发票类型', is_can_zero: 1},
{fields: 'apply_type', msg: '请选择申请类型', is_can_zero: 1},
{fields: 'invoice_title', msg: '请填写发票抬头、最多200个字符'}
];
if(app.fields_check(data, validation))
{
var invoice_type = this.data.can_invoice_type_list[this.data.form_invoice_type_index]['id'];
var apply_type = this.data.apply_type_list[this.data.form_apply_type_index]['id'];
if(apply_type == 1)
{
validation.push({fields: 'invoice_code', msg: '请填写企业统一社会信用代码或纳税识别号、最多160个字符'});
}
if(invoice_type == 2)
{
validation.push({fields: 'invoice_bank', msg: '请填写企业开户行名称、最多200个字符'});
validation.push({fields: 'invoice_account', msg: '请填写企业开户帐号、最多160个字符'});
validation.push({fields: 'invoice_tel', msg: '请填写企业联系电话 6~15 个字符'});
validation.push({fields: 'invoice_address', msg: '请填写企业注册地址、最多230个字符'});
}
if(invoice_type != 0)
{
validation.push({fields: 'name', msg: '请填写收件人姓名格式 2~30 个字符之间'});
validation.push({fields: 'tel', msg: '请填写收件人电话 6~15 个字符'});
validation.push({fields: 'address', msg: '请填写收件人地址、最多230个字符'});
}
if(app.fields_check(data, validation))
{
// 发票类型
data['invoice_type'] = this.data.can_invoice_type_list[this.data.form_invoice_type_index]['id'];
// 发票内容
if(this.data.invoice_content_list.length > 0 && this.data.invoice_content_list[this.data.form_invoice_content_index] != undefined)
{
data['invoice_content'] = this.data.invoice_content_list[this.data.form_invoice_content_index];
}
qq.showLoading({title: '提交中...'});
this.setData({form_submit_loading: true});
// 网络请求
var self = this;
qq.request({
url: app.get_request_url("save", "user", "invoice"),
method: 'POST',
data: data,
dataType: 'json',
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: (res) => {
qq.hideLoading();
if(res.data.code == 0)
{
app.showToast(res.data.msg, "success");
setTimeout(function()
{
// 是否关闭页面进入我的发票、适合从订单开票中过来提交成功直接进入我的发票列表
if((self.data.params || null) != null && (self.data.params.is_redirect || 0) == 1)
{
qq.redirectTo({
url: "/pages/plugins/invoice/invoice/invoice"
});
} else {
qq.navigateBack();
}
}, 2000);
} else {
this.setData({form_submit_loading: false});
if (app.is_login_check(res.data)) {
app.showToast(res.data.msg);
} else {
app.showToast('提交失败,请重试!');
}
}
},
fail: () => {
qq.hideLoading();
this.setData({form_submit_loading: false});
app.showToast('服务器请求出错');
}
});
}
}
},
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "开票"
}
\ No newline at end of file
<view qq:if="{{save_base_data != null && save_base_data.total_price > 0}}">
<form bindsubmit="formSubmit" qq:if="{{data_list_loding_status == 0}}">
<view class="content-top bg-white spacing-mb">
发票金额 <text class="cr-main">{{save_base_data.total_price}}</text>
</view>
<view class="form-container spacing-mb oh">
<view class="form-gorup bg-white">
<view class="form-gorup-title">发票类型<text class="form-group-tips-must">必选</text></view>
<picker name="invoice_type" bindchange="form_invoice_type_event" value="{{form_invoice_type_index}}" range="{{can_invoice_type_list}}" range-key="name">
<view class="picker {{can_invoice_type_list[form_invoice_type_index] == undefined ? 'cr-ccc' : 'cr-666'}} arrow-right">
{{can_invoice_type_list[form_invoice_type_index] == undefined ? '请选择发票类型' : can_invoice_type_list[form_invoice_type_index]['name']}}
</view>
</picker>
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">申请类型<text class="form-group-tips-must">必选</text></view>
<picker name="apply_type" bindchange="form_apply_type_event" disabled="{{form_apply_type_disabled}}" value="{{form_apply_type_index}}" range="{{apply_type_list}}" range-key="name">
<view class="picker {{apply_type_list[form_apply_type_index] == undefined ? 'cr-ccc' : 'cr-666'}} arrow-right">
{{apply_type_list[form_apply_type_index] == undefined ? '请选择申请类型' : apply_type_list[form_apply_type_index]['name']}}
</view>
</picker>
</view>
<view qq:if="{{invoice_content_list.length > 0}}" class="form-gorup bg-white">
<view class="form-gorup-title">发票内容<text class="form-group-tips-must">必选</text></view>
<picker name="invoice_content" bindchange="form_invoice_content_event" value="{{form_invoice_content_index}}" range="{{invoice_content_list}}">
<view class="picker {{invoice_content_list[form_invoice_content_index] == undefined ? 'cr-ccc' : 'cr-666'}} arrow-right">
{{invoice_content_list[form_invoice_content_index] == undefined ? '请选择发票内容' : invoice_content_list[form_invoice_content_index]}}
</view>
</picker>
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">发票抬头<text class="form-group-tips-must">必填</text></view>
<input type="text" name="invoice_title" placeholder-class="cr-ccc" class="cr-666" placeholder="发票抬头、最多200个字符" maxlength="200" value="{{data.invoice_title || ''}}" />
</view>
<!-- 企业信息 -->
<view qq:if="{{company_container}}">
<view class="form-gorup bg-white">
<view class="form-gorup-title">企业统一社会信用代码或纳税识别号<text class="form-group-tips-must">必填</text></view>
<input type="text" name="invoice_code" placeholder-class="cr-ccc" class="cr-666" placeholder="企业统一社会信用代码或纳税识别号、最多160个字符" maxlength="160" value="{{data.invoice_code || ''}}" />
</view>
</view>
<!-- 企业专票信息 -->
<view qq:if="{{company_special_container}}">
<view class="form-gorup bg-white">
<view class="form-gorup-title">企业开户行名称<text class="form-group-tips-must">必填</text></view>
<input type="text" name="invoice_bank" placeholder-class="cr-ccc" class="cr-666" placeholder="企业开户行名称、最多200个字符" maxlength="200" value="{{data.invoice_bank || ''}}" />
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">企业开户帐号<text class="form-group-tips-must">必填</text></view>
<input type="text" name="invoice_account" placeholder-class="cr-ccc" class="cr-666" placeholder="企业开户帐号、最多160个字符" maxlength="160" value="{{data.invoice_account || ''}}" />
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">企业联系电话<text class="form-group-tips-must">必填</text></view>
<input type="text" name="invoice_tel" placeholder-class="cr-ccc" class="cr-666" placeholder="企业联系电话 6~15 个字符" maxlength="15" value="{{data.invoice_tel || ''}}" />
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">企业注册地址<text class="form-group-tips-must">必填</text></view>
<input type="text" name="invoice_address" placeholder-class="cr-ccc" class="cr-666" placeholder="企业注册地址、最多230个字符" maxlength="230" value="{{data.invoice_address || ''}}" />
</view>
</view>
<!-- 收件人信息 -->
<view qq:if="{{addressee_container}}">
<view class="form-gorup bg-white">
<view class="form-gorup-title">收件人姓名<text class="form-group-tips-must">必填</text></view>
<input type="text" name="name" placeholder-class="cr-ccc" class="cr-666" placeholder="收件人姓名格式 2~30 个字符之间" maxlength="30" value="{{data.name || ''}}" />
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">收件人电话<text class="form-group-tips-must">必填</text></view>
<input type="text" name="tel" placeholder-class="cr-ccc" class="cr-666" placeholder="收件人电话 6~15 个字符" maxlength="15" value="{{data.tel || ''}}" />
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">收件人地址<text class="form-group-tips-must">必填</text></view>
<input type="text" name="address" placeholder-class="cr-ccc" class="cr-666" placeholder="收件人地址、最多230个字符" maxlength="230" value="{{data.address || ''}}" />
</view>
</view>
<!-- 电子邮箱信息 -->
<view qq:if="{{email_container}}">
<view class="form-gorup bg-white">
<view class="form-gorup-title">电子邮箱<text class="form-group-tips">选填</text></view>
<input type="text" name="email" placeholder-class="cr-ccc" class="cr-666" placeholder="电子邮箱、最多60个字符" maxlength="60" value="{{data.email || ''}}" />
</view>
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">备注<text class="form-group-tips">选填</text></view>
<input type="text" name="user_note" placeholder-class="cr-ccc" class="cr-666" placeholder="备注最多230个字符" maxlength="60" value="{{data.user_note || ''}}" />
</view>
<view class="form-gorup">
<button class="bg-main submit-bottom" type="default" formType="submit" hover-class="none" loading="{{form_submit_loading}}" disabled="{{form_submit_loading}}">提交</button>
</view>
</view>
</form>
</view>
<view qq:else>
<import src="/pages/common/nodata.qml" />
<template is="nodata" data="{{status: data_list_loding_status, msg: data_list_loding_msg}}"></template>
</view>
\ No newline at end of file
.content-top {
padding: 30rpx 10rpx;
}
.content-top text {
font-size: 38rpx;
font-weight: bold;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
data_base: null,
data_list: [],
data_page_total: 0,
data_page: 1,
data_list_loding_status: 1,
data_bottom_line_status: false,
params: null,
nav_status_list: [
{ name: "全部", value: "-1" },
{ name: "待审核", value: "0" },
{ name: "待开票", value: "1" },
{ name: "已开票", value: "2" },
{ name: "已拒绝", value: "3" },
],
nav_status_index: 0,
},
onLoad(params) {
// 是否指定状态
var nav_status_index = 0;
if ((params.status || null) != null) {
for (var i in this.data.nav_status_list) {
if (this.data.nav_status_list[i]['value'] == params.status) {
nav_status_index = i;
break;
}
}
}
this.setData({
params: params,
nav_status_index: nav_status_index,
});
},
onShow() {
this.init();
},
init() {
var user = app.get_user_info(this, 'init');
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
qq.redirectTo({
url: "/pages/login/login?event_callback=init"
});
return false;
} else {
// 获取数据
this.get_data_list();
}
} else {
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false,
});
}
},
// 获取数据
get_data_list(is_mandatory) {
// 分页是否还有数据
if ((is_mandatory || 0) == 0) {
if (this.data.data_bottom_line_status == true) {
return false;
}
}
// 加载loding
qq.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
// 请求数据
var data = {
page: this.data.data_page
};
// 参数
var status = ((this.data.nav_status_list[this.data.nav_status_index] || null) == null) ? -1 : this.data.nav_status_list[this.data.nav_status_index]['value'];
if(status != -1)
{
data['status'] = status;
}
// 获取数据
qq.request({
url: app.get_request_url("index", "user", "invoice"),
method: "POST",
data: data,
dataType: "json",
success: res => {
qq.hideLoading();
qq.stopPullDownRefresh();
if (res.data.code == 0) {
if (res.data.data.data.length > 0) {
if (this.data.data_page <= 1) {
var temp_data_list = res.data.data.data;
} else {
var temp_data_list = this.data.data_list;
var temp_data = res.data.data.data;
for (var i in temp_data) {
temp_data_list.push(temp_data[i]);
}
}
this.setData({
data_base: res.data.data.base || null,
data_list: temp_data_list,
data_total: res.data.data.total,
data_page_total: res.data.data.page_total,
data_list_loding_status: 3,
data_page: this.data.data_page + 1,
});
// 是否还有数据
if (this.data.data_page > 1 && this.data.data_page > this.data.data_page_total) {
this.setData({ data_bottom_line_status: true });
} else {
this.setData({ data_bottom_line_status: false });
}
} else {
this.setData({
data_list_loding_status: 0,
data_list: [],
data_bottom_line_status: false,
});
}
} else {
this.setData({
data_list_loding_status: 0,
});
if (app.is_login_check(res.data, this, 'get_data_list')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
qq.hideLoading();
qq.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2,
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.setData({
data_page: 1
});
this.get_data_list(1);
},
// 滚动加载
scroll_lower(e) {
this.get_data_list();
},
// 导航事件
nav_event(e) {
this.setData({
nav_status_index: e.currentTarget.dataset.index || 0,
data_page: 1,
});
this.get_data_list(1);
},
// 编辑事件
edit_event(e) {
qq.navigateTo({
url: '/pages/plugins/invoice/invoice-saveinfo/invoice-saveinfo?id='+e.currentTarget.dataset.value,
});
},
// 删除
delete_event(e) {
qq.showModal({
title: "温馨提示",
content: "删除后不可恢复,确定继续吗?",
confirmText: "确认",
cancelText: "不了",
success: result => {
if (result.confirm) {
// 参数
var value = e.currentTarget.dataset.value;
var index = e.currentTarget.dataset.index;
// 加载loding
qq.showLoading({ title: "处理中..." });
qq.request({
url: app.get_request_url("delete", "user", "invoice"),
method: "POST",
data: { ids: value },
dataType: "json",
success: res => {
qq.hideLoading();
if (res.data.code == 0) {
var temp_data_list = this.data.data_list;
temp_data_list.splice(index, 1);
this.setData({ data_list: temp_data_list });
if (temp_data_list.length == 0) {
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false,
});
}
app.showToast(res.data.msg, "success");
} else {
app.showToast(res.data.msg);
}
},
fail: () => {
qq.hideLoading();
app.showToast("服务器请求出错");
}
});
}
}
});
},
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "我的发票"
}
\ No newline at end of file
<!-- 导航 -->
<view class="nav">
<block qq:for="{{nav_status_list}}" qq:key="key">
<view class="item fl tc cr-888 {{nav_status_index == index ? 'active' : ''}}" data-index="{{index}}" bindtap="nav_event">{{item.name}}</view>
</block>
</view>
<!-- 列表 -->
<scroll-view scroll-y="{{true}}" class="scroll-box" bindscrolltolower="scroll_lower" lower-threshold="30">
<view class="data-list">
<view class="item bg-white spacing-mb" qq:if="{{data_list.length > 0}}" qq:for="{{data_list}}" qq:key="key">
<view class="base oh br-b">
<text class="cr-666">{{item.add_time}}</text>
<text class="fr cr-main">{{item.status_name}}</text>
</view>
<navigator url="/pages/plugins/invoice/invoice-detail/invoice-detail?id={{item.id}}" hover-class="none">
<view class="content">
<view class="multi-text">
<text class="title cr-666">业务类型</text>
<text class="value">{{item.business_type_name}}</text>
</view>
<view class="multi-text">
<text class="title cr-666">申请类型</text>
<text class="value">{{item.apply_type_name}}</text>
</view>
<view class="multi-text">
<text class="title cr-666">发票类型</text>
<text class="value">{{item.invoice_type_name}}</text>
</view>
<view class="multi-text">
<text class="title cr-666">发票金额</text>
<text class="value">{{item.total_price}}</text>
<text class="unit cr-888"></text>
</view>
<view class="multi-text">
<text class="title cr-666">发票抬头</text>
<text class="value">{{item.invoice_title}}</text>
</view>
</view>
</navigator>
<view qq:if="{{item.status == 0 || item.status == 3}}" class="operation tr br-t-dashed">
<button class="cr-666 br" type="default" size="mini" bindtap="edit_event" data-value="{{item.id}}" hover-class="none">编辑</button>
<button class="submit-delete" type="default" size="mini" bindtap="delete_event" data-value="{{item.id}}" data-index="{{index}}" hover-class="none">删除</button>
</view>
</view>
<view qq:if="{{data_list.length == 0}}">
<import src="/pages/common/nodata.qml" />
<template is="nodata" data="{{status: data_list_loding_status}}">
</template>
</view>
<import src="/pages/common/bottom_line.qml" />
<template is="bottom_line" data="{{status: data_bottom_line_status}}"></template>
</view>
</scroll-view>
\ No newline at end of file
/*
* 导航
*/
.nav {
background: #eee;
height: 80rpx;
line-height: 80rpx;
}
.nav .item {
width: 20%;
}
.nav .active {
color: #d2364c;
}
/*
* 列表
*/
.scroll-box {
height: calc(100vh - 80rpx);
}
.data-list .item .base,
.data-list .item .content {
padding: 20rpx 10rpx;
}
.data-list .item .content .multi-text {
line-height: 50rpx;
}
.data-list .item .content .multi-text .title {
margin-right: 30rpx;
}
.data-list .item .content .multi-text .value {
font-weight: 500;
}
.data-list .item .content .multi-text .unit {
margin-left: 10rpx;
}
.data-list .item .operation {
padding: 20rpx 10rpx;
}
.data-list .item .operation button:not(:first-child) {
margin-left: 30rpx;
}
.data-list .item .submit-delete {
border: 1px solid #dc7f7f;
color: #dc7f7f !important;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
data_base: null,
data_list: [],
data_page_total: 0,
data_page: 1,
data_list_loding_status: 1,
data_bottom_line_status: false,
params: null,
select_ids: [],
},
onLoad(params) {
this.setData({
params: params,
});
},
onShow() {
this.init();
},
init() {
var user = app.get_user_info(this, 'init');
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
qq.redirectTo({
url: "/pages/login/login?event_callback=init"
});
return false;
} else {
// 获取数据
this.get_data_list();
}
} else {
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false,
});
}
},
// 获取数据
get_data_list(is_mandatory) {
// 分页是否还有数据
if ((is_mandatory || 0) == 0) {
if (this.data.data_bottom_line_status == true) {
return false;
}
}
// 加载loding
qq.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
// 请求数据
var data = {
page: this.data.data_page
};
// 获取数据
qq.request({
url: app.get_request_url("index", "order", "invoice"),
method: "POST",
data: data,
dataType: "json",
success: res => {
qq.hideLoading();
qq.stopPullDownRefresh();
if (res.data.code == 0) {
if (res.data.data.data.length > 0) {
if (this.data.data_page <= 1) {
var temp_data_list = res.data.data.data;
} else {
var temp_data_list = this.data.data_list;
var temp_data = res.data.data.data;
for (var i in temp_data) {
temp_data_list.push(temp_data[i]);
}
}
this.setData({
data_base: res.data.data.base || null,
data_list: temp_data_list,
data_total: res.data.data.total,
data_page_total: res.data.data.page_total,
data_list_loding_status: 3,
data_page: this.data.data_page + 1,
});
// 是否还有数据
if (this.data.data_page > 1 && this.data.data_page > this.data.data_page_total) {
this.setData({ data_bottom_line_status: true });
} else {
this.setData({ data_bottom_line_status: false });
}
} else {
this.setData({
data_list_loding_status: 0,
data_list: [],
data_bottom_line_status: false,
});
}
} else {
this.setData({
data_list_loding_status: 0,
});
if (app.is_login_check(res.data, this, 'get_data_list')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
qq.hideLoading();
qq.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2,
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.setData({
data_page: 1
});
this.get_data_list(1);
},
// 滚动加载
scroll_lower(e) {
this.get_data_list();
},
// 选择
selected_event(e) {
var value = e.currentTarget.dataset.value;
var temp_select_ids = this.data.select_ids;
var index = temp_select_ids.indexOf(value);
if(index == -1)
{
temp_select_ids.push(value);
} else {
temp_select_ids.splice(index, 1);
}
this.setData({select_ids: temp_select_ids});
},
// 合并开票
invoice_merge_event(e) {
if(this.data.select_ids.length <= 0)
{
app.showToast('请先选择数据');
return false;
}
qq.navigateTo({
url: '/pages/plugins/invoice/invoice-saveinfo/invoice-saveinfo?ids='+this.data.select_ids.join(',')+'&type=order&is_redirect=1',
});
},
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "订单开票"
}
\ No newline at end of file
<qs src="../../../../utils/tools.qs" module="tools" />
<scroll-view scroll-y="{{true}}" class="scroll-box" bindscrolltolower="scroll_lower" lower-threshold="30">
<view class="data-list">
<block qq:if="{{data_list.length > 0}}">
<view class="item bg-white spacing-mb" qq:for="{{data_list}}" qq:key="key">
<view class="base oh br-b">
<view bindtap="selected_event" data-type="node" data-value="{{item.id}}" class="fl selected">
<image class="icon" src="/images/default-select{{tools.indexOf(select_ids, item.id) ? '-active' : ''}}-icon.png" mode="widthFix" />
</view>
<text class="cr-666">{{item.add_time}}</text>
</view>
<navigator url="/pages/user-order-detail/user-order-detail?id={{item.id}}" hover-class="none">
<view class="content">
<view class="multi-text">
<text class="title cr-666">订单编号</text>
<text class="value">{{item.order_no}}</text>
</view>
<view class="multi-text">
<text class="title cr-666">订单总价</text>
<text class="value">{{item.total_price}}</text>
<text class="unit cr-888"></text>
</view>
<view class="multi-text">
<text class="title cr-666">支付金额</text>
<text class="value">{{item.pay_price}}</text>
<text class="unit cr-888"></text>
</view>
<view class="multi-text">
<text class="title cr-666">订单单价</text>
<text class="value">{{item.price}}</text>
<text class="unit cr-888"></text>
</view>
</view>
</navigator>
<view class="operation tr br-t-dashed">
<navigator url="/pages/plugins/invoice/invoice-saveinfo/invoice-saveinfo?ids={{item.id}}&type=order&is_redirect=1" hover-class="none">
<button class="cr-666 br" type="default" size="mini" hover-class="none">开票</button>
</navigator>
</view>
</view>
<!-- 合并开票 -->
<view qq:if="{{select_ids.length > 0}}">
<button class="submit-fixed invoice-merge-submit" type="default" size="mini" hover-class="none" bindtap="invoice_merge_event">合并开票</button>
</view>
</block>
<view qq:if="{{data_list.length == 0}}">
<import src="/pages/common/nodata.qml" />
<template is="nodata" data="{{status: data_list_loding_status}}">
</template>
</view>
<import src="/pages/common/bottom_line.qml" />
<template is="bottom_line" data="{{status: data_bottom_line_status}}"></template>
</view>
</scroll-view>
\ No newline at end of file
/*
* 列表
*/
.data-list .item .base,
.data-list .item .content {
padding: 20rpx 10rpx;
}
.data-list .item .content .multi-text {
line-height: 50rpx;
}
.data-list .item .content .multi-text .title {
margin-right: 30rpx;
}
.data-list .item .content .multi-text .value {
font-weight: 500;
}
.data-list .item .content .multi-text .unit {
margin-left: 10rpx;
}
.data-list .item .operation {
padding: 20rpx 10rpx;
}
.data-list .item .operation button:not(:first-child) {
margin-left: 30rpx;
}
/*
* 选择
*/
.selected .icon {
width: 40rpx;
height: 40rpx !important;
margin-left: 10rpx;
margin-right: 20rpx;
vertical-align: middle;
}
.invoice-merge-submit {
width: 220rpx;
height: 70rpx !important;
line-height: 35rpx !important;
left: calc(50% - 110rpx);
bottom: 50rpx;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
data_bottom_line_status: false,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_base: null,
nav_list: [
{
icon: "/images/plugins/invoice/user-center-invoice-icon.png",
title: "我的发票",
url: "/pages/plugins/invoice/invoice/invoice",
},
{
icon: "/images/plugins/invoice/user-center-order-icon.png",
title: "订单开票",
url: "/pages/plugins/invoice/order/order",
}
],
},
onLoad(params) {},
onShow() {
this.init();
},
init(e) {
var user = app.get_user_info(this, "init"),
self = this;
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
qq.showModal({
title: '温馨提示',
content: '绑定手机号码',
confirmText: '确认',
cancelText: '暂不',
success: (result) => {
qq.stopPullDownRefresh();
if (result.confirm) {
qq.navigateTo({
url: "/pages/login/login?event_callback=init"
});
}
},
});
} else {
self.get_data();
}
}
},
// 获取数据
get_data() {
var self = this;
qq.request({
url: app.get_request_url("center", "user", "invoice"),
method: "POST",
data: {},
dataType: "json",
success: res => {
qq.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
data_base: data.base || null,
data_list_loding_msg: '',
data_list_loding_status: 0,
data_bottom_line_status: false,
});
} else {
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: res.data.msg,
});
if (app.is_login_check(res.data, self, 'get_data')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
qq.stopPullDownRefresh();
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: '服务器请求出错',
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.get_data();
},
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "我的发票"
}
\ No newline at end of file
<!-- 导航 -->
<view qq:if="{{nav_list.length > 0 && (data_base || null) != null}}" class="nav oh bg-white">
<block qq:for="{{nav_list}}" qq:key="key">
<navigator url="{{item.url}}" hover-class="none">
<view class="item fl tc">
<image src="{{item.icon}}" mode="scaleToFill" class="dis-block" />
<view class="title">{{item.title}}</view>
</view>
</navigator>
</block>
</view>
<!-- 通知 -->
<view qq:if="{{(data_base.invoice_desc || null) != null && data_base.invoice_desc.length > 0}}" class="tips-container spacing-mt">
<view class="tips">
<view qq:for="{{data_base.invoice_desc}}" qq:key="key" class="item">
{{item}}
</view>
</view>
</view>
\ No newline at end of file
/*
* 导航
*/
.nav {
border-top: 1px solid #eee;
}
.nav .item {
padding: 30rpx 0;
width: calc(50% - 1px);
border-bottom: 1px solid #eee;
}
.nav .item:nth-child(odd) {
border-right: 1px solid #eee;
}
.nav .item image {
width: 100rpx;
height: 100rpx;
margin: 0 auto;
}
.nav .item .title {
margin-top: 20rpx;
}
/*
* 提示信息
*/
.tips-container {
padding: 0 10rpx;
}
\ No newline at end of file
......@@ -256,7 +256,7 @@ Page({
url: "/pages/plugins/invoice/invoice/invoice"
});
} else {
tt:tt.navigateBack();
tt.navigateBack();
}
}, 2000);
} else {
......
......@@ -256,7 +256,7 @@ Page({
url: "/pages/plugins/invoice/invoice/invoice"
});
} else {
wx:wx.navigateBack();
wx.navigateBack();
}
}, 2000);
} else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册