| | |
| | | <el-form-item label="名称" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请输入名称" v-trim /> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="责任部门" prop="companyId"> |
| | | <el-form-item label="责任部门" prop="companyId"> |
| | | <el-select filterable clearable @change="() => loadMember(1)" v-model="form.companyId"> |
| | | <el-option v-for="op in department" :key="op.id" :label="op.name" :value="op.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> --> |
| | | </el-form-item> |
| | | <el-form-item v-if="form.type == 0" label="选择安全员" prop="memberIdList"> |
| | | <el-select v-model="form.memberIdList" filterable multiple clearable placeholder="请选择"> |
| | | <el-option v-for="item in memberList" :key="item.id" :label="item.name" :value="item.id"> |
| | |
| | | this.form.memberIdList = null |
| | | this.form.type = type |
| | | this.getfindCompanyTreePage() |
| | | this.loadMember() |
| | | // 新建组织 |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | |
| | | }, |
| | | pagination: { |
| | | capacity: 10, |
| | | page: 1 |
| | | page: 1, |
| | | total: 0 |
| | | }, |
| | | total: 0 |
| | | } |
| | |
| | | ...pagination |
| | | }).then(res => { |
| | | this.dataList = res.records || [] |
| | | this.pagination.total = res.total |
| | | }) |
| | | }, |
| | | clear () { |
| | |
| | | }, |
| | | handleSizeChange (capacity) { |
| | | this.pagination.capacity = capacity |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | |
| | | <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']"> |
| | | <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus" |
| | | v-permissions="['business:category:create']">新建</el-button></li> |
| | | <li v-permissions="['business:category:exportExcel']"><el-button type="primary" @click="exportExcel" |
| | | >导出</el-button></li> |
| | | <li v-permissions="['business:category:exportExcel']"><el-button type="primary" |
| | | @click="exportExcel">导出</el-button></li> |
| | | </ul> |
| | | <el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search" |
| | | :data="dataList" stripe @selection-change="handleSelectionChange"> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="tableData.pagination"> |
| | | <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination"> |
| | | </pagination> |
| | | </template> |
| | | <!-- 新建/修改 --> |
| | |
| | | }) |
| | | |
| | | }, |
| | | getList() { |
| | | getList(page) { |
| | | const { pagination, filters } = this |
| | | if (page) { |
| | | pagination.page = page |
| | | } |
| | | this.loading = true |
| | | fetchList({ |
| | | model: { ...filters }, |
| | |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | handleSizeChange(val){ |
| | | this.pagination.pageSize = val |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @confirm="confirm"> |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="所属分类" prop="parentId"> |
| | | <el-select :disabled="form.id" v-model="form.parentId" placeholder="不填为则一级分类"> |
| | | <el-select :disabled="form.id" clearable v-model="form.parentId" placeholder="不填为则一级分类"> |
| | | <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | color: #999999 !important; |
| | | font-size: 28rpx; |
| | | } |
| | | .placeholder3{ |
| | | color: #333333 !important; |
| | | } |
| | | .red{ |
| | | color: red !important; |
| | | } |
| | |
| | | (coverSupport ? ', viewport-fit=cover' : '') + '" />') |
| | | </script> |
| | | <script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"/> |
| | | <script src="https://webapi.amap.com/maps?v=2.0&key=96b8d96e645290f1de14f5229ee030e4"></script> |
| | | <title></title> |
| | | <!--preload-links--> |
| | | <!--app-context--> |
| | |
| | | "/zhyq_interface" : { |
| | | // 这个字段名需与你配置的basePrefixUrl一致,系统识别到带有/dev-api请求的地址时,会在前面拼接上代理服务器地址 |
| | | // "target" : "http://172.20.10.7:10010", // 代理服务器域名或IP地址 |
| | | // "target" : "http://192.168.0.106:10010", // 代理服务器域名或IP地址 |
| | | // "target" : "http://10.50.250.253:8088/gateway_interface", // 代理服务器域名或IP地址 |
| | | "target" : "https://atwl.ahzyssl.com/zhyq_interface", // 代理服务器域名或IP地址 |
| | | // "target" : "http://192.168.0.107:10010", // 代理服务器域名或IP地址 |
| | | "target" : "http://10.50.250.253:8088/gateway_interface", // 代理服务器域名或IP地址 |
| | | // "target" : "https://atwl.ahzyssl.com/zhyq_interface", // 代理服务器域名或IP地址 |
| | | "changeOrigin" : true, // 允许跨域 |
| | | "pathRewrite" : { |
| | | "^/zhyq_interface" : "" |
| | |
| | | "sdkConfigs" : { |
| | | "maps" : { |
| | | "amap" : { |
| | | "key" : "d9a554b1808ce10a12a932ed9b0db1d0", |
| | | "key" : "96b8d96e645290f1de14f5229ee030e4", |
| | | "securityJsCode" : "", |
| | | "serviceHost" : "" |
| | | } |
| | |
| | | <view class="login_list"> |
| | | <view class="login_list_item"> |
| | | <image src="@/static/login_ic_phone@2x.png" mode="widthFix" /> |
| | | <input v-model="form.phone" :maxlength="11" placeholder="请输入手机号" /> |
| | | <input v-model="form.phone" type="tel" :maxlength="11" placeholder="请输入手机号" /> |
| | | </view> |
| | | <view class="login_list_item"> |
| | | <image src="@/static/ic_captcha.png" mode="widthFix"></image> |
| | | <input |
| | | v-model="form.validCode" |
| | | placeholder="请输入验证码" |
| | | type="text" |
| | | type="number" |
| | | /> |
| | | <text class="captcha" v-if="countDown == 0" @click="initCaptcha" |
| | | >获取验证码</text |
| | |
| | | <view class="login_list"> |
| | | <view class="login_list_item"> |
| | | <image src="@/static/login_ic_phone@2x.png" mode="widthFix" /> |
| | | <input v-model="form.username" @focus="showKeyboard = true" @blur="showKeyboard = false" maxlength="18" placeholder="手机号" /> |
| | | <input v-model="form.username" type="tel" @focus="showKeyboard = true" @blur="showKeyboard = false" maxlength="18" placeholder="手机号" /> |
| | | </view> |
| | | <view class="login_list_item"> |
| | | <image src="@/static/login_ic_password@2x.png" mode="widthFix" /> |
| | |
| | | // 'openLocation'
|
| | | // ] // 必填,需要使用的JS接口列表
|
| | | // })
|
| | | // this.getLocation() |
| | | this.getDetail()
|
| | | this.getLocation() |
| | | // this.getDetail()
|
| | | } else {
|
| | | this.getDetail()
|
| | | }
|
| | |
| | | success: (res) => {
|
| | | this.lat = res.latitude
|
| | | this.lnt = res.longitude
|
| | | console.log('---', res);
|
| | | this.getDetail()
|
| | | },
|
| | | fail: (err) => {
|
| | |
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | code: ''
|
| | | code: 'qwe'
|
| | | }
|
| | | }, |
| | | onLoad(option) { |
| | |
| | | <text></text>
|
| | | <text>联系电话</text>
|
| | | </view>
|
| | | <view class="value"><input type="text" disabled placeholder="请输入联系电话" v-model="param.memberPhone"
|
| | | <view class="value"><input type="tel" disabled placeholder="请输入联系电话" v-model="param.memberPhone"
|
| | | placeholder-style="color: #999999;" /></view>
|
| | | </view>
|
| | | <view class="line">
|
| | |
| | | @cancel="isShowHandleDate = false" mode="datetime"></u-datetime-picker>
|
| | | <!-- -->
|
| | |
|
| | | <view v-if="videoPlay" class="video_app">
|
| | | <!-- <view v-show="videoPlay" class="video_app">
|
| | | <video controls id="myvideo" :src="videoUrl" @fullscreenchange="screenChange"></video>
|
| | | </view>
|
| | | </view> -->
|
| | | </view>
|
| | | </template>
|
| | |
|
| | |
| | | console.log(item) |
| | | this.videoPlay = true;
|
| | | this.videoUrl = item.fileurlFull;
|
| | | this.$nextTick(() => { |
| | | this.videoContext.requestFullScreen(); |
| | | this.$nextTick(() => { |
| | | this.videoContext.play(); |
| | | }) |
| | |
|
| | |
| | | top: 0; |
| | | width: 100vw; |
| | | height: 100vh; |
| | | video{ |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | }
|
| | | .Transfer_footer {
|
| | | display: flex;
|
| | |
| | | <view class="login_list"> |
| | | <view class="login_list_item"> |
| | | <image src="@/static/login_ic_phone@2x.png" mode="widthFix" /> |
| | | <input v-model="form.phone" maxlength="18" placeholder="请输入手机号" /> |
| | | <input v-model="form.phone" type="tel" maxlength="18" placeholder="请输入手机号" /> |
| | | </view> |
| | | <view class="login_list_item"> |
| | | <image src="@/static/ic_captcha.png" mode="widthFix"></image> |
| | | <input |
| | | v-model="form.validCode" |
| | | placeholder="请输入验证码" |
| | | type="text" |
| | | type="number" |
| | | /> |
| | | <text class="captcha" v-if="countDown == 0" @click="initCaptcha" |
| | | >获取验证码</text |
| | |
| | | <view class="login_list"> |
| | | <view class="login_list_item"> |
| | | <image src="@/static/login_ic_phone@2x.png" mode="widthFix" /> |
| | | <input v-model="form.username" maxlength="18" @focus="showKeyboard = true" @blur="showKeyboard = false" placeholder="账号" /> |
| | | <input v-model="form.username" type="number" maxlength="18" @focus="showKeyboard = true" @blur="showKeyboard = false" placeholder="账号" /> |
| | | </view> |
| | | <view class="login_list_item"> |
| | | <image src="@/static/login_ic_password@2x.png" mode="widthFix" /> |
| | |
| | | <view class="login_wrap"> |
| | | <view class="item"> |
| | | <view class="la">手机号</view> |
| | | <input v-model="form.phone" maxlength="18" placeholder-class="placeholder9" placeholder="请输入手机号" /> |
| | | <input v-model="form.phone" type="tel" maxlength="18" placeholder-class="placeholder9" placeholder="请输入手机号" /> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="la">验证码</view> |
| | |
| | | v-model="form.code" |
| | | placeholder="请输入验证码" |
| | | placeholder-class="placeholder9" |
| | | type="text" |
| | | type="number" |
| | | /> |
| | | <text class="captcha" v-if="countDown == 0" @click="initCaptcha" |
| | | >获取验证码</text |
| | |
| | | <template>
|
| | | <view class="main_app">
|
| | | <view class="head_wrap">
|
| | | <view class="head_wrap" @click="openModal">
|
| | | <view class="search_box">
|
| | | <image src="@/static/ic_search@2x.png" class="search" mode=""></image>
|
| | | <input type="text" placeholder-class="placeholder9" v-model="param.name" @confirm="handleQuery" />
|
| | | <!-- <input type="text" disabled placeholder-class="placeholder9" v-model="param.contractNumber" @confirm="handleQuery" /> -->
|
| | | </view>
|
| | | <view class="right" @click="openModal">
|
| | | <view class="right">
|
| | | <image src="@/static/ic_shaixuan@2x.png" mode=""></image>
|
| | | <text>筛选</text>
|
| | | </view>
|
| | | </view>
|
| | | <!-- -->
|
| | | <scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower">
|
| | | <view class="main_list">
|
| | | <view class="item" v-for="item,index in list" :key="index">
|
| | | <view class="head">
|
| | | <view class="code">{{item.contractNumber}}</view>
|
| | | <view class="status">{{item.orderStatus}}</view>
|
| | | <view class="status">{{item.orderStatusDesc }}</view>
|
| | | </view>
|
| | | <view class="content">
|
| | | <view class="line">
|
| | | <view class="la">发货地:</view>
|
| | | <view class="val">{{item.fromRepertoty || '-'}}</view>
|
| | | <view class="val">{{item.fromRepertoty || item.deliveryEnterprise || '-'}}</view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="la">到货地:</view>
|
| | | <view class="val">{{item.toRepertoty || '-'}}</view>
|
| | | <view class="val">{{item.toRepertoty || item.receiveEnterprise || '-'}}</view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="la">车牌号:</view>
|
| | | <view class="val">{{item.plateNumber || '-'}}</view>
|
| | | <view class="val">{{item.plateNumber || item.plateName || '-'}}</view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="footer">
|
| | |
| | | <view class="placeholder9 fs24">暂无数据</view>
|
| | | </view>
|
| | | </view>
|
| | | </scroll-view>
|
| | |
|
| | | <!-- -->
|
| | | <u-popup :show="showModal" round="12" @close="showModal = false">
|
| | | <view class="modal">
|
| | |
| | | <view class="line">
|
| | | <view class="la">合同号</view>
|
| | | <view class="val">
|
| | | <input type="text" placeholder-class="placeholder9" v-model="form.contract" />
|
| | | <input type="text" placeholder-class="placeholder9" v-model="form.contractNumber" />
|
| | | </view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="la">制单开始日期</view>
|
| | | <view class="val" @click="showStarttime = true">
|
| | | <text class="mr12"
|
| | | :class="{placeholder9: !form.starttime}">{{ form.starttime ? form.starttime : '请选择' }}</text>
|
| | | :class="{placeholder9: !form.ncCreateDateTimeStart}">{{ form.ncCreateDateTimeStart ? form.ncCreateDateTimeStart : '请选择' }}</text>
|
| | | <u-icon name="arrow-right" size="14" color="#999999"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="la">制单结束日期</view>
|
| | | <view class="val" @click="showEndtime = true">
|
| | | <text class="mr12" :class="{placeholder9: !form.endtime}">{{ form.endtime ? form.endtime : '请选择' }}</text>
|
| | | <text class="mr12"
|
| | | :class="{placeholder9: !form.ncCreateDateTimeEnd}">{{ form.ncCreateDateTimeEnd ? form.ncCreateDateTimeEnd : '请选择' }}</text>
|
| | | <u-icon name="arrow-right" size="14" color="#999999"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="la">发货地</view>
|
| | | <view class="val">
|
| | | <input type="text" placeholder-class="placeholder9" v-model="form.fromRepertoty" />
|
| | | <input type="text" placeholder-class="placeholder9" v-model="form.deliveryEnterprise" />
|
| | | </view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="la">到货地</view>
|
| | | <view class="val">
|
| | | <input type="text" placeholder-class="placeholder9" v-model="form.toRepertoty" />
|
| | | <input type="text" placeholder-class="placeholder9" v-model="form.receiveEnterprise" />
|
| | | </view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="la">省份</view>
|
| | | <view class="val" @click="showPri = true">
|
| | | <text class="mr12" :class="{placeholder9: !form.provinceName}">{{ form.provinceName ? form.provinceName : '请选择' }}</text>
|
| | | <text class="mr12"
|
| | | :class="{placeholder9: !form.provinceName}">{{ form.provinceName ? form.provinceName : '请选择' }}</text>
|
| | | <u-icon name="arrow-right" size="14" color="#999999"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <view class="btns">
|
| | | <view class="btn" @click="showModal = false">取消</view>
|
| | | <view class="btn" @click="clear">取消</view>
|
| | | <view class="btn sub" @click="modalSub">提交</view>
|
| | | </view>
|
| | | </view>
|
| | |
| | | },
|
| | | onLoad(options) { |
| | | this.$set(this.param, 'phoneNumber', options.phone) |
| | | this.$set(this.form, 'starttime', dayjs().format('YYYY/MM/DD')) |
| | | const nextMonth = dayjs().add(1, 'month'); |
| | | this.$set(this.form, 'endtime', nextMonth.format('YYYY/MM/DD'))
|
| | | this.getList()
|
| | | },
|
| | | methods: {
|
| | | clear() { |
| | | this.param = { |
| | | phoneNumber: this.param.phoneNumber |
| | | } |
| | | this.form = {} |
| | | this.page = 1 |
| | | this.list = [] |
| | | this.showModal = false |
| | | this.getList() |
| | | },
|
| | | modalSub() {
|
| | | this.handleQuery()
|
| | | this.showModal = false
|
| | | },
|
| | | openModal() {
|
| | | this.showModal = true
|
| | | // this.$set(this.form, 'ncCreateDateTimeStart', dayjs().subtract(1, 'month').format('YYYY-MM-DD'))
|
| | | // const nextMonth = dayjs().add(1, 'month');
|
| | | // this.$set(this.form, 'ncCreateDateTimeEnd', dayjs().format('YYYY-MM-DD'))
|
| | | }, |
| | | confirmPro(e) { |
| | | this.$set(this.form, 'provinceName', e.value[0]) |
| | |
| | | },
|
| | | confirmStart(e) {
|
| | | this.$nextTick(() => {
|
| | | this.$set(this.form, 'starttime', dayjs(e.value).format('YYYY/MM/DD'))
|
| | | this.$set(this.form, 'ncCreateDateTimeStart', dayjs(e.value).format('YYYY-MM-DD'))
|
| | | })
|
| | | this.showStarttime = false
|
| | | },
|
| | | confirmEnd(e) {
|
| | | this.$nextTick(() => {
|
| | | this.$set(this.form, 'endtime', dayjs(e.value).format('YYYY/MM/DD'))
|
| | | this.$set(this.form, 'ncCreateDateTimeEnd', dayjs(e.value).format('YYYY-MM-DD'))
|
| | | })
|
| | | this.showEndtime = false
|
| | | },
|
| | | handleQuery() {
|
| | | this.page = 1
|
| | | this.list = []
|
| | | this.getList()
|
| | | },
|
| | | handleDetail(item) { |
| | |
| | | url: '/pages/waybill/waybillDetail?id=' + item.contractNumber |
| | | }) |
| | | },
|
| | | scrolltolower() {
|
| | | const {
|
| | | total,
|
| | | list
|
| | | } = this
|
| | | if (list.length < total) {
|
| | | this.page = this.page + 1
|
| | | this.getList()
|
| | | } else {
|
| | | this.showToast('暂无更多数据')
|
| | | }
|
| | | },
|
| | | getList() {
|
| | | const {
|
| | | param,
|
| | | form
|
| | | form,
|
| | | page
|
| | | } = this |
| | | if(form.contract){ |
| | | form.contractNumber = [form.contract] |
| | | }else{ |
| | | form.contractNumber = null |
| | | }
|
| | | // if (form.contract) {
|
| | | // form.contractNumber = form.contract
|
| | | // } else {
|
| | | // form.contractNumber = null
|
| | | // }
|
| | | orderListTms({
|
| | | parameters: {
|
| | | ...param, |
| | | ...form
|
| | | },
|
| | | pager: {
|
| | | rows: 10,
|
| | | page
|
| | | }
|
| | | }).then(res => {
|
| | | this.list = res.data || []
|
| | | this.total = res.data.total
|
| | | if (res.data && res.data.rows) {
|
| | | this.list = [...this.list, ...res.data.rows]
|
| | | this.total = res.data.totalCount
|
| | | }
|
| | | })
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | .main_list {
|
| | | .scroll_Y {
|
| | | background-color: #f7f7f7;
|
| | |
|
| | | height: calc(100vh - 130rpx);
|
| | |
|
| | | .main_list {
|
| | | width: 750rpx;
|
| | | margin: 0 -30rpx;
|
| | | padding: 24rpx 30rpx;
|
| | | height: calc(100vh - 140rpx);
|
| | |
|
| | | .item {
|
| | | border-radius: 8rpx;
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | .modal {
|
| | | .modal_title {
|
| | |
| | | <template>
|
| | | <view class="main_app">
|
| | | <image class="bg" src="@/static/wuliuche_bg@2x.png" mode="widthFix"></image> |
| | | <!-- <image class="bg" src="@/static/wuliuche_bg@2x.png" mode="widthFix"></image> -->
|
| | | <map id="map" :latitude="latitude" :longitude="longitude" :polyline="polyline" :markers="markers" :scale="4">
|
| | |
|
| | | </map>
|
| | | <view class="main_content"> |
| | | <view class="info"> |
| | | <view class="head"> |
| | | <view class="code">{{info.contractNumber}}</view> |
| | | <view class="status">{{info.orderStatus}}</view> |
| | | <view class="status">{{info.orderStatusDesc}}</view> |
| | | </view> |
| | | <view class="content"> |
| | | <view class="line"> |
| | | <view class="la">发货地</view> |
| | | <view class="val">{{info.fromRepertoty || '-'}}</view> |
| | | <view class="val">{{info.deliveryEnterprise || '-'}}</view> |
| | | </view> |
| | | <view class="line"> |
| | | <view class="la">到货地</view> |
| | | <view class="val">{{info.toRepertoty || '-'}}</view> |
| | | <view class="val">{{info.receiveEnterprise || '-'}}</view> |
| | | </view> |
| | | <view class="line"> |
| | | <view class="la">车牌号</view> |
| | | <view class="val">{{info.plateNumber || '-'}}</view> |
| | | <view class="val">{{info.plateName || '-'}}</view> |
| | | </view> |
| | | <view class="line"> |
| | | <view class="la">司机信息</view> |
| | | <view class="val">{{ '-'}}</view> |
| | | <view class="val" @click="callPhone(info.driverTel)">{{ info.driverName }} <text class="primaryColor ml12">{{info.driverTel}}</text> </view> |
| | | </view> |
| | | <view class="line"> |
| | | <view class="la">车辆位置</view> |
| | |
| | | </view> |
| | | <view class="line"> |
| | | <view class="la">预计到达</view> |
| | | <view class="val">{{'-'}}</view> |
| | | <view class="val">{{info.plannedArrivedDate}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="drive_info"> |
| | | <view class="title">物流信息</view> |
| | | <!-- <view class="item"> |
| | | <view class="h2"> |
| | | <view class="icon_wrap"><image src="@/static/driver/ic_mostarted.png" class="icon"></image></view> |
| | | <view class="text">到达卸货地</view> |
| | | </view> |
| | | <view class="time">202422222222</view> |
| | | <view class="drive_list" v-for="dri,k in info.cicleStatusList"> |
| | | <view class="separate"></view> |
| | | <view class="item_title"> |
| | | <view class="icon_wrap"> |
| | | <image v-if="dri.key == 0 && k != 0" src="@/static/waybill/ic_dingdan@2x.png" class="icon"></image> |
| | | <image v-if="dri.key == 0 && k == 0" src="@/static/waybill/ic_dingdan_sel@2x.png" class="icon"></image> |
| | | <image v-if="dri.key == 1 && k != 0" src="@/static/waybill/ic_peizai@2x.png" class="icon"></image> |
| | | <image v-if="dri.key == 1 && k == 0" src="@/static/waybill/ic_peizai_sel@2x.png" class="icon"></image> |
| | | <image v-if="dri.key == 2 && k != 0" src="@/static/waybill/ic_cangku@2x.png" class="icon"></image> |
| | | <image v-if="dri.key == 2 && k == 0" src="@/static/waybill/ic_cangku_sel@2x.png" class="icon"></image> |
| | | <image v-if="dri.key == 3 && k != 0" src="@/static/waybill/ic_yunshu@2x.png" class="icon"></image> |
| | | <image v-if="dri.key == 3 && k == 0" src="@/static/waybill/ic_yunshu_sel@2x.png" class="icon"></image> |
| | | <image v-if="dri.key == 4" src="@/static/waybill/ic_daohuo_sel@2x.png" class="icon"></image> |
| | | <image v-if="dri.key == 5" src="@/static/waybill/ic_ruku.png" class="icon"></image> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="h2 h1"> |
| | | <view class="icon_wrap"><image src="@/static/driver/ic_dangqian.png" class="icon"></image></view> |
| | | <view class="text">到达卸货地</view> |
| | | <view class="" :class="{primaryColor: k == 0}">{{dri.name}}</view> |
| | | </view> |
| | | <view class="time">202422222222</view> |
| | | <view class="separate separate_ac"></view> |
| | | <view class="item" v-for="item,i in dri.secondList"> |
| | | <view class="h2" v-if="item.orderStatusDes"> |
| | | <view class="icon_wrap" v-if="i != 0"> |
| | | <image src="@/static/driver/ic_mostarted.png" class="icon"></image> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="h2"> |
| | | <view class="icon_wrap"><image src="@/static/driver/ic_mostarted.png" class="icon"></image></view> |
| | | <view class="text">到达卸货地</view> |
| | | <view v-else class="icon_wrap"></view> |
| | | <view class="text" :class="{placeholder3: k==0 && i== 0}" > |
| | | {{item.orderStatusDes}} |
| | | <text v-if="item.tel">,发货仓库电话:</text> |
| | | <text v-if="item.tel" @click="callPhone(item.tel)" class="primaryColor">{{item.tel}}</text> |
| | | </view> |
| | | <view class="time">202422222222</view> |
| | | <view class="separate"></view> |
| | | </view> --> |
| | | </view> |
| | | <view class="time">{{item.recordDate}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script> |
| | | import { orderInfoTms } from '@/api'
|
| | | import {
|
| | | orderInfoTms
|
| | | } from '@/api'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | id: '', |
| | | info: {}, |
| | | param: {}
|
| | | param: {},
|
| | |
|
| | | latitude: 31.783205,
|
| | | longitude: 117.262635,
|
| | | markers: [],
|
| | | includePoints: [
|
| | | // {latitude: 31.783205, longitude: 117.262635}, {latitude: 36.783205, longitude: 118.10},
|
| | | ],
|
| | |
|
| | | polyline: [
|
| | | // {
|
| | | // points: [{
|
| | | // latitude: 31.783205,
|
| | | // longitude: 117.262635
|
| | | // }, {
|
| | | // latitude: 36.783205,
|
| | | // longitude: 118.10
|
| | | // }],
|
| | | // color: '#FF0000',
|
| | | // width: 3
|
| | | // }, |
| | | ]
|
| | | };
|
| | | }, |
| | | onLoad(options) { |
| | |
| | | }, |
| | | methods: { |
| | | getDetail() { |
| | | orderInfoTms({ contractNumber: this.id }).then(res => { |
| | | orderInfoTms({
|
| | | contractNumber: this.id
|
| | | }).then(res => {
|
| | | this.info = res.data |
| | | if (res.data.deliveryLat && res.data.receiveLat) {
|
| | | this.markers = []
|
| | | this.markers.push({
|
| | | id: 1,
|
| | | latitude: res.data.deliveryLat,
|
| | | longitude: res.data.deliveryLon,
|
| | | width: 36,
|
| | | iconPath: '/static/driver/ic_fahuodi@2x.png',
|
| | | label: {
|
| | | content: ' ',
|
| | | padding: 3,
|
| | | borderWidth: 2,
|
| | | borderRadius: '50%',
|
| | | borderColor: '#fff',
|
| | | borderRadius: 32,
|
| | | bgColor: '#FF0000'
|
| | | }
|
| | | })
|
| | | this.markers.push({
|
| | | id: 2,
|
| | | latitude: res.data.receiveLat,
|
| | | longitude: res.data.receiveLon,
|
| | | width: 36,
|
| | | iconPath: '/static/driver/ic_huowu@2x.png',
|
| | | label: {
|
| | | content: ' ',
|
| | | padding: 3,
|
| | | borderWidth: 2,
|
| | | borderRadius: '50%',
|
| | | borderColor: '#fff',
|
| | | borderRadius: 32,
|
| | | bgColor: '#FF0000'
|
| | | }
|
| | | })
|
| | | this.latitude = (Number(this.markers[0].latitude) + Number(this.markers[1].latitude)) / 2 - 8
|
| | | this.longitude = (Number(this.markers[0].longitude) + Number(this.markers[1].longitude)) / 2
|
| | | }
|
| | | if (res.data && res.data.gisList && res.data.gisList.length > 0) {
|
| | | this.gisInfo = res.data.gisList[0]
|
| | | }
|
| | | }) |
| | | }, |
| | | callPhone(phone){ |
| | | uni.makePhoneCall({ |
| | | phoneNumber: phone |
| | | }); |
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
| | | page{ |
| | | background-color: #f7f7f7; |
| | | }
|
| | |
|
| | | .main_app{ |
| | | padding-top: 120rpx; |
| | | .bg{ |
| | | padding: 0;
|
| | | padding-top: 45vh;
|
| | | .main_content{ |
| | | height: 55vh ; |
| | | overflow: auto; |
| | | padding: 20rpx 30rpx 0; |
| | | position: relative; |
| | | z-index: 999; |
| | | }
|
| | | #map {
|
| | | width: 750rpx; |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | height: 105vh;
|
| | |
|
| | | ::v-deep .amap-marker-label {
|
| | | top: 36px !important;
|
| | | left: 12px !important;
|
| | | border: 3px solid #fff !important;
|
| | | border-radius: 50%;
|
| | | box-shadow: #222222 0px 0px 1px;
|
| | | } |
| | | }
|
| | |
|
| | | .drive_info{ |
| | | background: #fff; |
| | | border-radius: 16rpx; |
| | | padding: 30rpx; |
| | | margin-bottom: 20rpx; |
| | | position: relative;
|
| | | z-index: 999;
|
| | | .separate { |
| | | height: calc( 100% - 250rpx ); |
| | | width: 1rpx; |
| | | border: 1rpx dashed #CCCCCC; |
| | | position: absolute; |
| | | left: 53rpx; |
| | | top: 102rpx; |
| | | z-index: -1; |
| | | }
|
| | | .title{ |
| | | font-weight: 500; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 20rpx; |
| | | } |
| | |
|
| | | .line{ |
| | | display: flex; |
| | | margin-bottom: 24rpx; |
| | |
|
| | | .label{ |
| | | color: #666666; |
| | | margin-right: 40rpx; |
| | | } |
| | | .val{ |
| | | |
| | | .val {}
|
| | | } |
| | | } |
| | | .item{ |
| | | position: relative; |
| | | color: #999999; |
| | | margin-bottom: 30rpx; |
| | | .h2{ |
| | | .item_title{ |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | height: 48rpx; |
| | | } |
| | | .icon_wrap{ |
| | | width: 48rpx; |
| | | margin-right: 30rpx; |
| | |
| | | align-items: center; |
| | | justify-content: center; |
| | | .icon{ |
| | | width: 24rpx; |
| | | height: 24rpx; |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | position: relative; |
| | | z-index: 2; |
| | | } |
| | | } |
| | | .item {
|
| | | position: relative;
|
| | | color: #999999;
|
| | | margin-bottom: 30rpx; |
| | | .text{ |
| | | color: #666666; |
| | | } |
| | | .h1{ |
| | | .icon_wrap{ |
| | | .icon{ |
| | | width: 48rpx; |
| | | width: 20rpx; |
| | | height: 20rpx; |
| | | position: relative; |
| | | z-index: 2; |
| | | }
|
| | | .h2 {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | height: 48rpx; |
| | | } |
| | |
|
| | | .h1 {
|
| | | } |
| | | } |
| | |
|
| | | .time{ |
| | | padding-left: 78rpx; |
| | | font-size: 24rpx; |
| | | margin-top: 6rpx; |
| | | } |
| | | .separate{ |
| | | height: calc( 100% ); |
| | | width: 1rpx; |
| | | border: 1rpx dashed #666666; |
| | | position: absolute; |
| | | left: 22rpx; |
| | | top: 24rpx; |
| | | z-index: 1; |
| | | } |
| | | .separate_ac{ |
| | | top: 48rpx; |
| | | } |
| | | } |
| | | } |
| | |
| | | overflow: hidden; |
| | | position: relative; |
| | | z-index: 1; |
| | |
|
| | | .head { |
| | | display: flex; |
| | | justify-content: space-between; |
| | |
| | | .line { |
| | | display: flex; |
| | | margin-bottom: 16rpx; |
| | | font-size: 26rpx; |
| | | font-size: 28rpx;
|
| | | |
| | | .la { |
| | | color: #666666; |
| | |
| | | |
| | | } |
| | | }
|
| | |
|
| | | .main_bg { |
| | | position: absolute; |
| | | left: 0; |
| | |
| | | |
| | | // export const baseUrl = 'zhyq_interface/' |
| | | export const baseUrl = 'zhyq_interface/' |
| | | // export const baseUrl = 'http://192.168.0.173/gateway_interface/' |
| | | // export const baseUrl = 'http://10.50.250.253:8088/gateway_interface/' |
| | | export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/' |
| | | // export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/' |
| | | |
| | | export const app_url = 'https://atwl.ahzyssl.com/zhyq_h5/#/' |
| | | |
| | |
| | | <div class="content"> |
| | | <div class="num" v-if="data1.monthOutTotal || data1.yearOutTotal">{{ activeTab1 == 0 ? |
| | | data1.monthOutTotal.toLocaleString() : data1.yearOutTotal.toLocaleString() }}</div> |
| | | <div class="unit_wrap" v-if="data1.monthOutTotalOnYear || data1.yearOutTotalOnYear"> |
| | | <span style="color: #869CC9;">同比</span> |
| | | <img |
| | | v-if="(activeTab1 == 0 && data1.monthOutTotalOnYear > 0) || (activeTab1 == 1 && data1.yearOutTotalOnYear > 0)" |
| | | src="@/assets/images/ic_up.png" class="icon" alt=""> |
| | | <div class="unit_wrap"> |
| | | <span style="color: #869CC9;">{{ activeTab1 == 0 ? '同比' : '环比' }}</span> |
| | | <template v-if="activeTab1 == 0 && data1.monthLastOutTotal"> |
| | | <img v-if="data1.monthOutTotal > data1.monthLastOutTotal" src="@/assets/images/ic_up.png" |
| | | class="icon" alt=""> |
| | | <img v-else src="@/assets/images/ic_down.png" class="icon" alt=""> |
| | | <span>{{ activeTab1 == 0 ? Math.abs(data1.monthOutTotalOnYear) : Math.abs(data1.yearOutTotalOnYear) |
| | | }}%</span> |
| | | </template> |
| | | <template v-if="activeTab1 == 1 && data1.yearLastOutTotal"> |
| | | <img v-if="data1.yearOutTotal > data1.yearLastOutTotal" src="@/assets/images/ic_up.png" |
| | | class="icon" alt=""> |
| | | <img v-else src="@/assets/images/ic_down.png" class="icon" alt=""> |
| | | </template> |
| | | |
| | | <span v-if="activeTab1 == 0 && data1.monthLastOutTotal">{{ Math.abs((((data1.monthOutTotal - data1.monthLastOutTotal)/data1.monthLastOutTotal) * 100).toFixed(1)) }}%</span> |
| | | <span v-else-if="activeTab1 == 1 && data1.yearLastOutTotal">{{ Math.abs((((data1.yearOutTotal - data1.yearLastOutTotal)/data1.yearLastOutTotal) * 100).toFixed(1)) }}%</span> |
| | | <span v-else>-</span> |
| | | </div> |
| | | </div> |
| | | <div class="train_wrap"> |
| | |
| | | <img src="@/assets/images/energy_ef/ic_chukuxiaolv@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="name">出库效率</div> |
| | | <div class="num"><span>{{ activeTab12 == 0 ? data1.todayInRata : data1.monthInRata }}</span>万支/小时 |
| | | <div class="num"><span>{{ activeTab12 == 0 ? data1.todayOutRate : data1.monthOutRate }}</span>万支/小时 |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <img src="@/assets/images/energy_ef/ic_rukuxiaolv@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="name">入库效率</div> |
| | | <div class="num"><span class="today">{{ activeTab12 == 0 ? data1.monthOutTotal : data1.yearOutTotal |
| | | <div class="num"><span class="today">{{ activeTab12 == 0 ? data1.todayInRate : data1.monthInRate |
| | | }}</span>万支/小时</div> |
| | | </div> |
| | | </div> |
| | |
| | | const result = res.data || [] |
| | | dataList2.value = result |
| | | dataList2.value.forEach(item => { |
| | | item.planDateStrT = activeTab2.value == 2 ? dayjs(item.planDateStr).format('M') : dayjs(item.planDateStr).format('M.D') |
| | | item.planDateStrT = activeTab2.value == 2 ? dayjs(item.planDate).format('M') : dayjs(item.planDate).format('M.D') |
| | | }) |
| | | initEnergy() |
| | | }) |
| | |
| | | return i |
| | | }) |
| | | dataList5.value.forEach(i => { |
| | | i.rate = ((i.num / count) * 100).toFixed(0) |
| | | i.rate = count == 0 ? 0 : ((i.num / count) * 100).toFixed(0) |
| | | }) |
| | | data5.value = count |
| | | initEchart1() |
| | |
| | | const dataList6 = ref([]) |
| | | const getData6 = () => { |
| | | wlstockList().then(res => { |
| | | const result = res.data |
| | | const result = res.data.stockList || [] |
| | | dataList6.value = result |
| | | }) |
| | | } |
| | |
| | | bottom: 0; |
| | | border-top: 1px solid #5ecbce; |
| | | border-bottom: 1px solid #5ecbce; |
| | | |
| | | .head { |
| | | display: flex; |
| | | width: 280px; |
| | |
| | | font-weight: bold; |
| | | font-size: 16px; |
| | | cursor: pointer; |
| | | |
| | | img { |
| | | width: 14px; |
| | | margin-right: 10px; |
| | |
| | | .war_list { |
| | | max-height: 300px; |
| | | overflow: auto; |
| | | |
| | | .line { |
| | | font-size: 13px; |
| | | color: #D2E0FF; |
| | | display: flex; |
| | | align-items: center; |
| | | height: 30px; |
| | | |
| | | div{ |
| | | flex: 3; |
| | | } |
| | | |
| | | .id_card{ |
| | | color: #00F2F3; |
| | | } |
| | | |
| | | .title{ |
| | | flex: 4; |
| | | } |