司机管理模块,开票通知模块
This commit is contained in:
@ -60,4 +60,67 @@ export function saveDriver(data){
|
||||
contentType:'application/json',
|
||||
data
|
||||
})
|
||||
}
|
||||
//司机停启用操作
|
||||
export function enableAction(data){
|
||||
return request({
|
||||
url:'/supplierAppV2/dispatchApp/user/enableAction',
|
||||
method:'POST',
|
||||
contentType:'application/json',
|
||||
data
|
||||
})
|
||||
}
|
||||
//工单对账列表
|
||||
export function accountRecordList(data){
|
||||
return request({
|
||||
url:'/supplierAppV2/dispatchApp/accountRecord/accountRecordList',
|
||||
method:'POST',
|
||||
contentType:'application/json',
|
||||
data
|
||||
})
|
||||
}
|
||||
//工单对账详情
|
||||
export function getAccountRecordDetail(data){
|
||||
return request({
|
||||
url:'/supplierAppV2/dispatchApp/accountRecord/getAccountRecordDetail',
|
||||
method:'POST',
|
||||
contentType:'application/json',
|
||||
data
|
||||
})
|
||||
}
|
||||
//工单对账计算金额(记账)
|
||||
export function accountRecordCompute(data){
|
||||
return request({
|
||||
url:'/supplierAppV2/dispatchApp/accountRecord/accountRecordCompute',
|
||||
method:'POST',
|
||||
contentType:'application/json',
|
||||
data
|
||||
})
|
||||
}
|
||||
//修改服务商记账信息 (重新记账)
|
||||
export function updateAccountRecordInfo(data){
|
||||
return request({
|
||||
url:'/supplierAppV2/dispatchApp/accountRecord/updateAccountRecordInfo',
|
||||
method:'POST',
|
||||
contentType:'application/json',
|
||||
data
|
||||
})
|
||||
}
|
||||
//开票通知列表
|
||||
export function notifyInvoiceList(data){
|
||||
return request({
|
||||
url:'/supplierAppV2/dispatchApp/accountRecord/notifyInvoiceList',
|
||||
method:'POST',
|
||||
contentType:'application/json',
|
||||
data
|
||||
})
|
||||
}
|
||||
//开票通知详情
|
||||
export function notifyInvoiceDetail(data){
|
||||
return request({
|
||||
url:'/supplierAppV2/dispatchApp/accountRecord/notifyInvoiceDetail',
|
||||
method:'POST',
|
||||
contentType:'application/json',
|
||||
data
|
||||
})
|
||||
}
|
BIN
src/assets/arrow_bottom.png
Normal file
BIN
src/assets/arrow_bottom.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 246 B |
BIN
src/assets/line.png
Normal file
BIN
src/assets/line.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 237 B |
@ -6,6 +6,7 @@
|
||||
:placeholder="placeholder"
|
||||
required
|
||||
@input="$emit('input', $event)"
|
||||
@blur="$emit('blurIn')"
|
||||
input-align="right"
|
||||
/>
|
||||
</van-cell-group>
|
||||
|
@ -108,7 +108,7 @@ const routes = [
|
||||
name: 'driverAdd',
|
||||
component:()=>import('@/views/index/driverAdd'),
|
||||
meta: {
|
||||
name:'司机新增或修改'
|
||||
title:'司机新增或修改'
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -1,59 +0,0 @@
|
||||
import { formatDate, formatNumber } from '@/utils/common'
|
||||
// 拼接 预约时间 picker
|
||||
export function getAppointFun (time) {
|
||||
let arr = []
|
||||
// 当天剩余时间段
|
||||
let obj = getCurrentDatePicker(time)
|
||||
arr.push(obj)
|
||||
// 后六天的可选时间段
|
||||
let tempArr = getAfterTimeList()
|
||||
arr.push(...tempArr)
|
||||
return arr
|
||||
}
|
||||
|
||||
// 拼接 当天剩余的可预约时间段(默认第一个是两小时之后可选)
|
||||
const getCurrentDatePicker = time => {
|
||||
let obj = {}
|
||||
obj.text = formatDate(time);
|
||||
let timeArr = getCurrentTimeList()
|
||||
obj.children = timeArr
|
||||
return obj
|
||||
}
|
||||
|
||||
// 当天日期的时间段
|
||||
const getCurrentTimeList = () => {
|
||||
let todayDate = new Date()
|
||||
let tempArr = []
|
||||
tempArr.push({ text: '尽快到' }); // 首先添加尽快到
|
||||
if( todayDate.getMinutes() <= 30 && todayDate.getMinutes() > 0 ) {
|
||||
let tempVal = todayDate.getHours() + 2;
|
||||
let tempHalfHours = formatNumber(tempVal) + ':30';
|
||||
tempArr.push({ text: tempHalfHours });
|
||||
}
|
||||
let startFlag = (todayDate.getMinutes() == 0) ? (todayDate.getHours() + 2) : (todayDate.getHours() + 3)
|
||||
tempArr = getDateTimeList(startFlag, tempArr)
|
||||
return tempArr
|
||||
}
|
||||
|
||||
// 获取后六天的 预约时间 picker
|
||||
const getAfterTimeList = () => {
|
||||
let afterArr = []
|
||||
for(let i = 1; i < 7; i++ ) {
|
||||
let obj = {};
|
||||
let tempTime = formatDate(new Date().getTime() + (i * 24* 60 * 60 * 1000))
|
||||
obj.text = tempTime
|
||||
let timeArr = []
|
||||
obj.children = getDateTimeList(0, timeArr)
|
||||
afterArr.push(obj)
|
||||
}
|
||||
return afterArr
|
||||
}
|
||||
|
||||
// 获取某个时间段后的所有可选时段
|
||||
const getDateTimeList = (startHours = 0, list) => {
|
||||
for(let i = startHours; i < 24; i++ ) {
|
||||
list.push({ text: formatNumber(i) + ':' + '00' })
|
||||
list.push({ text: formatNumber(i) + ':' + '30' })
|
||||
}
|
||||
return list
|
||||
}
|
@ -22,9 +22,23 @@ const leftCopy = (obj, source) => {
|
||||
}
|
||||
}
|
||||
|
||||
const timeFormat=(data) =>{
|
||||
const currentDate = new Date(data);
|
||||
const year = currentDate.getFullYear();
|
||||
const month = String(currentDate.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(currentDate.getDate()).padStart(2, '0');
|
||||
const hours = String(currentDate.getHours()).padStart(2, '0');
|
||||
const minutes = String(currentDate.getMinutes()).padStart(2, '0');
|
||||
const seconds = String(currentDate.getSeconds()).padStart(2, '0');
|
||||
const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
||||
// console.log("formattedDate",formattedDate)
|
||||
return formattedDate;
|
||||
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
formatNumber,
|
||||
formatDate,
|
||||
leftCopy,
|
||||
timeFormat
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ service.interceptors.request.use(
|
||||
config.headers['Content-Type'] = config.contentType || 'application/x-www-form-urlencoded'
|
||||
// const urlParams = new URLSearchParams(window.location.search);
|
||||
// const token = urlParams.get('token');
|
||||
let token='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJzemwiLCJhdWQiOlsic3VwcGxpZXItYXBwIl0sIm5iZiI6MTY5MjE2ODQ3OCwidXNlcl9pbmZvIjp7InVzZXJJZCI6NTQ1ODUsInBob25lIjoiMTc2MzAwMzU2NTgiLCJuYW1lIjoi5bCP5a6LIiwic3VwcGxpZXJOYW1lIjoi5LiK5rW35a6J55WFQSIsInN1cHBsaWVySWQiOjExMjgsInN1cHBsaWVyVHlwZSI6MSwidXNlcm5hbWUiOiJzemwiLCJ1c2VyVHlwZSI6IkFQUCIsImF1dGhvcml0aWVzIjpbXX0sInNjb3BlIjpbImFsbCJdLCJpc3MiOiJodHRwczovL3Npbm9hc3Npc3QuY29tIiwiZXhwIjoxNjkyMjU0ODc4LCJpYXQiOjE2OTIxNjg0Nzh9.yVreEsJqwcEy6jALrhqQ9tasuBKqEE-y3fq_TXfaspE'
|
||||
let token='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJzemwiLCJhdWQiOlsic3VwcGxpZXItYXBwIl0sIm5iZiI6MTY5MjI2MzgzOSwidXNlcl9pbmZvIjp7InVzZXJJZCI6NTQ1ODUsInBob25lIjoiMTc2MzAwMzU2NTgiLCJuYW1lIjoi5bCP5a6LIiwic3VwcGxpZXJOYW1lIjoi5LiK5rW35a6J55WFQSIsInN1cHBsaWVySWQiOjExMjgsInN1cHBsaWVyVHlwZSI6MSwidXNlcm5hbWUiOiJzemwiLCJ1c2VyVHlwZSI6IkFQUCIsImF1dGhvcml0aWVzIjpbXX0sInNjb3BlIjpbImFsbCJdLCJpc3MiOiJodHRwczovL3Npbm9hc3Npc3QuY29tIiwiZXhwIjoxNjkyMzUwMjM5LCJpYXQiOjE2OTIyNjM4Mzl9.Mldu7SmfjNEdH-bItFCLVL-zo-IopHWTc8LkTXOtC58'
|
||||
config.headers['Authorization'] = `${token}`;
|
||||
return config
|
||||
},
|
||||
|
@ -1,47 +1,33 @@
|
||||
<template>
|
||||
<div class="wrap">
|
||||
<cell-group label="司机姓名" placeholder="请输入司机姓名" @input="getName(name)" v-model="name"/>
|
||||
<cell-group label="手机号码" placeholder="请输入手机号" @input="getPhone(phone)" v-model="phone"/>
|
||||
<cell-group label="身份证号" placeholder="请输入身份证号" @input="getCarId(carId)" v-model="carId"/>
|
||||
<!-- <div class="itemContent">-->
|
||||
<!-- <div class="titleType">-->
|
||||
<!-- <img class="startImg" src="@/assets/start.png" />-->
|
||||
<!-- <span>司机姓名</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="checkContent">-->
|
||||
<!-- <input placeholder="请输入司机姓名" />-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="lineBot"></div>-->
|
||||
<!-- <div class="itemContent">-->
|
||||
<!-- <div class="titleType">-->
|
||||
<!-- <img class="startImg" src="@/assets/start.png" />-->
|
||||
<!-- <span>手机号码</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="checkContent">-->
|
||||
<!-- <input placeholder="请输入手机号码" />-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="lineBot"></div>-->
|
||||
<!-- <div class="itemContent">-->
|
||||
<!-- <div class="titleType">-->
|
||||
<!-- <img class="startImg" src="@/assets/start.png" />-->
|
||||
<!-- <span>身份证号</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="checkContent">-->
|
||||
<!-- <input placeholder="请输入身份证号" />-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="lineBot"></div>-->
|
||||
<div class="navBar">
|
||||
<van-nav-bar
|
||||
:title="id ? '修改司机信息' : '添加司机'"
|
||||
left-arrow
|
||||
left-arrow-color="#FFFFFF"
|
||||
:border="false"
|
||||
:fixed="true"
|
||||
:safe-area-inset-top="true"
|
||||
@click-left="h5GoBack"
|
||||
/>
|
||||
</div>
|
||||
<cell-group label="司机姓名" placeholder="请输入司机姓名" v-model="driverName"/>
|
||||
<cell-group label="手机号码" v-model="driverPhone" @blurIn="validatePhoneNumber" placeholder="请输入手机号" />
|
||||
<p v-if="phoneNumberError" class="error-message">{{ phoneNumberErrorMessage }}</p>
|
||||
<cell-group label="身份证号" v-model="identityCardNumber" placeholder="请输入身份证号" />
|
||||
<div class="itemContent">
|
||||
<div class="titleType">
|
||||
<img class="startImg" src="@/assets/start.png" />
|
||||
<span>准驾车型</span>
|
||||
</div>
|
||||
<select id="mySelect" class="chosen-select" style="width: 44px">
|
||||
<select id="mySelect" v-model="drivingModel" class="chosen-select" style="width: 44px">
|
||||
<option value="A1">A1</option>
|
||||
<option value="A2">A2</option>
|
||||
<option value="A3">A3</option>
|
||||
<option value="B1">B1</option>
|
||||
<option value="B2">B2</option>
|
||||
<option value="C1">C1</option>
|
||||
<option value="C2">C2</option>
|
||||
<option value="C3">C3</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="lineBot"></div>
|
||||
@ -51,8 +37,8 @@
|
||||
<span>司机状态</span>
|
||||
</div>
|
||||
<div class="isJoin">
|
||||
<van-radio-group v-model="radio" @change="isUse" class="joinWrap">
|
||||
<van-radio name="启用" style="margin-right: 26px" class="item">
|
||||
<van-radio-group v-model="states" @change="isUse" class="joinWrap">
|
||||
<van-radio :name="1" style="margin-right: 26px" class="item">
|
||||
启用
|
||||
<img
|
||||
slot="icon"
|
||||
@ -60,7 +46,7 @@
|
||||
:src="props.checked ? activeIcon : inactiveIcon"
|
||||
>
|
||||
</van-radio>
|
||||
<van-radio name="停用" class="item">
|
||||
<van-radio :name="0" class="item">
|
||||
停用
|
||||
<img
|
||||
slot="icon"
|
||||
@ -77,46 +63,86 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {myMixins} from "@/utils/myMixins"
|
||||
import {timeFormat} from "@/utils/common"
|
||||
import {saveDriver} from "@/api/mine"
|
||||
import TwoCommonBtn from "@/components/twoBtnCommon.vue"
|
||||
import CellGroup from "@/components/cellGroup.vue"
|
||||
export default {
|
||||
name: "driverAdd",
|
||||
mixins:[myMixins],
|
||||
data(){
|
||||
return{
|
||||
name:"",
|
||||
phone:"",
|
||||
carId:"",
|
||||
radio:'启用',
|
||||
id:'',
|
||||
driverName:"",
|
||||
driverPhone:"",
|
||||
identityCardNumber:"",
|
||||
drivingModel:'',
|
||||
states:'',
|
||||
activeIcon: require('@/assets/check.png'),
|
||||
inactiveIcon: require('@/assets/uncheck.png')
|
||||
inactiveIcon: require('@/assets/uncheck.png'),
|
||||
phoneNumberError: false,
|
||||
phoneNumberErrorMessage: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
console.log("radio",this.radio)
|
||||
this.id = this.$route.params?.id;
|
||||
this.driverName = this.$route.params?.name;
|
||||
this.driverPhone = this.$route.params?.phone;
|
||||
this.drivingModel = this.$route.params?.drivingModel;
|
||||
this.identityCardNumber = this.$route.params?.identityCardNumber;
|
||||
this.states = this.$route.params?.states;
|
||||
const selectElement = document.getElementById('mySelect');
|
||||
selectElement.addEventListener('change', function() {
|
||||
const selectedValue = selectElement.value;
|
||||
console.log('Selected value:', selectedValue);
|
||||
this.drivingModel=selectedValue
|
||||
});
|
||||
|
||||
},
|
||||
methods:{
|
||||
isUse(e){
|
||||
console.log("是否启用",e)
|
||||
this.states=e
|
||||
},
|
||||
cancelBtn(){
|
||||
console.log("取消司机")
|
||||
async submitBtn(){
|
||||
let res = await saveDriver({
|
||||
driverId:this.id ? this.id : '',
|
||||
driverName:this.driverName ,
|
||||
driverPhone:this.driverPhone,
|
||||
identityCardNumber:this.identityCardNumber,
|
||||
drivingModel:this.drivingModel,
|
||||
states:Number(this.states),
|
||||
createTime:timeFormat(new Date())
|
||||
})
|
||||
if(res.code === 200){
|
||||
if(this.id){
|
||||
this.$toast('修改成功')
|
||||
|
||||
}else{
|
||||
this.$toast('添加成功')
|
||||
}
|
||||
setTimeout(()=>{
|
||||
this.$router.back();
|
||||
},2000)
|
||||
}
|
||||
},
|
||||
submitBtn(){
|
||||
console.log("提交司机")
|
||||
cancelBtn(){//取消
|
||||
this.driverName='';
|
||||
this.driverPhone='',
|
||||
this.identityCardNumber='',
|
||||
this.drivingModel=''
|
||||
this.states=''
|
||||
},
|
||||
getName(e){
|
||||
console.log("NAME",e);
|
||||
},
|
||||
getPhone(e){
|
||||
console.log("phone",e);
|
||||
},
|
||||
getCarId(e){
|
||||
console.log("car",e);
|
||||
validatePhoneNumber() {
|
||||
const phoneNumberRegex = /^1[0-9]{10}$/;
|
||||
|
||||
if (phoneNumberRegex.test(this.driverPhone)) {
|
||||
this.phoneNumberError = true;
|
||||
this.phoneNumberErrorMessage = '电话号码格式不正确,请输入有效的11位手机号码。';
|
||||
} else {
|
||||
this.phoneNumberError = false;
|
||||
this.phoneNumberErrorMessage = '';
|
||||
}
|
||||
}
|
||||
},
|
||||
components:{
|
||||
@ -129,12 +155,19 @@ export default {
|
||||
<style scoped lang="scss">
|
||||
@import "@/styles/mixin.scss";
|
||||
@import "@/styles/common.scss";
|
||||
|
||||
.error-message {
|
||||
color: red;
|
||||
}
|
||||
.wrap{
|
||||
@include wh(100%,100%);
|
||||
box-sizing: border-box;
|
||||
padding-left: 16px;
|
||||
}
|
||||
.navBar{
|
||||
//height: 46px;
|
||||
margin-bottom: 46px;
|
||||
|
||||
}
|
||||
.itemContent{
|
||||
@include flexColBet;
|
||||
line-height: 56px;
|
||||
|
@ -8,68 +8,41 @@
|
||||
:border="false"
|
||||
:fixed="true"
|
||||
:safe-area-inset-top="true"
|
||||
@click-left="goPage"
|
||||
@click-left="goBack"
|
||||
>
|
||||
<template slot="right">
|
||||
<div class="rightWrap" @click="addDriver">
|
||||
<div class="rightWrap" @click="goPage('driverAdd')">
|
||||
<img src="@/assets/addImg.png" />
|
||||
<span class="addTxt">添加</span>
|
||||
</div>
|
||||
</template>
|
||||
</van-nav-bar>
|
||||
</div>
|
||||
<div class="itemWrap">
|
||||
<div class="itemWrap" v-for="(item,index) in driverList" :key="index">
|
||||
<div class="name-status">
|
||||
<div class="namephone">王小微 / 15234345656</div>
|
||||
<div class="namephone">{{ item.driverName }} / {{ item.driverPhone }}</div>
|
||||
<div class="twoBtn">
|
||||
<button class="del">启用</button>
|
||||
<button class="revise">修改</button>
|
||||
<button class="del" @click="handleStatus(item)">{{ item.states?.label == '启用' ? '停用' : '启用' }}</button>
|
||||
<button class="revise" @click="updateDriver(item)">修改</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="" style="display: flex">
|
||||
<div class="sex" style="margin-right: 40px">
|
||||
<span class="halfOpci">性 别:</span>
|
||||
<span class="allOpci">男</span>
|
||||
<span class="allOpci">{{item.sex?.label}}</span>
|
||||
</div>
|
||||
<div class="carType">
|
||||
<span class="halfOpci">准驾车型:</span>
|
||||
<span class="allOpci">C2</span>
|
||||
<span class="allOpci">{{item.drivingModel}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="halfOpci">身份证号:</span>
|
||||
<span class="allOpci">4115241999083449090</span>
|
||||
</div>
|
||||
<div class="">
|
||||
<span class="halfOpci">状 态:</span>
|
||||
<span class="statusNo">停用</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="itemWrap">
|
||||
<div class="name-status">
|
||||
<div class="namephone">王小微 / 15234345656</div>
|
||||
<div class="twoBtn">
|
||||
<button class="del">停用</button>
|
||||
<button class="revise" @click="goPage('driverAdd')">修改</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="" style="display: flex">
|
||||
<div class="sex" style="margin-right: 40px">
|
||||
<span class="halfOpci">性 别:</span>
|
||||
<span class="allOpci">男</span>
|
||||
</div>
|
||||
<div class="carType">
|
||||
<span class="halfOpci">准驾车型:</span>
|
||||
<span class="allOpci">C2</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="halfOpci">身份证号:</span>
|
||||
<span class="allOpci">4115241999083449090</span>
|
||||
<span class="allOpci">{{ item.identityCardNumber }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="halfOpci">状 态:</span>
|
||||
<span class="statusYes">启用</span>
|
||||
<span :class="item.states?.code == 1 ? 'statusYes' : 'statusNo'">{{ item.states?.label }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -79,10 +52,64 @@
|
||||
<script>
|
||||
|
||||
import {myMixins} from "@/utils/myMixins"
|
||||
import {driverList,enableAction} from "@/api/mine"
|
||||
export default {
|
||||
name: "driverManage",
|
||||
|
||||
mixins:[myMixins],
|
||||
data(){
|
||||
return{
|
||||
pageNum:1,
|
||||
pageSize:10,
|
||||
total:'',
|
||||
driverList:[],
|
||||
states:''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getDriverList()
|
||||
},
|
||||
methods:{
|
||||
async getDriverList(){
|
||||
let res = await driverList({
|
||||
pageNum:this.pageNum,
|
||||
pageSize:this.pageSize
|
||||
});
|
||||
if(res.code == 200){
|
||||
this.total=res.total
|
||||
this.driverList=res.data
|
||||
}
|
||||
},
|
||||
async handleStatus(item){
|
||||
if(item.states.code === 0){
|
||||
this.states = 1
|
||||
}else{
|
||||
this.states = 0
|
||||
}
|
||||
let res = await enableAction({
|
||||
driverId:item.driverId,
|
||||
states:this.states
|
||||
})
|
||||
await this.getDriverList();
|
||||
setTimeout(()=>{
|
||||
this.$toast('操作成功')
|
||||
},)
|
||||
console.log("item",res)
|
||||
},
|
||||
updateDriver(item){
|
||||
// 在当前组件中进行路由跳转并传递参数对象
|
||||
this.$router.push({
|
||||
name: 'driverAdd', // 目标路由的名称
|
||||
params: {
|
||||
id: item.driverId, // 参数对象的属性
|
||||
name: item.driverName,
|
||||
phone:item.driverPhone,
|
||||
drivingModel:item.drivingModel,
|
||||
identityCardNumber:item.identityCardNumber,
|
||||
states:item.states.code
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -95,6 +122,7 @@ export default {
|
||||
box-sizing: border-box;
|
||||
padding: 13px;
|
||||
@include wh(100%, 100%);
|
||||
overflow-y: auto;
|
||||
}
|
||||
.navBar{
|
||||
//height: 46px;
|
||||
|
@ -12,8 +12,12 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="contentWrap">
|
||||
<div class="item" v-for="(item,index) in 4" :key="index">
|
||||
<div class="itemContent">ZDZD230630253236 拖车 128元</div>
|
||||
<div class="item" v-for="(item,index) in detailList" :key="index">
|
||||
<div class="itemContent">
|
||||
<span> {{ item.orderCode }}</span>
|
||||
<span>{{ item.serviceName }}</span>
|
||||
<span> {{item.settleAmount}}元</span>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
</div>
|
||||
</div>
|
||||
@ -22,11 +26,41 @@
|
||||
|
||||
<script>
|
||||
import {myMixins} from "@/utils/myMixins"
|
||||
import {notifyInvoiceDetail} from "@/api/mine"
|
||||
export default {
|
||||
name: "invoicingDetail",
|
||||
mixins:[myMixins],
|
||||
data(){
|
||||
return{
|
||||
pageNum:1,
|
||||
pageSize:10,
|
||||
detailList:[],
|
||||
form:{
|
||||
batchCode:'',
|
||||
startTime:'',
|
||||
overTime:'',
|
||||
}
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
console.log(this.$route.query?.id)
|
||||
this.form.batchCode=this.$route.query?.id;
|
||||
this.form.startTime=this.$route.query?.startTime;
|
||||
this.form.overTime=this.$route.query?.overTime;
|
||||
await this.getDetail()
|
||||
},
|
||||
methods:{
|
||||
|
||||
async getDetail(){
|
||||
let res=await notifyInvoiceDetail({
|
||||
pageNum:this.pageNum,
|
||||
pageSize:this.pageSize,
|
||||
...this.form,
|
||||
})
|
||||
if(res.code=== 200){
|
||||
this.detailList=res.data
|
||||
}
|
||||
// console.log("resssss",res)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="wrap">
|
||||
<div class="navBar">
|
||||
<van-nav-bar
|
||||
title="工单对账"
|
||||
title="开票通知"
|
||||
left-arrow
|
||||
left-arrow-color="#FFFFFF"
|
||||
:border="false"
|
||||
@ -11,52 +11,77 @@
|
||||
@click-left="goBack"
|
||||
/>
|
||||
</div>
|
||||
<div class="itemWrap" v-for="(item,index) in 3" :key="index">
|
||||
<div class="itemWrap" v-for="(item,index) in notifyList" :key="index" >
|
||||
<div class="item line1">
|
||||
<div class="itemTime">
|
||||
<span class="title">开票月份:</span>
|
||||
<span class="content">2023年7月</span>
|
||||
<span class="content">{{ item.invoiceMonth }}</span>
|
||||
</div>
|
||||
<div class="orderNum">
|
||||
<span class="title">总案件数:</span>
|
||||
<span class="content">86</span>
|
||||
</div>
|
||||
<div class="checkBtn" @click="goPage('invoicingDetail')">查看
|
||||
<span class="content">{{ item.orderNum }}</span>
|
||||
</div>
|
||||
<div class="checkBtn" @click="goPage('invoicingDetail',{id:item.batchCode,startTime:item.startTime,overTime:item.overTime})">查看 </div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="title">批次号:</span>
|
||||
<span class="content">PC230626124283</span>
|
||||
<span class="content">{{ item.batchCode }}</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="title">结算总金额:</span>
|
||||
<span class="content">1238元</span>
|
||||
<span class="content">{{ item.totalMoney }}</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="title">扣款金额:</span>
|
||||
<span class="content">2300元</span>
|
||||
<span class="content">{{ item.cutMoney }}</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="title">扣款原因:</span>
|
||||
<span class="content" style="color: #FF8F37;">调度不及时导致客户等待时间过长</span>
|
||||
<span class="content" style="color: #FF8F37;">{{ item.remark }}</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="title">最终开票金额:</span>
|
||||
<span class="content">1008元</span>
|
||||
<span class="content">{{ item.invoiceMoney }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-show="show" class="bgShow">
|
||||
<img src="@/assets/empty.png">
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {myMixins} from "@/utils/myMixins"
|
||||
import {notifyInvoiceList} from "@/api/mine"
|
||||
export default {
|
||||
name: "invoicingNotify",
|
||||
mixins:[myMixins],
|
||||
data(){
|
||||
return{
|
||||
notifyList:[],
|
||||
pageNum:1,
|
||||
pageSize:10,
|
||||
show:false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getNotifyList()
|
||||
},
|
||||
methods:{
|
||||
checkDetail(index){
|
||||
console.log("查看详情"+index)
|
||||
|
||||
async getNotifyList(){
|
||||
let res = await notifyInvoiceList({
|
||||
pageNum:this.pageNum,
|
||||
pageSize:this.pageSize
|
||||
})
|
||||
if(res.code === 0){
|
||||
this.notifyList=res.data;
|
||||
console.log(this.notifyList)
|
||||
if(this.notifyList.length === 0){
|
||||
this.show=true
|
||||
}else{
|
||||
this.show=false
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
@ -72,8 +97,8 @@ export default {
|
||||
}
|
||||
.navBar{
|
||||
|
||||
height: 46px;
|
||||
//margin-bottom: 46px;
|
||||
//height: 46px;
|
||||
margin-bottom: 46px;
|
||||
}
|
||||
.itemWrap{
|
||||
background: #FFFFFF;
|
||||
@ -107,5 +132,9 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bgShow{
|
||||
@include wh(100%,80%);
|
||||
@include flexCenter;
|
||||
justify-content: center;
|
||||
}
|
||||
</style>
|
@ -188,15 +188,15 @@ export default {
|
||||
|
||||
},
|
||||
change(e) {
|
||||
console.log("拖车服务",e)
|
||||
// console.log("拖车服务",e)
|
||||
this.trailerService=e
|
||||
},
|
||||
change2(e) {
|
||||
console.log("小修服务",e)
|
||||
// console.log("小修服务",e)
|
||||
this.smallRepairService=e
|
||||
},
|
||||
isChange(e){
|
||||
console.log("是否参与",e)
|
||||
// console.log("是否参与",e)
|
||||
this.isJoin=e
|
||||
},
|
||||
cancelBtn(){//取消车辆
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="wrap" >
|
||||
<div class="wrap" @scroll="handleScroll">
|
||||
<div class="navBar">
|
||||
<van-nav-bar
|
||||
title="车辆管理"
|
||||
@ -33,7 +33,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<van-dialog v-model="show" title="确定删除吗" show-cancel-button @confirm="handleConfirm"></van-dialog>
|
||||
<div v-if="loading">加载中...</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -50,6 +52,8 @@ export default {
|
||||
pageNum:1,
|
||||
pageSize:10,
|
||||
total:'',
|
||||
loading:false,
|
||||
items: [], // 当前页数
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@ -62,18 +66,21 @@ export default {
|
||||
pageSize:this.pageSize
|
||||
})
|
||||
if(result.code === 200){
|
||||
this.vehicleList=result.data;
|
||||
this.total=result.total
|
||||
//
|
||||
if(this.pageNum == 1){// 第一页直接赋值
|
||||
this.vehicleList=result.data;
|
||||
}else{// 第二页数据拼接
|
||||
let preList = this.vehicleList;
|
||||
let arr = result.data;
|
||||
this.vehicleList = preList.concat(arr)
|
||||
}
|
||||
}
|
||||
},
|
||||
deleteItem(id){//删除车辆
|
||||
this.show=true
|
||||
this.id=id
|
||||
},
|
||||
addVehicle(){//添加车辆
|
||||
console.log("添加")
|
||||
|
||||
},
|
||||
async handleConfirm(){//调删除车辆接口
|
||||
let result= await deleteVehicle({
|
||||
vehicleId:this.id
|
||||
@ -81,16 +88,22 @@ export default {
|
||||
if(result.code === 200){
|
||||
this.$toast('删除成功');
|
||||
await this.getVehicleList();
|
||||
}else{
|
||||
this.$toast(result.msg)
|
||||
}
|
||||
},
|
||||
async handleScroll(){
|
||||
this.pageNum += 1;
|
||||
let res= await this.getVehicleList();
|
||||
let newData=res.data
|
||||
this.vehicleList=[...this.vehicleList,...newData]
|
||||
// console.log("滑动")
|
||||
let num = Math.ceil( this.total / 10)
|
||||
if(num <= this.pageNum){
|
||||
console.log("不在加载数据")
|
||||
}else{
|
||||
this.pageNum++;
|
||||
await this.getVehicleList()
|
||||
console.log("111111111111")
|
||||
}
|
||||
},
|
||||
|
||||
console.log("滑动")
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -23,8 +23,8 @@
|
||||
<div class="rightItem">{{ orderDetailInfo.userName }}</div>
|
||||
<div class="rightItem">{{ orderDetailInfo.userPhone }}</div>
|
||||
<div class="rightItem">{{ orderDetailInfo.plateNumber }}</div>
|
||||
<div class="rightItem" style="line-height: 17px">
|
||||
<span >{{orderDetailInfo.model}}</span>
|
||||
<div class="rightItem" style="line-height: 17px;width: 220px;align-items: baseline">
|
||||
<span >{{orderDetailInfo.model}} </span>
|
||||
<span>{{ orderDetailInfo.brand }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,44 +1,55 @@
|
||||
<template>
|
||||
<div class="wrap">
|
||||
<div class="navBar">
|
||||
<van-nav-bar
|
||||
title="司机管理"
|
||||
left-arrow
|
||||
left-arrow-color="#FFFFFF"
|
||||
:border="false"
|
||||
:fixed="true"
|
||||
:safe-area-inset-top="true"
|
||||
@click-left="h5GoBack"
|
||||
/>
|
||||
</div>
|
||||
<div class="baseInfo common">
|
||||
<div class="title">基本信息:</div>
|
||||
<div class="line"></div>
|
||||
<div class="item">
|
||||
<span class="title">工单编号:</span>
|
||||
<span class="content" id="copyText">ZD230626124283</span>
|
||||
<span class="titleLeft">工单编号:</span>
|
||||
<span class="content" id="copyText">{{ orderInfo.orderCode }}</span>
|
||||
<img @click="copyText" src="@/assets/copy.png" />
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="title">车牌号: </span>
|
||||
<span class="content">湘H-DD899</span>
|
||||
<span class="titleLeft">车牌号: </span>
|
||||
<span class="content">{{orderInfo.plateNumber}}</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="title">服务类型:</span>
|
||||
<span class="content" >搭电</span>
|
||||
<span class="titleLeft">服务类型:</span>
|
||||
<span class="content" >{{ orderInfo.serviceName }}</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="title">工单状态:</span>
|
||||
<span class="content" >未完成</span>
|
||||
<span class="titleLeft">工单状态:</span>
|
||||
<span class="content" >{{ orderInfo.taskSuccessStatus?.label }}</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="title">结算比例:</span>
|
||||
<span class="content" >按服务不成功结算</span>
|
||||
<span class="titleLeft">结算比例:</span>
|
||||
<span class="content" >{{ orderInfo.supplierSettleRatio?.label }}</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="title">结算类型:</span>
|
||||
<span class="content" >系统一口价</span>
|
||||
<span class="titleLeft">结算类型:</span>
|
||||
<span class="content" >{{ orderInfo.settleType?.label }}</span>
|
||||
</div>
|
||||
<div class="item" >
|
||||
<span class="title">结算方式:</span>
|
||||
<span class="titleLeft">结算方式:</span>
|
||||
<div class="content" style="width: calc(100% - 84px);display: flex;justify-content: space-between;line-height: 27px" >
|
||||
<span>起步价:135</span>
|
||||
<span>包含公里数:15</span>
|
||||
<span>超出单价:6</span>
|
||||
<span>{{orderInfo.taskSettleType?.label}}</span>
|
||||
<!-- <span>包含公里数:15</span>-->
|
||||
<!-- <span>超出单价:6</span>-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="title">扣除责任险费:</span>
|
||||
<span class="content">0</span>
|
||||
<span class="titleLeft">扣除责任险费:</span>
|
||||
<span class="content">{{orderInfo.policyAmount}} {{orderInfo.cutInsuranceAmount}}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -55,10 +66,10 @@
|
||||
<div>备注说明:</div>
|
||||
</div>
|
||||
<div class="inputContent">
|
||||
<div class="halfOpcity"><input type="number"/>公里</div>
|
||||
<div class="halfOpcity"><input type="number"/>元</div>
|
||||
<div class="halfOpcity"><input type="number"/>元</div>
|
||||
<div class="halfOpcity"><input type="number" />公里</div>
|
||||
<div class="halfOpcity"><input type="number"/>元</div>
|
||||
<div class="halfOpcity"><input type="number" v-model="form.supplierTyreAmount"/>元</div>
|
||||
<div class="halfOpcity"><input type="number" v-model="form.supplierCustomerAmount"/>元</div>
|
||||
<div class="btnComputed">计算</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -70,11 +81,44 @@
|
||||
|
||||
<script>
|
||||
import {myMixins} from '@/utils/myMixins'
|
||||
import {getAccountRecordDetail} from "@/api/mine"
|
||||
import TwoCommonBtn from "@/components/twoBtnCommon.vue"
|
||||
import order from "../../store/modules/order";
|
||||
export default {
|
||||
name: "accountingView",
|
||||
computed: {
|
||||
order() {
|
||||
return order
|
||||
}
|
||||
},
|
||||
mixins:[myMixins],
|
||||
data(){
|
||||
return{
|
||||
id:'',
|
||||
postfix:'',
|
||||
orderInfo:{},
|
||||
form:{
|
||||
supplierCustomerAmount:'',
|
||||
supplierTyreAmount:'',
|
||||
}
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
this.id=this.$route.params?.id;
|
||||
this.postfix=this.$route.params?.postfix;
|
||||
await this.getDetail()
|
||||
},
|
||||
methods:{
|
||||
async getDetail(){
|
||||
let res= await getAccountRecordDetail({
|
||||
id:this.id,
|
||||
postfix:this.postfix
|
||||
})
|
||||
if(res.code === 200){
|
||||
this.orderInfo=res.data
|
||||
}
|
||||
// console.log("res",res)
|
||||
},
|
||||
cancelBtn(){
|
||||
console.log("取消")
|
||||
},
|
||||
@ -90,11 +134,15 @@ export default {
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "@/styles/mixin.scss";
|
||||
@import "@/styles/common.scss";
|
||||
.wrap{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #F4F5F7;
|
||||
}
|
||||
.navBar{
|
||||
margin-bottom: 46px;
|
||||
}
|
||||
.title{
|
||||
@include fontWeightSize(bold,14px);
|
||||
color: #323643;
|
||||
@ -110,8 +158,10 @@ export default {
|
||||
.item{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@include fontWeightSize(400,12px);
|
||||
.title{
|
||||
font-size: 12px !important;
|
||||
font-weight: 400 !important;
|
||||
//@include fontWeightSize(400,12px) !important;
|
||||
.titleLeft{
|
||||
opacity: .5;
|
||||
line-height: 27px;
|
||||
}
|
||||
@ -128,6 +178,7 @@ img{
|
||||
}
|
||||
.baseInfo{
|
||||
@include wh(100%,276px);
|
||||
|
||||
}
|
||||
.supplierData{
|
||||
@include wh(100%,438px);
|
||||
|
@ -1,24 +1,152 @@
|
||||
<template>
|
||||
<div class="wrap">
|
||||
<div class="navBar">
|
||||
<van-nav-bar
|
||||
title="工单对账"
|
||||
left-arrow
|
||||
left-arrow-color="#FFFFFF"
|
||||
:border="false"
|
||||
:fixed="true"
|
||||
:safe-area-inset-top="true"
|
||||
@click-left="goPage"
|
||||
<div class="wrap">
|
||||
<div class="navBar">
|
||||
<van-nav-bar
|
||||
title="工单对账"
|
||||
left-arrow
|
||||
left-arrow-color="#FFFFFF"
|
||||
:border="false"
|
||||
:fixed="true"
|
||||
:safe-area-inset-top="true"
|
||||
@click-left="goBack"
|
||||
>
|
||||
<template slot="right">
|
||||
<div class="rightWrap">
|
||||
<span class="dateTitle">{{ ymTime }}</span>
|
||||
<img src="@/assets/line.png" class="img1"/>
|
||||
<img src="@/assets/arrow_bottom.png" class="img2" @click="showDatetime = !showDatetime"/>
|
||||
</div>
|
||||
</template>
|
||||
</van-nav-bar>
|
||||
</div>
|
||||
<van-datetime-picker
|
||||
class="dataTime"
|
||||
v-if="showDatetime"
|
||||
v-model="currentDate"
|
||||
type="year-month"
|
||||
title="查询时间"
|
||||
@confirm="onConfirm"
|
||||
@cancel="showDatetime == false"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab_wrap">
|
||||
<div v-for="(item, index) in tabArr" :key="index" :class="{'active' : activeIndex == index}"
|
||||
@click="changeTab(index)">
|
||||
{{ item.name }}
|
||||
</div>
|
||||
</div>
|
||||
<div >
|
||||
<div class="content_wrap" v-for="(item,index) in orderList" :key="index">
|
||||
<div class="codeTxt common">
|
||||
<div class="leftStatus ">
|
||||
<span style="margin-right: 20px" class="orderCode">{{item.orderCode}}</span>
|
||||
<span class="carCode">{{ item.plateNumber }}</span>
|
||||
</div>
|
||||
<div class="rightBtn">
|
||||
<span class="serviceStatus">{{ item.taskStatus?.label }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<div class="supplier">
|
||||
<span class="halfTxt">服务商:</span>
|
||||
<span class="allTxt">{{ item.supplierName }}</span>
|
||||
</div>
|
||||
<div class="status common">
|
||||
<div class="leftStatus" >
|
||||
<span class="halfTxt">审核状态:</span>
|
||||
<span class="allTxt">{{ item.accountStatus?.label }}</span>
|
||||
</div>
|
||||
<div class="rightBtn">
|
||||
<button class="btn" v-if="queryType == 1" @click="handleAccounting(item)">记账</button>
|
||||
<button class="btn" v-if="[3, 5].includes(queryType)">重新记账</button>
|
||||
<button class="btn" v-if="queryType == 7">查看详情</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {myMixins} from "@/utils/myMixins"
|
||||
import {accountRecordList} from "@/api/mine"
|
||||
import {timeFormat} from "@/utils/common"
|
||||
export default {
|
||||
name: "workOrderReconciliation",
|
||||
methods:{
|
||||
|
||||
mixins: [myMixins],
|
||||
data() {
|
||||
return {
|
||||
tabArr: [{name: '待记账', status: 1}, {name: '待审核', status: 3}, {name: '审核失败', status: 5}, {name: '审核完成', status: 7}],
|
||||
activeIndex: 0,
|
||||
orderList: [],
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
queryType:1,
|
||||
queryTime:'',
|
||||
showDatetime: false,
|
||||
currentDate: new Date(),
|
||||
ymTime: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initSelectTime();
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
async changeTab(index) {
|
||||
this.activeIndex = index
|
||||
if(this.activeIndex === 0){
|
||||
this.queryType = 1
|
||||
}else if(this.activeIndex === 1){
|
||||
this.queryType = 3
|
||||
}else if(this.activeIndex === 2){
|
||||
this.queryType = 5
|
||||
}else if(this.activeIndex === 3){
|
||||
this.queryType = 7
|
||||
}
|
||||
this.total = 0;
|
||||
this.pageNum = 1
|
||||
this.orderList = [];
|
||||
await this.getList()
|
||||
},
|
||||
async getList(){
|
||||
let res = await accountRecordList({
|
||||
pageNum:this.pageNum,
|
||||
pageSize:this.pageSize,
|
||||
queryType:this.queryType,
|
||||
queryTime:this.queryTime
|
||||
})
|
||||
if(res.code === 200){
|
||||
this.orderList = res.data;
|
||||
}
|
||||
},
|
||||
handleAccounting(item){
|
||||
console.log("iiii",item)
|
||||
this.$router.push({
|
||||
name: 'accountingView', // 目标路由的名称
|
||||
params: {
|
||||
id: item.id, // 参数对象的属性
|
||||
postfix:item.postfix
|
||||
}
|
||||
});
|
||||
},
|
||||
onConfirm(value) {
|
||||
this.showDatetime = false
|
||||
const date = new Date(value);
|
||||
const year = date.getFullYear(); // 获取年份,结果为 2023
|
||||
const month = (date.getMonth() + 1).toString().padStart(2, '0'); // 获取月份,需要注意月份从 0 开始,所以要加 1,结果为 9
|
||||
this.ymTime = year + '-' + month
|
||||
this.queryTime=timeFormat(value);
|
||||
this.getList();
|
||||
},
|
||||
initSelectTime() {//初始化查询时间
|
||||
const year = this.currentDate.getFullYear(); // 获取年份,结果为 2023
|
||||
const month = (this.currentDate.getMonth() + 1).toString().padStart(2, '0'); // 获取月份,需要注意月份从 0 开始,所以要加 1,结果为 9
|
||||
this.ymTime = year + '-' + month;
|
||||
this.queryTime=timeFormat(new Date());
|
||||
// console.log(this.queryTime)
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@ -26,7 +154,141 @@ export default {
|
||||
<style scoped lang="scss">
|
||||
@import "@/styles/common.scss";
|
||||
@import "@/styles/mixin.scss";
|
||||
.navBar{
|
||||
|
||||
.wrap {
|
||||
@include wh(100%, 100%);
|
||||
background: #F4F5F7;
|
||||
box-sizing: border-box;
|
||||
padding: 0 12px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.dataTime {
|
||||
position: absolute;
|
||||
z-index: 11;
|
||||
top: 46px;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.navBar {
|
||||
margin-bottom: 46px;
|
||||
|
||||
.rightWrap {
|
||||
@include flexCenter;
|
||||
justify-content: space-around;
|
||||
@include wh(106px, 26px);
|
||||
background: linear-gradient(180deg, #A3B8E9 0%, #6C81CD 100%);
|
||||
border-radius: 4px;
|
||||
border: 1px solid;
|
||||
border-image: linear-gradient(270deg, rgba(103, 122, 193, 1), rgba(160, 178, 226, 1), rgba(160, 178, 226, 1), rgba(103, 122, 193, 1)) 1 1;
|
||||
|
||||
.img1 {
|
||||
@include wh(1px, 18px)
|
||||
}
|
||||
|
||||
.img2 {
|
||||
@include wh(7px, 5px)
|
||||
}
|
||||
|
||||
.dateTitle {
|
||||
@include fontWeightSize(bolder, 12px);
|
||||
color: #FFFFFF;
|
||||
opacity: .9;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tab_wrap {
|
||||
@include fontWeightSize(bolder, 15px);
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
padding: 10px 0 15px 0;
|
||||
color: #737373;
|
||||
opacity: .7;
|
||||
|
||||
div {
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
.active {
|
||||
color: #3678FF;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.active:after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 18px;
|
||||
height: 3px;
|
||||
background: linear-gradient(270deg, #33A3FF 0%, #176AFE 100%);
|
||||
border-radius: 2px;
|
||||
position: absolute;
|
||||
margin-top: 3px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
}
|
||||
|
||||
.content_wrap {
|
||||
@include wh(100%, 96px);
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 1px 4px 0px rgba(39, 52, 125, 0.05);
|
||||
border-radius: 6px;
|
||||
border: 1px solid #E6E6E6;
|
||||
backdrop-filter: blur(5.602678571428572px);
|
||||
@include flexBetween;
|
||||
box-sizing: border-box;
|
||||
padding: 10px 0;
|
||||
margin-bottom: 10px;
|
||||
.common {
|
||||
@include flexColBet();
|
||||
margin-left: 18px;
|
||||
margin-right: 14px;
|
||||
|
||||
}
|
||||
|
||||
.line {
|
||||
@include wh(100%, 1px);
|
||||
background: #E9E9EA;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.supplier {
|
||||
margin-left: 18px;
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
//@include wh(48px, 18px);
|
||||
@include all-height(20px);
|
||||
text-align: center;
|
||||
@include bgFontColor(#FFFFFF, #354D93);
|
||||
border-radius: 3px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.halfTxt {
|
||||
display: inline-block;
|
||||
width: 55px;
|
||||
@include fontWeightSize(400, 12px);
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.allTxt {
|
||||
@include fontWeightSize(400, 12px)
|
||||
}
|
||||
|
||||
.orderCode {
|
||||
@include fontWeightSize(bold, 13px)
|
||||
}
|
||||
|
||||
.carCode {
|
||||
@include fontWeightSize(bold, 12px)
|
||||
}
|
||||
|
||||
.serviceStatus {
|
||||
@include fontWeightSize(bolder, 13x);
|
||||
color: #09B820;
|
||||
}
|
||||
}
|
||||
</style>
|
Reference in New Issue
Block a user