剩余模块:生产退料

This commit is contained in:
刘晓鹏 2025-06-10 18:59:21 +08:00
parent 8fb1a6d4fd
commit 4b64b119c8
23 changed files with 1628 additions and 1085 deletions

View File

@ -51,8 +51,8 @@
}) })
} }
const appVersion = '0.1.5' // const appVersion = '0.1.7' //
const appTaiGuoVersion = '0.1.5' // const appTaiGuoVersion = '0.1.7' //
// //
getAppVersion().then(res => { getAppVersion().then(res => {

View File

@ -157,6 +157,11 @@ export const cn = {
'sxdj':'所选单据', 'sxdj':'所选单据',
'yzdj':'验证单据', 'yzdj':'验证单据',
'sdn':'销售出库单号', 'sdn':'销售出库单号',
'slbndy':'数量不能大于' 'slbndy':'数量不能大于',
'scgdh':'生产工单号',
'td':'套打',
'qxztd':'请选择套打',
'jskcbq':'即时库存标签',
'bzwlbq':'标准物料标签'
} }
} }

View File

@ -157,6 +157,11 @@ export const en = {
'sxdj':'SDN #', 'sxdj':'SDN #',
'yzdj':'Pick up Items', 'yzdj':'Pick up Items',
'sdn':'SDN #', 'sdn':'SDN #',
'slbndy':'Qty cannot be greater than' 'slbndy':'Qty cannot be greater than',
'scgdh':'MO#',
'td':'Template',
'qxztd':'Select printing template',
'jskcbq':'Inventory Template',
'bzwlbq':'Incoming Template'
} }
} }

View File

@ -4,6 +4,9 @@
<l-header :title="state.FBillNo" sticky #right> <l-header :title="state.FBillNo" sticky #right>
<view style="margin-right: 32rpx;" @click="dataPushNotification">{{ t('receive.tj') }}</view> <view style="margin-right: 32rpx;" @click="dataPushNotification">{{ t('receive.tj') }}</view>
</l-header> </l-header>
<view class="input-box">
<up-tabs :scrollable="false" :list="state.tabsList" @click="upTabsItemFun"></up-tabs>
</view>
<architecture ref="architectureRef" :dataType="t('home.llyz')" icon="scan" :placeholder="t('verify.tm')" <architecture ref="architectureRef" :dataType="t('home.llyz')" icon="scan" :placeholder="t('verify.tm')"
@scanConfirm="scanConfirmFun" @inputConfirm="changeFun" @scanConfirm="scanConfirmFun" @inputConfirm="changeFun"
:fence="[state.scanFrameRefShow,state.shortcutRefShow]" /> :fence="[state.scanFrameRefShow,state.shortcutRefShow]" />
@ -88,7 +91,10 @@
const state = reactive({ const state = reactive({
scanFrameRefShow: false, scanFrameRefShow: false,
shortcutRefShow: false, shortcutRefShow: false,
tabsList: [
{ name: computed(() => t('index.bz')), type: '1' },
{ name: computed(() => t('index.minbz')), type: '2' },
],
queryString: '', queryString: '',
dataList: [], dataList: [],
scrollHeight: 0, scrollHeight: 0,
@ -124,6 +130,9 @@
}).exec(); }).exec();
// scanFrameRef.value.stateShow(true) // scanFrameRef.value.stateShow(true)
}) })
const upTabsItemFun = (e:any) => {
state.tabsIndex = e.type
}
const scanConfirmFun = (e : any) => { const scanConfirmFun = (e : any) => {
if(e != '') state.code = e if(e != '') state.code = e
getReceiveBillScanData(state.code) getReceiveBillScanData(state.code)
@ -165,21 +174,28 @@
SAL_OUTSTOCKScanData({ SAL_OUTSTOCKScanData({
FBarCode: val, FBarCode: val,
FBillNo: state.FBillNo, FBillNo: state.FBillNo,
IsPack: state.tabsIndex === '1' ? 'true' : 'false'
}).then((res : any) => { }).then((res : any) => {
if (res.data !== null) { if (res.code == 200) {
console.log(res); console.log(res);
scanFrameRef.value.getreceiveBillScanData({ ...res.data, queryString: state.queryString, scanFrameShowSate: state.shortcutDataFeedback.scanFrameShowSate, stashVerify: true }) console.log(state.tabsIndex,'=================1111111111111111111111111111======================》');
if (Object.keys(state.shortcutDataFeedback).length) { if(state.tabsIndex === '2'){
if (state.shortcutDataFeedback.scanFrameShowSate) { scanFrameRef.value.getreceiveBillScanData({ ...res.data, queryString: state.queryString, scanFrameShowSate: state.shortcutDataFeedback.scanFrameShowSate, stashVerify: true })
scanFrameRef.value.stateShow(true) if (Object.keys(state.shortcutDataFeedback).length) {
if (state.shortcutDataFeedback.scanFrameShowSate) {
scanFrameRef.value.stateShow(true)
} else {
postTemporaryScanDraftSaveFun(state.scanFrameDataFeedback)
}
} else { } else {
postTemporaryScanDraftSaveFun(state.scanFrameDataFeedback) scanFrameRef.value.stateShow(true)
} }
} else { } else {
scanFrameRef.value.stateShow(true) console.log(state.tabsIndex,'================================================================》');
fnDataList(state.materialId);
} }
} else { } else {
uni.$u.toast(t('index.bmygtsj')) uni.$u.toast(res.msg)
state.queryString = '' state.queryString = ''
} }
architectureRef.value.closeFun() architectureRef.value.closeFun()
@ -271,7 +287,7 @@
ScanEntry.push({ ScanEntry.push({
Ids:state.materialId, Ids:state.materialId,
EntryIds: item.FVHUBEntryId, EntryIds: item.FVHUBEntryId,
// Qty: item.FVHUBScanQty, FQty: item.FVHUBScanQty + ' ',
// Flot: item.FVHUBFlot, // Flot: item.FVHUBFlot,
// StockId: item.FVHUBStock, // StockId: item.FVHUBStock,
// StockFlex: item.FVHUBStockFlex, // StockFlex: item.FVHUBStockFlex,

View File

@ -40,11 +40,11 @@
<view class="zongjian"></view> <view class="zongjian"></view>
<view>{{ item.FVHUBScanQty }}</view> <view>{{ item.FVHUBScanQty }}</view>
</view> </view>
<!-- <view class="itemBox"> <view class="itemBox">
<view>{{ t('index.ck') }}</view> <view>{{ t('index.scgdh') }}</view>
<view class="zongjian"></view> <view class="zongjian"></view>
<view>{{ item['FVHUBStock.FName'] }}</view> <view>{{ item.FVHUBFBillNo }}</view>
</view> --> </view>
<view class="itemBox"> <view class="itemBox">
<view>{{ t('public.xxh') }}</view> <view>{{ t('public.xxh') }}</view>
<view class="zongjian"></view> <view class="zongjian"></view>
@ -154,6 +154,7 @@
FVHUBEntryId: item.Id, //ID FVHUBEntryId: item.Id, //ID
FVHUBFlot: item.FLot_Text, // FVHUBFlot: item.FLot_Text, //
FVHUBJSON: item.MaxcessSNo, // FVHUBJSON: item.MaxcessSNo, //
FVHUBFBillNo:item.MoBillNo,
FVHUBStock: { FVHUBStock: {
FNUMBER: item.StockId.Number // FNUMBER: item.StockId.Number //
}, },

View File

@ -68,7 +68,7 @@
import { onLoad, onShow, onReachBottom, } from '@dcloudio/uni-app' import { onLoad, onShow, onReachBottom, } from '@dcloudio/uni-app'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { parseTime } from '../../utils/tools.js'; import { parseTime } from '../../utils/tools.js';
import { PRDPPBOMPush, PRDPPBOMScanData, PRDPPBOMView, PRD_ReturnMtrlScanData, PRD_ReturnMtrlView, fStockFlexDetailDelete, temporaryScanDraftSave, temporaryScanList } from '../../common/request/api/api'; import { PRDPPBOMPush, PRDPPBOMScanData, PRDPPBOMView, PRD_ReturnMtrlCheck, PRD_ReturnMtrlScanData, PRD_ReturnMtrlView, fStockFlexDetailDelete, temporaryScanDraftSave, temporaryScanList } from '../../common/request/api/api';
import scanFrame from '../../components/scan-frame/scan-frame.vue' import scanFrame from '../../components/scan-frame/scan-frame.vue'
import tools from '../../components/tools/tools.vue' import tools from '../../components/tools/tools.vue'
import shortcut from '../../components/tools/shortcut.vue' import shortcut from '../../components/tools/shortcut.vue'
@ -271,7 +271,7 @@
}) })
}) })
// //
PRDPPBOMPush({ PRD_ReturnMtrlCheck({
EntryIds: EntryIds.toString(), EntryIds: EntryIds.toString(),
Ids: state.materialId Ids: state.materialId
}).then((resA : any) => { }).then((resA : any) => {

View File

@ -4,8 +4,8 @@
<l-header :title="t('index.zbdy')" sticky></l-header> <l-header :title="t('index.zbdy')" sticky></l-header>
<view class="input-box" @click="printingMachineSelectFun"> <view class="input-box" @click="printingMachineSelectFun">
<view class="input-item"> <view class="input-item">
<up-input :placeholder="t('index.qxzdyj')" border="none" clearable inputAlign="left" v-model="state.printingMachine.name" <up-input :placeholder="t('index.qxzdyj')" border="none" clearable inputAlign="left"
confirmType="next" :disabled="true"> v-model="state.printingMachine.name" confirmType="next" :disabled="true">
<template #prefix> <template #prefix>
<view class="item-title" style="margin-right: 16rpx;">{{ t('index.dyj') }}</view> <view class="item-title" style="margin-right: 16rpx;">{{ t('index.dyj') }}</view>
</template> </template>
@ -15,11 +15,29 @@
</up-input> </up-input>
</view> </view>
</view> </view>
<view class="input-box" @click="()=>{state.pickerShow = true}">
<view class="input-item">
<up-input :placeholder="t('index.qxztd')" border="none" clearable inputAlign="left" v-model="state.centerText"
confirmType="next" :disabled="true">
<template #prefix>
<view class="item-title" style="margin-right: 16rpx;">{{ t('index.td') }}</view>
</template>
<template #suffix>
<up-icon name="search" color="#6c6c6c" size="24"></up-icon>
</template>
</up-input>
</view>
</view>
<view class="btnList" style="margin-top: 32rpx;"> <view class="btnList" style="margin-top: 32rpx;">
<up-button class="btnItem" type="primary" shape="circle" :text="t('index.dyj')" @click="sendHexStr"></up-button> <up-button class="btnItem" type="primary" shape="circle" :text="t('index.dyj')" @click="sendHexStr"></up-button>
</view> </view>
</view> </view>
<bluetoothList ref="bluetoothListRef" :dataList="state.bluetoothList" @getAddress="getAddressFun" /> <bluetoothList ref="bluetoothListRef" :dataList="state.bluetoothList" @getAddress="getAddressFun" />
<up-picker :show="state.pickerShow" keyName="title" :columns="state.pickerList"
@close="() => {state.pickerShow = false}" @cancel="() => {state.pickerShow = false}"
@confirm="pickerConfirmFun"></up-picker>
</view> </view>
</template> </template>
@ -40,6 +58,13 @@
// #endif // #endif
const state = reactive({ const state = reactive({
centerText: '',
centerObj: {},
pickerShow: false,
pickerList: [[
{ title: computed(() => t('index.bzwlbq')), index: '1' },
{ title: computed(() => t('index.jskcbq')), index: '2' },
]],
id: '', id: '',
FBillNo: '', FBillNo: '',
pageData: {}, pageData: {},
@ -58,18 +83,24 @@
console.log(state.pageData); console.log(state.pageData);
}) })
onShow(() => { onShow(() => {
state.centerText = state.pickerList[0][0].title
state.centerObj = state.pickerList[0][0]
uni.getLocation({ uni.getLocation({
type: 'wgs84', type: 'wgs84',
success(res) { success(res) {
console.log('开启定位权限', res) console.log('开启定位权限', res)
}, },
fail: (err:any) => { } fail: (err : any) => { }
}); });
// #ifdef APP-PLUS // #ifdef APP-PLUS
hasPermission() hasPermission()
// #endif // #endif
}) })
const pickerConfirmFun = (val : any) => {
state.centerObj = val.value[0]
state.centerText = val.value[0].title
state.pickerShow = false
}
// //
const hasPermission = () => { const hasPermission = () => {
console.log(uni.getStorageSync('printInfo')); console.log(uni.getStorageSync('printInfo'));
@ -151,7 +182,6 @@
const createLabel = (item : any) => { const createLabel = (item : any) => {
var command = tsc.default.createNew() var command = tsc.default.createNew()
command.setSize(100, 50) command.setSize(100, 50)
command.setGap(2) command.setGap(2)
command.setCls() command.setCls()
command.setQR(30, 100, "L", 7, "A", item.FBarCode) command.setQR(30, 100, "L", 7, "A", item.FBarCode)
@ -166,59 +196,61 @@
command.setPagePrint() command.setPagePrint()
state.sendData = command.getData(); state.sendData = command.getData();
} }
const createLabe2 = (item : any) => {
var command = tsc.default.createNew()
command.setSize(89, 28)
command.setGap(2)
command.setCls()
command.setQR(50, 20, "L", 4, "A", item.FBarCode)
command.setText(180, 20, "TSS24.BF2", 1, 1, `P/N${item.FMaterialId}`)
command.setText(180, 60, "TSS24.BF2", 1, 1, `Qty${item.FQty}`)
command.setText(180, 100, "TSS24.BF2", 1, 1, `Batch No${item.FLot}`)
command.setPagePrint()
state.sendData = command.getData();
}
const sendHexStr = async () => { const sendHexStr = async () => {
try { try {
// 1. // 1.
const createItem = (qty:any) => ({ const createItem = (qty : any) => ({
FBarCodeRule: "01", FBarCodeRule: "01",
FBarCode: `${state.pageData.FBillCode}*${state.pageData.FMaterialId}*${state.pageData.FLotText}*${qty}`, FBarCode: `${state.pageData.FBillCode}*${state.pageData.FMaterialId}*${state.pageData.FLotText}*${qty}`,
FBillCode: state.pageData.FBillCode, FBillCode: state.pageData.FBillCode,
FMaterialId: state.pageData.FMaterialId, FMaterialId: state.pageData.FMaterialId,
FSupplierLot: state.pageData.FSupplierLot, FSupplierLot: state.pageData.FSupplierLot,
FLot: state.pageData.FLotText, FLot: state.pageData.FLotText,
FQty: String(qty) FQty: String(qty)
}); });
const originalQty = Number(state.pageData.FQty);
const splitQty = Number(state.pageData.splitQty);
const remainingQty = originalQty - splitQty;
const items = [
createItem(remainingQty),
createItem(splitQty)
];
const API_KEY = process.env.BARCODE_API_KEY || 'qwe123!@#';
const res = await UHIK_BD_BarCodeMainFileSave({
Key: API_KEY,
Items: items
}, true);
if (res.code !== 200) {
uni.$u.toast(res.msg);
return;
}
for (const [index, item] of items.entries()) {
if (index > 0) {
await new Promise(resolve => setTimeout(resolve, 1000));
}
if (state.centerObj.index === '1') createLabel(item);
if (state.centerObj.index === '2') createLabe2(item);
initPrint();
}
// 2. } catch (error) {
const originalQty = Number(state.pageData.FQty); console.error('标签打印失败:', error);
const splitQty = Number(state.pageData.splitQty); uni.$u.toast('操作失败,请重试');
const remainingQty = originalQty - splitQty; }
// 3.
const items = [
createItem(remainingQty),
createItem(splitQty)
];
// 4.
const API_KEY = process.env.BARCODE_API_KEY || 'qwe123!@#';
// 5. 使async/await
const res = await UHIK_BD_BarCodeMainFileSave({
Key: API_KEY,
Items: items
}, true);
if (res.code !== 200) {
uni.$u.toast(res.msg);
return;
}
// 6. 使
for (const [index, item] of items.entries()) {
//
if (index > 0) {
await new Promise(resolve => setTimeout(resolve, 1000));
}
createLabel(item);
initPrint();
}
} catch (error) {
console.error('标签打印失败:', error);
uni.$u.toast('操作失败,请重试');
}
} }
const initPrint = () => { const initPrint = () => {
if (state.sendData == null) { if (state.sendData == null) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -476,6 +476,195 @@
justify-content: center; justify-content: center;
} }
/* 多行省略 */ /* 多行省略 */
.multi-line-omit[data-v-06cca9b7] {
word-break: break-all;
text-overflow: ellipsis;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
/* 单行省略 */
.one-line-omit[data-v-06cca9b7] {
width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.u-empty[data-v-06cca9b7],
.u-empty__wrap[data-v-06cca9b7],
.u-tabs[data-v-06cca9b7],
.u-tabs__wrapper[data-v-06cca9b7],
.u-tabs__wrapper__scroll-view-wrapper[data-v-06cca9b7],
.u-tabs__wrapper__scroll-view[data-v-06cca9b7],
.u-tabs__wrapper__nav[data-v-06cca9b7],
.u-tabs__wrapper__nav__line[data-v-06cca9b7],
.up-empty[data-v-06cca9b7],
.up-empty__wrap[data-v-06cca9b7],
.up-tabs[data-v-06cca9b7],
.up-tabs__wrapper[data-v-06cca9b7],
.up-tabs__wrapper__scroll-view-wrapper[data-v-06cca9b7],
.up-tabs__wrapper__scroll-view[data-v-06cca9b7],
.up-tabs__wrapper__nav[data-v-06cca9b7],
.up-tabs__wrapper__nav__line[data-v-06cca9b7] {
display: flex;
flex-direction: column;
flex-shrink: 0;
flex-grow: 0;
flex-basis: auto;
align-items: stretch;
align-content: flex-start;
}
.u-badge[data-v-06cca9b7] {
border-top-right-radius: 100px;
border-top-left-radius: 100px;
border-bottom-left-radius: 100px;
border-bottom-right-radius: 100px;
display: flex;
flex-direction: row;
line-height: 11px;
text-align: center;
font-size: 11px;
color: #FFFFFF;
}
.u-badge--dot[data-v-06cca9b7] {
height: 8px;
width: 8px;
}
.u-badge--inverted[data-v-06cca9b7] {
font-size: 13px;
}
.u-badge--not-dot[data-v-06cca9b7] {
padding: 2px 5px;
}
.u-badge--horn[data-v-06cca9b7] {
border-bottom-left-radius: 0;
}
.u-badge--primary[data-v-06cca9b7] {
background-color: #3c9cff;
}
.u-badge--primary--inverted[data-v-06cca9b7] {
color: #3c9cff;
}
.u-badge--error[data-v-06cca9b7] {
background-color: #f56c6c;
}
.u-badge--error--inverted[data-v-06cca9b7] {
color: #f56c6c;
}
.u-badge--success[data-v-06cca9b7] {
background-color: #5ac725;
}
.u-badge--success--inverted[data-v-06cca9b7] {
color: #5ac725;
}
.u-badge--info[data-v-06cca9b7] {
background-color: #909399;
}
.u-badge--info--inverted[data-v-06cca9b7] {
color: #909399;
}
.u-badge--warning[data-v-06cca9b7] {
background-color: #f9ae3d;
}
.u-badge--warning--inverted[data-v-06cca9b7] {
color: #f9ae3d;
}
/* 多行省略 */
.multi-line-omit[data-v-02b0c54f] {
word-break: break-all;
text-overflow: ellipsis;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
/* 单行省略 */
.one-line-omit[data-v-02b0c54f] {
width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.u-empty[data-v-02b0c54f],
.u-empty__wrap[data-v-02b0c54f],
.u-tabs[data-v-02b0c54f],
.u-tabs__wrapper[data-v-02b0c54f],
.u-tabs__wrapper__scroll-view-wrapper[data-v-02b0c54f],
.u-tabs__wrapper__scroll-view[data-v-02b0c54f],
.u-tabs__wrapper__nav[data-v-02b0c54f],
.u-tabs__wrapper__nav__line[data-v-02b0c54f],
.up-empty[data-v-02b0c54f],
.up-empty__wrap[data-v-02b0c54f],
.up-tabs[data-v-02b0c54f],
.up-tabs__wrapper[data-v-02b0c54f],
.up-tabs__wrapper__scroll-view-wrapper[data-v-02b0c54f],
.up-tabs__wrapper__scroll-view[data-v-02b0c54f],
.up-tabs__wrapper__nav[data-v-02b0c54f],
.up-tabs__wrapper__nav__line[data-v-02b0c54f] {
display: flex;
flex-direction: column;
flex-shrink: 0;
flex-grow: 0;
flex-basis: auto;
align-items: stretch;
align-content: flex-start;
}
.u-tabs__wrapper[data-v-02b0c54f] {
display: flex;
flex-direction: row;
align-items: center;
}
.u-tabs__wrapper__scroll-view-wrapper[data-v-02b0c54f] {
flex: 1;
overflow: auto hidden;
}
.u-tabs__wrapper__scroll-view[data-v-02b0c54f] {
display: flex;
flex-direction: row;
flex: 1;
}
.u-tabs__wrapper__nav[data-v-02b0c54f] {
display: flex;
flex-direction: row;
position: relative;
}
.u-tabs__wrapper__nav__item[data-v-02b0c54f] {
padding: 0 11px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
.u-tabs__wrapper__nav__item__text[data-v-02b0c54f] {
font-size: 15px;
color: #606266;
white-space: nowrap !important;
}
.u-tabs__wrapper__nav__item__text--disabled[data-v-02b0c54f] {
color: #c8c9cc !important;
}
.u-tabs__wrapper__nav__line[data-v-02b0c54f] {
height: 3px;
background: #3c9cff;
width: 30px;
position: absolute;
bottom: 2px;
border-radius: 100px;
transition-property: transform;
transition-duration: 300ms;
}
/* 多行省略 */
.multi-line-omit[data-v-df79975b] { .multi-line-omit[data-v-df79975b] {
word-break: break-all; word-break: break-all;
text-overflow: ellipsis; text-overflow: ellipsis;

View File

@ -943,6 +943,172 @@ to {
border-width: 0.5px !important; border-width: 0.5px !important;
} }
/* 多行省略 */ /* 多行省略 */
.multi-line-omit[data-v-eadae74e] {
word-break: break-all;
text-overflow: ellipsis;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
/* 单行省略 */
.one-line-omit[data-v-eadae74e] {
width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.u-empty[data-v-eadae74e],
.u-empty__wrap[data-v-eadae74e],
.u-tabs[data-v-eadae74e],
.u-tabs__wrapper[data-v-eadae74e],
.u-tabs__wrapper__scroll-view-wrapper[data-v-eadae74e],
.u-tabs__wrapper__scroll-view[data-v-eadae74e],
.u-tabs__wrapper__nav[data-v-eadae74e],
.u-tabs__wrapper__nav__line[data-v-eadae74e],
.up-empty[data-v-eadae74e],
.up-empty__wrap[data-v-eadae74e],
.up-tabs[data-v-eadae74e],
.up-tabs__wrapper[data-v-eadae74e],
.up-tabs__wrapper__scroll-view-wrapper[data-v-eadae74e],
.up-tabs__wrapper__scroll-view[data-v-eadae74e],
.up-tabs__wrapper__nav[data-v-eadae74e],
.up-tabs__wrapper__nav__line[data-v-eadae74e] {
display: flex;
flex-direction: column;
flex-shrink: 0;
flex-grow: 0;
flex-basis: auto;
align-items: stretch;
align-content: flex-start;
}
.u-toolbar[data-v-eadae74e] {
height: 42px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.u-toolbar__wrapper__cancel[data-v-eadae74e] {
color: #909193;
font-size: 15px;
padding: 0 15px;
}
.u-toolbar__title[data-v-eadae74e] {
color: #303133;
padding: 0 1.875rem;
font-size: 16px;
flex: 1;
text-align: center;
}
.u-toolbar__wrapper__left[data-v-eadae74e], .u-toolbar__wrapper__right[data-v-eadae74e] {
display: flex;
flex-direction: row;
}
.u-toolbar__wrapper__confirm[data-v-eadae74e] {
color: #3c9cff;
font-size: 15px;
padding: 0 15px;
}
/* 多行省略 */
.multi-line-omit[data-v-91b05052] {
word-break: break-all;
text-overflow: ellipsis;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
/* 单行省略 */
.one-line-omit[data-v-91b05052] {
width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.u-empty[data-v-91b05052],
.u-empty__wrap[data-v-91b05052],
.u-tabs[data-v-91b05052],
.u-tabs__wrapper[data-v-91b05052],
.u-tabs__wrapper__scroll-view-wrapper[data-v-91b05052],
.u-tabs__wrapper__scroll-view[data-v-91b05052],
.u-tabs__wrapper__nav[data-v-91b05052],
.u-tabs__wrapper__nav__line[data-v-91b05052],
.up-empty[data-v-91b05052],
.up-empty__wrap[data-v-91b05052],
.up-tabs[data-v-91b05052],
.up-tabs__wrapper[data-v-91b05052],
.up-tabs__wrapper__scroll-view-wrapper[data-v-91b05052],
.up-tabs__wrapper__scroll-view[data-v-91b05052],
.up-tabs__wrapper__nav[data-v-91b05052],
.up-tabs__wrapper__nav__line[data-v-91b05052] {
display: flex;
flex-direction: column;
flex-shrink: 0;
flex-grow: 0;
flex-basis: auto;
align-items: stretch;
align-content: flex-start;
}
.u-picker[data-v-91b05052] {
position: relative;
}
.u-picker-input[data-v-91b05052] {
position: relative;
}
.u-picker-input .input-cover[data-v-91b05052] {
opacity: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 1;
}
.u-picker__view__column[data-v-91b05052] {
display: flex;
flex-direction: row;
flex: 1;
justify-content: center;
}
.u-picker__view__column__item[data-v-91b05052] {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
font-size: 16px;
text-align: center;
display: block;
color: #303133;
}
.u-picker__view__column__item--disabled[data-v-91b05052] {
cursor: not-allowed;
opacity: 0.35;
}
.u-picker--loading[data-v-91b05052] {
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
background-color: rgba(255, 255, 255, 0.87);
z-index: 1000;
}
/* 多行省略 */
.multi-line-omit[data-v-f0542bdf] { .multi-line-omit[data-v-f0542bdf] {
word-break: break-all; word-break: break-all;
text-overflow: ellipsis; text-overflow: ellipsis;