@@ -0,0 +1,406 @@
|
||||
import request from '../../../../utils/request.js';
|
||||
|
||||
const app = getApp();
|
||||
const MEIYE = 5;
|
||||
|
||||
Component({
|
||||
properties: {
|
||||
status: { type: Number, value: 1, observer: 'reload' },
|
||||
searchDingdan: { type: String, value: '', observer: 'reload' },
|
||||
trigger: { type: Number, value: 0, observer: 'reload' }
|
||||
},
|
||||
|
||||
data: {
|
||||
list: [],
|
||||
page: 1,
|
||||
hasMore: true,
|
||||
loading: false,
|
||||
loadingMore: false,
|
||||
ossImageUrl: app.globalData.ossImageUrl || '',
|
||||
|
||||
showDetail: false,
|
||||
detailItem: null,
|
||||
|
||||
showModify: false,
|
||||
modifyLiyou: '',
|
||||
modifyJine: '',
|
||||
|
||||
showCancel: false,
|
||||
cancelLiyou: '',
|
||||
|
||||
showResubmit: false,
|
||||
resubmitLiyou: '',
|
||||
resubmitJine: '',
|
||||
|
||||
uploading: false,
|
||||
uploadProgressWidth: '0%'
|
||||
},
|
||||
|
||||
lifetimes: {
|
||||
attached() { this.reload(); }
|
||||
},
|
||||
|
||||
methods: {
|
||||
reload() {
|
||||
this.setData({ page: 1, list: [], hasMore: true });
|
||||
this.loadData();
|
||||
},
|
||||
|
||||
mapItem(item) {
|
||||
const z = Number(item.zhuangtai);
|
||||
let display_status = '未知', status_class = 'zhuangtai-weizhi';
|
||||
if (z === 1) { display_status = '待缴纳'; status_class = 'zhuangtai-daijiaona'; }
|
||||
else if (z === 2) { display_status = '已缴纳'; status_class = 'zhuangtai-yijiaona'; }
|
||||
else if (z === 3) { display_status = '申诉中'; status_class = 'zhuangtai-shensuzhong'; }
|
||||
else if (z === 4) { display_status = '已驳回'; status_class = 'zhuangtai-yibohui'; }
|
||||
|
||||
const zhengju = (item.zhengju_tupian || []).map(img => ({
|
||||
id: img.id,
|
||||
url: img.url,
|
||||
fullUrl: this.getFullUrl(img.url)
|
||||
}));
|
||||
const shensu = (item.shensu_tupian || []).map(img => ({
|
||||
id: img.id,
|
||||
url: img.url,
|
||||
fullUrl: this.getFullUrl(img.url)
|
||||
}));
|
||||
|
||||
return {
|
||||
...item,
|
||||
display_status,
|
||||
status_class,
|
||||
create_time: item.CreateTime || '',
|
||||
zhengju_list: zhengju,
|
||||
shensu_list: shensu,
|
||||
staff_label: item.staff_display_name ? `客服:${item.staff_display_name}` : ''
|
||||
};
|
||||
},
|
||||
|
||||
async loadData(isLoadMore = false) {
|
||||
if (this.data.loading || this.data.loadingMore) return;
|
||||
if (isLoadMore && !this.data.hasMore) return;
|
||||
|
||||
if (isLoadMore) this.setData({ loadingMore: true });
|
||||
else this.setData({ loading: true });
|
||||
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/yonghu/sjfklbhq',
|
||||
method: 'POST',
|
||||
data: {
|
||||
page: this.data.page,
|
||||
page_size: MEIYE,
|
||||
zhuangtai: this.data.status,
|
||||
sousuo_dingdan_id: this.data.searchDingdan
|
||||
}
|
||||
});
|
||||
if (res.statusCode === 200 && res.data.code === 0) {
|
||||
const data = res.data.data;
|
||||
const rows = (data.list || []).map(item => this.mapItem(item));
|
||||
const newList = isLoadMore ? this.data.list.concat(rows) : rows;
|
||||
this.setData({
|
||||
list: newList,
|
||||
hasMore: data.has_more || false,
|
||||
page: isLoadMore ? this.data.page + 1 : 2,
|
||||
loading: false,
|
||||
loadingMore: false
|
||||
});
|
||||
} else {
|
||||
wx.showToast({ title: res.data?.msg || '加载失败', icon: 'none' });
|
||||
this.setData({ loading: false, loadingMore: false });
|
||||
}
|
||||
} catch (e) {
|
||||
wx.showToast({ title: '网络请求失败', icon: 'none' });
|
||||
this.setData({ loading: false, loadingMore: false });
|
||||
}
|
||||
},
|
||||
|
||||
loadMore() {
|
||||
if (this.data.list.length === 0 || !this.data.hasMore) return;
|
||||
this.loadData(true);
|
||||
},
|
||||
|
||||
openDetail(e) {
|
||||
const item = e.currentTarget.dataset.item;
|
||||
this.setData({ showDetail: true, detailItem: item });
|
||||
},
|
||||
|
||||
closeDetail() {
|
||||
this.setData({ showDetail: false, detailItem: null });
|
||||
},
|
||||
|
||||
goOrder(e) {
|
||||
const id = e.currentTarget.dataset.id || this.data.detailItem?.guanliandingdan_id;
|
||||
if (!id) return;
|
||||
wx.navigateTo({ url: `/pages/merchant-order-detail/merchant-order-detail?dingdan_id=${id}` });
|
||||
},
|
||||
|
||||
openModify() {
|
||||
const item = this.data.detailItem;
|
||||
this.setData({
|
||||
showModify: true,
|
||||
modifyLiyou: item.chufaliyou || '',
|
||||
modifyJine: item.fakuanjine || ''
|
||||
});
|
||||
},
|
||||
|
||||
closeModify() { this.setData({ showModify: false }); },
|
||||
|
||||
onModifyLiyou(e) { this.setData({ modifyLiyou: e.detail.value.slice(0, 500) }); },
|
||||
onModifyJine(e) { this.setData({ modifyJine: e.detail.value }); },
|
||||
|
||||
async submitModify() {
|
||||
const item = this.data.detailItem;
|
||||
const liyou = this.data.modifyLiyou.trim();
|
||||
const jine = parseFloat(this.data.modifyJine);
|
||||
if (!liyou) { wx.showToast({ title: '请输入罚款原因', icon: 'none' }); return; }
|
||||
if (!jine || jine <= 0) { wx.showToast({ title: '金额无效', icon: 'none' }); return; }
|
||||
|
||||
wx.showLoading({ title: '提交中' });
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/dingdan/sjfkxgycx',
|
||||
method: 'POST',
|
||||
data: {
|
||||
operation: 'modify_penalty',
|
||||
dingdan_id: item.guanliandingdan_id,
|
||||
fadan_id: item.id,
|
||||
liyou: liyou,
|
||||
jine: jine.toFixed(2)
|
||||
}
|
||||
});
|
||||
if (res.statusCode === 200 && res.data.code === 0) {
|
||||
wx.showToast({ title: '修改成功', icon: 'success' });
|
||||
this.setData({ showModify: false });
|
||||
this.closeDetail();
|
||||
this.reload();
|
||||
this.triggerEvent('changed');
|
||||
} else {
|
||||
wx.showToast({ title: res.data?.msg || '修改失败', icon: 'none' });
|
||||
}
|
||||
} finally {
|
||||
wx.hideLoading();
|
||||
}
|
||||
},
|
||||
|
||||
openCancel() { this.setData({ showCancel: true, cancelLiyou: '' }); },
|
||||
closeCancel() { this.setData({ showCancel: false }); },
|
||||
onCancelLiyou(e) { this.setData({ cancelLiyou: e.detail.value.slice(0, 500) }); },
|
||||
|
||||
async submitCancel() {
|
||||
const item = this.data.detailItem;
|
||||
const liyou = this.data.cancelLiyou.trim();
|
||||
if (!liyou) { wx.showToast({ title: '请输入驳回理由', icon: 'none' }); return; }
|
||||
wx.showLoading({ title: '提交中' });
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/dingdan/sjfkxgycx',
|
||||
method: 'POST',
|
||||
data: {
|
||||
operation: 'cancel_penalty',
|
||||
dingdan_id: item.guanliandingdan_id,
|
||||
fadan_id: item.id,
|
||||
liyou: liyou
|
||||
}
|
||||
});
|
||||
if (res.statusCode === 200 && res.data.code === 0) {
|
||||
wx.showToast({ title: '已撤销', icon: 'success' });
|
||||
this.setData({ showCancel: false });
|
||||
this.closeDetail();
|
||||
this.reload();
|
||||
this.triggerEvent('changed');
|
||||
} else {
|
||||
wx.showToast({ title: res.data?.msg || '操作失败', icon: 'none' });
|
||||
}
|
||||
} finally {
|
||||
wx.hideLoading();
|
||||
}
|
||||
},
|
||||
|
||||
openResubmit() {
|
||||
const item = this.data.detailItem;
|
||||
this.setData({
|
||||
showResubmit: true,
|
||||
resubmitLiyou: item.chufaliyou || '',
|
||||
resubmitJine: item.fakuanjine || ''
|
||||
});
|
||||
},
|
||||
|
||||
closeResubmit() { this.setData({ showResubmit: false }); },
|
||||
onResubmitLiyou(e) { this.setData({ resubmitLiyou: e.detail.value.slice(0, 500) }); },
|
||||
onResubmitJine(e) { this.setData({ resubmitJine: e.detail.value }); },
|
||||
|
||||
async submitResubmit() {
|
||||
const item = this.data.detailItem;
|
||||
const liyou = this.data.resubmitLiyou.trim();
|
||||
const jine = parseFloat(this.data.resubmitJine);
|
||||
if (!liyou || !jine || jine <= 0) {
|
||||
wx.showToast({ title: '请填写完整信息', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
wx.showLoading({ title: '提交中' });
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/dingdan/sjfkxgycx',
|
||||
method: 'POST',
|
||||
data: {
|
||||
operation: 'resubmit_penalty',
|
||||
dingdan_id: item.guanliandingdan_id,
|
||||
fadan_id: item.id,
|
||||
liyou: liyou,
|
||||
jine: jine.toFixed(2)
|
||||
}
|
||||
});
|
||||
if (res.statusCode === 200 && res.data.code === 0) {
|
||||
wx.showToast({ title: '已重新申请', icon: 'success' });
|
||||
this.setData({ showResubmit: false });
|
||||
this.closeDetail();
|
||||
this.reload();
|
||||
this.triggerEvent('changed');
|
||||
} else {
|
||||
wx.showToast({ title: res.data?.msg || '操作失败', icon: 'none' });
|
||||
}
|
||||
} finally {
|
||||
wx.hideLoading();
|
||||
}
|
||||
},
|
||||
|
||||
chooseEvidence() {
|
||||
const item = this.data.detailItem;
|
||||
const remain = 9 - (item.zhengju_list || []).length;
|
||||
if (remain <= 0) return;
|
||||
wx.chooseMedia({
|
||||
count: remain,
|
||||
mediaType: ['image'],
|
||||
sourceType: ['album', 'camera'],
|
||||
success: async (res) => {
|
||||
const paths = res.tempFiles.map(f => f.tempFilePath);
|
||||
await this.uploadAndAddEvidence(paths);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
async uploadAndAddEvidence(localPaths) {
|
||||
const item = this.data.detailItem;
|
||||
if (!localPaths.length) return;
|
||||
this.setData({ uploading: true, uploadProgressWidth: '0%' });
|
||||
|
||||
try {
|
||||
const keys = await this.uploadToCos(localPaths, item);
|
||||
if (!keys) return;
|
||||
const res = await request({
|
||||
url: '/dingdan/sjfkxgycx',
|
||||
method: 'POST',
|
||||
data: {
|
||||
operation: 'manage_penalty_evidence',
|
||||
dingdan_id: item.guanliandingdan_id,
|
||||
fadan_id: item.id,
|
||||
add_urls: keys,
|
||||
remove_ids: []
|
||||
}
|
||||
});
|
||||
if (res.statusCode === 200 && res.data.code === 0) {
|
||||
wx.showToast({ title: '图片已更新', icon: 'success' });
|
||||
this.reload();
|
||||
this.triggerEvent('changed');
|
||||
this.setData({ showDetail: false, detailItem: null });
|
||||
} else {
|
||||
wx.showToast({ title: res.data?.msg || '保存失败', icon: 'none' });
|
||||
}
|
||||
} finally {
|
||||
this.setData({ uploading: false });
|
||||
}
|
||||
},
|
||||
|
||||
async deleteEvidence(e) {
|
||||
const imgId = e.currentTarget.dataset.id;
|
||||
const item = this.data.detailItem;
|
||||
wx.showLoading({ title: '删除中' });
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/dingdan/sjfkxgycx',
|
||||
method: 'POST',
|
||||
data: {
|
||||
operation: 'manage_penalty_evidence',
|
||||
dingdan_id: item.guanliandingdan_id,
|
||||
fadan_id: item.id,
|
||||
add_urls: [],
|
||||
remove_ids: [imgId]
|
||||
}
|
||||
});
|
||||
if (res.statusCode === 200 && res.data.code === 0) {
|
||||
const zhengju = item.zhengju_list.filter(img => img.id !== imgId);
|
||||
this.setData({ detailItem: { ...item, zhengju_list: zhengju } });
|
||||
this.reload();
|
||||
this.triggerEvent('changed');
|
||||
} else {
|
||||
wx.showToast({ title: res.data?.msg || '删除失败', icon: 'none' });
|
||||
}
|
||||
} finally {
|
||||
wx.hideLoading();
|
||||
}
|
||||
},
|
||||
|
||||
async uploadToCos(localPaths, item) {
|
||||
const credRes = await request({
|
||||
url: '/dingdan/dsscpz',
|
||||
method: 'POST',
|
||||
data: {
|
||||
dingdan_id: item.guanliandingdan_id,
|
||||
fadan_id: item.id,
|
||||
yongtu: 'fakuan_evidence'
|
||||
}
|
||||
});
|
||||
if (credRes.data.code !== 0) {
|
||||
wx.showToast({ title: credRes.data.msg || '凭证失败', icon: 'none' });
|
||||
return null;
|
||||
}
|
||||
const tokenData = credRes.data.data;
|
||||
const credentials = tokenData.credentials || tokenData;
|
||||
const COS = require('../../../../utils/cos-wx-sdk-v5.min.js');
|
||||
const cos = new COS({
|
||||
SimpleUploadMethod: 'putObject',
|
||||
getAuthorization: (_, callback) => {
|
||||
callback({
|
||||
TmpSecretId: credentials.tmpSecretId,
|
||||
TmpSecretKey: credentials.tmpSecretKey,
|
||||
SecurityToken: credentials.sessionToken || '',
|
||||
StartTime: tokenData.startTime,
|
||||
ExpiredTime: tokenData.expiredTime
|
||||
});
|
||||
}
|
||||
});
|
||||
const bucket = tokenData.bucket || 'julebu-1361527063';
|
||||
const region = tokenData.region || 'ap-shanghai';
|
||||
const uid = app.globalData.userInfo?.yonghuid || wx.getStorageSync('uid') || '0000000';
|
||||
const keys = [];
|
||||
const total = localPaths.length;
|
||||
|
||||
for (let i = 0; i < total; i++) {
|
||||
const key = `fakuan/shangjiafakuan/zhengju/${uid}_${item.id}_${Date.now() + i}.jpg`;
|
||||
await new Promise((resolve, reject) => {
|
||||
cos.uploadFile({
|
||||
Bucket: bucket,
|
||||
Region: region,
|
||||
Key: key,
|
||||
FilePath: localPaths[i]
|
||||
}, (err) => err ? reject(err) : resolve());
|
||||
});
|
||||
keys.push(key);
|
||||
this.setData({ uploadProgressWidth: `${((i + 1) / total * 100).toFixed(0)}%` });
|
||||
}
|
||||
return keys;
|
||||
},
|
||||
|
||||
previewImage(e) {
|
||||
const url = e.currentTarget.dataset.url;
|
||||
wx.previewImage({ current: url, urls: [url] });
|
||||
},
|
||||
|
||||
getFullUrl(url) {
|
||||
if (!url) return '';
|
||||
if (url.startsWith('http')) return url;
|
||||
return this.data.ossImageUrl + url;
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
<view class="container">
|
||||
<scroll-view scroll-y class="scroll" bindscrolltolower="loadMore">
|
||||
<view wx:if="{{ loading && list.length === 0 }}" class="tip">加载中...</view>
|
||||
<block wx:for="{{ list }}" wx:key="id">
|
||||
<view class="card" bindtap="openDetail" data-item="{{ item }}">
|
||||
<view class="card-head">
|
||||
<text class="time">{{ item.create_time }}</text>
|
||||
<text class="tag {{ item.status_class }}">{{ item.display_status }}</text>
|
||||
</view>
|
||||
<text class="info">金额:¥{{ item.fakuanjine }}</text>
|
||||
<text class="info">理由:{{ item.chufaliyou }}</text>
|
||||
<text class="info staff" wx:if="{{ item.staff_label }}">{{ item.staff_label }}</text>
|
||||
<text class="info link" wx:if="{{ item.guanliandingdan_id }}">订单:{{ item.guanliandingdan_id }}</text>
|
||||
</view>
|
||||
</block>
|
||||
<view wx:if="{{ list.length > 0 && !loadingMore && hasMore }}" class="load-more-btn" bindtap="loadMore">点击获取更多</view>
|
||||
<view wx:if="{{ loadingMore }}" class="tip">加载中...</view>
|
||||
<view wx:if="{{ !hasMore && list.length > 0 }}" class="tip">—— 没有更多了 ——</view>
|
||||
<view wx:if="{{ !loading && list.length === 0 }}" class="empty">暂无罚单记录</view>
|
||||
</scroll-view>
|
||||
|
||||
<view wx:if="{{ showDetail }}" class="modal-mask">
|
||||
<view class="modal-panel">
|
||||
<view class="modal-head">
|
||||
<text class="modal-title">罚单详情</text>
|
||||
<view class="modal-close" bindtap="closeDetail">✕</view>
|
||||
</view>
|
||||
<scroll-view scroll-y class="modal-body">
|
||||
<view class="row"><text class="lbl">罚款金额</text><text class="val strong">¥{{ detailItem.fakuanjine }}</text></view>
|
||||
<view class="row"><text class="lbl">状态</text><text class="tag {{ detailItem.status_class }}">{{ detailItem.display_status }}</text></view>
|
||||
<view class="row"><text class="lbl">分红到账</text><text class="val">¥{{ detailItem.applicant_bonus_amount || '0.00' }}</text></view>
|
||||
<view class="row" wx:if="{{ detailItem.staff_label }}"><text class="lbl">申请客服</text><text class="val">{{ detailItem.staff_label }}</text></view>
|
||||
<view class="row"><text class="lbl">处罚理由</text><text class="val">{{ detailItem.chufaliyou }}</text></view>
|
||||
<view class="row" wx:if="{{ detailItem.guanliandingdan_id }}">
|
||||
<text class="lbl">关联订单</text>
|
||||
<text class="val link" bindtap="goOrder" data-id="{{ detailItem.guanliandingdan_id }}">{{ detailItem.guanliandingdan_id }} ›</text>
|
||||
</view>
|
||||
<view class="row" wx:if="{{ detailItem.bohuiliyou }}"><text class="lbl">驳回理由</text><text class="val">{{ detailItem.bohuiliyou }}</text></view>
|
||||
<view class="row" wx:if="{{ detailItem.shensuliyou }}"><text class="lbl">申诉理由</text><text class="val">{{ detailItem.shensuliyou }}</text></view>
|
||||
|
||||
<view class="section">
|
||||
<text class="sec-title">处罚证据图(可管理)</text>
|
||||
<view class="img-grid">
|
||||
<block wx:for="{{ detailItem.zhengju_list }}" wx:key="id">
|
||||
<view class="img-box">
|
||||
<image class="img" src="{{ item.fullUrl }}" mode="aspectFill" bindtap="previewImage" data-url="{{ item.fullUrl }}"/>
|
||||
<view wx:if="{{ detailItem.zhuangtai === 1 || detailItem.zhuangtai === 3 }}" class="img-del" catchtap="deleteEvidence" data-id="{{ item.id }}">✕</view>
|
||||
</view>
|
||||
</block>
|
||||
<view wx:if="{{ (detailItem.zhuangtai === 1 || detailItem.zhuangtai === 3) && detailItem.zhengju_list.length < 9 }}" class="img-add" bindtap="chooseEvidence">+</view>
|
||||
</view>
|
||||
<view wx:if="{{ uploading }}" class="progress-text">上传中 {{ uploadProgressWidth }}</view>
|
||||
</view>
|
||||
|
||||
<view wx:if="{{ detailItem.shensu_list.length }}" class="section">
|
||||
<text class="sec-title">打手申诉图片</text>
|
||||
<view class="img-grid">
|
||||
<block wx:for="{{ detailItem.shensu_list }}" wx:key="id">
|
||||
<view class="img-box" bindtap="previewImage" data-url="{{ item.fullUrl }}">
|
||||
<image class="img" src="{{ item.fullUrl }}" mode="aspectFill"/>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="modal-foot">
|
||||
<view wx:if="{{ detailItem.zhuangtai === 1 || detailItem.zhuangtai === 3 }}" class="pbtn primary" bindtap="openModify">修改</view>
|
||||
<view wx:if="{{ detailItem.zhuangtai === 1 || detailItem.zhuangtai === 3 }}" class="pbtn warn" bindtap="openCancel">撤销</view>
|
||||
<view wx:if="{{ detailItem.zhuangtai === 4 }}" class="pbtn primary" bindtap="openResubmit">再次申请</view>
|
||||
<view class="pbtn default" bindtap="closeDetail">关闭</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view wx:if="{{ showModify }}" class="modal-mask sub-modal">
|
||||
<view class="modal-panel small">
|
||||
<view class="modal-head"><text class="modal-title">修改罚单</text><view class="modal-close" bindtap="closeModify">✕</view></view>
|
||||
<view class="modal-body">
|
||||
<textarea class="textarea" placeholder="罚款原因" value="{{ modifyLiyou }}" bindinput="onModifyLiyou"/>
|
||||
<input class="input-num" type="digit" placeholder="金额" value="{{ modifyJine }}" bindinput="onModifyJine"/>
|
||||
</view>
|
||||
<view class="modal-foot">
|
||||
<view class="pbtn primary" bindtap="submitModify">确认</view>
|
||||
<view class="pbtn default" bindtap="closeModify">取消</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view wx:if="{{ showCancel }}" class="modal-mask sub-modal">
|
||||
<view class="modal-panel small">
|
||||
<view class="modal-head"><text class="modal-title">撤销罚单</text><view class="modal-close" bindtap="closeCancel">✕</view></view>
|
||||
<view class="modal-body">
|
||||
<textarea class="textarea" placeholder="驳回理由" value="{{ cancelLiyou }}" bindinput="onCancelLiyou"/>
|
||||
</view>
|
||||
<view class="modal-foot">
|
||||
<view class="pbtn warn" bindtap="submitCancel">确认撤销</view>
|
||||
<view class="pbtn default" bindtap="closeCancel">取消</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view wx:if="{{ showResubmit }}" class="modal-mask sub-modal">
|
||||
<view class="modal-panel small">
|
||||
<view class="modal-head"><text class="modal-title">再次申请</text><view class="modal-close" bindtap="closeResubmit">✕</view></view>
|
||||
<view class="modal-body">
|
||||
<textarea class="textarea" placeholder="罚款原因" value="{{ resubmitLiyou }}" bindinput="onResubmitLiyou"/>
|
||||
<input class="input-num" type="digit" placeholder="金额" value="{{ resubmitJine }}" bindinput="onResubmitJine"/>
|
||||
</view>
|
||||
<view class="modal-foot">
|
||||
<view class="pbtn primary" bindtap="submitResubmit">提交</view>
|
||||
<view class="pbtn default" bindtap="closeResubmit">取消</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -0,0 +1,17 @@
|
||||
@import '../../../../pages/penalty/components/fakuan-list/fakuan-list.wxss';
|
||||
|
||||
.staff { color: #1565C0; }
|
||||
.link { color: #1565C0; }
|
||||
.warn { background: #E53935; color: #fff; }
|
||||
.sub-modal { z-index: 1000; }
|
||||
.modal-panel.small { max-height: 60vh; }
|
||||
.input-num {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
margin-top: 16rpx;
|
||||
padding: 16rpx;
|
||||
background: #f9f9f9;
|
||||
border-radius: 10rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
.progress-text { font-size: 22rpx; color: #1565C0; margin-top: 8rpx; }
|
||||
Reference in New Issue
Block a user