Commit dcd21fc7 by LJM

css

parent 83fc417e
.page-add-exception {
margin-top: 24rpx;
padding: 0 24rpx 24rpx 24rpx;
.scanBarcode {
height: 88rpx;
background: #ffffff;
border-radius: 4rpx;
margin-bottom: 16rpx;
.iconfont {
font-size: 52rpx;
color: #197adb;
}
.tt {
margin-left: 12rpx;
font-size: 26rpx;
color: #404547;
}
}
.section {
padding: 24rpx 24rpx 0 24rpx;
background: #ffffff;
border-radius: 4rpx;
margin-bottom: 16rpx;
.warehouse {
padding-bottom: 24rpx;
border-bottom: 1px solid #e6edf0;
.t1 {
font-size: 22rpx;
color: #000;
margin-bottom: 8rpx;
}
.input-wrap {
.arrow {
width: 12rpx;
height: 12rpx;
background: #197adb;
border-radius: 50%;
margin-right: 16rpx;
}
.uni-input {
font-size: 32rpx;
color: #1e2021;
font-weight: bold;
}
}
.inspection {
width: 72rpx;
height: 36rpx;
border-radius: 4rpx;
border: 1rpx solid #197adb;
font-size: 24rpx;
color: #197adb;
}
}
.box {
height: 80rpx;
border-bottom: 1px solid #e6edf0;
&:last-child {
border-bottom: none;
}
.label {
font-size: 24rpx;
color: #6e767a;
margin-right: 27rpx;
}
.input-wrap {
width: calc(100% - 160rpx);
.text-prompt {
color: #6e767a;
font-size: 24rpx;
}
}
.input-wrap-width {
justify-content: flex-end;
.text {
font-size: 24rpx;
color: #404547;
font-weight: bold;
margin-right: 12rpx;
}
.iconfont {
font-size: 21rpx;
color: #9ca8ad;
}
}
.tab {
.tab-panel {
width: 120rpx;
height: 48rpx;
background: #9ca8ad;
border-radius: 4rpx;
font-size: 24rpx;
color: #ffffff;
margin-right: 24rpx;
&:last-child {
margin-right: 0;
}
&.curr {
background: #197adb;
}
}
}
.uni-input {
font-size: 24rpx;
color: #404547;
font-weight: bold;
}
}
.upload-box {
margin-top: 24rpx;
position: relative;
z-index: 1;
.title {
margin-bottom: 24rpx;
.tt-l {
font-size: 24rpx;
color: #6e767a;
}
.tt-r {
font-size: 24rpx;
color: #404547;
}
}
.upload-list {
padding-bottom: 48rpx;
flex-wrap: wrap;
.default {
width: 144rpx;
height: 144rpx;
background-color: #f1f4f6;
border: 1rpx solid #e6edf0;
.iconfont {
font-size: 48rpx;
color: #d8d8d8;
}
}
.pic-box {
position: relative;
flex: 0 0 23%;
margin-right: 10rpx;
margin-bottom: 10rpx;
&:nth-of-type(4n) {
margin-right: 0;
}
image {
width: 144rpx;
height: 144rpx;
}
.delete {
position: absolute;
right: 10rpx;
top: -13rpx;
width: 30rpx;
height: 30rpx;
border-radius: 50%;
background-color: #bb3434;
z-index: 999;
.iconfont {
font-size: 20rpx;
color: #ffffff;
}
}
}
}
.model-upload-list {
border-top: 1rpx solid #e6edf0;
.box {
height: 80rpx;
border-bottom: 1rpx solid #e6edf0;
&:last-child {
border-bottom: none;
}
.file {
.t1 {
width: 258rpx;
color: #404547;
font-size: 24rpx;
font-weight: bold;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.t2 {
font-size: 24rpx;
color: #197adb;
margin-left: 4rpx;
margin-right: 16rpx;
}
.clear {
font-size: 24rpx;
color: #404547;
font-weight: bold;
}
}
.file-btn {
.t1 {
font-size: 24rpx;
color: #404547;
font-weight: bold;
margin-right: 12rpx;
}
.iconfont {
font-size: 21rpx;
color: #9ca8ad;
}
}
&.curr {
.file {
.t1 {
color: #197adb;
}
}
}
}
}
}
}
.btn {
position: relative;
z-index: 2;
height: 88rpx;
background: #197adb;
border-radius: 4rpx;
font-size: 28rpx;
color: #ffffff;
&.disabled {
opacity: 0.7;
}
}
}
.page-exception {
.search {
border-top: 1px solid #cad9e0;
height: 100rpx;
background: #ffffff;
padding: 0 24rpx;
.bar {
.iconfont {
font-size: 36rpx;
color: #197adb;
}
.uni-input {
margin-left: 12rpx;
font-size: 26rpx;
}
}
.tt {
font-size: 26rpx;
color: #197adb;
font-weight: 400;
}
}
.data-search {
padding: 0 24rpx;
height: 100rpx;
.date-bar {
.t1 {
font-size: 26rpx;
color: #6e767a;
}
.wrap {
width: 238rpx;
height: 44rpx;
border-radius: 2rpx;
border: 1rpx solid #cad9e0;
.time {
padding-left: 20rpx;
font-size: 26rpx;
color: #197adb;
}
.iconfont {
font-size: 32rpx;
color: #197adb;
}
}
}
.tt-box {
.tt {
font-size: 26rpx;
color: #404547;
&:first-child {
margin-right: 28rpx;
}
}
}
}
.section {
padding: 0 24rpx;
.tab {
.box {
position: relative;
font-size: 26rpx;
color: #404547;
margin-right: 44rpx;
transition: all 0.4s ease;
&.curr {
font-size: 32rpx;
color: #1e2021;
font-weight: bold;
&:before {
position: absolute;
bottom: -14rpx;
left: 0;
right: 0;
width: 100%;
height: 6rpx;
background: #197adb;
border-radius: 3rpx;
content: '';
margin: 0 auto;
}
}
}
}
.list {
margin-top: 37rpx;
padding-bottom: 100rpx;
.box {
padding: 24rpx;
height: 254rpx;
background: #ffffff;
border-radius: 4rpx;
margin-bottom: 16rpx;
.top {
padding-bottom: 16rpx;
border-bottom: 1px solid #e6edf0;
.pp {
.jian {
width: 48rpx;
height: 36rpx;
border-radius: 4rpx;
border: 1rpx solid #197adb;
font-size: 24rpx;
color: #197adb;
margin-right: 12rpx;
}
.t1 {
font-size: 32rpx;
font-weight: 600;
color: #197adb;
}
.t2 {
font-size: 26rpx;
color: #197adb;
}
.t3 {
font-size: 28rpx;
color: #1e2021;
}
.status-1 {
.t4 {
font-size: 22rpx;
color: #f39d18;
}
.iconfont {
font-size: 28rpx;
color: #f39d18;
margin-right: 4rpx;
}
}
.status-2 {
.t4 {
font-size: 22rpx;
color: #197adb;
}
.iconfont {
font-size: 28rpx;
color: #197adb;
margin-right: 4rpx;
}
}
}
}
.bottom {
padding-top: 16rpx;
.pp {
.paragraph {
flex: 0 0 50%;
.label {
font-size: 22rpx;
color: #6e767a;
margin-right: 16rpx;
}
.text {
font-size: 22rpx;
color: #404547;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
display: block;
&.desc {
width: 375rpx;
}
}
}
}
}
}
}
}
}
.page-exception-select {
margin-top: 24rpx;
padding: 0 24rpx;
.title {
padding: 0 24rpx;
height: 80rpx;
background: #ffffff;
border-radius: 4rpx;
margin-bottom: 16rpx;
.t1 {
font-size: 24rpx;
color: #6e767a;
}
.t2 {
font-size: 24rpx;
color: #404547;
font-weight: bold;
}
}
.select-type {
margin-bottom: 40rpx;
.box {
padding: 24rpx;
margin-bottom: 16rpx;
border-radius: 4rpx;
background: #ffffff;
&:last-child {
margin-bottom: 0;
}
.label {
margin-bottom: 12rpx;
.t1 {
font-size: 22rpx;
color: #197adb;
margin-right: 8rpx;
}
.t2 {
font-size: 22rpx;
color: #6e767a;
}
}
.pick-list {
.uni-text {
font-size: 28rpx;
color: #404547;
font-weight: 600;
}
.iconfont {
font-size: 12rpx;
color: #9ca8ad;
}
}
}
}
.btn {
position: relative;
z-index: 2;
height: 88rpx;
background: #197adb;
border-radius: 4rpx;
font-size: 28rpx;
color: #ffffff;
}
}
{
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"loadsh": {
"version": "0.0.4",
"resolved": "https://repo.huaweicloud.com/repository/npm/loadsh/-/loadsh-0.0.4.tgz",
"integrity": "sha512-U+wLL8InpfRalWrr+0SuhWgGt10M4OyAk6G8xCYo2rwpiHtxZkWiFpjei0vO463ghW8LPCdhqQxXlMy2qicAEw=="
}
}
}
<template>
<view class="page-exception">
<!-- 搜索 -->
<view class="search row bothSide verCenter">
<view class="bar row verCenter">
<text class="iconfont icon-juxing6"></text>
<input placeholder="请扫描或输入二维码" class="uni-input" @input="handleInput($event)" placeholder-style="color:#6E767A;" />
</view>
<text class="tt">查询</text>
</view>
<!-- 日期选择 -->
<view class="data-search row bothSide verCenter">
<view class="date-bar row verCenter">
<text class="t1">日期选择:</text>
<view class="wrap row bothSide verCenter">
<text class="time">2023-11-27</text>
<text class="iconfont icon-riqi1"></text>
</view>
</view>
<view class="tt-box row verCenter">
<text class="tt">今日</text>
<text class="tt">昨日</text>
</view>
</view>
<view class="section">
<view class="tab row verCenter">
<view class="box" :class="{curr:curr == index}" v-for="(v,index) in item" @click="tab(index)">{{v}}{{index == 0 ? ask_customer_status_two_num:ask_customer_status_one_num}}</view>
</view>
<!-- 列表 -->
<view class="list" v-if="list.length > 0">
<view class="box" v-for="(item, index) in list" :key="index">
<view class="top">
<view class="pp row bothSide verCenter" style="margin-bottom: 16rpx;">
<text class="t1">{{item.ask_customer_exception_id_cn}}</text>
<view class="row verCenter">
<text class="jian row rowCenter verCenter"></text>
<text class="t2">{{item.erp_order_sn}}</text>
</view>
</view>
<view class="pp row bothSide verCenter ">
<text class="t3">{{item.company_name}}</text>
<view class="row verCenter status-1">
<text class="iconfont icon-a-10cangkucangchu3"></text>
<text class="t4">仓库待执行</text>
</view>
</view>
</view>
<view class="bottom">
<view class="pp row" style="margin-bottom: 12rpx;">
<view class="paragraph row verCenter" style="flex: 0 0 100%;">
<text class="label">仓库备注:</text>
<text class="text desc">{{item.ask_customer_remark}}</text>
</view>
</view>
<view class="pp row">
<view class="paragraph row verCenter" style="flex: 0 0 60%;">
<text class="label">回复时间:</text>
<text class="text">{{item.ask_customer_confirm_time_cn}} </text>
</view>
<view class="paragraph row verCenter">
<text class="label">商务:</text>
<text class="text">{{item.bussiness_name}}</text>
</view>
</view>
</view>
</view>
<!-- <navigator class="box" url="/pages/tallyGoods/exceptionDetail">
<view class="top">
<view class="pp row bothSide verCenter" style="margin-bottom: 16rpx;">
<text class="t1">型号异常</text>
<view class="row verCenter">
<text class="jian row rowCenter verCenter"></text>
<text class="t2">A12345-01</text>
</view>
</view>
<view class="pp row bothSide verCenter ">
<text class="t3">富开香港有限公司</text>
<view class="row verCenter status-2">
<text class="iconfont icon-bianzu"></text>
<text class="t4">仓库已执行</text>
</view>
</view>
</view>
<view class="bottom">
<view class="pp row" style="margin-bottom: 12rpx;">
<view class="paragraph row verCenter" style="flex: 0 0 100%;">
<text class="label">仓库备注:</text>
<text class="text desc">截取15个字段,多出来的用省略号展示</text>
</view>
</view>
<view class="pp row">
<view class="paragraph row verCenter" style="flex: 0 0 60%;">
<text class="label">回复时间:</text>
<text class="text">2020/07/20 15:12 </text>
</view>
<view class="paragraph row verCenter">
<text class="label">执行:</text>
<text class="text">陈炜乐</text>
</view>
</view>
</view>
</navigator> -->
</view>
<!-- 无数据 -->
<view class="no-data column verCenter rowCenter" v-else>
<text class="iconfont icon-jinggao2"></text>
<text class="text">查找不到相关信息</text>
<text class="p">1、请输入正确的入仓号</text>
</view>
</view>
</view>
</template>
<script>
import { API } from '@/util/api.js';
import debounce from 'lodash/debounce';
export default {
data() {
return {
curr: 0,
item: ['商务已回复', '等待回复'],
list: [], //列表
ask_customer_status_one_num: '', //待确认数量
ask_customer_status_two_num: '', //已确认数量
searchParams: {
limit: 1000,
erp_order_sn: '', //入仓号
ask_customer_sw_status: 2, //商务回复状态1待回复,2已回复
ask_customer_sw_confirm_time_begin: '', //商务回复日期开始
ask_customer_sw_confirm_time_end: '', //商务回复日期结束
store_execute_time_begin: '', //仓库提交日期开始
store_execute_time_end: '', //仓库提交日期结束
store_execute_status: '' //仓库执行状态:1.待执行,2.执行完成,3.已取消
}
};
},
onShow() {
this.getData();
},
methods: {
handleInput(event) {
var val = event.target.value;
this.getData();
},
getData() {
this.request(API.askCustomerProblemListV2, 'GET', this.searchParams, true).then(res => {
if (res.err_code === 0) {
this.list = res.data.data;
} else {
uni.showToast({
title: res.err_msg,
icon: 'none'
});
}
});
this.request(API.getAskNum, 'GET', {}, false).then(res => {
if (res.err_code === 0) {
this.ask_customer_status_one_num = res.data.ask_customer_status_one_num;
this.ask_customer_status_two_num = res.data.ask_customer_status_two_num;
} else {
uni.showToast({
title: res.err_msg,
icon: 'none'
});
}
});
},
/**
*
*/
getAskNum() {
},
/**
* @param {Object} index
* tab切换
*/
tab(index) {
this.curr = index;
this.resetChange();
if (index == 0) {
//商务已回复
this.searchParams.ask_customer_sw_status = 2;
} else if (index == 1) {
//等待回复
this.searchParams.ask_customer_sw_status = 1;
}
this.getData();
},
/**
* 重置
*/
resetChange() {
this.list = [];
}
}
};
</script>
<style scoped lang="scss">
@import '../../assets/css/tallyGoods/exception.scss';
</style>
\ No newline at end of file
<template>
<view class="tallyExectionDetail">
<view class="base-information">
<view class="top row bothSide verCenter">
<view class="title row verCenter">
<text class="arrow row rowCenter verCenter"></text>
<text class="tt">基础信息</text>
</view>
</view>
<view class="pp row verCenter">
<text class="t1">入仓号:</text>
<text class="t2" style="width: auto;">{{ customerDetail.erp_order_sn }}</text>
<text class="type row rowCenter verCenter" v-if="customerDetail.is_goods_check">商检</text>
</view>
<view class="pp row verCenter">
<text class="t1">跟单商务:</text>
<text class="t2">{{ customerDetail.bussiness_name }}</text>
</view>
<view class="pp row verCenter">
<text class="t1">订单客户:</text>
<text class="t2">{{ customerDetail.company_name || '--' }}</text>
</view>
<view class="pp row verCenter">
<text class="t1">发起时间:</text>
<text class="t2">{{ customerDetail.create_time_cn }}</text>
</view>
<view class="status-box row verCenter bothSide">
<view class="bb row verCenter">
<text class="t1">商务状态:</text>
<text class="t2">{{ customerDetail.ask_customer_sw_status_cn || '--' }}</text>
</view>
<view class="bb row verCenter">
<text class="t1">仓库状态:</text>
<text class="t3">{{ customerDetail.store_execute_status_cn || '--' }}</text>
</view>
</view>
</view>
<view class="question-box">
<view class="top row bothSide verCenter">
<view class="title row verCenter">
<text class="arrow row rowCenter verCenter"></text>
<text class="tt">问题类型</text>
</view>
<view class="exception-ico row verCenter">
<text class="iconfont icon-jinggao1"></text>
<text class="tt">{{ customerDetail.ask_customer_exception_id_cn }}</text>
</view>
</view>
<view class="uni-table">
<view class="uni-th row">
<text class="row verCenter tc">序号</text>
<text class="row verCenter">商品型号</text>
<text class="row verCenter">下单数据</text>
<text class="row verCenter">仓库数据</text>
<text class="row verCenter">商务回复</text>
</view>
<view class="uni-tr row verCenter" v-for="(item, index) in customerDetail.order_goods" :key="index">
<text class="txt w row verCenter tc">{{ index + 1 }}</text>
<text class="txt w row verCenter">{{ item.goods_type }}</text>
<text class="txt w row verCenter">{{ item.order_result }}</text>
<text class="txt w row verCenter">{{ item.store_result }}</text>
<text class="txt w row verCenter desc">{{ item.customer_result }}</text>
</view>
</view>
<view class="show-pic" v-if="customerDetail.upload_img">
<view class="pic-title">问题图片</view>
<view class="list row verCenter">
<view class="box" @click="previewChange(customerDetail.upload_img.split(','), i)" v-for="(v, i) in customerDetail.upload_img.split(',')" :key="i">
<image :src="v" mode="aspectFill"></image>
</view>
</view>
</view>
<view class="text-box">
<view class="tt-box row">
<text class="label">仓库备注:</text>
<text class="t1">{{ customerDetail.ask_customer_remark || '--' }}</text>
</view>
<view class="tt-box row">
<text class="label">商务回复:</text>
<text class="t2">{{ customerDetail.ask_customer_sw_confirm_remark || '--' }}</text>
</view>
</view>
</view>
<template v-if="customerDetail.ask_customer_sw_status == 2 && customerDetail.store_execute_status == 1">
<view class="btn row rowCenter verCenter" @click="changeWatch(customerDetail.ask_customer_problem_list_id)" v-if="customerDetail.is_watch == 0">核对并执行</view>
<view class="btn row rowCenter verCenter disabled" v-if="customerDetail.is_watch == 1">已核对</view>
</template>
</view>
</template>
<script>
import { API } from '@/util/api.js';
export default {
data() {
return {
noexebshowFalg: true, //控制是否会触发生命周期
ask_customer_problem_list_id: '',
customerDetail: {}
};
},
onLoad(options) {
this.ask_customer_problem_list_id = options.ask_customer_problem_list_id;
},
onShow() {
if (this.noexebshowFalg) {
this.getData();
}
},
methods: {
previewChange(img, index) {
this.noexebshowFalg = false; //不允许再次触发onshow这个生命周期
uni.previewImage({
current: index,
urls: img
});
},
getData() {
this.request(API.askCustomerProblemDetail, 'GET', { ask_customer_problem_list_id: this.ask_customer_problem_list_id }).then(res => {
if (res.err_code === 0) {
this.customerDetail = res.data;
} else {
uni.showToast({
title: res.err_msg,
icon: 'error'
});
}
});
},
changeWatch(id) {
this.request(API.changeWatch, 'GET', { ask_customer_problem_list_id: id }, true).then(res => {
if (res.err_code === 0) {
uni.showToast({
title: '操作成功',
icon: 'none'
});
setTimeout(() => {
this.getData();
}, 2000);
} else {
uni.showModal({
title: '提示',
content: res.err_msg,
showCancel: false
});
}
});
}
}
};
</script>
<style scoped lang="scss">
@import '../../assets/css/goods/tallyExectionDetail.scss';
</style>
\ No newline at end of file
<template>
<view class="page-exception-select">
<view class="title row bothSide verCenter">
<text class="t1">入仓号</text>
<text class="t2">{{ erp_order_sn }}</text>
</view>
<view class="select-type">
<view class="box">
<view class="label row verCenter">
<text class="t1">*</text>
<text class="t2">请选择异常类型</text>
</view>
<view class="pick-list row bothSide verCenter">
<picker @change="bindPickerChange($event, 1)" :value="index" :range="arr" style="width: 80%;">
<view class="uni-text">{{ arr[index] || '请选择异常类型' }}</view>
</picker>
<text class="iconfont icon-sanjiaoxing1"></text>
</view>
</view>
<view class="box">
<view class="label row verCenter">
<text class="t1">*</text>
<text class="t2">请选择异常型号</text>
</view>
<view class="pick-list row bothSide verCenter">
<picker @change="bindPickerChange($event, 1)" :value="index" :range="arr" style="width: 80%;">
<view class="uni-text">{{ arr[index] || '请选择异常型号' }}</view>
</picker>
<text class="iconfont icon-sanjiaoxing1"></text>
</view>
</view>
</view>
<view class="btn row rowCenter verCenter" @click="submit()">确认</view>
</view>
</template>
<script>
import { API } from '@/util/api.js';
import { createArray } from '@/util/util.js';
export default {
data() {
return {
erp_order_sn: 'B1206',
index: 1,
arr: ['型号异常', '品牌异常']
};
},
onLoad(options) {
this.erp_order_sn = options.erp_order_sn || '';
// 从本地缓存中获取数据
const dataFromSourcePage = uni.getStorageSync('paramsOrigin');
// 使用Object.assign()将dataFromSourcePage的属性合并到data中
Object.assign(this.$data, dataFromSourcePage);
},
onShow() {
this.getData();
},
methods: {
bindPickerChange: function(e, type) {
console.log('picker发送选择改变,携带值为', e.target.value);
if (type == 1) {
this.index = e.target.value;
}
},
getData() {
this.request(API.getTallyGoods, 'GET', { erp_order_sn: this.erp_order_sn }, true).then(res => {
if (res.err_code === 0) {
} else {
}
});
},
submit() {
uni.$emit('updateOriginData', this.$data);
uni.navigateBack({
delta: 1
});
}
}
};
</script>
<style scoped lang="scss">
@import '../../assets/css/tallyGoods/exceptionSelect.scss';
</style>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment