Commit 04860d1d25228e530320b2d6dfc7b729e4b3f205

Authored by 史婷婷
1 parent cb116d05

feat: 发货单-详情+订货单优化&资信优化

... ... @@ -658,6 +658,14 @@
658 658 }
659 659 },
660 660 {
  661 + "path": "pages/invoice/detail",
  662 + "style": {
  663 + "navigationBarTitleText": "发货单详情",
  664 + "navigationBarBackgroundColor": "#ffffff",
  665 + "navigationBarTextStyle": "black"
  666 + }
  667 + },
  668 + {
661 669 "path": "pages/delay_invoice/index",
662 670 "style": {
663 671 "navigationBarTitleText": "延期发货单",
... ...
... ... @@ -449,6 +449,7 @@ export default {
449 449 font-size: 28rpx;
450 450 color: rgba(0, 0, 0, 0.9);
451 451 text-align: right;
  452 + word-break: break-all;
452 453
453 454 &.act {
454 455 color: $theme-primary;
... ...
  1 +<template>
  2 + <view class="page">
  3 + <scroll-view class="scroll" scroll-y>
  4 + <view class="detail-page">
  5 + <view class="section">
  6 + <text class="row company">{{ form.customerName }}</text>
  7 + <view :class="['status', `status_${form.status}`]" />
  8 + <view class="row"><text class="label">发货日期</text><text class="value">{{ form.shipmentsDate }}</text></view>
  9 + <view class="row"><text class="label">生产厂</text><text class="value">{{ form.workshopName }}</text></view>
  10 + <view class="row"><text class="label">办事处</text><text class="value">{{ form.deptName }}</text></view>
  11 + <view class="row"><text class="label">区域</text><text class="value">{{ form.regionName }}</text></view>
  12 + <view class="row"><text class="label">交货方式</text><text class="value">{{ form.deliveryType }}</text></view>
  13 + <view class="row"><text class="label">目的地</text><text class="value">{{ form.destination }}</text></view>
  14 + </view>
  15 +
  16 + <!-- 产品 -->
  17 + <view class="section2">
  18 + <Product mode="view" :list="form.detailList"
  19 + />
  20 + </view>
  21 + <view class="section">
  22 + <view class="row"><text class="label">签收单据</text><text class="value act">{{ form.fileName }}</text></view>
  23 + </view>
  24 + </view>
  25 + </scroll-view>
  26 + <detail-buttons :buttons="displayButtons" @click="handleButtonClick" />
  27 + </view>
  28 +</template>
  29 +
  30 +<script>
  31 +import { getDetailApi } from '@/api/invoice.js'
  32 +import Product from './product.vue'
  33 +import DetailButtons from '@/components/detail-buttons/index.vue'
  34 +
  35 +export default {
  36 + name: 'InvoiceDetail',
  37 + components: { Product, DetailButtons },
  38 + data() {
  39 + return {
  40 + form: {},
  41 + buttons: [
  42 + { text: '编辑', visible: true, variant: 'outline', event: 'edit' },
  43 + { text: '填写实发数', visible: true, variant: 'outline', event: 'fill' },
  44 + { text: '上传签收单据', visible: true, variant: 'primary', event: 'upload' },
  45 + ]
  46 + }
  47 + },
  48 + computed: {
  49 + statusFlags() {
  50 + const m = this.form || {}
  51 + const e = String(m.status || '')
  52 + return {
  53 + canEdit: e === 'UN_SHIPMENTS',
  54 + canFill: e === 'UN_SHIPMENTS',
  55 + canUpload: e === 'SHIPMENTS',
  56 + }
  57 + },
  58 + displayButtons() {
  59 + const f = this.statusFlags
  60 + return [
  61 + { ...this.buttons[0], visible: f.canEdit && this.$auth.hasPermi('shipping-plan-manage:invoice:modify') },
  62 + { ...this.buttons[1], visible: f.canFill && this.$auth.hasPermi('shipping-plan-manage:invoice:fill') },
  63 + { ...this.buttons[2], visible: f.canUpload && this.$auth.hasPermi('shipping-plan-manage:invoice:upload') },
  64 + ]
  65 + }
  66 + },
  67 + onLoad(query) {
  68 + const id = (query && (query.id || query.code)) || ''
  69 + if (id) this.loadDetail(id)
  70 + },
  71 + methods: {
  72 + async loadDetail(id) {
  73 + try {
  74 + const res = await getDetailApi(id)
  75 + this.form = res.data || {}
  76 + } catch (e) {
  77 + this.form = {}
  78 + }
  79 + },
  80 + handleButtonClick(btn) {
  81 + if (!btn || btn.disabled) return
  82 + const map = {
  83 + edit: () => this.onEdit(),
  84 + fill: () => this.onFill(),
  85 + upload: () => this.onUpload(),
  86 + }
  87 + const fn = map[btn.event]
  88 + if (typeof fn === 'function') fn()
  89 + },
  90 + onEdit() {
  91 + const id = this.form.id || this.form.code
  92 + if (id) uni.navigateTo({ url: `/pages/invoice/modify?id=${id}` })
  93 + },
  94 + onFill() {
  95 + const id = this.form.id || this.form.code
  96 + if (id) uni.navigateTo({ url: `/pages/invoice/fill?id=${id}` })
  97 + },
  98 + onUpload() {
  99 + const id = this.form.id || this.form.code
  100 + if (id) uni.navigateTo({ url: `/pages/invoice/upload?id=${id}` })
  101 + },
  102 + }
  103 +}
  104 +</script>
  105 +
  106 +<style lang="scss" scoped>
  107 +.page {
  108 + display: flex;
  109 + flex-direction: column;
  110 + height: 100vh;
  111 +}
  112 +
  113 +.scroll {
  114 + flex: 1;
  115 + background: #f3f3f3;
  116 +}
  117 +
  118 +.detail-page {
  119 + padding-bottom: 150rpx;
  120 +}
  121 +
  122 +.section {
  123 + padding: 32rpx;
  124 + background: #fff;
  125 + margin-bottom: 20rpx;
  126 + position: relative;
  127 +
  128 + .status {
  129 + position: absolute;
  130 + top: 16rpx;
  131 + right: 52rpx;
  132 + width: 180rpx;
  133 + height: 146rpx;
  134 + background-repeat: no-repeat;
  135 + background-size: 100% 100%;
  136 + background-position: center;
  137 +
  138 + // 已签收
  139 + &_DELIVERED {
  140 + background-image: url('~@/static/images/invoice/status_DELIVERED.png');
  141 + }
  142 +
  143 + // 已发货
  144 + &_SHIPMENTS {
  145 + background-image: url('~@/static/images/invoice/status_SHIPMENTS.png');
  146 + }
  147 +
  148 + // 未发货
  149 + &_UN_SHIPMENTS {
  150 + background-image: url('~@/static/images/invoice/status_UN_SHIPMENTS.png');
  151 + }
  152 +
  153 +
  154 + }
  155 +}
  156 +
  157 +.row {
  158 + display: flex;
  159 + margin-bottom: 28rpx;
  160 +
  161 + &:last-child {
  162 + margin-bottom: 0;
  163 + }
  164 +
  165 + &.company {
  166 + font-size: 36rpx;
  167 + font-weight: 600;
  168 + color: rgba(0, 0, 0, 0.9);
  169 + padding-top: 10rpx;
  170 + margin-bottom: 32rpx;
  171 + line-height: 50rpx;
  172 + }
  173 +
  174 + .label {
  175 + width: 240rpx;
  176 + line-height: 32rpx;
  177 + font-size: 28rpx;
  178 + color: rgba(0, 0, 0, 0.6);
  179 + }
  180 +
  181 + .value {
  182 + flex: 1;
  183 + line-height: 32rpx;
  184 + font-size: 28rpx;
  185 + color: rgba(0, 0, 0, 0.9);
  186 + text-align: right;
  187 + word-break: break-all;
  188 + &.act {
  189 + color: $theme-primary;
  190 + }
  191 +
  192 + }
  193 +}
  194 +
  195 +.title-header {
  196 + background-color: #fff;
  197 + display: flex;
  198 + align-items: center;
  199 + padding: 32rpx 32rpx 22rpx;
  200 + border-bottom: 1rpx dashed #f0f0f0;
  201 +
  202 + &_icon {
  203 + width: 32rpx;
  204 + height: 28rpx;
  205 + margin-right: 16rpx;
  206 + }
  207 +
  208 + span {
  209 + color: rgba(0, 0, 0, 0.9);
  210 + font-size: 32rpx;
  211 + line-height: 44rpx;
  212 + font-weight: 600;
  213 + }
  214 +}
  215 +</style>
... ...
... ... @@ -297,7 +297,7 @@ export default {
297 297 if (!id) return
298 298 const query = '?id=' + encodeURIComponent(id)
299 299 uni.navigateTo({
300   - url: '/pages/credit_manage/detail' + query
  300 + url: '/pages/invoice/detail' + query
301 301 })
302 302 },
303 303 getDicName: getDicName,
... ... @@ -422,13 +422,12 @@ export default {
422 422
423 423 // 已签收
424 424 &.status_DELIVERED {
425   - background: #E7E7E7;
426   - color: rgba(0, 0, 0, 0.9);
  425 + background: #2BA471;
427 426 }
428 427
429 428 // 已发货
430 429 &.status_SHIPMENTS {
431   - background: #2BA471;
  430 + background: #E37318;
432 431 }
433 432
434 433 // 未发货
... ...
  1 +<template>
  2 + <view class="product">
  3 +
  4 + <!-- 新增&详情-产品 -->
  5 + <view class="header bp">
  6 + <image class="opCollapse" src="/static/images/title.png" />
  7 + <text class="title">{{ title || '产品' }}</text>
  8 + <view class="ops">
  9 + <!-- <image v-if="mode === 'add'" class="opAdd" @click="onAdd" src="/static/images/plus.png" /> -->
  10 + <view v-if="mode === 'view'" class="op1" @click="toggleViewCollapse">
  11 + <image class="opAdd" :src="collapsedView ? '/static/images/down.png' : '/static/images/up.png'" />
  12 + <text class="op">{{ collapsedView ? '展开' : '收起' }} </text>
  13 + </view>
  14 +
  15 + </view>
  16 + </view>
  17 +
  18 + <view v-if="mode === 'add'" class="section">
  19 + <view v-for="(item, idx) in items" :key="'a-' + idx" class="block">
  20 + <uni-list class="edit-list">
  21 + <uni-list-item title="订单编号">
  22 + <template v-slot:footer>
  23 + <view class="value">{{ item.orderNo }}</view>
  24 + </template>
  25 + </uni-list-item>
  26 + <uni-list-item title="原订单计划发货日期">
  27 + <template v-slot:footer>
  28 + <view class="value">{{ item.deliveryDate }}</view>
  29 + </template>
  30 + </uni-list-item>
  31 + <uni-list-item title="现申请发货日期">
  32 + <template v-slot:footer>
  33 + <uni-datetime-picker type="date" v-model="item.applyShipmentDate" />
  34 + </template>
  35 + </uni-list-item>
  36 +
  37 + <view v-show="!item.collapsed">
  38 + <uni-list-item title="申请次数">
  39 + <template v-slot:footer>
  40 + <view class="value">{{ item.applyCount }}</view>
  41 + </template>
  42 + </uni-list-item>
  43 + <uni-list-item title="订单类型">
  44 + <template v-slot:footer>
  45 + <view class="value">{{ item.orderType }}</view>
  46 + </template>
  47 + </uni-list-item>
  48 + <uni-list-item title="所属分厂">
  49 + <template v-slot:footer>
  50 + <view class="value">{{ item.workshopName }}</view>
  51 + </template>
  52 + </uni-list-item>
  53 + <uni-list-item title="客户名称">
  54 + <template v-slot:footer>
  55 + <view class="value">{{ item.customerName }}</view>
  56 + </template>
  57 + </uni-list-item>
  58 + <uni-list-item title="发货数量">
  59 + <template v-slot:footer>
  60 + <view class="value">{{ item.quantity }}</view>
  61 + </template>
  62 + </uni-list-item>
  63 + <uni-list-item title="延期原因">
  64 + <template v-slot:footer>
  65 + <uni-easyinput v-model="item.delayReason" placeholder="请输入延期原因" :inputBorder="false" />
  66 + </template>
  67 + </uni-list-item>
  68 + </view>
  69 + </uni-list>
  70 +
  71 + <view class="block-ops">
  72 + <!-- <div class="del" @click="onRemove(item.purchaseOrderId)">
  73 + <image src="/static/images/delete.png" class="icon" />
  74 + 删除
  75 + </div> -->
  76 + <div class="toggle" @click="toggleItem(idx)">
  77 + <image :src="item.collapsed ? '/static/images/up.png' : '/static/images/down.png'"
  78 + class="icon" />
  79 + {{ item.collapsed ? '展开' : '收起' }}
  80 + </div>
  81 + </view>
  82 + </view>
  83 + </view>
  84 +
  85 + <view v-else-if="mode === 'view'" class="view-list" v-show="!collapsedView">
  86 + <view v-for="(item, idx) in items" :key="'v-' + idx" class="card">
  87 + <view class="row"><text class="label">订单编号</text><text class="value">{{ item.orderNo }}</text></view>
  88 + <view class="row"><text class="label">品名牌号</text><text class="value">{{ item.brand }}</text></view>
  89 + <!-- 厚(公差) * 宽(公差) * 长(公差) -->
  90 + <view class="row row-spec"><text class="label">规格(mm)</text>
  91 + <view class="value value-spec">
  92 + <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view>
  93 + <view v-if="item.thickness" class="value-spec_box">
  94 + <view v-if="item.thicknessTolPos" class="value-spec_box_1">{{ item.thicknessTolPos > 0 ? '+' + item.thicknessTolPos : item.thicknessTolPos }}
  95 + </view>
  96 + <view v-if="item.thicknessTolNeg" class="value-spec_box_2">{{ item.thicknessTolNeg > 0 ? '+' + item.thicknessTolNeg : item.thicknessTolNeg }}
  97 + </view>
  98 + </view>
  99 + <view v-if="item.width" class="value-spec_val p12">*</view>
  100 + <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
  101 + <view v-if="item.width" class="value-spec_box">
  102 + <view v-if="item.widthTolPos" class="value-spec_box_1">{{ item.widthTolPos > 0 ? '+' + item.widthTolPos : item.widthTolPos }}
  103 + </view>
  104 + <view v-if="item.widthTolNeg" class="value-spec_box_2">{{ item.widthTolNeg > 0 ? '+' + item.widthTolNeg : item.widthTolNeg }}
  105 + </view>
  106 + </view>
  107 + <view v-if="item.length" class="value-spec_val p12">*</view>
  108 + <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
  109 + <view v-if="item.length" class="value-spec_box">
  110 + <view v-if="item.lengthTolPos" class="value-spec_box_1">{{ item.lengthTolPos > 0 ? '+' + item.lengthTolPos : item.lengthTolPos }}</view>
  111 + <view v-if="item.lengthTolNeg" class="value-spec_box_2">{{ item.lengthTolNeg > 0 ? '+' + item.lengthTolNeg : item.lengthTolNeg }}</view>
  112 + </view>
  113 + </view>
  114 + </view>
  115 + <view class="row"><text class="label">需发数量(kg)</text><text class="value">{{ item.quantity
  116 + }}</text>
  117 + </view>
  118 + <view class="row"><text class="label">实发数量(kg)</text><text class="value">{{ item.actualShipmentQuantity
  119 + }}</text>
  120 + </view>
  121 + <view class="row"><text class="label">件数</text><text class="value">{{ item.num
  122 + }}</text></view>
  123 + <view class="row"><text class="label">单价(元/kg)</text><text class="value">{{ item.salesPrice }}</text>
  124 + </view>
  125 + <view class="row"><text class="label">包装费(元/kg)</text><text class="value">{{
  126 + item.packagingFee }}</text></view>
  127 + <view class="row"><text class="label">生产批号</text><text class="value">{{
  128 + item.yieldBatchNo
  129 + }}</text>
  130 + </view>
  131 + <view class="row"><text class="label">加工经销</text><text class="value">{{ item.orderType }}</text></view>
  132 + <view class="row"><text class="label">运费</text><text class="value">{{ item.contractType !== 'PROCESS_STD_AGMT' ? item.shippingCost : '' }}</text></view>
  133 + <view class="row"><text class="label">回程费</text><text class="value">{{ item.contractType === 'PROCESS_STD_AGMT' ? item.shippingCost : '' }}</text></view>
  134 + <view class="row"><text class="label">牌号</text><text class="value">{{ item.brand }}</text></view>
  135 + <view class="row"><text class="label">高新</text><text class="value">-</text></view>
  136 + </view>
  137 + </view>
  138 +
  139 + </view>
  140 +</template>
  141 +<script>
  142 +import { uuid } from '@/utils/uuid.js'
  143 +export default {
  144 + name: 'Product',
  145 + props: {
  146 + title: { type: String, default: '' },
  147 + mode: { type: String, default: 'add' },
  148 + list: { type: Array, default: () => [] },
  149 + },
  150 + data() {
  151 + return {
  152 + items: [],
  153 + collapsedView: false,
  154 + roleCodes: [],
  155 + }
  156 + },
  157 + computed: {
  158 + },
  159 + watch: {
  160 + items: {
  161 + handler() { this.emitChange() },
  162 + deep: true
  163 + },
  164 + list: {
  165 + handler(v) {
  166 + const arr = Array.isArray(v) ? v : []
  167 + this.items = arr.map(x => {
  168 + const it = { ...this.defaultItem(), ...x, collapsed: true }
  169 + return it
  170 + })
  171 + },
  172 + deep: true
  173 + },
  174 + },
  175 + created() {
  176 + const init = Array.isArray(this.list) && this.list.length > 0 ? this.list.map(v => ({ ...this.defaultItem(), ...v, collapsed: false })) : [{ ...this.defaultItem(), collapsed: false }]
  177 + this.items = init;
  178 + },
  179 + methods: {
  180 + defaultItem() {
  181 + return {
  182 + purchaseOrderId: uuid(),
  183 + collapsed: false,
  184 + id: '',
  185 + orderNo: '',
  186 + deliveryDate: '',
  187 + applyShipmentDate: '',
  188 + applyCount: '',
  189 + orderType: '',
  190 + workshopName: '',
  191 + customerName: '',
  192 + quantity: '',
  193 + delayReason: '',
  194 + }
  195 + },
  196 +
  197 + onAdd() {
  198 + const obj = this.defaultItem()
  199 + obj.collapsed = true
  200 + this.items.push(obj)
  201 + this.emitChange()
  202 + },
  203 + onRemove(id) {
  204 + if (!id) return
  205 + uni.showModal({
  206 + title: '系统提示',
  207 + content: '是否确定删除选中的产品?',
  208 + confirmText: '确定',
  209 + cancelText: '取消',
  210 + success: (res) => {
  211 + if (res && res.confirm) {
  212 + const i = this.items.findIndex(it => String(it.purchaseOrderId) === String(id))
  213 + if (i >= 0) {
  214 + this.items.splice(i, 1)
  215 + this.emitChange()
  216 + }
  217 + }
  218 + }
  219 + })
  220 + },
  221 + toggleItem(idx) {
  222 + const it = this.items[idx]
  223 + if (!it) return
  224 + it.collapsed = !it.collapsed
  225 + this.$set(this.items, idx, it)
  226 + },
  227 + emitChange() {
  228 + const out = this.items.map(it => ({ ...it }))
  229 + this.$emit('input', out)
  230 + this.$emit('update:value', out)
  231 + this.$emit('change', out)
  232 + },
  233 + onNonNegativeNumberInput(val, item, idx, field) {
  234 + let v = String(val != null ? val : (item && item[field]) || '')
  235 + v = v.replace(/[^0-9.]/g, '')
  236 + v = v.replace(/(\..*)\./g, '$1')
  237 + if (v.startsWith('.')) v = '0' + v
  238 + if (v === '') { item[field] = ''; if (typeof idx === 'number') this.$set(this.items, idx, { ...item }); return }
  239 + const num = Number(v)
  240 + if (isNaN(num) || num < 0) {
  241 + item[field] = '0'
  242 + } else {
  243 + item[field] = v
  244 + }
  245 + if (typeof idx === 'number') this.$set(this.items, idx, { ...item })
  246 + },
  247 + onNonNegativeNumberBlur(item, idx, field) {
  248 + const v = String((item && item[field]) || '')
  249 + const num = Number(v)
  250 + if (isNaN(num) || num < 0) item[field] = '0'
  251 + if (typeof idx === 'number') this.$set(this.items, idx, { ...item })
  252 + },
  253 + onRealNumberInput(val, item, idx, field) {
  254 + let s = String(val != null ? val : (item && item[field]) || '')
  255 + const neg = s.trim().startsWith('-')
  256 + s = s.replace(/[^0-9.\-]/g, '')
  257 + s = s.replace(/(?!^)-/g, '')
  258 + s = s.replace(/(\..*)\./g, '$1')
  259 + if (s.startsWith('.')) s = '0' + s
  260 + if (s.startsWith('-.')) s = '-0.' + s.slice(2)
  261 + if (neg && !s.startsWith('-')) s = '-' + s.replace(/-/g, '')
  262 + item[field] = s
  263 + if (typeof idx === 'number') this.$set(this.items, idx, { ...item })
  264 + },
  265 + onRealNumberBlur(item, idx, field) {
  266 + const s = String((item && item[field]) || '')
  267 + if (s === '') { if (typeof idx === 'number') this.$set(this.items, idx, { ...item }); return }
  268 + const n = Number(s)
  269 + if (isNaN(n)) item[field] = ''
  270 + if (typeof idx === 'number') this.$set(this.items, idx, { ...item })
  271 + },
  272 + toggleViewCollapse() {
  273 + this.collapsedView = !this.collapsedView
  274 + },
  275 + onDeliveryChange(e, item, idx) {
  276 + const getStr = (x) => {
  277 + if (x && x.detail && x.detail.value !== undefined) return x.detail.value
  278 + if (typeof x === 'string') return x
  279 + return item && item.deliveryDate ? item.deliveryDate : ''
  280 + }
  281 + const val = getStr(e)
  282 + if (!val || !this.orderDate) return
  283 + const parse = (s) => {
  284 + const p = String(s).replace(/\//g, '-').split('-')
  285 + const y = Number(p[0])
  286 + const m = Number(p[1])
  287 + const d = Number(p[2])
  288 + return new Date(y, m - 1, d)
  289 + }
  290 + const sel = parse(val)
  291 + const ord = parse(this.orderDate)
  292 + if (!(sel > ord)) {
  293 + item.deliveryDate = ''
  294 + this.$set(this.items, idx, { ...item })
  295 + uni.showToast({ title: '发货日期必须大于订货日期', icon: 'none' })
  296 + }
  297 + }
  298 + }
  299 +}
  300 +</script>
  301 +<style lang="scss" scoped>
  302 +.header {
  303 + background-color: #fff;
  304 + display: flex;
  305 + align-items: center;
  306 + padding: 24rpx 32rpx;
  307 +
  308 + &.bp {
  309 + border-bottom: 1px solid #f0f0f0;
  310 + }
  311 +}
  312 +
  313 +.dot {
  314 + width: 16rpx;
  315 + height: 16rpx;
  316 + background: #3D48A3;
  317 + border-radius: 50%;
  318 + margin-right: 12rpx;
  319 +}
  320 +
  321 +.title {
  322 + font-size: 32rpx;
  323 + color: rgba(0, 0, 0, 0.9);
  324 + font-weight: 600;
  325 +}
  326 +
  327 +.ops {
  328 + margin-left: auto;
  329 +}
  330 +
  331 +.op {
  332 + color: $theme-primary;
  333 + font-size: 28rpx;
  334 + margin-left: 8rpx;
  335 +}
  336 +
  337 +.op1 {
  338 + display: flex;
  339 + align-items: center;
  340 +}
  341 +
  342 +.opAdd {
  343 + color: rgba(0, 0, 0, 0.6);
  344 + width: 40rpx;
  345 + height: 40rpx;
  346 +}
  347 +
  348 +.opCollapse {
  349 + color: rgba(0, 0, 0, 0.6);
  350 + width: 32rpx;
  351 + height: 28rpx;
  352 + margin-right: 16rpx;
  353 +}
  354 +
  355 +::v-deep .uni-list {
  356 + background: transparent;
  357 +
  358 + .uni-list--border-top {
  359 + background-color: transparent !important;
  360 + }
  361 +
  362 + &-item {
  363 + &__extra-text {
  364 + font-size: 32rpx;
  365 + }
  366 +
  367 + &__content-title {
  368 + font-size: 32rpx;
  369 + color: rgba(0, 0, 0, 0.9);
  370 + }
  371 +
  372 + &__container {
  373 + padding: 32rpx;
  374 +
  375 + .uni-easyinput {
  376 +
  377 + .is-disabled {
  378 + background-color: transparent !important;
  379 + }
  380 +
  381 + &__placeholder-class {
  382 + font-size: 32rpx;
  383 + color: rgba(0, 0, 0, 0.4);
  384 + }
  385 +
  386 + &__content {
  387 + border: none;
  388 +
  389 + &-input {
  390 + padding-left: 0 !important;
  391 + height: 48rpx;
  392 + line-height: 48rpx;
  393 + font-size: 32rpx;
  394 + }
  395 +
  396 + .content-clear-icon {
  397 + font-size: 44rpx !important;
  398 + }
  399 + }
  400 + }
  401 +
  402 + .amount-row {
  403 + flex: 1;
  404 + display: flex;
  405 + align-items: center;
  406 +
  407 + .uni-easyinput {
  408 + flex: 1;
  409 + }
  410 +
  411 + .unit {
  412 + margin-left: 16rpx;
  413 + color: rgba(0, 0, 0, 0.9);
  414 + }
  415 + }
  416 +
  417 + .item-title,
  418 + .uni-list-item__content {
  419 + flex: none;
  420 + min-height: 48rpx;
  421 + line-height: 48rpx;
  422 + font-size: 32rpx;
  423 + position: relative;
  424 + width: 210rpx;
  425 + margin-right: 32rpx;
  426 + color: rgba(0, 0, 0, 0.9);
  427 + padding-right: 0;
  428 +
  429 +
  430 + .required {
  431 + color: red;
  432 + position: absolute;
  433 + top: 50%;
  434 + transform: translateY(-50%);
  435 + left: -16rpx;
  436 + }
  437 + }
  438 +
  439 + }
  440 +
  441 + &.select-item {
  442 + &.is-empty {
  443 + .uni-list-item__extra-text {
  444 + color: rgba(0, 0, 0, 0.4) !important;
  445 + }
  446 + }
  447 +
  448 + &.is-filled {
  449 + .uni-list-item__extra-text {
  450 + color: rgba(0, 0, 0, 0.9) !important;
  451 + }
  452 + }
  453 +
  454 + .serial-number-row {
  455 + display: flex;
  456 + align-items: center;
  457 + }
  458 +
  459 + }
  460 +
  461 + &.mgb10 {
  462 + margin-bottom: 20rpx;
  463 + }
  464 +
  465 + }
  466 +
  467 + .title-header {
  468 + background-color: #fff;
  469 + display: flex;
  470 + align-items: center;
  471 + padding: 32rpx 32rpx 22rpx;
  472 +
  473 + &_icon {
  474 + width: 32rpx;
  475 + height: 28rpx;
  476 + margin-right: 16rpx;
  477 + }
  478 +
  479 + span {
  480 + color: rgba(0, 0, 0, 0.9);
  481 + font-size: 32rpx;
  482 + line-height: 44rpx;
  483 + font-weight: 600;
  484 + }
  485 + }
  486 +}
  487 +
  488 +/* 只读 easyinput 根据内容自适应高度 */
  489 +::v-deep .uni-list-item__container {
  490 + align-items: flex-start;
  491 +}
  492 +
  493 +.block-ops {
  494 + display: flex;
  495 + padding: 20rpx 32rpx 20rpx;
  496 + justify-content: space-around;
  497 +}
  498 +
  499 +.del {
  500 + color: #D54941;
  501 + font-size: 28rpx;
  502 + display: flex;
  503 + align-items: center;
  504 +
  505 + image {
  506 + width: 40rpx;
  507 + height: 40rpx;
  508 + }
  509 +}
  510 +
  511 +.toggle {
  512 + color: $theme-primary;
  513 + font-size: 28rpx;
  514 + display: flex;
  515 + align-items: center;
  516 +
  517 + image {
  518 + width: 40rpx;
  519 + height: 40rpx;
  520 + }
  521 +}
  522 +
  523 +.section {
  524 + background: #f1f1f1;
  525 + margin-bottom: 20rpx;
  526 +
  527 + .block {
  528 + background: #ffffff;
  529 + // padding: 32rpx 0;
  530 + margin-bottom: 20rpx;
  531 +
  532 + &:last-child {
  533 + margin-bottom: 0;
  534 + }
  535 + }
  536 +
  537 + .row {
  538 + display: flex;
  539 + // margin-bottom: 24rpx;
  540 + line-height: 32rpx;
  541 + padding: 32rpx;
  542 + border-bottom: 1rpx solid #f2f2f2;
  543 +
  544 +
  545 + &.noneStyle {
  546 + border-bottom: 0;
  547 + border-bottom: none;
  548 + }
  549 +
  550 + &.row-spec {
  551 + align-items: center;
  552 + }
  553 + }
  554 +
  555 + .row:last-child {
  556 + margin-bottom: 0;
  557 + }
  558 +
  559 + .label {
  560 + width: 210rpx;
  561 + margin-right: 32rpx;
  562 + color: rgba(0, 0, 0, 0.9);
  563 + font-size: 32rpx;
  564 + line-height: 48rpx;
  565 + }
  566 +
  567 + .value {
  568 + flex: 1;
  569 + color: rgba(0, 0, 0, 0.9);
  570 + font-size: 32rpx;
  571 + white-space: pre-wrap;
  572 + word-break: break-all;
  573 + line-height: 48rpx;
  574 + }
  575 +
  576 + .value-spec {
  577 + height: 48rpx;
  578 + display: flex;
  579 + align-items: center;
  580 + color: #000000;
  581 +
  582 + &_box {
  583 + position: relative;
  584 + width: 60rpx;
  585 + height: 48rpx;
  586 +
  587 + &_1 {
  588 + font-size: 16rpx;
  589 + position: absolute;
  590 + top: -10rpx;
  591 + left: 0;
  592 + }
  593 +
  594 + &_2 {
  595 + font-size: 16rpx;
  596 + position: absolute;
  597 + bottom: -10rpx;
  598 + left: 0;
  599 + }
  600 + }
  601 +
  602 + &_val {
  603 + font-size: 28rpx;
  604 +
  605 + &.p12 {
  606 + padding-right: 12rpx;
  607 + }
  608 + }
  609 + }
  610 +
  611 + .view-total {
  612 + padding-top: 20rpx;
  613 +
  614 + .head {
  615 + font-size: 32rpx;
  616 + font-weight: 600;
  617 + line-height: 50rpx;
  618 + color: rgba(0, 0, 0, 0.9);
  619 + padding-bottom: 16rpx;
  620 + margin-bottom: 24rpx;
  621 + border-bottom: 1px dashed #E7E7E7;
  622 + }
  623 +
  624 + .row {
  625 + display: flex;
  626 + margin-bottom: 24rpx;
  627 + line-height: 32rpx;
  628 +
  629 + .label {
  630 + width: 180rpx;
  631 + margin-right: 14rpx;
  632 + color: rgba(0, 0, 0, 0.6);
  633 + font-size: 28rpx;
  634 + }
  635 +
  636 + .value {
  637 + flex: 1;
  638 + color: rgba(0, 0, 0, 0.9);
  639 + font-size: 28rpx;
  640 + white-space: pre-wrap;
  641 + word-break: break-all;
  642 + }
  643 + }
  644 + }
  645 +}
  646 +
  647 +
  648 +.view-list {
  649 + padding: 26rpx 32rpx;
  650 + background: #ffffff;
  651 +
  652 + .card {
  653 + background: #f3f3f3;
  654 + border-radius: 16rpx;
  655 + padding: 32rpx 44rpx;
  656 + margin-bottom: 20rpx;
  657 +
  658 + &:last-child {
  659 + margin-bottom: 0;
  660 + }
  661 + }
  662 +
  663 + .row {
  664 + display: flex;
  665 + margin-bottom: 24rpx;
  666 + line-height: 32rpx;
  667 +
  668 + &.row-spec {
  669 + height: 60rpx;
  670 + align-items: center;
  671 + }
  672 + }
  673 +
  674 + .row:last-child {
  675 + margin-bottom: 0;
  676 + }
  677 +
  678 + .label {
  679 + width: 260rpx;
  680 + margin-right: 14rpx;
  681 + color: rgba(0, 0, 0, 0.6);
  682 + font-size: 28rpx;
  683 + }
  684 +
  685 + .value {
  686 + flex: 1;
  687 + color: rgba(0, 0, 0, 0.9);
  688 + font-size: 28rpx;
  689 + white-space: pre-wrap;
  690 + word-break: break-all;
  691 + }
  692 +
  693 + .value-spec {
  694 + height: 60rpx;
  695 + display: flex;
  696 + align-items: center;
  697 + color: #000000;
  698 +
  699 + &_box {
  700 + position: relative;
  701 + width: 60rpx;
  702 + height: 60rpx;
  703 +
  704 + &_1 {
  705 + font-size: 16rpx;
  706 + position: absolute;
  707 + top: 0;
  708 + left: 0;
  709 + }
  710 +
  711 + &_2 {
  712 + font-size: 16rpx;
  713 + position: absolute;
  714 + bottom: 0;
  715 + left: 0;
  716 + }
  717 + }
  718 +
  719 + &_val {
  720 + font-size: 28rpx;
  721 +
  722 + &.p12 {
  723 + padding-right: 12rpx;
  724 + }
  725 + }
  726 + }
  727 +
  728 + .view-total {
  729 + padding-top: 20rpx;
  730 +
  731 + .head {
  732 + font-size: 32rpx;
  733 + font-weight: 600;
  734 + line-height: 50rpx;
  735 + color: rgba(0, 0, 0, 0.9);
  736 + padding-bottom: 16rpx;
  737 + margin-bottom: 24rpx;
  738 + border-bottom: 1px dashed #E7E7E7;
  739 + }
  740 +
  741 + .row {
  742 + display: flex;
  743 + margin-bottom: 24rpx;
  744 + line-height: 32rpx;
  745 +
  746 + .label {
  747 + width: 180rpx;
  748 + margin-right: 14rpx;
  749 + color: rgba(0, 0, 0, 0.6);
  750 + font-size: 28rpx;
  751 + }
  752 +
  753 + .value {
  754 + flex: 1;
  755 + color: rgba(0, 0, 0, 0.9);
  756 + font-size: 28rpx;
  757 + white-space: pre-wrap;
  758 + word-break: break-all;
  759 + }
  760 + }
  761 + }
  762 +}
  763 +</style>
... ...
... ... @@ -622,42 +622,6 @@ export default {
622 622 margin-bottom: 20rpx;
623 623 position: relative;
624 624
625   - .status {
626   - position: absolute;
627   - top: 16rpx;
628   - right: 52rpx;
629   - width: 180rpx;
630   - height: 146rpx;
631   - background-repeat: no-repeat;
632   - background-size: 100% 100%;
633   - background-position: center;
634   -
635   - // 已下发
636   - &_ISSUED {
637   - background-image: url('~@/static/images/order_list/status_ISSUED.png');
638   - }
639   -
640   - // 待发货
641   - &_WAIT {
642   - background-image: url('~@/static/images/order_list/status_WAIT.png');
643   - }
644   -
645   - // 部分发货
646   - &_TRANSIT {
647   - background-image: url('~@/static/images/order_list/status_TRANSIT.png');
648   - }
649   -
650   - // 发货完成
651   - &_SHIPPED {
652   - background-image: url('~@/static/images/order_list/status_SHIPPED.png');
653   - }
654   -
655   - // 已签收
656   - &_DELIVERED {
657   - background-image: url('~@/static/images/order_list/status_DELIVERED.png');
658   - }
659   -
660   - }
661 625 }
662 626
663 627 .mgb10 {
... ...
... ... @@ -365,6 +365,7 @@ export default {
365 365 border-radius: 6rpx;
366 366
367 367 // 已下发
  368 + // 后来改成 生产中
368 369 &.status_ISSUED {
369 370 background: $theme-primary;
370 371 }
... ...
... ... @@ -142,43 +142,7 @@ export default {
142 142 background: #fff;
143 143 margin-bottom: 20rpx;
144 144 position: relative;
145   -
146   - .status {
147   - position: absolute;
148   - top: 16rpx;
149   - right: 52rpx;
150   - width: 180rpx;
151   - height: 146rpx;
152   - background-repeat: no-repeat;
153   - background-size: 100% 100%;
154   - background-position: center;
155   -
156   - // 已下发
157   - &_ISSUED {
158   - background-image: url('~@/static/images/order_list/status_ISSUED.png');
159   - }
160   -
161   - // 待发货
162   - &_WAIT {
163   - background-image: url('~@/static/images/order_list/status_WAIT.png');
164   - }
165   -
166   - // 部分发货
167   - &_TRANSIT {
168   - background-image: url('~@/static/images/order_list/status_TRANSIT.png');
169   - }
170   -
171   - // 发货完成
172   - &_SHIPPED {
173   - background-image: url('~@/static/images/order_list/status_SHIPPED.png');
174   - }
175   -
176   - // 已签收
177   - &_DELIVERED {
178   - background-image: url('~@/static/images/order_list/status_DELIVERED.png');
179   - }
180   -
181   - }
  145 +
182 146 }
183 147
184 148 .mgb10 {
... ...