admin/src/components/business/OperaHiddenDangerParamWindow.vue
@@ -4,11 +4,11 @@ <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"> @@ -70,7 +70,6 @@ this.form.memberIdList = null this.form.type = type this.getfindCompanyTreePage() this.loadMember() // 新建组织 if (target == null) { this.$nextTick(() => { admin/src/views/business/reportRecord.vue
@@ -149,7 +149,8 @@ }, pagination: { capacity: 10, page: 1 page: 1, total: 0 }, total: 0 } @@ -203,6 +204,7 @@ ...pagination }).then(res => { this.dataList = res.records || [] this.pagination.total = res.total }) }, clear () { @@ -213,6 +215,7 @@ }, handleSizeChange (capacity) { this.pagination.capacity = capacity this.getList() } } } admin/src/views/vehicle/category.vue
@@ -18,8 +18,8 @@ <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"> @@ -42,7 +42,7 @@ </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> <!-- 新建/修改 --> @@ -79,11 +79,11 @@ }, created() { this.config({ module: '车辆信息表', api: '/business/category', 'field.id': 'id', 'field.main': 'id' }) module: '车辆信息表', api: '/business/category', 'field.id': 'id', 'field.main': 'id' }) this.getList() }, methods: { @@ -110,8 +110,11 @@ }) }, getList() { getList(page) { const { pagination, filters } = this if (page) { pagination.page = page } this.loading = true fetchList({ model: { ...filters }, @@ -125,6 +128,10 @@ this.loading = false }) }, handleSizeChange(val){ this.pagination.pageSize = val this.getList() } } } </script> admin/src/views/vehicle/components/OperaCategoryWindow.vue
@@ -2,7 +2,7 @@ <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> h5/App.vue
@@ -145,6 +145,9 @@ color: #999999 !important; font-size: 28rpx; } .placeholder3{ color: #333333 !important; } .red{ color: red !important; } h5/index.html
@@ -11,6 +11,7 @@ (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--> h5/manifest.json
@@ -128,9 +128,9 @@ "/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" : "" @@ -142,7 +142,7 @@ "sdkConfigs" : { "maps" : { "amap" : { "key" : "d9a554b1808ce10a12a932ed9b0db1d0", "key" : "96b8d96e645290f1de14f5229ee030e4", "securityJsCode" : "", "serviceHost" : "" } h5/pages/driver/forgetPsd.vue
@@ -7,14 +7,14 @@ <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 h5/pages/driver/login.vue
@@ -7,7 +7,7 @@ <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" /> h5/pages/driver/taskDetail.vue
@@ -206,8 +206,8 @@ // 'openLocation' // ] // 必填,需要使用的JS接口列表 // }) // this.getLocation() this.getDetail() this.getLocation() // this.getDetail() } else { this.getDetail() } @@ -287,7 +287,8 @@ type: 'wgs84', success: (res) => { this.lat = res.latitude this.lnt = res.longitude this.lnt = res.longitude console.log('---', res); this.getDetail() }, fail: (err) => { h5/pages/login/login.vue
@@ -41,7 +41,7 @@ export default { data() { return { code: '' code: 'qwe' } }, onLoad(option) { h5/pages/staff/snapshot.vue
@@ -87,7 +87,7 @@ <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"> h5/pages/staff/task/vDangetAppr.vue
@@ -263,9 +263,9 @@ @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> @@ -366,8 +366,8 @@ console.log(item) this.videoPlay = true; this.videoUrl = item.fileurlFull; this.videoContext.requestFullScreen(); this.$nextTick(() => { this.videoContext.requestFullScreen(); this.videoContext.play(); }) @@ -1378,6 +1378,10 @@ top: 0; width: 100vw; height: 100vh; video{ width: 100%; height: 100%; } } .Transfer_footer { display: flex; h5/pages/staffLogin/forgetPsd.vue
@@ -6,14 +6,14 @@ <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 h5/pages/staffLogin/login.vue
@@ -6,7 +6,7 @@ <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" /> h5/pages/waybill/home.vue
@@ -4,7 +4,7 @@ <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> @@ -13,7 +13,7 @@ v-model="form.code" placeholder="请输入验证码" placeholder-class="placeholder9" type="text" type="number" /> <text class="captcha" v-if="countDown == 0" @click="initCaptcha" >获取验证码</text h5/pages/waybill/list.vue
@@ -1,46 +1,49 @@ <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> <!-- --> <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> <view class="content"> <view class="line"> <view class="la">发货地:</view> <view class="val">{{item.fromRepertoty || '-'}}</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.orderStatusDesc }}</view> </view> <view class="line"> <view class="la">到货地:</view> <view class="val">{{item.toRepertoty || '-'}}</view> <view class="content"> <view class="line"> <view class="la">发货地:</view> <view class="val">{{item.fromRepertoty || item.deliveryEnterprise || '-'}}</view> </view> <view class="line"> <view class="la">到货地:</view> <view class="val">{{item.toRepertoty || item.receiveEnterprise || '-'}}</view> </view> <view class="line"> <view class="la">车牌号:</view> <view class="val">{{item.plateNumber || item.plateName || '-'}}</view> </view> </view> <view class="line"> <view class="la">车牌号:</view> <view class="val">{{item.plateNumber || '-'}}</view> <view class="footer"> <view class="time">{{item.ncCreateDate}}</view> <view class="detail" @click="handleDetail(item)">查看详情</view> </view> </view> <view class="footer"> <view class="time">{{item.ncCreateDate}}</view> <view class="detail" @click="handleDetail(item)">查看详情</view> <view v-if="list.length === 0" style="text-align: center"> <image src="@/static/empty.png" style="width: 320rpx; margin: 120px auto 0" mode="widthFix" /> <view class="placeholder9 fs24">暂无数据</view> </view> </view> <view v-if="list.length === 0" style="text-align: center"> <image src="@/static/empty.png" style="width: 320rpx; margin: 120px auto 0" mode="widthFix" /> <view class="placeholder9 fs24">暂无数据</view> </view> </view> </scroll-view> <!-- --> <u-popup :show="showModal" round="12" @close="showModal = false"> <view class="modal"> @@ -48,45 +51,47 @@ <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> @@ -95,9 +100,9 @@ <u-datetime-picker :show="showStarttime" v-model="form.starttime" mode="date" @confirm="confirmStart" @cancel="showStarttime = false"></u-datetime-picker> <u-datetime-picker :show="showEndtime" v-model="form.endtime" mode="date" @confirm="confirmEnd" @cancel="showEndtime = false"></u-datetime-picker> <u-picker :show="showPri" :columns="provinceList" @cancel="showPri = false" @confirm="confirmPro"></u-picker> @cancel="showEndtime = false"></u-datetime-picker> <u-picker :show="showPri" :columns="provinceList" @cancel="showPri = false" @confirm="confirmPro"></u-picker> </view> </template> @@ -116,7 +121,7 @@ showModal: false, showStarttime: false, showEndtime: false, showEndtime: false, showPri: false, form: {}, provinceList: [ @@ -128,61 +133,94 @@ ] }; }, 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')) onLoad(options) { this.$set(this.param, 'phoneNumber', options.phone) this.getList() }, methods: { 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 }, confirmPro(e) { this.$set(this.form, 'provinceName', e.value[0]) this.showPri = false // 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]) this.showPri = false }, 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) { uni.navigateTo({ url: '/pages/waybill/waybillDetail?id=' + item.contractNumber }) handleDetail(item) { uni.navigateTo({ 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 } = this if(form.contract){ form.contractNumber = [form.contract] }else{ form.contractNumber = null } form, page } = this // if (form.contract) { // form.contractNumber = form.contract // } else { // form.contractNumber = null // } orderListTms({ ...param, ...form 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 } }) } } @@ -236,87 +274,92 @@ } } .main_list { .scroll_Y { background-color: #f7f7f7; width: 750rpx; margin: 0 -30rpx; padding: 24rpx 30rpx; height: calc(100vh - 140rpx); .item { border-radius: 8rpx; margin-bottom: 20rpx; padding: 0 30rpx; background-color: #fff; height: calc(100vh - 130rpx); .head { display: flex; justify-content: space-between; align-items: center; padding: 0 30rpx; width: 690rpx; height: 84rpx; margin: 0 -30rpx; background: linear-gradient(270deg, #FEFEFF 0%, #E1F7FE 100%); .main_list { width: 750rpx; margin: 0 -30rpx; padding: 24rpx 30rpx; .code { font-weight: 500; font-size: 32rpx; color: #222222; } .status { color: $uni-color-primary; } } .content { padding: 20rpx 0rpx; border-bottom: 1rpx solid #E5E5E5; .item { border-radius: 8rpx; margin-bottom: 20rpx; padding: 0 30rpx; background-color: #fff; .line { .head { display: flex; margin-bottom: 16rpx; font-size: 26rpx; justify-content: space-between; align-items: center; padding: 0 30rpx; width: 690rpx; height: 84rpx; margin: 0 -30rpx; background: linear-gradient(270deg, #FEFEFF 0%, #E1F7FE 100%); .la { color: #666666; .code { font-weight: 500; font-size: 32rpx; color: #222222; } .val {} &:nth-last-child(1) { margin-bottom: 0; .status { color: $uni-color-primary; } } } .footer { display: flex; justify-content: space-between; align-items: center; font-size: 26rpx; color: #999999; padding-bottom: 20rpx; .content { padding: 20rpx 0rpx; border-bottom: 1rpx solid #E5E5E5; margin-bottom: 20rpx; .detail { width: 168rpx; height: 60rpx; background: #FFFFFF; border-radius: 30rpx; border: 1rpx solid $uni-color-primary; color: $uni-color-primary; .line { display: flex; margin-bottom: 16rpx; font-size: 26rpx; .la { color: #666666; } .val {} &:nth-last-child(1) { margin-bottom: 0; } } } .footer { display: flex; justify-content: space-between; align-items: center; justify-content: center; font-size: 26rpx; color: #999999; padding-bottom: 20rpx; .detail { width: 168rpx; height: 60rpx; background: #FFFFFF; border-radius: 30rpx; border: 1rpx solid $uni-color-primary; color: $uni-color-primary; display: flex; align-items: center; justify-content: center; font-size: 26rpx; } } } } } .modal { .modal_title { height: 112rpx; h5/pages/waybill/waybillDetail.vue
@@ -1,235 +1,350 @@ <template> <view class="main_app"> <image class="bg" src="@/static/wuliuche_bg@2x.png" mode="widthFix"></image> <view class="info"> <view class="head"> <view class="code">{{info.contractNumber}}</view> <view class="status">{{info.orderStatus}}</view> </view> <view class="content"> <view class="line"> <view class="la">发货地</view> <view class="val">{{info.fromRepertoty || '-'}}</view> <!-- <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.orderStatusDesc}}</view> </view> <view class="line"> <view class="la">到货地</view> <view class="val">{{info.toRepertoty || '-'}}</view> </view> <view class="line"> <view class="la">车牌号</view> <view class="val">{{info.plateNumber || '-'}}</view> </view> <view class="line"> <view class="la">司机信息</view> <view class="val">{{ '-'}}</view> </view> <view class="line"> <view class="la">车辆位置</view> <view class="val">{{ '-'}}</view> </view> <view class="line"> <view class="la">预计到达</view> <view class="val">{{'-'}}</view> <view class="content"> <view class="line"> <view class="la">发货地</view> <view class="val">{{info.deliveryEnterprise || '-'}}</view> </view> <view class="line"> <view class="la">到货地</view> <view class="val">{{info.receiveEnterprise || '-'}}</view> </view> <view class="line"> <view class="la">车牌号</view> <view class="val">{{info.plateName || '-'}}</view> </view> <view class="line"> <view class="la">司机信息</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 class="val">{{'-'}}</view> </view> <view class="line"> <view class="la">预计到达</view> <view class="val">{{info.plannedArrivedDate}}</view> </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 class="drive_info"> <view class="title">物流信息</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="" :class="{primaryColor: k == 0}">{{dri.name}}</view> </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 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> <view class="time">{{item.recordDate}}</view> </view> </view> <view class="time">202422222222</view> <view class="separate"></view> </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> <view class="time">202422222222</view> <view class="separate separate_ac"></view> </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="separate"></view> </view> --> </view> </view> </view> </template> <script> import { orderInfoTms } from '@/api' <script> import { orderInfoTms } from '@/api' export default { data() { return { id: '', info: {}, param: {} id: '', info: {}, 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) { this.id = options.id this.getDetail() }, methods: { getDetail() { orderInfoTms({ contractNumber: this.id }).then(res => { this.info = res.data }) }, onLoad(options) { this.id = options.id this.getDetail() }, methods: { getDetail() { 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> <style lang="scss" scoped> page{ background-color: #f7f7f7; <style lang="scss" scoped> page { background-color: #f7f7f7; } .main_app{ padding-top: 120rpx; .bg{ width: 750rpx; position: absolute; left: 0; top: 0; } .drive_info{ background: #fff; border-radius: 16rpx; padding: 30rpx; margin-bottom: 20rpx; .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{ } } .item{ position: relative; color: #999999; margin-bottom: 30rpx; .h2{ display: flex; align-items: center; height: 48rpx; .icon_wrap{ width: 48rpx; margin-right: 30rpx; display: flex; align-items: center; justify-content: center; .icon{ width: 24rpx; height: 24rpx; position: relative; z-index: 2; } } } .h1{ .icon_wrap{ .icon{ width: 48rpx; height: 48rpx; } } } .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; } } } .info { border-radius: 12rpx; margin-bottom: 20rpx; padding: 0 30rpx; background-color: #fff; overflow: hidden; .main_app { padding: 0; padding-top: 45vh; .main_content{ height: 55vh ; overflow: auto; padding: 20rpx 30rpx 0; position: relative; z-index: 1; .head { 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 {} } .item_title{ font-weight: 600; font-size: 32rpx; display: flex; justify-content: space-between; align-items: center; padding: 0 30rpx; width: 690rpx; height: 84rpx; margin: 0 -30rpx; background: linear-gradient( 270deg, #FEFEFF 0%, #E1F7FE 100%); .code { font-weight: 500; font-size: 32rpx; color: #222222; } .status { color: $uni-color-primary; } } .content { padding: 20rpx 0rpx; margin-bottom: 20rpx; .line { display: flex; margin-bottom: 16rpx; font-size: 26rpx; .la { color: #666666; width: 140rpx; } .val {} &:nth-last-child(1) { margin-bottom: 0; } .icon_wrap { width: 48rpx; margin-right: 30rpx; display: flex; align-items: center; justify-content: center; .icon { width: 48rpx; height: 48rpx; position: relative; z-index: 2; } } } } .item { position: relative; color: #999999; margin-bottom: 30rpx; .text{ color: #666666; } .icon { 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; } } } .info { border-radius: 12rpx; margin-bottom: 20rpx; padding: 0 30rpx; background-color: #fff; overflow: hidden; position: relative; z-index: 1; .head { display: flex; justify-content: space-between; align-items: center; padding: 0 30rpx; width: 690rpx; height: 84rpx; margin: 0 -30rpx; background: linear-gradient(270deg, #FEFEFF 0%, #E1F7FE 100%); .code { font-weight: 500; font-size: 32rpx; color: #222222; } .status { color: $uni-color-primary; } } .content { padding: 20rpx 0rpx; margin-bottom: 20rpx; .line { display: flex; margin-bottom: 16rpx; font-size: 28rpx; .la { color: #666666; width: 140rpx; } .val {} &:nth-last-child(1) { margin-bottom: 0; } } } } } .main_bg { position: absolute; left: 0; .main_bg { position: absolute; left: 0; top: 0; width: 100%; z-index: -1; width: 100%; z-index: -1; color: #222222; } </style> h5/static/driver/ic_fahuodi@2x.png
h5/static/driver/ic_huowu@2x.png
h5/static/driver/map_point@2x.png
h5/static/waybill/ic_cangku@2x.png
h5/static/waybill/ic_cangku_sel@2x.png
h5/static/waybill/ic_dangqian@2x.png
h5/static/waybill/ic_daohuo_sel@2x.png
h5/static/waybill/ic_dingdan@2x.png
h5/static/waybill/ic_dingdan_sel@2x.png
h5/static/waybill/ic_peizai@2x.png
h5/static/waybill/ic_peizai_sel@2x.png
h5/static/waybill/ic_ruku.png
h5/static/waybill/ic_yunshu@2x.png
h5/static/waybill/ic_yunshu_sel@2x.png
h5/utils/config.js
@@ -1,8 +1,8 @@ // 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/#/' screen/src/views/LogisticsEfficiency.vue
@@ -30,14 +30,22 @@ <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=""> <img v-else src="@/assets/images/ic_down.png" class="icon" alt=""> <span>{{ activeTab1 == 0 ? Math.abs(data1.monthOutTotalOnYear) : Math.abs(data1.yearOutTotalOnYear) }}%</span> <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=""> </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"> @@ -166,7 +174,7 @@ <div ref="echartMap" class="echart_map" id="echartMap"></div> </div> <div class="warnning_info"> <div class="head" @click="isShowCarW = !isShowCarW"> <div class="head" @click="isShowCarW = !isShowCarW"> <img src="../assets/images/FireFighting/fire_right.png" alt=""> <span>车辆报警</span> </div> @@ -199,7 +207,7 @@ <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> @@ -207,7 +215,7 @@ <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> @@ -581,7 +589,7 @@ return { name: item.terminalId, img: item.status == 0 ? icLixian : item.status == 1 || item.status == 2 ? icZaitu : icKongxian, data: [{code: item.plateNum, value: [item.longitude,item.latitude]}] data: [{ code: item.plateNum, value: [item.longitude, item.latitude] }] } }) // var scatterData = [ @@ -771,7 +779,7 @@ myChart.setOption(option) myChart.on('click', function (params) { const item = params.data getCarsJobDetails({carCode: item.code}).then(res => { getCarsJobDetails({ carCode: item.code }).then(res => { activeCar.value = res.data }) }) @@ -813,7 +821,7 @@ 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() }) @@ -865,7 +873,7 @@ 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() @@ -874,7 +882,7 @@ const dataList6 = ref([]) const getData6 = () => { wlstockList().then(res => { const result = res.data const result = res.data.stockList || [] dataList6.value = result }) } @@ -1252,6 +1260,7 @@ bottom: 0; border-top: 1px solid #5ecbce; border-bottom: 1px solid #5ecbce; .head { display: flex; width: 280px; @@ -1264,6 +1273,7 @@ font-weight: bold; font-size: 16px; cursor: pointer; img { width: 14px; margin-right: 10px; @@ -1273,19 +1283,23 @@ .war_list { max-height: 300px; overflow: auto; .line { font-size: 13px; color: #D2E0FF; display: flex; align-items: center; height: 30px; div{ div { flex: 3; } .id_card{ .id_card { color: #00F2F3; } .title{ .title { flex: 4; } }