Merge remote-tracking branch 'origin/master'
| | |
| | | <el-radio :label="2" >市公司卸货</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="选择签到通知人员" prop="signInNoticeUsers"> |
| | | <el-select v-model="form.signInNoticeUsers" filterable multiple clearable @change="changeSignInNoticeUsers" placeholder="请选择"> |
| | | <el-option v-for="item in memberList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="选择作业未完成通知人员" prop="unFinishNoticeUsers"> |
| | | <el-select v-model="form.unFinishNoticeUsers" filterable multiple clearable @change="changeUnFinishNoticeUsers" placeholder="请选择"> |
| | | <el-option v-for="item in memberList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="工作时间:" prop="startTime"> |
| | | <div style=" display: inline-block"> |
| | | <el-time-picker |
| | |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { numRuleGtZero } from '@/utils/form' |
| | | import { allList } from '@/api/platform/platformGroup' |
| | | import { allList } from '@/api/business/member' |
| | | import { getList as deviceList } from '@/api/business/device' |
| | | export default { |
| | | name: 'OperaPlatformWindow', |
| | |
| | | type: 0, |
| | | startTime: '', |
| | | endTime: '', |
| | | waitCallTime: '' |
| | | waitCallTime: '', |
| | | signInNoticeUsers: [], |
| | | unFinishNoticeUsers: [] |
| | | }, |
| | | // 验证规则 |
| | | rules: { |
| | | name: [{ required: true, message: '请输入分组名称 ', trigger: 'blur' }], |
| | | type: [{ required: true, message: '请选择业务类型 '}] |
| | | } |
| | | type: [{ required: true, message: '请选择业务类型 '}], |
| | | signInNoticeUsers: [{ required: true, message: '请选择签到通知人员', trigger: 'blur' }], |
| | | unFinishNoticeUsers: [{ required: true, message: '请选择作业未完成通知人员', trigger: 'blur' }] |
| | | }, |
| | | memberList: [] |
| | | } |
| | | }, |
| | | created () { |
| | |
| | | }) |
| | | }, |
| | | methods: { |
| | | changeSignInNoticeUsers(e) { |
| | | if (this.form.signInNoticeUsers.length > 5) { |
| | | this.form.signInNoticeUsers.splice(this.form.signInNoticeUsers.length - 1, 1) |
| | | this.$message.warning('最多只能选择五个人员!') |
| | | } |
| | | }, |
| | | changeUnFinishNoticeUsers(e) { |
| | | if (this.form.unFinishNoticeUsers.length > 5) { |
| | | this.form.unFinishNoticeUsers.splice(this.form.unFinishNoticeUsers.length - 1, 1) |
| | | this.$message.warning('最多只能选择五个人员!') |
| | | } |
| | | }, |
| | | // 确认新建 |
| | | __confirmCreate () { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | let obj = JSON.parse(JSON.stringify(this.form)) |
| | | obj.signInNoticeUsers = obj.signInNoticeUsers.join(',') |
| | | obj.unFinishNoticeUsers = obj.unFinishNoticeUsers.join(',') |
| | | // 调用新建接口 |
| | | this.isWorking = true |
| | | this.api.create(obj) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('新建成功') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | // this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | }, |
| | | __confirmEdit () { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | let obj = JSON.parse(JSON.stringify(this.form)) |
| | | obj.signInNoticeUsers = obj.signInNoticeUsers.join(',') |
| | | obj.unFinishNoticeUsers = obj.unFinishNoticeUsers.join(',') |
| | | // 调用新建接口 |
| | | this.isWorking = true |
| | | this.api.updateById(obj) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('修改成功') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | // this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | }, |
| | | loadMember() { |
| | | allList({ |
| | | type: 2, |
| | | companyType: 1 |
| | | }).then(res => { |
| | | this.memberList = res |
| | | }) |
| | | }, |
| | | seleTime(){}, |
| | | /** |
| | | * 打开窗口 |
| | |
| | | */ |
| | | open (title, target) { |
| | | this.title = title |
| | | this.loadMember() |
| | | this.visible = true |
| | | // 新建 |
| | | if (target == null) { |
| | |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | if (this.form.signInNoticeUsers) { |
| | | this.form.signInNoticeUsers = this.form.signInNoticeUsers.split(',').map(item => Number(item)) |
| | | } |
| | | if (this.form.unFinishNoticeUsers) { |
| | | this.form.unFinishNoticeUsers = this.form.unFinishNoticeUsers.split(',').map(item => Number(item)) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | |
| | | method: 'get' |
| | | }) |
| | | } |
| | | // 取消预约 |
| | | export const visitsCancel = (id) => { |
| | | return http({ |
| | | url: 'visitsAdmin/cloudService/business/visits/visitsCancel?visitId=' + id, |
| | | method: 'get' |
| | | }) |
| | | } |
| | | // 来访事由 |
| | | export const getVisitReason = (data) => { |
| | | return http({ |
| | |
| | | <view class="box_list_item_val">{{ info.carNos }}</view> |
| | | </view> |
| | | </view> |
| | | <view class="footer"> |
| | | <u-button |
| | | text="取消预约" |
| | | size="mini" |
| | | v-if="[0,1,2,5].includes(info.status)" |
| | | @click="cancelShow = true" /> |
| | | </view> |
| | | <u-popup :show="show" mode="center" @close="close"> |
| | | <view class="qrocde"> |
| | | <canvas class="qrcode_img" canvas-id="img1"></canvas> |
| | | </view> |
| | | </u-popup> |
| | | <!-- 取消预约弹窗 --> |
| | | <u-modal |
| | | :show="cancelShow" |
| | | :showCancelButton="true" |
| | | title="系统提示" |
| | | content='确定取消当前预约吗?' |
| | | @cancel="cancelShow = false" |
| | | @confirm="cancel" /> |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | id: null, |
| | | info: {}, |
| | | show: false, |
| | | detail: '' |
| | | detail: '', |
| | | cancelShow: false |
| | | } |
| | | }, |
| | | onBackPress(options) { |
| | |
| | | onLoad(option) { |
| | | uni.setStorageSync('ywinfo',{}) |
| | | this.detail = option.detail || '' |
| | | this.id = option.id |
| | | this.getDetail(option.id) |
| | | // visitorSubDetail({ id: option.id }) |
| | | // .then(res => { |
| | |
| | | |
| | | }, |
| | | methods: { |
| | | // 取消预约 |
| | | cancel() { |
| | | visitsCancel(this.id).then(res => { |
| | | this.getDetail(this.id) |
| | | }) |
| | | }, |
| | | close() { |
| | | this.show = false |
| | | }, |
| | |
| | | <style lang="scss" scoped> |
| | | .box { |
| | | width: 100%; |
| | | .footer { |
| | | position: fixed; |
| | | left: 0; |
| | | bottom: 0; |
| | | width: 100%; |
| | | height: 100rpx; |
| | | text-align: right; |
| | | background-color: #ffffff; |
| | | padding-bottom: calc(30rpx + env(safe-area-inset-bottom)); |
| | | } |
| | | .qrocde { |
| | | width: 300rpx; |
| | | height: 300rpx; |
| | |
| | | <view class="line"> |
| | | <view class="label"> |
| | | <text>*</text> |
| | | <text>合同号</text> |
| | | <text>合同/单据编号</text> |
| | | </view> |
| | | <view class="value"><input type="text" placeholder="请输入您的合同号" v-model="param.contractNum" placeholder-style="color: #999999;" /></view> |
| | | <view class="value"><input type="text" placeholder="请输入您的合同/单据编号" v-model="param.contractNum" placeholder-style="color: #999999;" /></view> |
| | | </view> |
| | | <!-- --> |
| | | <view class="line"> |
| | |
| | | <view class="line"> |
| | | <view class="label"> |
| | | <text>*</text> |
| | | <text>入库类型</text> |
| | | <text>作业类型</text> |
| | | </view> |
| | | <view class="value"> |
| | | <view class="btns"> |
| | |
| | | <view class="line"> |
| | | <view class="label"> |
| | | <text>*</text> |
| | | <text>准运证照片</text> |
| | | <text>准运证/运单照片</text> |
| | | </view> |
| | | <view class="value" @click="handleUpload"> |
| | | <image v-if="param.transportImgFull" class="upload_wrap" :src="param.transportImgFull" alt=""> |
| | |
| | | onSubmit() { |
| | | const param = { ...this.param } |
| | | if (!param.arriveDate) return this.showToast('请选择到场时间') |
| | | if (!param.inType && param.inType != 0) return this.showToast('请选择入库类型') |
| | | if (!param.contractNum) return this.showToast('请输入合同号') |
| | | if (!param.inType && param.inType != 0) return this.showToast('请选择作业类型') |
| | | if (!param.contractNum) return this.showToast('请输入合同/单据编号') |
| | | if (!param.totalNum) return this.showToast('请输入总运输量') |
| | | if (!param.driverName) return this.showToast('请输入司机姓名') |
| | | if (!param.driverPhone) return this.showToast('请输入手机号') |
| | | if (!param.carCodeFront) return this.showToast('请输入车前牌号') |
| | | if (!param.carCodeBack) return this.showToast('请输入车后牌号') |
| | | if (!param.transportImgFull) return this.showToast('请上传准运证照片') |
| | | if (!param.transportImgFull) return this.showToast('请上传准运证/运单照片') |
| | | param.arriveDate = param.arriveDate + ':00' |
| | | let fn = param.id ? driverCarApplyEdit : driverCarApply |
| | | fn({...param}).then(res => { |
| | |
| | | info.approveDateVO.canBeApproved != null &&
|
| | | info.approveDateVO.canBeApproved == 1
|
| | | " class="main_footer">
|
| | | <view class="btn" @click="cancelShow = true" v-if="checkAuth('business:visits:cancel') && [0,1,2,5].includes(info.status)">取消预约</view>
|
| | | <view style="width: 30rpx; height: 100%;"></view>
|
| | | <view class="btn" @click="handleSub(3)">拒绝</view>
|
| | | <view style="width: 30rpx; height: 100%;"></view>
|
| | | <view class="btn agree" @click="handleSub(2)">同意</view>
|
| | | </view>
|
| | |
|
| | |
| | | " placeholder-class="placeholder9" />
|
| | | <view class="main_footer">
|
| | | <view class="btn" @click="showApprModal = false">取消</view>
|
| | | <view style="width: 30rpx; height: 100%;"></view>
|
| | | <view class="btn agree" @click="onSubmit">提交</view>
|
| | | </view>
|
| | | </view>
|
| | | </u-popup>
|
| | | <!-- 取消预约弹窗 -->
|
| | | <u-modal
|
| | | :show="cancelShow"
|
| | | :showCancelButton="true"
|
| | | title="系统提示"
|
| | | content='确定取消当前预约吗?'
|
| | | @cancel="cancelShow = false"
|
| | | @confirm="cancel" />
|
| | | </view>
|
| | | </template>
|
| | |
|
| | |
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | userInfo: uni.getStorageSync('userInfo') || {
|
| | | permissions: []
|
| | | },
|
| | | showApprModal: false,
|
| | | param: {},
|
| | | info: {},
|
| | |
| | | 2: '已通过',
|
| | | 3: '已拒绝',
|
| | | 4: '已取消',
|
| | | }
|
| | | },
|
| | | cancelShow: false
|
| | | }
|
| | | },
|
| | | onLoad(op) { |
| | |
| | | this.getDetail()
|
| | | },
|
| | | methods: {
|
| | | // 取消预约
|
| | | cancel() {
|
| | | visitsCancel(this.id).then(res => {
|
| | | this.getDetail()
|
| | | })
|
| | | },
|
| | | checkAuth(str) {
|
| | | const permissions = this.userInfo.permissions || []
|
| | | return permissions.indexOf(str) > -1
|
| | | },
|
| | | getDetail() {
|
| | | const {
|
| | | id
|
| | |
| | | background: #ffffff;
|
| | |
|
| | | .btn {
|
| | | width: 336rpx;
|
| | | // width: 336rpx;
|
| | | flex: 1;
|
| | | height: 88rpx;
|
| | | line-height: 88rpx;
|
| | | background: #ffffff;
|
| | |
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> |
| | | </view> |
| | | </view> |
| | | <view class="list_item"> |
| | | <!-- <view class="list_item"> |
| | | <view class="list_item_label"> |
| | | <text></text> |
| | | <text>是否施工作业</text> |
| | | </view> |
| | | <view class="list_item_content"> |
| | | <!-- <switch color="#4e99a9" style="transform: scale(0.8)" @change="constructionChange" /> --> |
| | | <!-- <u-radio-group v-model="form1.type"> |
| | | <u-radio label="是" :name="1" activeColor="#4d99a8" class="mr24" /> |
| | | <u-radio label="否" :name="0" activeColor="#4d99a8" /> |
| | | </u-radio-group> --> |
| | | <view class="checkbox_wrap"> |
| | | <view class="check_item" @click="constructionChange(1)"> |
| | | <text>是</text> |
| | |
| | | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> --> |
| | | <view v-if="form1.type == '1'" class="list_item"> |
| | | <view class="list_item_label"> |
| | | <text></text> |
| | |
| | | if (type === 'day') { |
| | | return `${value}日` |
| | | } |
| | | <<<<<<< HEAD |
| | | // <<<<<<< HEAD |
| | | this.$forceUpdate() |
| | | this.closeInput() |
| | | }, |
| | |
| | | title: '证件号码格式错误', |
| | | icon: 'none' |
| | | }) |
| | | ======= |
| | | } |
| | | if (type === 'hour') { |
| | | return `${value}时` |
| | | >>>>>>> f0f08cc1ff84d45de32d8bff4a40e6a7d0d7a9e6 |
| | | } |
| | | if (type === 'minute') { |
| | | return `${value}分` |
| | |
| | | }, |
| | | selectedReason(e) { |
| | | this.form1.reason = e.value[0].title |
| | | this.form1.type = e.value[0].constructionType |
| | | console.log(e.value[0].title) |
| | | console.log(e.value[0].constructionType) |
| | | this.showReason = false |
| | | }, |
| | | submitCart() { |
| | |
| | | color: #222222; |
| | | } |
| | | } |
| | | <<<<<<< HEAD |
| | | let arr = JSON.parse(JSON.stringify(this.withUserList)) |
| | | this.personnel.push(arr) |
| | | this.show3 = false |
| | | this.withUserList.name = '' |
| | | this.withUserList.phone = '' |
| | | this.withUserList.idcardType = '' |
| | | this.withUserList.idcardTypeName = '' |
| | | this.withUserList.companyName = '' |
| | | this.withUserList.idcardNo = '' |
| | | this.withUserList.faceImg = '' |
| | | this.withUserList.faceImgUrl = '' |
| | | this.withUserList.imgurl = '' |
| | | this.withUserList.imgurlUrl = '' |
| | | }, |
| | | upload(type) { |
| | | this.type = type |
| | | if (type === 'faceImg') { |
| | | this.$refs.cropper.open() |
| | | return |
| | | } |
| | | uni.chooseImage({ |
| | | success: (chooseImageRes) => { |
| | | // if (type === 'faceImg') { |
| | | // this.photoSrc = chooseImageRes.tempFilePaths[0]; |
| | | // this.$refs.tlyPictureCut.showPop(); |
| | | // return |
| | | // } |
| | | uni.showLoading({ title: '上传中', mask: true }); |
| | | for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) { |
| | | uni.uploadFile({ |
| | | url: `${this.$baseUrl}public/api/uploadFtp.do`, |
| | | filePath: chooseImageRes.tempFilePaths[i], |
| | | name: 'file', |
| | | formData: { |
| | | folderCode: 'MEMBER_IMG' |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | let res = JSON.parse(uploadFileRes.data) |
| | | if (type === 'faceImg') { |
| | | this.withUserList.faceImg = res.data.halfPath |
| | | this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath |
| | | } else { |
| | | this.withUserList.imgurl = res.data.halfPath |
| | | this.withUserList.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath |
| | | } |
| | | }, |
| | | complete() { |
| | | if (i === chooseImageRes.tempFilePaths.length - 1) { |
| | | uni.hideLoading(); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | seleIdcard(e) { |
| | | this.withUserList.idcardType = e.value[0].id |
| | | this.withUserList.idcardTypeName = e.value[0].name |
| | | this.show6 = false |
| | | }, |
| | | submitCart() { |
| | | if (!this.carName) return uni.showToast({ |
| | | title: '请输入车牌号码', |
| | | icon: 'none' |
| | | }) |
| | | this.cars.push(this.carName) |
| | | this.form1.carNos = this.cars.join(',') |
| | | this.carName = '' |
| | | this.show2 = false |
| | | }, |
| | | deleCars(i) { |
| | | this.cars.splice(i, 1) |
| | | this.form1.carNos = this.cars.join(',') |
| | | }, |
| | | submitMJ() { |
| | | let arr = [] |
| | | let names = [] |
| | | this.columns.forEach(item => { |
| | | if (item.active) { |
| | | arr.push(item.id) |
| | | names.push(item.name) |
| | | } |
| | | }) |
| | | if (arr.length === 0) return uni.showToast({ |
| | | title: '请选择门禁', |
| | | icon: 'none' |
| | | }) |
| | | this.form1.doorSelectName = names.join(',') |
| | | this.form1.doors = arr.join(',') |
| | | this.show = false |
| | | }, |
| | | seleMJ(i) { |
| | | this.columns.forEach((item,index) => { |
| | | if (index === i) { |
| | | item.active = !item.active |
| | | } |
| | | }) |
| | | }, |
| | | openLC() { |
| | | if (!this.form1.starttime) return uni.showToast({ |
| | | title: '请先选择入厂时间', |
| | | icon: 'none' |
| | | }) |
| | | this.show5 = true |
| | | }, |
| | | setinDate(e) { |
| | | this.form1.starttime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM'); |
| | | this.maxTime = getDaysAfterDate(uni.$u.timeFormat(e.value, 'yyyy-mm-dd'), this.day - 1) |
| | | this.show4 = false |
| | | }, |
| | | setoutDate(e) { |
| | | this.form1.endtime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM'); |
| | | this.show5 = false |
| | | }, |
| | | formatTimeStamp(date) { |
| | | return Date.parse(new Date(`${date}`)) || Date.parse(new Date(`${date.replace(/-/g,'/')}`)) |
| | | }, |
| | | // 查询用户 |
| | | getUser() { |
| | | if (this.verify === '0') { |
| | | if (this.form1.phone1) { |
| | | this.$u.api.getVisitedMember({ |
| | | mobile: this.form1.phone1 |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.form1.receptMemberId = res.data.id |
| | | this.form1.receptMemberName = res.data.name |
| | | } |
| | | }) |
| | | } |
| | | } else { |
| | | if (this.form1.phone1 && this.form1.receptMemberName) { |
| | | this.$u.api.getVisitedMember({ |
| | | mobile: this.form1.phone1, |
| | | name: this.form1.receptMemberName |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.form1.receptMemberId = res.data.id |
| | | this.form1.receptMemberName = res.data.name |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | // 被拜访人信息校验方式(0手机号单独校验 1手机号和姓名组合校验) |
| | | getUserValid() { |
| | | this.$u.api.getSystemDictData({ |
| | | dictCode: 'SYSTEM', |
| | | label: 'BEVISITED_USER_VALID' |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.verify = res.data.code |
| | | } |
| | | }) |
| | | }, |
| | | // 获取是否需要选择门禁/门禁列表 |
| | | getvisit() { |
| | | this.$u.api.getSystemDictData({ |
| | | dictCode: 'SYSTEM', |
| | | label: 'SELECT_DOORS_VISIT_REQUIRED' |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.accessControl = res.data.code |
| | | if (res.data.code === '1') { |
| | | this.$u.api.deviceRoleList({ type: 1 }) |
| | | .then(device => { |
| | | if (device.code === 200) { |
| | | if (device.data.length > 0) { |
| | | device.data.forEach(item => { |
| | | item.active = false |
| | | }) |
| | | this.columns = device.data |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | confirm(e) { |
| | | this.show = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style> |
| | | page { |
| | | background-color: #F7F7F7 !important; |
| | | } |
| | | .u-upload__button { |
| | | margin: 0 !important; |
| | | } |
| | | </style> |
| | | <style lang="scss" scoped> |
| | | .visit { |
| | | width: 100%; |
| | | .menjin { |
| | | width: 100%; |
| | | .respondent-title { |
| | | width: 100%; |
| | | height: 100rpx; |
| | | line-height: 100rpx; |
| | | text-align: center; |
| | | font-size: 32rpx; |
| | | font-weight: 500; |
| | | color: #222222; |
| | | } |
| | | .list { |
| | | width: 100%; |
| | | height: 400rpx; |
| | | display: flex; |
| | | flex-direction: column; |
| | | .list_item { |
| | | width: 100%; |
| | | ======= |
| | | .checkbox_wrap{ |
| | | >>>>>>> f0f08cc1ff84d45de32d8bff4a40e6a7d0d7a9e6 |
| | | display: flex; |
| | | align-items: center; |
| | | .check_item{ |
| | | display: flex; |
| | | align-items: center; |
| | | margin-left: 20rpx; |
| | | } |
| | | image{ |
| | | width: 42rpx; |
| | | height: 42rpx; |
| | | margin-left: 10rpx; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .cate { |
| | | width: 100%; |
| | | padding: 30rpx; |
| | | box-sizing: border-box; |
| | | background-color: #ffffff; |
| | | |
| | | .cate_head { |
| | | font-size: 32rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 600; |
| | | color: #222222; |
| | | } |
| | | |
| | | .cate_list { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | margin-top: 30rpx; |
| | | |
| | | .cate_list_item { |
| | | height: 64rpx; |
| | | padding: 0 20rpx; |
| | | box-sizing: border-box; |
| | | background-color: #eeeeee; |
| | | border-radius: 4rpx; |
| | | margin-right: 20rpx; |
| | | margin-bottom: 20rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | &:last-child { |
| | | margin-right: 0 !important; |
| | | } |
| | | |
| | | text { |
| | | font-size: 26rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | margin-right: 30rpx; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .cate_add { |
| | | width: 200rpx; |
| | | height: 50rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: rgba(2, 94, 239, 0); |
| | | border-radius: 25rpx; |
| | | border: 1rpx solid #4c99a8; |
| | | font-size: 22rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | margin-top: 20rpx; |
| | | color: #4c99a8; |
| | | margin: 0 auto; |
| | | } |
| | | } |
| | | |
| | | .zw { |
| | | width: 100%; |
| | | height: calc(env(safe-area-inset-bottom) + 118rpx); |
| | | } |
| | | |
| | | .footer { |
| | | width: 100%; |
| | | padding: 0 30rpx; |
| | | padding-bottom: env(safe-area-inset-bottom); |
| | | box-sizing: border-box; |
| | | margin-top: 80rpx; |
| | | // position: fixed; |
| | | // left: 0; |
| | | // bottom: 30rpx; |
| | | |
| | | .footer_btn { |
| | | width: 100%; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | text-align: center; |
| | | background: #4c99a8; |
| | | border-radius: 44rpx; |
| | | font-size: 32rpx; |
| | | font-weight: 600; |
| | | color: #ffffff; |
| | | } |
| | | } |
| | | } |
| | |
| | | const initData = () => { |
| | | getLargeScreenData().then(res => { |
| | | if (res.data && res.data.allList) { |
| | | contentList.value = res.data.allList.map(item => { |
| | | contentList.value = res.data.allList.map((item, index) => { |
| | | item.index = index + 1 |
| | | if (item.optTime) { |
| | | item.optTimeTemp = dayjs(item.optTime).format('HH:mm') |
| | | if(item.status == 4){ |
| | |
| | | const handler = () => { |
| | | isFullscreen.value = document.fullscreenElement !== null |
| | | if (!isFullscreen) { |
| | | // 退出全屏时候解除监听,不然每次监听都会添加一次绑定 |
| | | // 退出全屏时候解除监听,不然每次监听都会添加一次绑定 |
| | | document.removeEventListener("fullscreenchange", handler) |
| | | } |
| | | } |
| | |
| | | <div class="item">停靠月台</div> |
| | | <div class="item">时间</div> |
| | | </div> |
| | | <div class="line" v-for="item in contentTempList" :key="item.id"> |
| | | <div class="item no">{{ item.signNum }}</div> |
| | | <div class="line" v-for="(item, index) in contentTempList" :key="index"> |
| | | <div class="item no">{{ item.index }}</div> |
| | | <div class="item">{{ item.carCodeFront }}</div> |
| | | <div class="item"> |
| | | <div :class="{ |
| | |
| | | } |
| | | |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | series: [ |
| | | { |
| | | name: '分时作业量', |
| | | type: 'line', |
| | | smooth: true, |
| | | showAllSymbol: true, |
| | | symbol: 'circle', |
| | | symbolSize: 0, |
| | | lineStyle: { |
| | | color: '#2355f5', |
| | | borderColor: '#2355f5' |
| | | }, |
| | | type: 'bar', |
| | | barWidth: 15, |
| | | label: { |
| | | show: false, |
| | | position: 'top', |
| | | color: '#fff', |
| | | }, |
| | | itemStyle: { |
| | | color: "#2355f5", |
| | | lineStyle: { |
| | | width: 0, |
| | | type: 'solid' |
| | | } |
| | | }, |
| | | areaStyle: { |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ |
| | | { |
| | | offset: 0, |
| | | color: '#2355f5' |
| | | color: '#63d6fa' |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: 'rgba(14, 31, 65,0.1)' |
| | | color: '#32718d' |
| | | } |
| | | ], false), |
| | | shadowColor: 'rgba(124,248,255, 0)', |
| | | shadowBlur: 20 |
| | | lineStyle: { |
| | | width: 1, |
| | | type: 'solid' |
| | | }, |
| | | barBorderRadius: [30, 30, 0, 0], |
| | | }, |
| | | data: dataList3.value.map(i => i.workNum || 0) |
| | | }, |
| | | { |
| | | name: '累计作业量', |
| | | type: 'bar', |
| | | barWidth: 6, |
| | | barWidth: 15, |
| | | label: { |
| | | show: false, |
| | | position: 'top', |
| | |
| | | proxy: { |
| | | "/gateway_interface": { |
| | | // target: "http://192.168.0.104:10010", |
| | | // target: "http://10.50.250.253:8088/gateway_interface", |
| | | target: "https://atwl.ahzyssl.com/zhyq_interface", |
| | | target: "http://10.50.250.253:8088/gateway_interface", |
| | | // target: "https://atwl.ahzyssl.com/zhyq_interface", |
| | | changeOrigin: true, |
| | | rewrite: (path) => path.replace(/^\/gateway_interface/, ""), |
| | | }, |