pad-app/pages/index/domesticTrade.vue

2478 lines
61 KiB
Vue
Raw Normal View History

2023-09-23 20:16:54 +08:00
<template>
<view class="app">
2023-12-22 17:48:52 +08:00
<head-view :title="title"></head-view>
<view class="content2 contentFixed">
<view class="buttonlist">
<template v-if="tabsValue == 0">
<button class="button" type="default" @click="ask"></button>
<button class="button" type="default" @click="distribute('center','all')"></button>
</template>
<template v-if="tabsValue == 1">
<!-- <button class="button" type="default" @click="ask"></button> -->
<button class="button" type="default" @click="distribute('center','solo')"></button>
</template>
</view>
2024-01-16 10:04:27 +08:00
<template v-if="tabsValue == 0 || tabsValue == 1">
<view class="refresh" @click="refresh">
<image src="../../static/images/refreshImg.png" mode=""></image>
<p>刷新</p>
</view>
</template>
2023-09-23 20:16:54 +08:00
<custom-tabs type="c1" :value="tabsValue" @change="changeTabs">
2023-12-22 17:48:52 +08:00
<custom-tab-pane :label="zzlName" name="c1_1" v-if="zzlIsShwo">
2023-09-23 20:16:54 +08:00
<view></view>
<view class="main">
<view class="form">
<view class="inputBox">
2023-12-22 17:48:52 +08:00
<view class="leftInput">
<uni-easyinput class="uni-mt-5" suffixIcon="search" v-model="mnfBl"
placeholder="提单号" @iconClick="search"></uni-easyinput>
</view>
<view class="rightInput" @click="screen">
<p>品牌<uni-icons type="bottom" style="margin-left: 5px;" size="16"></uni-icons></p>
<p>车型<uni-icons type="bottom" style="margin-left: 5px;" size="16"></uni-icons></p>
<p>港口<uni-icons type="bottom" style="margin-left: 5px;" size="16"></uni-icons></p>
</view>
2023-09-23 20:16:54 +08:00
</view>
</view>
2023-12-22 17:48:52 +08:00
<view class="tjList">
<view class="tjHead" @click="clickTjHead('zzl')">
<view class="title">
<p>总指令进度</p>
<text>{{zTjList.totalSentCount}}/{{zTjList.totalSum}}</text>
</view>
<lx-progress-bar title="" :total="zTjList.totalSum" :firstValue="zTjList.totalSentCount"
:secondValue="zTjList.totalPausedSentCount" contentColor="#0067CF"
contentColor2="#FC4F00" />
<view class="bottomInfo">
<p>已发送<text>{{zTjList.totalSentCount}}</text></p>
<p>(暂停<text>{{zTjList.totalPausedSentCount}}</text>)</p>
<p>未发<text>{{zTjList.totalNotSentCount}}</text></p>
</view>
<view class="imgBox" v-if="zTjType">
<image src="../../static/images/tjxz.png" mode=""></image>
</view>
</view>
<template v-for="(item,index) in zTjList.instructionStatisticsList">
<view class="tjInfo" :key="index" :class="{active:zTjActive == index}"
@click="clickTjList(item,index,'zzl')">
<view class="title">
<p>{{item.titleBar}}</p>
<text>{{item.totalSentCount}}/{{item.zsum}}</text>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<lx-progress-bar title="" :total="item.zsum" :firstValue="item.totalSentCount"
:secondValue="item.totalPausedSentCount" contentColor="#0067CF"
contentColor2="#FC4F00" backColor="#f2f2f2" />
<view class="bottomInfo">
<p>已发送<text>{{item.totalSentCount}}</text></p>
<p>(暂停<text>{{item.totalPausedSentCount}}</text>)</p>
<p>未发<text>{{item.totalNotSentCount}}</text></p>
</view>
<view class="imgBox" v-if="zTjActive == index">
<image src="../../static/images/tjxz2.png" mode=""></image>
2023-09-23 20:16:54 +08:00
</view>
</view>
2023-12-22 17:48:52 +08:00
</template>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<template v-if="itemList.length > 0">
<view class="itemBox">
<view class="itemList">
<custom-waterfalls-flow :value="itemList" :column="2" :columnSpace="1">
<template v-slot:default="item">
<view class="exp">
2023-09-23 20:16:54 +08:00
<view class="item">
<view class="row">
<view class="title">
<image class="titleImg" src="../../static/images/zlIcon.png"
mode="widthFix">
</image>
<view class="text">
目的港:{{item.destPortDesc}}
</view>
</view>
<view class="schedule">
2023-12-22 17:48:52 +08:00
<text class="text">进度</text>
2023-09-23 20:16:54 +08:00
<view class="progressBox">
<van-progress color="#0067CF" stroke-width="6px"
:show-pivot="false" track-color="#DEE9F5"
:percentage="itemSum(item.loadingProgress.workProgress, item.loadingProgress.totalProgress)" />
</view>
<text>{{itemSum(item.loadingProgress.workProgress, item.loadingProgress.totalProgress)}}%</text>
</view>
<view class="planStatus planStatus0"
2023-12-22 17:48:52 +08:00
v-if="item.totalPlanStatus == 0">
<text class="text">{{item.totalPlanStatusDesc}}</text>
2023-09-23 20:16:54 +08:00
</view>
<view class="planStatus planStatus3"
2023-12-22 17:48:52 +08:00
v-if="item.totalPlanStatus == 3">
<text class="text">{{item.totalPlanStatusDesc}}</text>
2023-09-23 20:16:54 +08:00
</view>
<view class="planStatus planStatus5"
2023-12-22 17:48:52 +08:00
v-if="item.totalPlanStatus == 5">
<text class="text">{{item.totalPlanStatusDesc}}</text>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<view class="planStatus planStatus1"
v-if="item.totalPlanStatus == 1 || item.totalPlanStatus == 2 || item.totalPlanStatus == 4">
<text class="text">{{item.totalPlanStatusDesc}}</text>
2023-09-23 20:16:54 +08:00
</view>
</view>
<view class="row">
<view class="rowInfo">
<view class="col">
<text>车辆数</text>
<text>{{item.vehicleCount}}</text>
</view>
<view class="col">
<text>始发港</text>
<text>{{item.originPortDesc}}</text>
</view>
<view class="col">
<text>负责人</text>
<text>{{item.responsiblePerson}}</text>
</view>
2023-12-22 17:48:52 +08:00
</view>
<view class="rowInfo">
2023-09-23 20:16:54 +08:00
<view class="col">
<text>发送时间</text>
<text>{{item.totalSendTime}}</text>
</view>
<view class="col">
<text>总指令发送人</text>
<text>{{item.totalSendUser}}</text>
</view>
</view>
</view>
2023-12-22 17:48:52 +08:00
<view class="expand" v-if="itemActive != item.index"
@click="isActive(item.index)">
2023-09-23 20:16:54 +08:00
展开
</view>
<view class="expand" v-else @click="itemActive = '-1'">
收起
</view>
</view>
<view class="details">
2023-12-22 17:48:52 +08:00
<view class="itemDetails" v-show="itemActive == item.index">
2023-09-23 20:16:54 +08:00
<template v-for="(item2,index2) in item.infoList">
<view class="detailsBox" :key="index2">
<view class="title">
<text>{{item2.mnfBl}}</text>
2023-12-22 17:48:52 +08:00
<button @click="toDetails(item2.spsId)"></button>
2023-09-23 20:16:54 +08:00
</view>
<view class="info">
<view class="cell">
<text>中转港</text>
<text>{{item2.transitPortName}}</text>
</view>
<view class="cell">
<text>品牌</text>
<text>{{item2.brdName}}</text>
</view>
<view class="cell">
<text>车型</text>
<text>{{item2.goodsTypeName}}</text>
</view>
<view class="cell">
<text>型号</text>
<text>{{item2.bvdName}}</text>
</view>
</view>
</view>
</template>
</view>
</view>
</view>
2023-12-22 17:48:52 +08:00
</template>
</custom-waterfalls-flow>
</view>
</view>
</template>
<o-empty v-else height="70vh" bg="#f5f6fa" />
</view>
</custom-tab-pane>
<custom-tab-pane :label="fzlName" name="c1_2" v-if="fzlIsShow">
<view></view>
<view class="main">
<view class="form">
<view class="inputBox">
<view class="leftInput">
<uni-easyinput class="uni-mt-5" suffixIcon="search" v-model="mnfBl"
placeholder="提单号" @iconClick="search"></uni-easyinput>
</view>
<view class="rightInput" @click="screen">
<p>发送状态<uni-icons type="bottom" style="margin-left: 5px;" size="16"></uni-icons></p>
<p>品牌<uni-icons type="bottom" style="margin-left: 5px;" size="16"></uni-icons></p>
<p>车型<uni-icons type="bottom" style="margin-left: 5px;" size="16"></uni-icons></p>
<p>港口<uni-icons type="bottom" style="margin-left: 5px;" size="16"></uni-icons></p>
</view>
</view>
</view>
<view class="tjList">
<view class="tjHead" @click="clickTjHead('fzl')">
<view class="title">
<p>分指令进度</p>
<text>{{zTjList.branchSentCount}}/{{zTjList.branchSum}}</text>
</view>
<lx-progress-bar title="" :total="zTjList.branchSum"
:firstValue="zTjList.branchSentCount" :secondValue="zTjList.branchPausedSentCount"
contentColor="#0067CF" contentColor2="#FC4F00" />
<view class="bottomInfo">
<p>已发送<text>{{zTjList.branchSentCount}}</text></p>
<p>(暂停<text>{{zTjList.branchPausedSentCount}}</text>)</p>
<p>未发<text>{{zTjList.branchNotSentCount}}</text></p>
</view>
<view class="imgBox" v-if="zTjType">
<image src="../../static/images/tjxz.png" mode=""></image>
</view>
</view>
<template v-for="(item,index) in zTjList.instructionStatisticsList">
<view class="tjInfo" :key="index" :class="{active:zTjActive == index}"
@click="clickTjList(item,index,'fzl')">
<view class="title">
<p>{{item.titleBar}}</p>
<text>{{item.branchSentCount}}/{{item.fsum}}</text>
</view>
<lx-progress-bar title="" :total="item.fsum" :firstValue="item.branchSentCount"
:secondValue="item.branchPausedSentCount" contentColor="#0067CF"
contentColor2="#FC4F00" backColor="#f2f2f2" />
<view class="bottomInfo">
<p>已发送<text>{{item.branchSentCount}}</text></p>
<p>(暂停<text>{{item.branchPausedSentCount}}</text>)</p>
<p>未发<text>{{item.branchNotSentCount}}</text></p>
</view>
<view class="imgBox" v-if="zTjActive == index">
<image src="../../static/images/tjxz2.png" mode=""></image>
</view>
</view>
</template>
</view>
<template v-if="itemList.length > 0">
<checkbox-group @change="checkChange">
<view class="itemBox">
<view class="itemList">
<custom-waterfalls-flow :value="itemList" :column="2" :columnSpace="1">
<template v-slot:default="item">
<view class="exp">
<view class="item">
<view class="row">
<view class="title">
<view class="rowHead">
<checkbox :value="item.lwpId" :checked="false" />
</view>
<image class="titleImg"
src="../../static/images/zlIcon.png"
mode="widthFix">
</image>
<view class="text">
目的港:{{item.destPortDesc}}
</view>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<view class="schedule">
<text class="text">进度</text>
<view class="progressBox">
<van-progress color="#0067CF" stroke-width="6px"
:show-pivot="false" track-color="#DEE9F5"
:percentage="itemSum(item.loadingProgress.workProgress, item.loadingProgress.totalProgress)" />
</view>
<text>{{itemSum(item.loadingProgress.workProgress, item.loadingProgress.totalProgress)}}%</text>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<view class="planStatus planStatus0"
v-if="item.branchPlanStatus == '0'">
<text class="text">{{item.branchPlanStatusDesc}}</text>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<view class="planStatus planStatus1"
v-if="item.branchPlanStatus == '1'">
<text class="text">{{item.branchPlanStatusDesc}}</text>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<view class="planStatus planStatus3"
v-if="item.branchPlanStatus == '2'">
<text class="text">{{item.branchPlanStatusDesc}}</text>
</view>
<view class="planStatus planStatus5"
v-if="item.branchPlanStatus == '4'">
<text class="text">{{item.branchPlanStatusDesc}}</text>
</view>
<view class="planStatus planStatus1"
v-if="item.branchPlanStatus == '5'">
<text class="text">{{item.branchPlanStatusDesc}}</text>
2023-09-23 20:16:54 +08:00
</view>
</view>
2023-12-22 17:48:52 +08:00
<view class="row">
<view class="rowInfo">
<view class="col">
<text>车辆数</text>
<text>{{item.vehicleCount}}</text>
</view>
<view class="col">
<text>始发港</text>
<text>{{item.originPortDesc}}</text>
</view>
<view class="col">
<text>负责人</text>
<text>{{item.responsiblePerson}}</text>
</view>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<view class="rowInfo">
<view class="col">
<text>总指令发送人</text>
<text>{{item.totalSendUser}}</text>
</view>
<view class="col">
<text>发送时间</text>
<text>{{item.totalSendTime}}</text>
</view>
2023-09-23 20:16:54 +08:00
</view>
</view>
2023-12-22 17:48:52 +08:00
<view class="xfBtn">
<view class="btn" @click="distribute('center','solo',item)"
v-if="item.branchPlanStatusDesc == '待发送'">
指令下发
</view>
<view class="btn" @click="distribute('center','again',item)"
v-if="item.branchPlanStatusDesc == '暂停'">
重新发送
</view>
<view class="btn stopbtn" @click="suspend(item)"
v-if="item.branchPlanStatusDesc == '作业中' || item.branchPlanStatusDesc == '待作业'">
暂停
2023-09-23 20:16:54 +08:00
</view>
</view>
2023-12-22 17:48:52 +08:00
<view class="expand" v-if="itemActive != item.index"
@click="isActive(item.index)">
展开
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<view class="expand" v-else @click="itemActive = '-1'">
收起
2023-09-23 20:16:54 +08:00
</view>
</view>
2023-12-22 17:48:52 +08:00
<view class="details">
<view class="itemDetails" v-show="itemActive == item.index">
<template v-for="(item2,index2) in item.infoList">
<view class="detailsBox" :key="index2">
<view class="title">
<text>{{item2.mnfBl}}</text>
<button
@click="toDetails(item2.spsId)">详情</button>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<view class="info">
<view class="cell">
<text>中转港</text>
<text>{{item2.transitPortName}}</text>
</view>
<view class="cell">
<text>品牌</text>
<text>{{item2.brdName}}</text>
</view>
<view class="cell">
<text>车型</text>
<text>{{item2.goodsTypeName}}</text>
</view>
<view class="cell">
<text>型号</text>
<text>{{item2.bvdName}}</text>
</view>
2023-09-23 20:16:54 +08:00
</view>
</view>
2023-12-22 17:48:52 +08:00
</template>
</view>
2023-09-23 20:16:54 +08:00
</view>
</view>
2023-12-22 17:48:52 +08:00
</template>
</custom-waterfalls-flow>
</view>
</view>
</checkbox-group>
</template>
<o-empty v-else height="70vh" bg="#f5f6fa" />
2023-09-23 20:16:54 +08:00
</view>
</custom-tab-pane>
2023-12-22 17:48:52 +08:00
<custom-tab-pane :label="cwtName" name="c1_4" v-if="cwtIsShow">
<view class="main" v-if="isCwnum == 0">
<view></view>
<view class="form form2">
<view class="inputBox">
<view class="leftInput">
<uni-easyinput class="uni-mt-5" suffixIcon="search" v-model="mnfBl"
placeholder="提单号" @iconClick="search"></uni-easyinput>
</view>
<view class="rightInput" @click="screen">
<p>品牌<uni-icons type="bottom" style="margin-left: 5px;" size="16"></uni-icons></p>
<p>车型<uni-icons type="bottom" style="margin-left: 5px;" size="16"></uni-icons></p>
<p>港口<uni-icons type="bottom" style="margin-left: 5px;" size="16"></uni-icons></p>
</view>
</view>
</view>
<view class="cwMain">
<view class="cwLeft">
<view class="leftData" v-for="(item,index) in dcList" :key="index"
@click="clickLeft(item,index)" :class="{active:activeIndex == index}">
<p>{{item.pymName}}</p>
</view>
</view>
<view class="cwRight">
<view class="rightBox" v-for="(item,index) in qyList" :key="index">
2023-09-23 20:16:54 +08:00
<view class="boxTop">
2023-12-22 17:48:52 +08:00
<p>{{item.pyaAreaCode}}{{item.totalLaneAmout}}/{{item.totalSeatAmout}}</p>
<text @click="clickLine(item)"></text>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<view class="boxContent">
<view class="dataList">
<p>车位总数
<template v-if="item.totalSeatAmout == null">-- </template>
<template v-else>{{item.totalSeatAmout}}</template>
车位
</p>
<p>使用
<template v-if="item.useSeatAmout == null">-- </template>
<template v-else>{{item.useSeatAmout}}</template>
车位
</p>
<p>剩余
<template v-if="item.remainSeatAmout == null">-- </template>
<template v-else>{{item.remainSeatAmout}}</template>
车位
</p>
<p>可停放车辆
<template v-if="item.unparkGoodsAmout == null">-- </template>
<template v-else>{{item.unparkGoodsAmout}}</template>
</p>
<p>已停放车辆
<template v-if="item.stopGoodsAmout == null">-- </template>
<template v-else>{{item.stopGoodsAmout}}</template>
</p>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
<view class="boxJd">
<lx-progress-bar title="" :total="item.totalSeatAmout"
:firstValue="item.stopGoodsAmout" contentColor="#0067CF" />
<text>{{item.stopGoodsAmout}}/{{item.totalSeatAmout}}</text>
</view>
<view class="carUl">
<view class="carLi" v-for="(v,index2) in item.carStatisticsList"
:key="index2" @click="clickCar(v)">
<zb-tooltip placement="top-start" color="white"
:visible.sync="v.isShow">
<view slot="content">
<view class="tipBox">
<view class="li" v-for="(item2,idx) in v.carDetailList"
:key="idx">
<p>{{item2.storeLine}}</p>
<text>{{item2.storeSeatAmout}}车位</text>
2023-09-23 20:16:54 +08:00
</view>
</view>
</view>
2023-12-22 17:48:52 +08:00
<view style="width: 100%; height: 100%;">
<p class="carTitle">{{v.brdName}}
<template v-if="v.bvmName != ''">
-
</template>
{{v.bvmName}}
</p>
<text>{{v.carAmout}}</text>
2023-09-23 20:16:54 +08:00
</view>
2023-12-22 17:48:52 +08:00
</zb-tooltip>
2023-09-23 20:16:54 +08:00
</view>
</view>
</view>
</view>
2023-12-22 17:48:52 +08:00
</view>
2023-09-23 20:16:54 +08:00
</view>
</view>
2023-12-22 17:48:52 +08:00
<template v-else>
<place @modifyPlaceTabs="modifyPlaceTabs" :vvyId="shipInfo.vvyId" :pyaObj="pyaObj"
:brdId="brdId" :bvmId="bvmId" :potId="potId" :mnfBl="mnfBl"></place>
</template>
2023-09-23 20:16:54 +08:00
</custom-tab-pane>
</custom-tabs>
2023-12-22 17:48:52 +08:00
<uni-drawer ref="showRight" mode="right" :mask-click="false">
<view class="scroll-view">
<scroll-view class="scroll-view-box" scroll-y="true">
<view class="drawerTop" @click="back">
<image src="../../static/images/leftJt.png" mode=""></image>
<text>返回</text>
</view>
<template v-if="tabsValue == 1">
<view class="drawerTitle">
发送状态
</view>
<superwei-combox :candidates="sendList" :isJSON="true" keyName="text" placeholder="发送状态"
v-model="sendText" @select="sendSelect"></superwei-combox>
</template>
<view class="drawerTitle">
品牌
</view>
<superwei-combox :candidates="brandList" :isJSON="true" keyName="brdName" placeholder="品牌"
v-model="brdName" @select="brandSelect"></superwei-combox>
<view class="drawerTitle">
车型
</view>
<superwei-combox :candidates="bvmList" :isJSON="true" keyName="name" placeholder="车型"
v-model="bvmName" @select="bvmSelect"></superwei-combox>
<view class="drawerTitle">
港口
</view>
<superwei-combox :candidates="potList" :isJSON="true" keyName="potCnname" placeholder="港口"
v-model="potName" @select="potSelect"></superwei-combox>
<view class="bottomBtn">
<view class="btn czBtn" @click="reset">
重置
</view>
<view class="btn qrBtn" @click="confirm">
确认
</view>
</view>
</scroll-view>
</view>
</uni-drawer>
2023-09-23 20:16:54 +08:00
<uni-popup ref="popup" type="dialog">
<view class="popupBox">
<view class="popupTitle">
指令下发
</view>
<view class="popupInfo">
<text>负责人</text>
<template v-if="tabsValue == 0">
<view style="border: 1px solid gray;">
2023-12-22 17:48:52 +08:00
<superwei-combox :candidates="directorList" :isJSON="true" keyName="text"
2023-09-23 20:16:54 +08:00
placeholder="请选择负责人" v-model="directorValue"
@select="directorChange"></superwei-combox>
</view>
</template>
<template v-if="tabsValue == 1">
<view style="border: 1px solid gray;">
<rudon-multiSelector welcome="请选择负责人" :is_using_slot="false" :is_using_icon="true"
2023-12-22 17:48:52 +08:00
:localdata="directorList" @change="directorChange2"
:delValue="delValue"></rudon-multiSelector>
2023-09-23 20:16:54 +08:00
</view>
</template>
</view>
<view class="popupBtn">
<view class="btnList">
<button class="button" type="default" @click="zlCancel"> </button>
2023-12-22 17:48:52 +08:00
<button class="button" type="primary" @click="zlConfirm"> </button>
2023-09-23 20:16:54 +08:00
</view>
</view>
</view>
</uni-popup>
<uni-popup ref="popup2" type="dialog">
2023-12-22 17:48:52 +08:00
<view class="popupBox popupBox2">
2023-09-23 20:16:54 +08:00
<view class="popupTitle">
装船要求
</view>
2023-12-22 17:48:52 +08:00
<uni-easyinput type="textarea" v-model="askValue" placeholder="请输入内容..."
:disabled="askDisabled"></uni-easyinput>
2023-09-23 20:16:54 +08:00
<view class="popupBtn">
<view class="btnList">
<button class="button" type="default" @click="zcCancel"> </button>
<button class="button" type="primary" @click="zcConfirm"> </button>
</view>
</view>
</view>
</uni-popup>
</view>
</view>
</template>
<script>
import HeadView from '@/components/head-view/head-view.vue';
import HeadInfo from '@/components/head-info/head-info';
import place from './place.vue';
export default {
data() {
return {
2023-12-22 17:48:52 +08:00
title: "",
2023-09-23 20:16:54 +08:00
loginObj: {},
tabsValue: 0, // 0(总指令) 1(分指令)
shipInfo: {}, // 船只数据
2023-12-22 17:48:52 +08:00
// 港区信息
portObj: {},
2023-09-23 20:16:54 +08:00
// 搜索框
mnfBl: '', // 提单号
mnfBlItem: {},
mnfBlList: [],
// 品牌
brdId: '',
brdName: '',
brandItem: {},
brandList: [],
// 车型
bvmId: '',
bvmName: '',
bvmItem: {},
bvmList: [],
// 港口
potId: "",
potName: '',
potItem: {},
potList: [],
2023-12-22 17:48:52 +08:00
// 发送状态
sendList: [{
vale: "1",
text: "已发送"
},
{
vale: "0",
text: "待发送"
}
],
sendValue: "",
sendText: "",
2023-09-23 20:16:54 +08:00
// 指令下发弹窗负责人
directorId: "",
directorValue: "",
directorTrue: [], // 选中负责人列表
directorList: [],
roleId: "", // 角色ID
// 装船要求
askValue: "",
2023-12-22 17:48:52 +08:00
askDisabled: false,
2023-09-23 20:16:54 +08:00
itemList: [],
current: 0,
active: 1,
itemActive: -1,
// 总指令工作包
zzlLwpIdList: [],
// 分指令多选
checkList: [],
fzzRow: {},
// 指令下发状态 all 所有下发 solo 单个下发
distributeType: "",
2023-12-22 17:48:52 +08:00
delValue: false,
// 总指令统计图
zTjType: true,
zTjActive: -1,
zTjList: {},
shipDeck: "",
// 场位图相关数据
// 堆场
dcId: "",
dcName: "",
dcList: [],
// 区域
pyaObj: "",
qyList: [],
activeIndex: 0,
// 场位的状态 是否进入车道
isCwnum: 0,
2023-09-23 20:16:54 +08:00
// 分页
2023-12-22 17:48:52 +08:00
pageSize: 10,
2023-09-23 20:16:54 +08:00
current: 1,
2023-12-22 17:48:52 +08:00
qxList: [],
// 总指令显示
zzlIsShwo: false,
zzlName: "",
// 分指令显示
fzlIsShow: false,
fzlName: "",
// 分指令-班组长显示
bzzIsShow: false,
bzzName: "",
// 配载图显示
pztIsShow: false,
pztName: "",
// 场位图显示
cwtIsShow: false,
cwtName: "",
// 装船要求信息
zcyqIsShow: false,
zcyqName: "",
2023-09-23 20:16:54 +08:00
}
},
computed: {
itemSum() {
return function(item, item2) {
2023-12-22 17:48:52 +08:00
let sum = ((item / item2) * 100).toFixed(1)
2023-09-23 20:16:54 +08:00
return sum
};
},
},
onLoad(options) {
this.shipInfo = JSON.parse(decodeURIComponent(options.params)).shipInfo
2023-12-22 17:48:52 +08:00
this.title = `${this.shipInfo.spmIdDesc} / ${this.shipInfo.vvyName}`
2023-09-23 20:16:54 +08:00
this.loginObj = uni.getStorageSync('loginObj')
2023-12-22 17:48:52 +08:00
this.portObj = uni.getStorageSync('portObj')
this.qxList = uni.getStorageSync('qxList')
this.qxList.forEach(v => {
if (v.code == "shipmentDirectives") {
v.operates.forEach(e => {
if (e.code == "B1") {
this.zzlIsShwo = true
this.zzlName = e.name
} else if (e.code == "B2") {
this.pztIsShow = true
this.pztName = e.name
} else if (e.code == "B3") {
this.fzlIsShow = true
this.fzlName = e.name
} else if (e.code == "B4") {
this.bzzIsShow = true
this.bzzName = e.name
} else if (e.code == "B5") {
this.cwtIsShow = true
this.cwtName = e.name
} else if (e.code == "B6") {
this.zcyqIsShow = true
this.zcyqName = e.name
}
})
}
})
if (this.tabsValue == 0) {
this.domesticTrade() // 总指令:分页查询
this.askDisabled = false
}
2023-09-23 20:16:54 +08:00
this.getPot() // 获取港口
this.getBrand() // 获取品牌
this.getBvm() // 获取车型
this.getRoleId() // 获取角色ID
this.initAsk() // 获取装船要求
2023-12-22 17:48:52 +08:00
this.getStatistics() // 获取统计数据
2023-09-23 20:16:54 +08:00
},
components: {
HeadView,
HeadInfo,
place,
},
methods: {
// 点击tabs
changeTabs(e) {
this.mnfBl = ''
2023-12-22 17:48:52 +08:00
this.brdId = ''
2023-09-23 20:16:54 +08:00
this.brdName = ''
2023-12-22 17:48:52 +08:00
this.bvmId = ''
2023-09-23 20:16:54 +08:00
this.bvmName = ''
2023-12-22 17:48:52 +08:00
this.potId = ''
2023-09-23 20:16:54 +08:00
this.potName = ''
this.itemList = []
2023-12-22 17:48:52 +08:00
this.sendValue = ''
2023-09-23 20:16:54 +08:00
this.tabsValue = e.value
2023-12-22 17:48:52 +08:00
this.zTjActive = -1
this.shipDeck = ""
this.current = 1
this.zTjType = true
this.activeIndex = 0
if (e.value == 0 || e.value == 1) {
this.domesticTrade()
} else if (e.value == 2) {
this.getDc()
}
2023-09-23 20:16:54 +08:00
this.directorList = []
this.getRoleId()
},
2024-01-16 10:04:27 +08:00
refresh() {
if (this.tabsValue == 0 || this.tabsValue == 1) {
this.domesticTrade()
}
},
2023-09-23 20:16:54 +08:00
// 点击搜索
search() {
this.domesticTrade()
2023-12-22 17:48:52 +08:00
this.getStatistics()
2023-09-23 20:16:54 +08:00
},
2023-12-22 17:48:52 +08:00
// 点击筛选
screen() {
this.$refs.showRight.open();
},
// 返回
back() {
this.$refs.showRight.close();
},
// 重置
reset() {
// 品牌
this.brdId = ""
this.brdName = ""
this.brandItem = {}
// 车型
this.bvmId = ""
this.bvmName = ""
this.bvmItem = {}
// 港口
this.potId = ""
this.potName = ""
this.potItem = {}
// 发送状态
this.sendText = ""
this.sendValue = ""
},
// 筛选确认
confirm() {
this.itemList = []
this.current = 1
if (this.tabsValue == 0 || this.tabsValue == 1) {
this.domesticTrade()
} else if (this.tabsValue == 2) {
this.getQy()
}
this.$refs.showRight.close();
},
// 点击总指令统计列表总标题
clickTjHead(type) {
this.zTjActive = -1
this.shipDeck = ""
this.mnfBl = ''
this.brdId = ''
this.brdName = ''
this.bvmId = ''
this.bvmName = ''
this.potId = ''
this.potName = ''
this.sendValue = ''
this.itemList = []
this.current = 1
this.zTjType = true
if (type == 'zzl') {
this.domesticTrade()
} else if (type == 'fzl') {
this.domesticTrade()
}
},
// 点击总指令统计列表
clickTjList(item, index, type) {
this.zTjActive = index
this.shipDeck = item.shipDeck
this.itemList = []
this.current = 1
this.zTjType = false
if (type == 'zzl') {
this.domesticTrade()
} else if (type == 'fzl') {
this.domesticTrade()
}
},
// 获取统计列表
getStatistics() {
let target = ""
if (this.shipInfo.tradeType == '外贸') {
target = "W_L"
} else {
target = "N_L"
}
uni.request({
url: `${this.$local}/api/instruction/statistics?vvyIds=${this.shipInfo.vvyId}&target=${target}`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
this.zTjList = res.data.data[0]
this.zTjList["totalSum"] = this.zTjList.totalSentCount + this.zTjList.totalNotSentCount
this.zTjList["branchSum"] = this.zTjList.branchSentCount + this.zTjList
.branchNotSentCount
this.zTjList.instructionStatisticsList.forEach(v => {
let zsum = v.totalSentCount + v.totalNotSentCount
this.$set(v, "zsum", zsum)
let fsum = v.branchSentCount + v.branchNotSentCount
this.$set(v, "fsum", fsum)
})
console.log(this.zTjList)
}
})
2023-09-23 20:16:54 +08:00
},
// 获取内贸总指令,分指令列表(true-总指令,false-分指令)
domesticTrade() {
let flag = ""
if (this.tabsValue == 0) {
flag = true
} else if (this.tabsValue == 1) {
flag = false
}
uni.request({
url: `${this.$local}/api/domestic/load/command/page?vvyId=${this.shipInfo.vvyId}&brdId=${this.brdId}&mnfBl=${this.mnfBl}&potId=${this.potId}&bvmId=${this.bvmId}&flag=${flag}&sendStatus=${this.tabsValue2}`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
console.log(res)
2023-12-22 17:48:52 +08:00
this.itemList.push(...res.data.data.records)
if (res.data.data.records.length == 10) {
this.current++
this.domesticTrade()
}
2023-09-23 20:16:54 +08:00
this.itemList.forEach((v, index) => {
2023-12-22 17:48:52 +08:00
v.image = '../../static/images/theme/car1.png'
v.index = index
2023-09-23 20:16:54 +08:00
if (flag) {
this.zzlLwpIdList.push(v.dlcId)
}
2023-12-22 17:48:52 +08:00
this.getBottomInfo(v.lwpId, index)
2023-09-23 20:16:54 +08:00
})
}
})
},
// 获取指令下方信息
getBottomInfo(id, index) {
uni.request({
url: `${this.$local}/api/domestic/load/command/queryLoadPlanGroupForDclId?dlcId=${id}&vvyId=${this.shipInfo.vvyId}`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
console.log(res)
this.$set(this.itemList[index], 'infoList', res.data.data)
}
})
},
// 是否展开
isActive(e) {
this.itemActive = e
},
// 点击指令下发
distribute(type, a, item) {
this.distributeType = a
this.$refs.popup.open(type)
if (a == 'again' || a == 'solo') {
this.fzzRow = item
} else if (a == 'all') {
this.fzzRow = ""
}
},
// 获取角色ID
getRoleId() {
let name = ""
if (this.tabsValue == 0) {
name = "dongLei"
} else if (this.tabsValue == 1) {
name = "shipmenter"
}
uni.request({
url: `${this.$local}/api/roles?name=${name}`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
if (res.data.status == 200) {
this.roleId = res.data.data
this.getDirector()
}
}
})
},
// 根据角色ID获取负责人
getDirector() {
uni.request({
url: `${this.$local}/api/roles/principals?roleId=${this.roleId}`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
if (res.data.status == 200) {
res.data.data.forEach(v => {
this.directorList.push({
text: v.name,
value: v.id,
is_selected: false
})
})
}
}
})
},
// 总指令选择负责人
directorChange(e) {
this.directorTrue = [{
userId: e.value
}]
this.directorId = e.value
this.directorValue = e.text
},
// 分指令选择负责人
directorChange2(e) {
this.directorTrue = []
e.forEach(v => {
if (v.is_selected) {
this.directorTrue.push({
userId: v.value
})
}
})
},
// 获取装船要求
initAsk() {
uni.request({
url: `${this.$local}/api/vesselVoyages/${this.shipInfo.vvyId}`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
if (res.data.status == 200) {
this.askValue = res.data.data.loadUnloadRequirements
}
}
})
},
// 修改装船要求
getAsk() {
let reqDto = {
"loadUnloadRequirements": this.askValue,
"spmId": this.shipInfo.spmId,
"vvyId": this.shipInfo.vvyId,
"vvyName": this.shipInfo.vvyName,
}
uni.request({
url: `${this.$local}/api/vesselVoyages/${this.shipInfo.vvyId}`,
data: reqDto,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'PUT', //请求方式,必须为大写
success: (res) => {
this.initAsk()
}
})
},
// 指令下发确认
zlConfirm() {
if (this.directorTrue.length > 0) {
let lwpIdList = []
if (this.tabsValue == 0) {
lwpIdList = this.zzlLwpIdList
} else if (this.tabsValue == 1) {
2024-01-16 10:04:27 +08:00
lwpIdList = this.checkList
2023-09-23 20:16:54 +08:00
}
let reqDTO2 = {
"dlcIdList": lwpIdList,
"principalList": this.directorTrue,
"vvyId": this.shipInfo.vvyId,
}
if (this.distributeType == 'all') {
uni.request({
url: `${this.$local}/api/domestic/load/command/commandIssued`,
data: reqDTO2,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'POST', //请求方式,必须为大写
success: (res) => {
if (res.data.status == 200) {
this.domesticTrade()
2024-01-16 10:04:27 +08:00
this.checkList = []
2023-09-23 20:16:54 +08:00
uni.showToast({
title: `总指令下发成功`,
icon: 'success',
duration: 2000
})
} else {
2024-01-29 17:54:23 +08:00
uni.showModal({
title: '提示',
showCancel: false,
content: `${res.data.error_description}`
2023-09-23 20:16:54 +08:00
})
}
}
})
} else if (this.distributeType == 'solo') {
uni.request({
url: `${this.$local}/api/domestic/load/command/commandSendForBranch`,
data: reqDTO2,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'PUT', //请求方式,必须为大写
success: (res) => {
if (res.status == 200) {
this.domesticTrade()
2024-01-16 10:04:27 +08:00
this.checkList = []
2023-09-23 20:16:54 +08:00
uni.showToast({
title: `分指令下发成功`,
icon: 'success',
duration: 2000
})
} else {
2024-01-29 17:54:23 +08:00
uni.showModal({
title: '提示',
showCancel: false,
content: `${res.data.error_description}`
2023-09-23 20:16:54 +08:00
})
}
}
})
} else if (this.distributeType == 'again') {
let url = `/api/domestic/load/command/commandReissuedForBranch`
let lwpIdList3 = []
lwpIdList3.push(this.fzzRow.dlcId)
let reqDto3 = {
"loadUnloadRequirements": this.askValue,
"dlcIdList": lwpIdList3,
"principalList": this.directorTrue,
"vvyId": this.shipInfo.vvyId
}
uni.request({
url: `${this.$local}${url}`,
data: reqDto3,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'PUT', //请求方式,必须为大写
success: (res) => {
if (res.data.status == 200) {
this.domesticTrade()
2024-01-16 10:04:27 +08:00
this.checkList = []
2023-09-23 20:16:54 +08:00
uni.showToast({
title: `重新发送指令成功`,
icon: 'success',
duration: 2000
})
} else {
2024-01-29 17:54:23 +08:00
uni.showModal({
title: '提示',
showCancel: false,
content: `${res.data.error_description}`
2023-09-23 20:16:54 +08:00
})
}
}
})
}
this.$refs.popup.close()
} else {
uni.showToast({
title: `负责人不能为空`,
icon: 'error',
duration: 2000
})
}
},
// 指令下发取消
zlCancel() {
this.directorTrue = []
this.$refs.popup.close()
},
// 点击暂停
suspend(item) {
let url = `/api/domestic/load/command/commandPause?dlcId=${item.dlcId}`
uni.request({
url: `${this.$local}${url}`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'PUT', //请求方式,必须为大写
success: (res) => {
if (res.data.status == 200) {
this.domesticTrade()
uni.showToast({
title: `暂停指令成功`,
icon: 'success',
duration: 2000
})
} else {
2024-01-29 17:54:23 +08:00
uni.showModal({
title: '提示',
showCancel: false,
content: `${res.data.error_description}`
2023-09-23 20:16:54 +08:00
})
}
}
})
},
// 点击装船要求
ask(type) {
this.$refs.popup2.open(type)
},
// 装船要求确认
zcConfirm() {
this.getAsk() // 获取装船要求
this.$refs.popup2.close()
},
// 装船要求取消
zcCancel() {
this.$refs.popup2.close()
},
// 获取品牌
getBrand() {
uni.request({
url: `${this.$local}/api/miniapp/queryBrand`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
if (res.data.status == "200") {
this.brandList = res.data.data
}
}
})
},
// 选择品牌
brandSelect(e) {
this.brandItem = e
this.brdId = e.brdId
this.brdName = e.brdName
this.domesticTrade()
},
// 获取港口
getPot() {
uni.request({
url: `${this.$local}/api/miniapp/port`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
if (res.data.status == "200") {
this.potList = res.data.data
}
}
})
},
// 选择港口
potSelect(e) {
this.potItem = e
this.potName = e.potCnname
this.potId = e.potId
this.domesticTrade()
},
// 获取车型
getBvm() {
uni.request({
url: `${this.$local}/api/miniapp/getVehicleModel`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
if (res.data.status == "200") {
this.bvmList = res.data.data
}
}
})
},
// 选择车型
bvmSelect(e) {
this.bvmItem = e
this.bvmId = e.id
this.bvmName = e.name
this.domesticTrade()
},
toDetails(item, item2) {
let obj = {
jcInfo: item,
xqInfo: item2,
id: item2.spsId,
tradeName: "N",
shipInfo: this.shipInfo,
}
const params = encodeURIComponent(JSON.stringify(obj));
uni.navigateTo({
url: '/pages/index/instructDetails?params=' + params
})
},
// 分指令多选
checkChange(e) {
this.checkList = e.detail.value
},
2023-12-22 17:48:52 +08:00
// 场位图相关
// 获取左侧堆场列表
getDc() {
uni.request({
url: `${this.$local}/api/yardGoods/monitor/goods/manage/page?displayFlag=1&pamId=${this.portObj.portId}&vvyId=${this.shipInfo.vvyId}&size=100`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
if (res.data.status == "200") {
this.dcList = res.data.data.records
this.dcId = this.dcList[0].pymId
this.dcName = this.dcList[0].pymName
this.getQy()
}
}
})
},
// 点击左侧列表
clickLeft(item, index) {
this.dcId = item.pymId
this.dcName = item.pymName
this.activeIndex = index
this.getQy()
},
// 获取右侧区域数据
getQy() {
uni.request({
url: `${this.$local}/api/yardGoods/monitor/region/statistics?vvyId=${this.shipInfo.vvyId}&pymId=${this.dcId}&displayFlag=1&brdId=${this.brdId}&bvmId=${this.bvmId}&potId=${this.potId}&mnfBl=${this.mnfBl}&size=1000`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
if (res.statusCode == 200) {
console.log(res)
this.qyList = res.data.data.records
this.qyList.forEach(v => {
if (v.remainSeatAmout == null) {
this.$set(v, "remainSeatAmout", 0)
}
if (v.stopGoodsAmout == null) {
this.$set(v, "stopGoodsAmout", 0)
}
if (v.totalLaneAmout == null) {
this.$set(v, "totalLaneAmout", 0)
}
if (v.totalSeatAmout == null) {
this.$set(v, "totalSeatAmout", 0)
}
if (v.unparkGoodsAmout == null) {
this.$set(v, "unparkGoodsAmout", 0)
}
if (v.useSeatAmout == null) {
this.$set(v, "useSeatAmout", 0)
}
if (v.carStatisticsList != null) {
v.carStatisticsList.forEach(e => {
this.$set(e, "isShow", false)
})
}
})
console.log(this.qyList)
}
}
})
},
// 点击车位查看详情
clickCar(item) {
item.isShow = !item.isShow
},
2023-09-23 20:16:54 +08:00
// 点击车道
2023-12-22 17:48:52 +08:00
clickLine(item) {
this.pyaObj = item
this.isCwnum = 1;
2023-09-23 20:16:54 +08:00
},
// 子组件修改值
modifyPlaceTabs(data) {
2023-12-22 17:48:52 +08:00
this.isCwnum = data;
2023-09-23 20:16:54 +08:00
},
}
};
</script>
<style lang="less">
.blue {
color: #108ee9;
}
2023-12-22 17:48:52 +08:00
page {
overflow: hidden;
}
.content2 {
2023-09-23 20:16:54 +08:00
background-color: #F6F7F9;
2023-12-22 17:48:52 +08:00
position: relative;
overflow: hidden;
2023-09-23 20:16:54 +08:00
/deep/.tab .tab-bar {
height: 66px;
line-height: 66px;
position: relative;
}
/deep/.tab .tab-bar-item {
height: 66px;
line-height: 66px;
font-size: 18px;
color: #23262E;
2023-12-22 17:48:52 +08:00
font-weight: bold;
2023-09-23 20:16:54 +08:00
font-family: PingFangSC-Semibold;
2023-12-22 17:48:52 +08:00
padding: 0 24px !important;
2023-09-23 20:16:54 +08:00
}
/deep/.tab .tab-bar-item.active {
color: #0067CF
}
/deep/.tab .tab-bar-item .active-line {
color: #0067CF;
width: 54px;
height: 4px;
}
/deep/.tab-pane {
width: 100%;
2023-12-22 17:48:52 +08:00
height: calc(100vh - 134px);
2023-09-23 20:16:54 +08:00
}
.main {
2023-12-22 17:48:52 +08:00
height: calc(100vh - 134px);
overflow: hidden;
}
.main2 {
overflow: auto;
}
.askBox {
width: 97%;
padding: 20px;
margin: 20px;
background: #fff;
height: 300px;
overflow: scroll;
.title {
font-size: 20px;
font-weight: bold;
text-align: center;
}
.askContent {
font-size: 16px;
margin-top: 20px;
}
2023-09-23 20:16:54 +08:00
}
.pageBox {
margin-top: 20px;
}
2023-12-22 17:48:52 +08:00
/deep/.tab .tab-cont {
padding: 0;
}
2023-09-23 20:16:54 +08:00
.form {
2023-12-22 17:48:52 +08:00
background: #FAFAFA;
border-top: 1px solid #EEEEEE;
border-bottom: 1px solid #EEEEEE;
2023-09-23 20:16:54 +08:00
.inputBox {
2023-12-22 17:48:52 +08:00
width: 100%;
2023-09-23 20:16:54 +08:00
display: flex;
2023-12-22 17:48:52 +08:00
justify-content: space-between;
padding: 5px 10px;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.leftInput {
width: 400px;
}
/deep/.uni-easyinput {
width: 400px;
/deep/.content-clear-icon {
padding-right: 16px;
}
}
/deep/.is-input-border {
border-radius: 18.5px;
}
.rightInput {
display: flex;
p {
margin-left: 10px;
line-height: 40px;
}
}
2023-09-23 20:16:54 +08:00
}
.btn {
height: 35px;
line-height: 35px;
margin-right: 10px;
}
}
2023-12-22 17:48:52 +08:00
.form2 {
border-bottom: none;
}
2024-01-16 10:04:27 +08:00
.refresh {
width: 64px;
height: 64px;
box-shadow: 0 2px 12px 0 #CDD1D6;
border-radius: 50%;
text-align: center;
background-color: #fff;
position: absolute;
bottom: 24px;
right: 24px;
z-index: 999999999999999999;
display: flex;
flex-direction: column;
justify-content: center;
p {
letter-spacing: 2px;
font-size: 14px;
color: #0067CF;
}
image {
width: 20px;
height: 20px;
margin: 0 auto;
}
}
2023-09-23 20:16:54 +08:00
.buttonlist {
2023-12-22 17:48:52 +08:00
padding: 10px;
position: absolute;
top: 5px;
right: 0px;
z-index: 999;
2023-09-23 20:16:54 +08:00
.button {
display: inline-block;
height: 36px;
line-height: 36px;
text-align: center;
margin-right: 10px;
border-radius: 4px;
}
2023-12-22 17:48:52 +08:00
.button:first-child {
2023-09-23 20:16:54 +08:00
border: 1px solid #0067CF;
color: #0067CF;
background: #fff;
}
2023-12-22 17:48:52 +08:00
.button:last-child {
2023-09-23 20:16:54 +08:00
color: #fff;
background: #0067CF;
}
}
2023-12-22 17:48:52 +08:00
.buttonlist2 {
.button {
border: 1px solid #999 !important;
color: #999 !important;
background-color: #fff !important;
}
}
2023-09-23 20:16:54 +08:00
.tablist {
width: 175px;
height: 60px;
line-height: 60px;
font-size: 21px;
display: flex;
justify-content: space-between;
.tabs {
width: 80px;
height: 60px;
border-bottom: 2rpx solid #ebebeb;
}
.active {
color: #1890ff;
border-bottom: 2rpx solid #1890ff;
}
}
2023-12-22 17:48:52 +08:00
.tjList {
width: 240px;
height: calc(100vh - 68px - 66px - 51px);
background: #EBEDF1;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.10);
float: left;
overflow: scroll;
margin-right: 4px;
.active {
border: 1px solid #0067CF;
}
.title {
display: flex;
justify-content: space-between;
line-height: 21px;
p {
color: #23262E;
font-size: 16px;
}
text {
font-size: 14px;
color: #0067CF;
line-height: 21px;
}
}
/deep/.progress-bar-title {
margin: 0;
}
/deep/.bar {
height: 5px;
margin-top: 10px;
}
/deep/.progress-bar .bar-single {
width: 100%;
height: 100%;
}
/deep/.progress-bar .bar-double {
height: 100%;
}
/deep/.progress-bar .bar-interval {
width: 0;
}
/deep/.bar-text span {
display: none;
}
.bottomInfo {
display: flex;
justify-content: space-between;
margin-top: 9px;
p {
font-size: 12px;
color: #999999;
text {
margin-left: 4px;
}
}
p:nth-of-type(1) {
text {
color: #0067CF;
}
}
p:nth-of-type(2) {
text {
color: #FC4F00;
}
}
}
.tjHead {
width: 100%;
height: 87px;
background-color: #fff;
border-radius: 4px;
padding: 16px;
position: relative;
.imgBox {
width: 15px;
height: 15px;
position: absolute;
right: 0;
bottom: 0;
}
}
.tjInfo {
width: calc(100% - 32px);
background: #F7F7F7;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.10);
margin: 16px;
padding: 5px 16px;
position: relative;
border-radius: 4px;
.imgBox {
width: 15px;
height: 15px;
position: absolute;
right: 0;
bottom: 0;
}
}
}
.itemBox {
height: 535px;
overflow: scroll;
padding-bottom: 60px;
}
2023-09-23 20:16:54 +08:00
.itemList {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
2023-12-22 17:48:52 +08:00
align-items: flex-start;
padding: 0 12px;
.item {
padding-bottom: 25px;
}
2023-09-23 20:16:54 +08:00
.exp {
width: 100%;
background: #FFFFFF;
border-radius: 8px;
padding: 16px;
padding-right: 0;
position: relative;
2023-12-22 17:48:52 +08:00
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
/deep/.waterfalls-flow {
width: 100%;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
/deep/.waterfalls-flow-column {
margin-left: 2%;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.rowHead {
/deep/uni-checkbox .uni-checkbox-input {
width: 16px !important;
height: 16px !important;
}
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.row {
display: flex;
padding: 5px 0px;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.title {
display: flex;
font-size: 16px;
color: #23262E;
font-weight: bold;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.titleImg {
width: 18px;
height: 18px;
margin-right: 5px;
margin-top: 2px;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.schedule {
padding: 5px 8px;
background: #F7F7F7;
margin-left: 8px;
display: flex;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.text {
font-size: 12px;
color: #999999;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
.progressBox {
width: 50px;
margin-top: 5px;
margin: 5px 8px;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.planStatus {
width: 68px;
height: 26px;
border-radius: 13px 0 0 13px;
position: absolute;
right: 0;
top: 16px;
text-align: center;
line-height: 26px;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.text {
font-size: 16px;
font-weight: bold;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.planStatus0 {
background: #F1F8FF;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.text {
color: #0067CF;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.planStatus1 {
background: #F7F7F7;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.text {
color: #666;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.planStatus3 {
background: #E8FFF7;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.text {
color: #04B578;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
}
.planStatus5 {
background: #FFF5F0;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.text {
color: #fc4f00;
2023-09-23 20:16:54 +08:00
}
}
2023-12-22 17:48:52 +08:00
.rowInfo {
2023-09-23 20:16:54 +08:00
display: flex;
2023-12-22 17:48:52 +08:00
flex-direction: column;
font-size: 14px;
width: 48%;
2023-09-23 20:16:54 +08:00
margin-top: 10px;
2023-12-22 17:48:52 +08:00
border-right: 1px solid #eee;
gap: 12px;
margin-left: 10px;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
text:first-child {
color: #999999;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
text:last-child {
color: #23262E;
2023-09-23 20:16:54 +08:00
}
}
2023-12-22 17:48:52 +08:00
.rowInfo:last-child {
border: none;
}
}
.xfBtn {
display: flex;
justify-content: flex-end;
padding: 10px 0;
border-top: 1px solid rgba(0, 0, 0, .1);
.btn {
padding: 8px 12px;
2023-09-23 20:16:54 +08:00
text-align: center;
2023-12-22 17:48:52 +08:00
color: #fff;
background: #0067CF;
border-radius: 4px;
font-size: 12px;
margin-right: 12px;
}
.stopbtn {
border: 1px solid #FC4F00;
color: #FC4F00;
background-color: #fff;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
}
.expand {
position: absolute;
left: 47%;
bottom: 8px;
font-size: 12px;
color: #23262E;
background: #FFFFFF;
text-align: center;
line-height: 14px;
border: 1px solid #EEEEEE;
border-radius: 13px;
padding: 6px;
}
.details {
padding-right: 16px;
margin-top: 8px;
.itemDetails {
background: rgba(236, 242, 249, .7);
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.detailsBox {
padding: 16px;
border-bottom: 1px dashed #D3DCE6;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.detailsBox:last-child {
padding-bottom: 40px;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.title {
width: 100%;
display: flex;
justify-content: space-between;
text {
font-size: 16px;
color: #23262E;
margin-top: 2px;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
button {
wdith: 50px;
height: 25px;
text-align: center;
line-height: 25px;
color: #0067CF;
background: #FFFFFF;
border: 1px solid #EEEEEE;
border-radius: 4px;
font-size: 14px;
margin: 0;
}
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.info {
display: flex;
flex-wrap: wrap;
.cell {
margin-right: 15px;
margin-top: 10px;
text:first-child {
color: #999999;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
text:last-child {
color: #23262E;
2023-09-23 20:16:54 +08:00
}
}
2023-12-22 17:48:52 +08:00
}
}
}
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.pzPot {
width: 100%;
.title {
width: 100%;
height: 50px;
line-height: 50px;
font-size: 28px;
font-weight: bold;
text-align: center;
border: 1px solid #000;
box-sizing: border-box;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.ul {
width: 100%;
margin-bottom: 20px;
display: flex;
flex-wrap: wrap;
border: 1px solid #000;
border-top: none;
box-sizing: border-box;
.li {
width: 25%;
height: 30px;
line-height: 30px;
display: flex;
border: 1px solid #000;
border-top: none;
border-left: none;
box-sizing: border-box;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.xuhao {
width: 20px;
text-align: center;
box-sizing: border-box;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.name {
flex: 1;
text-align: center;
border: 1px solid #000;
box-sizing: border-box;
border-top: none;
border-bottom: none;
}
.color {
flex: 1;
box-sizing: border-box;
2023-09-23 20:16:54 +08:00
}
}
}
}
2023-12-22 17:48:52 +08:00
.imgTable {
margin-top: 20px;
padding: 0 20px 20px;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.title {
font-size: 20px;
font-weight: bold;
}
.nr {
margin: 10px 0;
font-size: 16px;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.imgLi {
2023-09-23 20:16:54 +08:00
display: flex;
2023-12-22 17:48:52 +08:00
.maskBox {
width: 1054px;
height: 171px;
margin: 0 auto;
background: url('@/static/images/ship-shplit-right.svg');
background-repeat: no-repeat;
background-size: contain;
position: relative;
.line {
position: absolute;
width: 850px;
height: 95%;
top: 5px;
left: 168px;
display: flex;
overflow-y: auto;
.testLine {
flex: 1;
border-left: 1px solid #999;
}
.testLine:first-child {
border: none;
}
.mycanvas {
position: absolute;
top: 0;
left: 0;
width: 850px;
}
}
}
.heightBox {
2023-09-23 20:16:54 +08:00
display: flex;
flex-direction: column;
justify-content: center;
2023-12-22 17:48:52 +08:00
margin-left: 10px;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
.imgSize {
width: 60px;
position: absolute;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
.leftTopImg {
transform: rotate(180deg);
top: -15px;
right: -10px;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
.imgSize2 {
width: 130px;
position: absolute;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.leftBotImg {
transform: rotate(-90deg);
bottom: -10px;
right: -15px;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
.topImg {
top: -10px;
left: 50%;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.botImg {
transform: rotate(180deg);
bottom: -10px;
left: 50%;
2023-09-23 20:16:54 +08:00
}
}
2023-12-22 17:48:52 +08:00
.tableHead {
margin-top: 10px;
height: 50px;
line-height: 50px;
display: flex;
justify-content: space-between;
padding: 0 12px;
font-size: 20px;
border: 1px solid #f2f2f2;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
.gray {
background-color: #fff;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
.title {
line-height: 50px;
font-size: 21px;
font-weight: 900;
}
.text {
display: inline-block;
margin-right: 50px;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
/deep/.table--border {
background-color: #fff;
}
}
// 场位图样式
.cwMain {
display: flex;
width: 100%;
height: calc(100vh - 66px - 68px - 47px);
.cwLeft {
width: 128px;
height: 100%;
background-color: #fff;
overflow: scroll;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.leftData {
width: 116px;
height: 42px;
2023-09-23 20:16:54 +08:00
text-align: center;
2023-12-22 17:48:52 +08:00
line-height: 42px;
margin: 4px 6px;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
.active {
2023-09-23 20:16:54 +08:00
color: #fff;
2023-12-22 17:48:52 +08:00
background-color: #0372E0;
border-radius: 4px;
}
}
.cwRight {
width: calc(100% - 128px);
height: 100%;
overflow: scroll;
padding-left: 18px;
background: #FAFAFA;
display: flex;
flex-wrap: wrap;
padding-bottom: 16px;
.rightBox {
width: 33.3%;
height: 214px;
border: 1px solid #E1E5ED;
/deep/.zb_tooltip_content {
width: 100%;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.boxTop {
2023-09-23 20:16:54 +08:00
width: 100%;
2023-12-22 17:48:52 +08:00
height: 32px;
border-bottom: 1px solid #E1E5ED;
line-height: 32px;
2023-09-23 20:16:54 +08:00
display: flex;
justify-content: space-between;
2023-12-22 17:48:52 +08:00
padding: 0 8px;
background: #FAFAFA;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
p {
font-size: 14px;
color: #0D518B;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
text {
font-size: 14px;
color: #1677FF;
}
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.boxContent {
height: 180px;
overflow: scroll;
padding: 5px 8px;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.dataList {
display: flex;
flex-wrap: wrap;
p {
margin-right: 10px;
font-size: 12px;
color: #666666;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
}
.boxJd {
display: flex;
margin-top: 10px;
2023-09-23 20:16:54 +08:00
text {
2023-12-22 17:48:52 +08:00
margin-left: 10px;
font-size: 14px;
color: #333333;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
/deep/.progress-bar-title {
margin: 0;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
/deep/.bar {
height: 8px;
margin-top: 5px;
width: 240px;
border-radius: 50%;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
/deep/.progress-bar .bar-single {
width: 100%;
height: 100%;
border-radius: 8px;
background-color: #e1e5ed !important;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
/deep/.progress-bar .bar-double {
height: 100%;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
/deep/.progress-bar .bar-interval {
width: 0;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
/deep/.bar-text span {
display: none;
2023-09-23 20:16:54 +08:00
}
}
2023-12-22 17:48:52 +08:00
.carUl {
width: 100%;
display: flex;
flex-wrap: wrap;
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.carLi {
width: calc(50% - 12px);
height: 42px;
margin: 8px 12px;
margin-left: 0;
background: #ffffff;
border: 1px solid #e1e5ed;
font-family: PingFangSC-Regular;
font-size: 12px;
line-height: 15px;
padding: 4px 8px;
.carTitle {
font-size: 12px;
color: #1677FF;
margin-bottom: 4px;
}
2023-09-23 20:16:54 +08:00
2023-12-22 17:48:52 +08:00
.tipBox {
width: 150px;
height: 50px;
overflow: scroll;
.li {
width: 100%;
display: flex;
justify-content: space-between;
padding: 10px 0;
border-bottom: 1px solid #999;
font-size: 16px;
p {
color: #999;
}
text {
color: #23262E;
}
}
}
}
}
2023-09-23 20:16:54 +08:00
}
}
}
}
.popupBox {
2023-12-22 17:48:52 +08:00
width: 400px;
2023-09-23 20:16:54 +08:00
background-color: #fff;
2023-12-22 17:48:52 +08:00
border-radius: 8px;
2023-09-23 20:16:54 +08:00
.popupTitle {
font-size: 20px;
font-weight: bold;
border-bottom: 1px solid #ccc;
2023-12-22 17:48:52 +08:00
padding: 15px 0;
2023-09-23 20:16:54 +08:00
}
.popupInfo {
display: flex;
margin-top: 20px;
line-height: 35px;
2023-12-22 17:48:52 +08:00
margin-left: 20px;
2023-09-23 20:16:54 +08:00
/deep/.superwei-combox {
border: none;
padding: 0;
}
/deep/.componentW100 {
width: 300px;
}
/deep/.uni-icons {
margin-right: 12px;
}
}
/deep/.uni-easyinput {
margin-top: 20px;
2023-12-22 17:48:52 +08:00
width: 460px;
margin-left: 20px;
2023-09-23 20:16:54 +08:00
}
/deep/.uni-select__input-placeholder {
text-align: left;
}
/deep/.uni-select__input-text {
text-align: left;
}
.popupBtn {
margin-top: 20px;
2023-12-22 17:48:52 +08:00
padding: 14px 0;
2023-09-23 20:16:54 +08:00
display: flex;
2023-12-22 17:48:52 +08:00
justify-content: center;
2023-09-23 20:16:54 +08:00
.btnList {
display: flex;
.button {
2023-12-22 17:48:52 +08:00
width: 125px;
height: 36px;
line-height: 36px;
margin-left: 15px;
border-radius: 4px;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
.button:first-child {
background-color: #fff;
border: 1px solid #0067CF;
color: #0067CF;
}
}
}
}
.popupBox2 {
width: 500px;
}
// 右侧抽屉筛选
/deep/.uni-drawer__content {
width: 300px;
}
.scroll-view {
/* #ifndef APP-NVUE */
width: 100%;
height: 100%;
/* #endif */
flex: 1
}
// 处理抽屉内容滚动
.scroll-view-box {
flex: 1;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
padding: 0 16px 80px;
.drawerTop {
display: flex;
margin-top: 24px;
margin-bottom: 30px;
image {
width: 10px;
height: 14px;
margin-right: 10px;
margin-top: 6px;
2023-09-23 20:16:54 +08:00
}
2023-12-22 17:48:52 +08:00
text {
font-size: 20px;
color: #23262E;
font-weight: bold;
}
}
.drawerTitle {
font-size: 14px;
color: #23262E;
margin: 8px 0;
}
.bottomBtn {
width: 100%;
height: 60px;
display: flex;
justify-content: space-between;
padding: 12px 16px;
background: #FFFFFF;
box-shadow: 0 -3px 7px 0 rgba(0, 0, 0, 0.10);
position: fixed;
bottom: 0px;
right: 0px;
.btn {
width: 116px;
height: 36px;
font-size: 16px;
text-align: center;
line-height: 36px;
border-radius: 4px;
}
.czBtn {
color: #0067CF;
border: 1px solid #0067CF;
}
.qrBtn {
color: #fff;
background: #0067CF;
}
2023-09-23 20:16:54 +08:00
}
}
}
</style>