添加采购管理页面详情页, 权限修改

This commit is contained in:
zhengw
2026-02-10 14:33:35 +08:00
parent 62b5fceac5
commit 1d247f1049
28 changed files with 616 additions and 34 deletions

View File

@@ -19,9 +19,12 @@
"pages/purchase/buyInOrderDetail/buyInOrderDetail", "pages/purchase/buyInOrderDetail/buyInOrderDetail",
"pages/purchase/backOrder/backOrder", "pages/purchase/backOrder/backOrder",
"pages/purchase/backOrderDetail/backOrderDetail", "pages/purchase/backOrderDetail/backOrderDetail",
"pages/finance/outcome/outcome",
"pages/finance/income/income", "pages/finance/income/income",
"pages/finance/incomeDetail/incomeDetail",
"pages/finance/outcome/outcome",
"pages/finance/outcomeDetail/outcomeDetail",
"pages/finance/giro/giro", "pages/finance/giro/giro",
"pages/finance/giroDetail/giroDetail",
"pages/finance/flow/flow", "pages/finance/flow/flow",
"pages/base/supplier/supplier", "pages/base/supplier/supplier",
"pages/base/customer/customer", "pages/base/customer/customer",

View File

@@ -17,6 +17,8 @@ Page({
order_no: '', order_no: '',
head_id: '', head_id: '',
head_id2: '', head_id2: '',
rel_account_log_id: '',
rel_bill_no: '',
list: [] as any[], list: [] as any[],
fileIcon: { file: 'file', excel: 'file-excel', pdf: 'file-pdf' }, fileIcon: { file: 'file', excel: 'file-excel', pdf: 'file-pdf' },
}, },
@@ -55,6 +57,17 @@ Page({
post('ErpFinance/fileList', { head_id: this.data.head_id2 }).then((res: any) => { post('ErpFinance/fileList', { head_id: this.data.head_id2 }).then((res: any) => {
this.formatData(res.data); this.formatData(res.data);
}); });
} else if (this.data.rel_bill_no) {
// 资金明细附件
const data: any = {
order_no: this.data.rel_bill_no,
};
if (this.data.rel_account_log_id) {
data.rel_account_log_id = this.data.rel_account_log_id;
}
post('ErpAccount/getAccountPayFile', data).then((res: any) => {
this.formatData(res.data);
});
} }
}, },
onPreview(e: any) { onPreview(e: any) {
@@ -69,13 +82,25 @@ Page({
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
onLoad(options) { onLoad(options) {
const { title, order_no = '', head_id = '', head_id2 = '' } = options || {}; const {
title,
order_no = '',
head_id = '',
head_id2 = '',
rel_account_log_id = '',
rel_bill_no = '',
} = options || {};
if (title) { if (title) {
wx.setNavigationBarTitle({ title: decodeURIComponent(title) }); wx.setNavigationBarTitle({ title: decodeURIComponent(title) });
} }
this.data.order_no = order_no; this.data.order_no = order_no;
this.data.head_id = head_id; this.data.head_id = head_id;
this.data.head_id2 = head_id2; this.data.head_id2 = head_id2;
// 资金明细附件
this.data.rel_account_log_id = rel_account_log_id;
this.data.rel_bill_no = rel_bill_no;
loginStatusPage(this); loginStatusPage(this);
}, },

View File

@@ -7,6 +7,7 @@
"date-picker-plugin": "/pages/components/date-picker-plugin/date-picker-plugin", "date-picker-plugin": "/pages/components/date-picker-plugin/date-picker-plugin",
"sort-plugin": "/pages/components/sort-plugin/sort-plugin", "sort-plugin": "/pages/components/sort-plugin/sort-plugin",
"count-plugin": "/pages/components/count-plugin/count-plugin", "count-plugin": "/pages/components/count-plugin/count-plugin",
"select-plugin": "/pages/components/select-plugin/select-plugin",
"total-bar-plugin": "/pages/components/total-bar-plugin/total-bar-plugin", "total-bar-plugin": "/pages/components/total-bar-plugin/total-bar-plugin",
"pagination-plugin": "/pages/components/pagination-plugin/pagination-plugin", "pagination-plugin": "/pages/components/pagination-plugin/pagination-plugin",
"search-input": "/pages/components/search-input/search-input" "search-input": "/pages/components/search-input/search-input"

View File

@@ -20,12 +20,15 @@ Page({
data: { data: {
params: cloneLite(defaultParams) as any, params: cloneLite(defaultParams) as any,
list: [] as any[], list: [] as any[],
accounts: [] as any[],
crms: [] as any[],
count: 0, count: 0,
states: [ payType: [
{ value: '', label: '全部' }, { value: '', label: '全部' },
{ value: '1', label: '未审核' }, { value: '1', label: '收入' },
{ value: '2', label: '已审核' }, { value: '2', label: '支出' },
], ],
payTypeObj: { 1: '收入', 2: '支出' },
sort: [{ label: '创建日期', value: 'create_date' }], sort: [{ label: '创建日期', value: 'create_date' }],
}, },
handleLogin(e: any) { handleLogin(e: any) {
@@ -37,6 +40,7 @@ Page({
init() { init() {
this.setData({ authInfo: getAuthInfo() }); this.setData({ authInfo: getAuthInfo() });
this.getList(); this.getList();
this.getData();
}, },
searchChange(e: any) { searchChange(e: any) {
const key = getDataSet(e).key; const key = getDataSet(e).key;
@@ -63,21 +67,26 @@ Page({
paginationChange(e: any) { paginationChange(e: any) {
this.getList(e.detail.curr_page); this.getList(e.detail.curr_page);
}, },
getData() {
post('ErpAccount/ajaxList', { state: 1 }).then((res: any) => {
const list = toArray(res.data?.list).map((el) => ({
label: el.account_name,
value: el.account_id,
}));
this.setData({ accounts: list });
});
post('ErpCrm/ajaxList').then((res: any) => {
const list = toArray(res.data?.list).map((el) => ({
label: el.crm_name,
value: el.crm_id,
}));
this.setData({ crms: list });
});
},
getList(curr: number = 1) { getList(curr: number = 1) {
this.data.params.curr_page = curr; this.data.params.curr_page = curr;
this.setData({ params: this.data.params }); this.setData({ params: this.data.params });
const temp = cloneLite(this.data.params); const temp = cloneLite(this.data.params);
if (temp.order_step && temp.order_step.length) {
temp.order_step = temp.order_step.join(',');
} else {
delete temp.order_step;
}
if (temp.process_state && temp.process_state.length) {
temp.process_state = temp.process_state.join(',');
} else {
delete temp.process_state;
}
post('ErpAccount/flow', temp).then((res: any) => { post('ErpAccount/flow', temp).then((res: any) => {
const list = toArray(res.data); const list = toArray(res.data);
@@ -104,6 +113,16 @@ Page({
}); });
}); });
}, },
onViewAttachment(e: any) {
const data = getDataSet(e);
const index = data.index;
const item = this.data.list[index];
wx.navigateTo({
url: `/pages/base/viewAttachment/viewAttachment?rel_account_log_id=${
item.rel_account_log_id || ''
}&rel_bill_no=${item.rel_bill_no}&title=${encodeURIComponent(`${item.rel_bill_no} 附件`)}`,
});
},
/** /**
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */

View File

@@ -1,23 +1,29 @@
<page-plugin isAuth="{{authInfo['SF_FINANCE_TRANSFER_VIEW']}}" loading="{{loading}}" <page-plugin isAuth="{{authInfo['SF_FINANCE_FLOW_VIEW']}}" loading="{{loading}}"
is-login="{{isLogin}}" bind:handleLogin="handleLogin"> is-login="{{isLogin}}" bind:handleLogin="handleLogin">
<search-popup placeholder="输入单据编号" bind:change="searchChange" bind:ok="searchOk" <search-popup placeholder="输入单据编号" bind:change="searchChange" bind:ok="searchOk"
bind:reset="searchReset" value="{{params.rel_bill_no}}" data-key="rel_bill_no"> bind:reset="searchReset" value="{{params.rel_bill_no}}" data-key="rel_bill_no">
<view slot="content"> <view slot="content">
<!-- <search-input label="付款账户" value="{{params.account_name}}" data-key="account_name" <search-input label="业务类型" value="{{params.type}}" data-key="type"
bind:change="searchChange" /> --> bind:change="searchChange" />
<!-- <option-cell-plugin title="单据状态" value="{{params.state || ''}}" bind:change="searchChange" <option-cell-plugin title="收支类型" value="{{params.pay_type || ''}}" bind:change="searchChange"
mode="radio" options="{{states}}" data-key="state" /> --> mode="radio" options="{{payType}}" data-key="pay_type" />
<select-plugin title="账户" options="{{accounts}}" value="{{params.account_id}}"
bind:change="searchChange" data-key="account_id" />
<select-plugin title="往来单位" options="{{crms}}" value="{{params.crm_id}}"
bind:change="searchChange" data-key="crm_id" />
<date-picker-plugin title="交易开始日期" value="{{params.pay_dateL}}" data-key="pay_dateL" <date-picker-plugin title="交易开始日期" value="{{params.pay_dateL}}" data-key="pay_dateL"
bind:confirm="searchChange" /> bind:confirm="searchChange" />
<date-picker-plugin title="交易结束日期" value="{{params.pay_dateU}}" data-key="pay_dateU" <date-picker-plugin title="交易结束日期" value="{{params.pay_dateU}}" data-key="pay_dateU"
bind:confirm="searchChange" /> bind:confirm="searchChange" />
<!-- <date-picker-plugin title="创建开始日期" value="{{params.create_dateL}}" data-key="create_dateL" <date-picker-plugin title="创建开始日期" value="{{params.create_dateL}}" data-key="create_dateL"
bind:confirm="searchChange" /> bind:confirm="searchChange" />
<date-picker-plugin title="创建结束日期" value="{{params.create_dateU}}" data-key="create_dateU" <date-picker-plugin title="创建结束日期" value="{{params.create_dateU}}" data-key="create_dateU"
bind:confirm="searchChange" /> --> bind:confirm="searchChange" />
</view> </view>
</search-popup> </search-popup>
@@ -27,11 +33,14 @@
<empty-plugin wx:if="{{list.length == 0}}" /> <empty-plugin wx:if="{{list.length == 0}}" />
<card-plugin wx:for="{{ list }}" wx:key="account_log_id"> <card-plugin wx:for="{{ list }}" wx:key="account_log_id">
<view slot="header">{{ item.rel_bill_no }}</view> <view slot="header" style="display: flex;justify-content: space-between;width: 100%;">
<view>{{ item.rel_bill_no }}</view>
<view style="font-weight: normal;">{{item.type}}</view>
</view>
<view slot="content"> <view slot="content">
<card-item-plugin label="业务类型" value="{{item.type}}" /> <!-- <card-item-plugin label="业务类型" value="{{item.type}}" /> -->
<card-item-plugin label="账户" value="{{item.account_name}}" /> <card-item-plugin label="账户" value="{{item.account_name}}" />
<card-item-plugin label="收支类型" value="{{item.pay_type}}" /> <card-item-plugin label="收支类型" value="{{payTypeObj[item.pay_type]}}" />
<card-item-plugin label="变更金额" value="{{item.amount}}" /> <card-item-plugin label="变更金额" value="{{item.amount}}" />
<card-item-plugin label="变更前" value="{{item.before}}" /> <card-item-plugin label="变更前" value="{{item.before}}" />
<card-item-plugin label="剩余金额" value="{{item.after}}" /> <card-item-plugin label="剩余金额" value="{{item.after}}" />
@@ -45,6 +54,10 @@
<card-item-plugin label="交易时间" value="{{item.pay_date}}" /> <card-item-plugin label="交易时间" value="{{item.pay_date}}" />
<card-item-plugin label="创建日期" value="{{item.create_date}}" /> <card-item-plugin label="创建日期" value="{{item.create_date}}" />
</view> </view>
<view slot="footer" class="card-plugin-footer">
<t-button wx:if="{{item.file_cnt}}" size="small" bind:tap="onViewAttachment"
data-index="{{index}}">附件({{item.file_cnt}})</t-button>
</view>
</card-plugin> </card-plugin>
<pagination-plugin curr_page="{{params.curr_page}}" page_count="{{params.page_count}}" <pagination-plugin curr_page="{{params.curr_page}}" page_count="{{params.page_count}}"
total="{{count}}" bind:change="paginationChange" /> total="{{count}}" bind:change="paginationChange" />

View File

@@ -90,7 +90,14 @@ Page({
}); });
}); });
}, },
onOrderDetail(e: any) {
const data = getDataSet(e);
const index = data.index;
const item = this.data.list[index];
wx.navigateTo({
url: `/pages/finance/giroDetail/giroDetail?head_id=${item.head_id}`,
});
},
onOrderDel(e: any) { onOrderDel(e: any) {
const data = getDataSet(e); const data = getDataSet(e);
const index = data.index; const index = data.index;

View File

@@ -43,6 +43,8 @@
<card-item-plugin label="创建日期" value="{{item.create_date}}" /> <card-item-plugin label="创建日期" value="{{item.create_date}}" />
</view> </view>
<view slot="footer" class="card-plugin-footer"> <view slot="footer" class="card-plugin-footer">
<t-button size="small" theme="primary" bind:tap="onOrderDetail" data-index="{{index}}">详情
</t-button>
<t-button wx:if="{{authInfo['SF_FINANCE_TRANSFER_DEL']}}" size="small" theme="danger" <t-button wx:if="{{authInfo['SF_FINANCE_TRANSFER_DEL']}}" size="small" theme="danger"
bind:tap="onOrderDel" data-index="{{index}}">删除</t-button> bind:tap="onOrderDel" data-index="{{index}}">删除</t-button>
<t-button wx:if="{{item.total_att}}" size="small" bind:tap="onViewAttachment" <t-button wx:if="{{item.total_att}}" size="small" bind:tap="onViewAttachment"

View File

@@ -0,0 +1,9 @@
{
"usingComponents": {
"card-plugin": "/pages/components/card-plugin/card-plugin",
"card-item-plugin": "/pages/components/card-item-plugin/card-item-plugin",
"total-bar-plugin": "/pages/components/total-bar-plugin/total-bar-plugin",
"t-cell": "tdesign-miniprogram/cell/cell"
},
"navigationBarTitleText": "转账单详情"
}

View File

@@ -0,0 +1,118 @@
import { OSSBaseUrl } from '@/utils/config';
import { loginStatusPage, post } from '@/utils/https';
import {
cloneLite,
formatFileSize,
getAuthInfo,
getDataSet,
getFileType,
mediaPreview,
toArray,
toObject,
} from '@/utils/util';
const defaultParams = { head_id: '' };
Page({
/**
* 页面的初始数据
*/
data: {
params: cloneLite(defaultParams) as any,
list: [] as any[],
count: 0,
info: {} as any,
files: [] as any,
detail: [] as any,
},
handleLogin(e: any) {
this.setData({ isLogin: e.detail });
if (e.detail) {
this.init();
}
},
init() {
this.setData({ authInfo: getAuthInfo() });
this.getList();
},
getList() {
this.setData({ params: this.data.params });
const temp = cloneLite(this.data.params);
post('ErpFinance/info', temp).then((res: any) => {
const data = toObject(res.data);
const info = toObject(data.info);
wx.setNavigationBarTitle({ title: `${info.bill_no} 详情` });
this.setData({
detail: toArray(info.rows),
info: info,
});
});
post('ErpFinance/fileList', temp).then((res: any) => {
this.setData({
files: toArray(res.data).map((el) => {
el._file_type = getFileType(el.file_name);
el.file_path = `${OSSBaseUrl}${el.file_path}`;
el._file_size = formatFileSize(el.file_size);
return el;
}),
});
});
},
onPreview(e: any) {
const data = getDataSet(e);
const index = data.index;
const item = this.data.files[index];
if (item._file_type != 'file') {
mediaPreview([item.file_path], item.file_path);
}
},
onPreview2() {
const path = `${OSSBaseUrl}${this.data.info.file_name}`;
// console.log(path);
mediaPreview([path], path);
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
const { head_id } = options;
this.data.params.head_id = head_id;
loginStatusPage(this);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {},
/**
* 生命周期函数--监听页面显示
*/
onShow() {},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {},
});

View File

@@ -0,0 +1,37 @@
<page-plugin isAuth="{{authInfo['SF_FINANCE_TRANSFER_VIEW']}}" loading="{{loading}}"
is-login="{{isLogin}}" bind:handleLogin="handleLogin">
<total-bar-plugin customStyle="flex-direction: column;">
<card-item-plugin label="单据编号" value="{{info.bill_no}}" />
<card-item-plugin label="单据日期" value="{{info.bill_date}}" />
<!-- <card-item-plugin label="往来单位" value="{{info.crm_name}}" /> -->
<card-item-plugin label="付款账户" value="{{info.account_name}}" />
<card-item-plugin label="实付金额" value="{{info.total_amount}}" />
<card-item-plugin label="备注" value="{{info.comments}}" />
</total-bar-plugin>
<!-- <t-cell title="Excel附件" left-icon="file-excel"
custom-style="padding-left:0;padding-right:0;position: sticky;top: 0;" arrow
bind:tap="onPreview2" /> -->
<t-cell title="附件" left-icon="file"
custom-style="padding-left:0;padding-right:0;position: sticky;top: 0;z-index:1"
bordered="{{false}}" />
<view style="border: 1px solid #ddd;border-radius: 8rpx;padding: 8rpx;">
<block wx:for="{{files}}" wx:key="index">
<t-cell title="{{item.file_name}}" hover="{{item._file_type != 'file'}}"
arrow="{{item._file_type != 'file'}}" bind:tap="onPreview" data-index="{{index}}" />
</block>
</view>
<t-cell wx:if="{{ detail.length }}" title="收款账户明细" left-icon="article" note="{{detail.length}}条"
custom-style="padding-left:0;padding-right:0;position: sticky;top: 0;z-index:1"
bordered="{{false}}" />
<card-plugin wx:for="{{ detail }}" wx:key="detail_id" showAll="1">
<view slot="header">{{ item.account_name }}</view>
<view slot="content">
<card-item-plugin label="金额" value="{{item.item_amount}}" />
<card-item-plugin label="备注" value="{{item.comments}}" />
</view>
</card-plugin>
</page-plugin>

View File

@@ -0,0 +1 @@
/* pages/finance/giroDetail/giroDetail.wxss */

View File

@@ -90,7 +90,14 @@ Page({
}); });
}); });
}, },
onOrderDetail(e: any) {
const data = getDataSet(e);
const index = data.index;
const item = this.data.list[index];
wx.navigateTo({
url: `/pages/finance/incomeDetail/incomeDetail?head_id=${item.head_id}`,
});
},
onOrderDel(e: any) { onOrderDel(e: any) {
const data = getDataSet(e); const data = getDataSet(e);
const index = data.index; const index = data.index;

View File

@@ -48,6 +48,8 @@
<card-item-plugin label="创建日期" value="{{item.create_date}}" /> <card-item-plugin label="创建日期" value="{{item.create_date}}" />
</view> </view>
<view slot="footer" class="card-plugin-footer"> <view slot="footer" class="card-plugin-footer">
<t-button size="small" theme="primary" bind:tap="onOrderDetail" data-index="{{index}}">详情
</t-button>
<t-button wx:if="{{authInfo['SF_FINANCE_INCOME_DEL']}}" size="small" theme="danger" <t-button wx:if="{{authInfo['SF_FINANCE_INCOME_DEL']}}" size="small" theme="danger"
bind:tap="onOrderDel" data-index="{{index}}">删除</t-button> bind:tap="onOrderDel" data-index="{{index}}">删除</t-button>
<t-button wx:if="{{item.total_att}}" size="small" bind:tap="onViewAttachment" <t-button wx:if="{{item.total_att}}" size="small" bind:tap="onViewAttachment"

View File

@@ -0,0 +1,9 @@
{
"usingComponents": {
"card-plugin": "/pages/components/card-plugin/card-plugin",
"card-item-plugin": "/pages/components/card-item-plugin/card-item-plugin",
"total-bar-plugin": "/pages/components/total-bar-plugin/total-bar-plugin",
"t-cell": "tdesign-miniprogram/cell/cell"
},
"navigationBarTitleText": "收入单详情"
}

View File

@@ -0,0 +1,118 @@
import { OSSBaseUrl } from '@/utils/config';
import { loginStatusPage, post } from '@/utils/https';
import {
cloneLite,
formatFileSize,
getAuthInfo,
getDataSet,
getFileType,
mediaPreview,
toArray,
toObject,
} from '@/utils/util';
const defaultParams = { head_id: '' };
Page({
/**
* 页面的初始数据
*/
data: {
params: cloneLite(defaultParams) as any,
list: [] as any[],
count: 0,
info: {} as any,
files: [] as any,
detail: [] as any,
},
handleLogin(e: any) {
this.setData({ isLogin: e.detail });
if (e.detail) {
this.init();
}
},
init() {
this.setData({ authInfo: getAuthInfo() });
this.getList();
},
getList() {
this.setData({ params: this.data.params });
const temp = cloneLite(this.data.params);
post('ErpFinance/info', temp).then((res: any) => {
const data = toObject(res.data);
const info = toObject(data.info);
wx.setNavigationBarTitle({ title: `${info.bill_no} 详情` });
this.setData({
detail: toArray(info.rows),
info: info,
});
});
post('ErpFinance/fileList', temp).then((res: any) => {
this.setData({
files: toArray(res.data).map((el) => {
el._file_type = getFileType(el.file_name);
el.file_path = `${OSSBaseUrl}${el.file_path}`;
el._file_size = formatFileSize(el.file_size);
return el;
}),
});
});
},
onPreview(e: any) {
const data = getDataSet(e);
const index = data.index;
const item = this.data.files[index];
if (item._file_type != 'file') {
mediaPreview([item.file_path], item.file_path);
}
},
onPreview2() {
const path = `${OSSBaseUrl}${this.data.info.file_name}`;
// console.log(path);
mediaPreview([path], path);
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
const { head_id } = options;
this.data.params.head_id = head_id;
loginStatusPage(this);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {},
/**
* 生命周期函数--监听页面显示
*/
onShow() {},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {},
});

View File

@@ -0,0 +1,37 @@
<page-plugin isAuth="{{authInfo['SF_FINANCE_INCOME_VIEW']}}" loading="{{loading}}"
is-login="{{isLogin}}" bind:handleLogin="handleLogin">
<total-bar-plugin customStyle="flex-direction: column;">
<card-item-plugin label="单据编号" value="{{info.bill_no}}" />
<card-item-plugin label="单据日期" value="{{info.bill_date}}" />
<card-item-plugin label="往来单位" value="{{info.crm_name}}" />
<card-item-plugin label="收入账户" value="{{info.account_name}}" />
<card-item-plugin label="收入金额" value="{{info.total_amount}}" />
<card-item-plugin label="备注" value="{{info.comments}}" />
</total-bar-plugin>
<!-- <t-cell title="Excel附件" left-icon="file-excel"
custom-style="padding-left:0;padding-right:0;position: sticky;top: 0;" arrow
bind:tap="onPreview2" /> -->
<t-cell title="附件" left-icon="file"
custom-style="padding-left:0;padding-right:0;position: sticky;top: 0;z-index:1"
bordered="{{false}}" />
<view style="border: 1px solid #ddd;border-radius: 8rpx;padding: 8rpx;">
<block wx:for="{{files}}" wx:key="index">
<t-cell title="{{item.file_name}}" hover="{{item._file_type != 'file'}}"
arrow="{{item._file_type != 'file'}}" bind:tap="onPreview" data-index="{{index}}" />
</block>
</view>
<t-cell wx:if="{{ detail.length }}" title="收入项目明细" left-icon="article" note="{{detail.length}}条"
custom-style="padding-left:0;padding-right:0;position: sticky;top: 0;z-index:1"
bordered="{{false}}" />
<card-plugin wx:for="{{ detail }}" wx:key="detail_id" showAll="1">
<view slot="header">{{ item.finance_item_name }}</view>
<view slot="content">
<card-item-plugin label="金额" value="{{item.item_amount}}" />
<card-item-plugin label="备注" value="{{item.comments}}" />
</view>
</card-plugin>
</page-plugin>

View File

@@ -90,7 +90,14 @@ Page({
}); });
}); });
}, },
onOrderDetail(e: any) {
const data = getDataSet(e);
const index = data.index;
const item = this.data.list[index];
wx.navigateTo({
url: `/pages/finance/outcomeDetail/outcomeDetail?head_id=${item.head_id}`,
});
},
onOrderDel(e: any) { onOrderDel(e: any) {
const data = getDataSet(e); const data = getDataSet(e);
const index = data.index; const index = data.index;

View File

@@ -48,6 +48,8 @@
<card-item-plugin label="创建日期" value="{{item.create_date}}" /> <card-item-plugin label="创建日期" value="{{item.create_date}}" />
</view> </view>
<view slot="footer" class="card-plugin-footer"> <view slot="footer" class="card-plugin-footer">
<t-button size="small" theme="primary" bind:tap="onOrderDetail" data-index="{{index}}">详情
</t-button>
<t-button wx:if="{{authInfo['SF_FINANCE_OUTCOME_DEL']}}" size="small" theme="danger" <t-button wx:if="{{authInfo['SF_FINANCE_OUTCOME_DEL']}}" size="small" theme="danger"
bind:tap="onOrderDel" data-index="{{index}}">删除</t-button> bind:tap="onOrderDel" data-index="{{index}}">删除</t-button>
<t-button wx:if="{{item.total_att}}" size="small" bind:tap="onViewAttachment" <t-button wx:if="{{item.total_att}}" size="small" bind:tap="onViewAttachment"

View File

@@ -0,0 +1,9 @@
{
"usingComponents": {
"card-plugin": "/pages/components/card-plugin/card-plugin",
"card-item-plugin": "/pages/components/card-item-plugin/card-item-plugin",
"total-bar-plugin": "/pages/components/total-bar-plugin/total-bar-plugin",
"t-cell": "tdesign-miniprogram/cell/cell"
},
"navigationBarTitleText": "支出单详情"
}

View File

@@ -0,0 +1,118 @@
import { OSSBaseUrl } from '@/utils/config';
import { loginStatusPage, post } from '@/utils/https';
import {
cloneLite,
formatFileSize,
getAuthInfo,
getDataSet,
getFileType,
mediaPreview,
toArray,
toObject,
} from '@/utils/util';
const defaultParams = { head_id: '' };
Page({
/**
* 页面的初始数据
*/
data: {
params: cloneLite(defaultParams) as any,
list: [] as any[],
count: 0,
info: {} as any,
files: [] as any,
detail: [] as any,
},
handleLogin(e: any) {
this.setData({ isLogin: e.detail });
if (e.detail) {
this.init();
}
},
init() {
this.setData({ authInfo: getAuthInfo() });
this.getList();
},
getList() {
this.setData({ params: this.data.params });
const temp = cloneLite(this.data.params);
post('ErpFinance/info', temp).then((res: any) => {
const data = toObject(res.data);
const info = toObject(data.info);
wx.setNavigationBarTitle({ title: `${info.bill_no} 详情` });
this.setData({
detail: toArray(info.rows),
info: info,
});
});
post('ErpFinance/fileList', temp).then((res: any) => {
this.setData({
files: toArray(res.data).map((el) => {
el._file_type = getFileType(el.file_name);
el.file_path = `${OSSBaseUrl}${el.file_path}`;
el._file_size = formatFileSize(el.file_size);
return el;
}),
});
});
},
onPreview(e: any) {
const data = getDataSet(e);
const index = data.index;
const item = this.data.files[index];
if (item._file_type != 'file') {
mediaPreview([item.file_path], item.file_path);
}
},
onPreview2() {
const path = `${OSSBaseUrl}${this.data.info.file_name}`;
// console.log(path);
mediaPreview([path], path);
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
const { head_id } = options;
this.data.params.head_id = head_id;
loginStatusPage(this);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {},
/**
* 生命周期函数--监听页面显示
*/
onShow() {},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {},
});

View File

@@ -0,0 +1,37 @@
<page-plugin isAuth="{{authInfo['SF_FINANCE_OUTCOME_VIEW']}}" loading="{{loading}}"
is-login="{{isLogin}}" bind:handleLogin="handleLogin">
<total-bar-plugin customStyle="flex-direction: column;">
<card-item-plugin label="单据编号" value="{{info.bill_no}}" />
<card-item-plugin label="单据日期" value="{{info.bill_date}}" />
<card-item-plugin label="往来单位" value="{{info.crm_name}}" />
<card-item-plugin label="支出账户" value="{{info.account_name}}" />
<card-item-plugin label="支出金额" value="{{info.total_amount}}" />
<card-item-plugin label="备注" value="{{info.comments}}" />
</total-bar-plugin>
<!-- <t-cell title="Excel附件" left-icon="file-excel"
custom-style="padding-left:0;padding-right:0;position: sticky;top: 0;" arrow
bind:tap="onPreview2" /> -->
<t-cell title="附件" left-icon="file"
custom-style="padding-left:0;padding-right:0;position: sticky;top: 0;z-index:1"
bordered="{{false}}" />
<view style="border: 1px solid #ddd;border-radius: 8rpx;padding: 8rpx;">
<block wx:for="{{files}}" wx:key="index">
<t-cell title="{{item.file_name}}" hover="{{item._file_type != 'file'}}"
arrow="{{item._file_type != 'file'}}" bind:tap="onPreview" data-index="{{index}}" />
</block>
</view>
<t-cell wx:if="{{ detail.length }}" title="支出项目明细" left-icon="article" note="{{detail.length}}条"
custom-style="padding-left:0;padding-right:0;position: sticky;top: 0;z-index:1"
bordered="{{false}}" />
<card-plugin wx:for="{{ detail }}" wx:key="detail_id" showAll="1">
<view slot="header">{{ item.finance_item_name }}</view>
<view slot="content">
<card-item-plugin label="金额" value="{{item.item_amount}}" />
<card-item-plugin label="备注" value="{{item.comments}}" />
</view>
</card-plugin>
</page-plugin>

View File

@@ -1,4 +1,4 @@
<page-plugin isAuth="{{authInfo['SF_ERP_GROUP_VIEW']}}" loading="{{loading}}" is-login="{{isLogin}}" <page-plugin isAuth="{{authInfo['SF_MY_RIGHT_VIEW']}}" loading="{{loading}}" is-login="{{isLogin}}"
bind:handleLogin="handleLogin" customStyle="padding-top: 0"> bind:handleLogin="handleLogin" customStyle="padding-top: 0">
<empty-plugin wx:if="{{list.length == 0}}" /> <empty-plugin wx:if="{{list.length == 0}}" />
<view wx:if="{{list.length}}" class="top"> <view wx:if="{{list.length}}" class="top">

View File

@@ -20,7 +20,8 @@
<card-item-plugin label="创建日期" value="{{item.create_date}}" /> <card-item-plugin label="创建日期" value="{{item.create_date}}" />
</view> </view>
<view slot="footer" class="card-plugin-footer"> <view slot="footer" class="card-plugin-footer">
<t-button size="small" theme="primary" bind:tap="onOrderToTop" data-index="{{index}}">移至顶部 <t-button wx:if="{{authInfo['SF_SET_ORDER_SORT']}}" size="small" theme="primary"
bind:tap="onOrderToTop" data-index="{{index}}">移至顶部
</t-button> </t-button>
</view> </view>
</card-plugin> </card-plugin>

View File

@@ -1,4 +1,4 @@
<page-plugin isAuth="{{authInfo['SF_ERP_PURCHASE_STORE_VIEW']}}" loading="{{loading}}" <page-plugin isAuth="{{authInfo['SF_ERP_OTHER_OUT_VIEW']}}" loading="{{loading}}"
is-login="{{isLogin}}" bind:handleLogin="handleLogin"> is-login="{{isLogin}}" bind:handleLogin="handleLogin">
<total-bar-plugin customStyle="flex-direction: column;"> <total-bar-plugin customStyle="flex-direction: column;">

View File

@@ -1,4 +1,4 @@
<page-plugin isAuth="{{authInfo['SF_ERP_PURCHASE_STORE_VIEW']}}" loading="{{loading}}" <page-plugin isAuth="{{authInfo['SF_ERP_TRANSFER_OUT_VIEW']}}" loading="{{loading}}"
is-login="{{isLogin}}" bind:handleLogin="handleLogin"> is-login="{{isLogin}}" bind:handleLogin="handleLogin">
<total-bar-plugin customStyle="flex-direction: column;"> <total-bar-plugin customStyle="flex-direction: column;">

View File

@@ -1,4 +1,4 @@
<page-plugin isAuth="{{authInfo['SF_ERP_PURCHASE_STORE_VIEW']}}" loading="{{loading}}" <page-plugin isAuth="{{authInfo['SF_ERP_PURCHASE_BACK_VIEW']}}" loading="{{loading}}"
is-login="{{isLogin}}" bind:handleLogin="handleLogin"> is-login="{{isLogin}}" bind:handleLogin="handleLogin">
<total-bar-plugin customStyle="flex-direction: column;"> <total-bar-plugin customStyle="flex-direction: column;">