| | |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <div class="main_app"> |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)" @clear="clear"> |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)" |
| | | @clear="clear"> |
| | | <template #fastdate> |
| | | <el-radio-group |
| | | v-model="filters.fastdate" |
| | | size="small" |
| | | @input="changeRadio" |
| | | > |
| | | <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio"> |
| | | <el-radio-button label="0">å½å¤©</el-radio-button> |
| | | <el-radio-button label="6">è¿7天</el-radio-button> |
| | | <el-radio-button label="29">è¿30天</el-radio-button> |
| | |
| | | </template> |
| | | </QueryForm> |
| | | <div class="pt16"> |
| | | <el-button :loading="exLoading" @click="handleEx" v-permissions="['business:platformjob:exportExcel']">导åº</el-button> |
| | | <el-button :loading="exLoading" @click="handleEx" |
| | | v-permissions="['business:platformjob:exportExcel']">导åº</el-button> |
| | | </div> |
| | | <el-table class="mb20" v-loading="loading" :data="list" stripe> |
| | | <el-table-column prop="contractNum" label="ååå·" min-width="100" show-overflow-tooltip /> |
| | |
| | | <script> |
| | | import Pagination from '@/components/common/Pagination' |
| | | import QueryForm from '@/components/common/QueryForm' |
| | | import { platformJobPage, platformJobExport,platformJobDel } from '@/api' |
| | | import { platformJobPage, platformJobExport, platformJobDel } from '@/api' |
| | | import { statusMap } from '../config' |
| | | import DriverDetail from "@/views/task/driverDetail" |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | |
| | | import { Message } from 'element-ui' |
| | | import dayjs from 'dayjs' |
| | | import duration from 'dayjs/plugin/duration' |
| | | dayjs.extend(duration); |
| | | dayjs.extend(duration) |
| | | export default { |
| | | components: { |
| | | Pagination, |
| | |
| | | list: [], |
| | | queryFormConfig: { |
| | | formItems: [ |
| | | { |
| | | { |
| | | filed: 'contractNum', |
| | | type: 'input', |
| | | label: 'ååå·' |
| | |
| | | this.getList() |
| | | }, |
| | | methods: { |
| | | changeRadio (day) { |
| | | changeRadio(day) { |
| | | const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59'] |
| | | this.$set(this.filters, 'selDate', arr) |
| | | this.getList() |
| | | }, |
| | | changeForm (str) { |
| | | changeForm(str) { |
| | | if (str === 'selDate') { |
| | | this.$set(this.filters, 'fastdate', null) |
| | | this.getList() |
| | |
| | | this.list.forEach(item => { |
| | | item.inTypeTemp = item.inType == 0 ? 'æ´æç' : 'ä»¶ç' |
| | | item.taskOrigin = 'WMSè·å' |
| | | item.workTime = dayjs.duration(item.workTime, 'seconds').format('Hæ¶måsç§'); |
| | | item.workTime = dayjs.duration(item.workTime, 'seconds').format('Hæ¶måsç§') |
| | | }) |
| | | this.pagination.total = res.total || 0 |
| | | }, () => { |
| | |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <div class="main_app"> |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)" @clear="clear"> |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)" |
| | | @clear="clear"> |
| | | <template #fastdate> |
| | | <el-radio-group |
| | | v-model="filters.fastdate" |
| | | size="small" |
| | | @input="changeRadio" |
| | | > |
| | | <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio"> |
| | | <el-radio-button label="0">å½å¤©</el-radio-button> |
| | | <el-radio-button label="6">è¿7天</el-radio-button> |
| | | <el-radio-button label="29">è¿30天</el-radio-button> |
| | |
| | | <div class="pt16"> |
| | | <el-button type="primary" @click="handleEdit" icon="el-icon-plus" |
| | | v-permissions="['business:platformbooks:create']">æ°å»º</el-button> |
| | | <el-button :loading="exLoading" @click="handleEx" v-permissions="['business:platformbooks:exportExcel']">导åº</el-button> |
| | | <el-button :loading="exLoading" @click="handleEx" |
| | | v-permissions="['business:platformbooks:exportExcel']">导åº</el-button> |
| | | </div> |
| | | <el-table class="mb20" v-loading="loading" :data="list" stripe> |
| | | <el-table-column prop="contractNum" label="åååå·" min-width="100" show-overflow-tooltip /> |
| | |
| | | <el-input v-model="param.contractNum" class="w300" placeholder="请è¾å
¥ååå·"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å°åºæ¶é´" prop="arriveDate"> |
| | | <el-date-picker v-model="param.arriveDate" @change="checkSurplus" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" class="w300" |
| | | placeholder="è¯·éæ©"> |
| | | <el-date-picker v-model="param.arriveDate" @change="checkSurplus" value-format="yyyy-MM-dd HH:mm:ss" |
| | | type="datetime" class="w300" placeholder="è¯·éæ©"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="å
¥åºç±»å" prop="inType"> |
| | |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="æ»è¿è¾é" prop="totalNum"> |
| | | <el-input @blur="checkSurplus" oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 10)" v-model="param.totalNum" placeholder="请è¾å
¥" class="w300"></el-input> |
| | | <el-input @blur="checkSurplus" oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 10)" |
| | | v-model="param.totalNum" placeholder="请è¾å
¥" class="w300"></el-input> |
| | | <span class="ml10">䏿¯</span> |
| | | </el-form-item> |
| | | <el-form-item label="åè¿è¯ç
§ç" prop="transportImg"> |
| | |
| | | <el-input v-model="param.driverName" placeholder="请è¾å
¥" class="w300"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="叿ºææºå·" prop="driverPhone"> |
| | | <el-input oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 11)" v-model="param.driverPhone" placeholder="请è¾å
¥" class="w300"></el-input> |
| | | <el-input oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 11)" v-model="param.driverPhone" |
| | | placeholder="请è¾å
¥" class="w300"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="车åçç
§å·" prop="carCodeFront"> |
| | | <el-input v-model="param.carCodeFront" placeholder="请è¾å
¥" class="w300"></el-input> |
| | |
| | | import Pagination from '@/components/common/Pagination' |
| | | import QueryForm from '@/components/common/QueryForm' |
| | | import { platformBooksPage, platformReasonList, platformBooksApply, platformBooksExport } from '@/api' |
| | | import { checkSurplusNum } from '@/api/platform/platform' |
| | | import { checkSurplusNum } from '@/api/platform/platform' |
| | | import DriverDetail from "@/views/task/driverDetail" |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import UploadAvatarImage from '@/components/common/UploadAvatarImage' |
| | |
| | | methods: { |
| | | checkSurplus() { |
| | | const { arriveDate, reasonId, totalNum } = this.param |
| | | if(!arriveDate || !reasonId || !totalNum) return |
| | | if (!arriveDate || !reasonId || !totalNum) return |
| | | checkSurplusNum({ |
| | | arriveDate, |
| | | reasonId, |
| | | totalNum |
| | | }).then(res => { |
| | | console.log('res', res); |
| | | |
| | | if( res == 0 || res < Number(totalNum)){ |
| | | console.log('res', res) |
| | | |
| | | if (res == 0 || res < Number(totalNum)) { |
| | | Message.error(`彿¥å©ä½å¯é¢çº¦ä½ä¸é${res}䏿¯ä¸è¶³è¯·éæ©å
¶ä»å°åºæ¥æ`) |
| | | } |
| | | }) |
| | | }, |
| | | changeRadio (day) { |
| | | changeRadio(day) { |
| | | const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59'] |
| | | this.$set(this.filters, 'selDate', arr) |
| | | this.getList() |
| | | }, |
| | | changeForm (str) { |
| | | changeForm(str) { |
| | | if (str === 'selDate') { |
| | | this.$set(this.filters, 'fastdate', null) |
| | | this.getList() |
| | |
| | | handleDel() { }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | |
| | | <el-table-column prop="driverName" label="叿º" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="drivierPhone" label="叿ºçµè¯" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="inTypeTemp" label="ä½ä¸ç±»å" min-width="100" show-overflow-tooltip> |
| | | <template v-slot="scope"> |
| | | <template v-slot="scope"> |
| | | <span v-if="scope.row.type == '0'">èªæè½¦å¸è´§</span> |
| | | <span v-if="scope.row.type == '1'">èªæè½¦è£
è´§</span> |
| | | <span v-if="scope.row.type == '2'">å¤å车å¸è´§</span> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="æä½" min-width="120" align="center" fixed="right" show-overflow-tooltip> |
| | | <template v-slot="scope"> |
| | | <el-button v-if="scope.row.status == '12'" type="text" class="red" v-permissions="['business:platformjob:delete']" |
| | | @click="handleDel(scope.row)">å é¤</el-button> |
| | | <el-button v-if="scope.row.status == '12'" type="text" class="red" |
| | | v-permissions="['business:platformjob:delete']" @click="handleDel(scope.row)">å é¤</el-button> |
| | | <el-button v-if="scope.row != 12" type="text" v-permissions="['business:platformjob:query']" |
| | | @click="handleDetail(scope.row)">è¿å详æ
</el-button> |
| | | </template> |
| | |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | |
| | | <el-table-column prop="driverName" label="æåæ´æ°æ¶é´" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="name" label="æä½" min-width="120" align="center" fixed="right" show-overflow-tooltip> |
| | | <template v-slot="scope"> |
| | | <el-button v-if="scope.row.status == '12'" type="text" class="red" v-permissions="['business:platformjob:delete']" |
| | | @click="handleDel(scope.row)">å é¤</el-button> |
| | | <el-button v-if="scope.row.status == '12'" type="text" class="red" |
| | | v-permissions="['business:platformjob:delete']" @click="handleDel(scope.row)">å é¤</el-button> |
| | | <el-button v-if="scope.row != 12" type="text" v-permissions="['business:platformjob:query']" |
| | | @click="handleDetail(scope.row)">ç¼è¾</el-button> |
| | | </template> |
| | |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:platformwatergas:query']"> |
| | | <SearchFormCollapse slot="search-form" :need-more="false"> |
| | | <el-form ref="searchForm" :model="searchForm" label-width="100px" inline > |
| | | <el-form-item title="请è¾å
¥è½¦çå·" > |
| | | <el-input v-model="searchForm.carCode" clearable placeholder="请è¾å
¥è½¦çå·" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä½¿ç¨æ¶é´ï¼" > |
| | | <el-date-picker |
| | | @change="search" |
| | | v-model="searchForm.startTime" |
| | | format="yyyy-MM" |
| | | style="width: 140px" |
| | | placeholder="å¼å§æ¶é´" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | type="month" |
| | | />~ |
| | | <el-date-picker |
| | | @change="search" |
| | | v-model="searchForm.endTime" |
| | | format="yyyy-MM" |
| | | style="width: 140px" |
| | | placeholder="ç»ææ¶é´" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | type="month" |
| | | /> |
| | | </el-form-item> |
| | | <el-form ref="searchForm" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item title="请è¾å
¥è½¦çå·"> |
| | | <el-input v-model="searchForm.carCode" clearable placeholder="请è¾å
¥è½¦çå·" |
| | | @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä½¿ç¨æ¶é´ï¼"> |
| | | <el-date-picker @change="search" v-model="searchForm.startTime" format="yyyy-MM" style="width: 140px" |
| | | placeholder="å¼å§æ¶é´" value-format="yyyy-MM-dd HH:mm:ss" type="month" /> ~ |
| | | <el-date-picker @change="search" v-model="searchForm.endTime" format="yyyy-MM" style="width: 140px" |
| | | placeholder="ç»ææ¶é´" value-format="yyyy-MM-dd HH:mm:ss" type="month" /> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | |
| | | </SearchFormCollapse> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:platformwatergas:create','business:platformwatergas:delete','business:notice:exportExcel']"> |
| | | <li><el-button type="primary" @click="$refs.OperaPlatformOilWindow.open('æ°å»ºæ²¹è')" icon="el-icon-plus" v-permissions="['business:platformwatergas:create']">æ°å»º</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">å é¤</el-button></li> |
| | | <el-button type="primary" :loading="isWorking.export" v-permissions="['business:platformwatergas:exportExcel']" @click="exportExcel">导åº</el-button> |
| | | <el-button type="primary" :loading="isWorking.export" v-permissions="['business:platformwatergas:exportExcel']" @click="handleImport">导å
¥</el-button> |
| | | <ul class="toolbar" |
| | | v-permissions="['business:platformwatergas:create', 'business:platformwatergas:delete', 'business:notice:exportExcel']"> |
| | | <li><el-button type="primary" @click="$refs.OperaPlatformOilWindow.open('æ°å»ºæ²¹è')" icon="el-icon-plus" |
| | | v-permissions="['business:platformwatergas:create']">æ°å»º</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" |
| | | v-permissions="['business:platformwatergas:delete']">å é¤</el-button></li> |
| | | <el-button type="primary" :loading="isWorking.export" v-permissions="['business:platformwatergas:exportExcel']" |
| | | @click="exportExcel">导åº</el-button> |
| | | <el-button type="primary" :loading="isWorking.export" v-permissions="['business:platformwatergas:exportExcel']" |
| | | @click="handleImport">导å
¥</el-button> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="carCode" label="车çå·" fixed min-width="150px"></el-table-column> |
| | | <el-table-column prop="timeInfo" label="ä½¿ç¨æä»½" fixed min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | {{(row.timeInfo || row.timeInfo.length >7 )?row.timeInfo.substr(0,7):'-'}} |
| | | {{ (row.timeInfo || row.timeInfo.length > 7) ? row.timeInfo.substr(0, 7) : '-' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="num" label="æ²¹èï¼åï¼" fixed min-width="150px"></el-table-column> |
| | | <el-table-column prop="content" label="说æ" min-width="120px"></el-table-column> |
| | | <el-table-column prop="editDate" label="æè¿æä½æ¶é´" min-width="140px"></el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:platformwatergas:update', 'business:platformwatergas:delete'])" |
| | | label="æä½" |
| | | align="center" |
| | | min-width="150" |
| | | fixed="right" |
| | | > |
| | | v-if="containPermissions(['business:platformwatergas:update', 'business:platformwatergas:delete'])" label="æä½" |
| | | align="center" min-width="150" fixed="right"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.OperaPlatformOilWindow.open('ç¼è¾æ²¹è', row)" icon="el-icon-edit" v-permissions="['business:platformwatergas:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">å é¤</el-button> |
| | | <el-button type="text" @click="$refs.OperaPlatformOilWindow.open('ç¼è¾æ²¹è', row)" icon="el-icon-edit" |
| | | v-permissions="['business:platformwatergas:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" |
| | | v-permissions="['business:platformwatergas:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination"> |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaPlatformOilWindow ref="OperaPlatformOilWindow" @success="handlePageChange"/> |
| | | <oilImportTem ref="oilImportTem" @success="handlePageChange"/> |
| | | <OperaPlatformOilWindow ref="OperaPlatformOilWindow" @success="handlePageChange" /> |
| | | <oilImportTem ref="oilImportTem" @success="handlePageChange" /> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | |
| | | name: 'Platform', |
| | | extends: BaseTable, |
| | | components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformOilWindow, oilImportTem }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | groupList: [], |
| | | // æç´¢ |
| | | working: false, |
| | | working1: false, |
| | | searchForm: { |
| | | carCode:'', |
| | | carCode: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | type: 2 |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | created() { |
| | | this.config({ |
| | | module: 'æ²¹èä¿¡æ¯è¡¨', |
| | | api: '/platform/platformWaterGas', |
| | |
| | | this.loadGroupList() |
| | | }, |
| | | methods: { |
| | | reset() { |
| | | this.searchForm = { |
| | | carCode: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | type: 2 |
| | | } |
| | | this.search() |
| | | }, |
| | | handleImport() { |
| | | this.$refs.oilImportTem.open('æ¹é导å
¥') |
| | | }, |
| | | loadGroupList () { |
| | | loadGroupList() { |
| | | allList({}) |
| | | .then(res => { |
| | | this.groupList = res || [] |
| | | }) |
| | | }, |
| | | changeStatus (e, row) { |
| | | changeStatus(e, row) { |
| | | this.api.updateStatusById({ |
| | | id: row.id, |
| | | status: e |
| | |
| | | <TableLayout :permissions="['business:platformwatergas:query']"> |
| | | <SearchFormCollapse slot="search-form" :need-more="false"> |
| | | <el-form ref="searchForm" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item title="è¯·éæ©å¹´ææ¶é´" label="" > |
| | | <el-form-item title="è¯·éæ©å¹´ææ¶é´" label="" prop="timeInfo" > |
| | | <el-date-picker |
| | | @change="search" |
| | | clearable |
| | |
| | | <TableLayout :permissions="['business:platformwatergas:query']"> |
| | | <SearchFormCollapse slot="search-form" :need-more="false"> |
| | | <el-form ref="searchForm" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item title="è¯·éæ©å¹´ææ¶é´" label="" > |
| | | <el-form-item title="è¯·éæ©å¹´ææ¶é´" label="" prop="timeInfo" > |
| | | <el-date-picker |
| | | @change="search" |
| | | clearable |
| | |
| | | <el-table-column prop="param1" label="ä½ä¸å¼å§" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="param2" label="ä½ä¸ç»æ" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="workTime" label="ä½ä¸æ¶é¿" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="name" |
| | | label="è¿è¾åå·/ååå·" min-width="100" show-overflow-tooltip> |
| | | <el-table-column prop="name" label="è¿è¾åå·/ååå·" min-width="100" show-overflow-tooltip> |
| | | <template v-slot="scope"> |
| | | <span>{{ scope.row.billCode || scope.row.contractNum }}</span> |
| | | </template> |
| | |
| | | item.inTypeTemp = item.inType == 0 ? 'æ´æç' : 'ä»¶ç' |
| | | item.taskOrigin = 'WMSè·å' |
| | | // item.workTime = dayjs.duration(item.param3, 'seconds').format('Hæ¶måsç§') |
| | | if(item.param3 > 3600){ |
| | | if (item.param3 > 3600) { |
| | | item.workTime = Math.ceil(item.param3 / 3600) + 'æ¶' + Math.ceil(Math.ceil(item.param3 % 3600) / 60) + 'å' + item.param3 % 60 + 'ç§' |
| | | }else if(item.param3 > 60){ |
| | | } else if (item.param3 > 60) { |
| | | item.workTime = Math.ceil(item.param3 / 60) + 'å' + item.param3 % 60 + 'ç§' |
| | | }else{ |
| | | } else { |
| | | item.workTime = item.param3 + 'ç§' |
| | | } |
| | | }) |
| | |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear"> |
| | | </QueryForm> |
| | | <div class="pt16 mb10"> |
| | | <el-button type="primary" @click="batchStatus(0)" |
| | | v-permissions="['business:platformjob:update']">æ¹éå¯ç¨</el-button> |
| | | <el-button type="primary" @click="batchStatus(0)" v-permissions="['business:platformjob:update']">æ¹éå¯ç¨</el-button> |
| | | <el-button @click="batchStatus(1)" v-permissions="['business:platformjob:update']">æ¹éç¦ç¨</el-button> |
| | | </div> |
| | | <el-table @selection-change="handleSelectionChange" class="mb20" v-loading="loading" :data="list" stripe> |
| | |
| | | <el-table-column prop="content" label="æ¶æ¯æ¨¡æ¿" min-width="300" show-overflow-tooltip /> |
| | | <el-table-column label="ç¶æ" width="120" align="center" fixed="right"> |
| | | <template v-slot="scope"> |
| | | <el-switch v-permissions="['business:platformjob:update']" v-model="scope.row.status" @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1"> |
| | | <el-switch v-permissions="['business:platformjob:update']" v-model="scope.row.status" |
| | | @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="main_app"> |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear"> |
| | | </QueryForm> |
| | | <el-table v-loading="loading" :data="list" stripe row-key="id" class="mb20" default-expand-all> |
| | | <el-table-column prop="realname" label="å§å" min-width="100"></el-table-column> |
| | | <el-table-column prop="mobile" label="ææºå·" min-width="100"></el-table-column> |
| | | </el-table> |
| | | <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import Pagination from '@/components/common/Pagination' |
| | | import QueryForm from '@/components/common/QueryForm' |
| | | import { fetchList } from '@/api/system/user.js' |
| | | export default { |
| | | components: { |
| | | QueryForm, |
| | | Pagination |
| | | }, |
| | | data() { |
| | | return { |
| | | filters: {}, |
| | | list: [], |
| | | queryFormConfig: { |
| | | formItems: [ |
| | | { |
| | | type: 'input', |
| | | filed: 'realname', |
| | | label: 'å§å' |
| | | }, |
| | | { |
| | | type: 'input', |
| | | filed: 'username', |
| | | label: 'ææºå·' |
| | | }, |
| | | ], |
| | | online: true |
| | | }, |
| | | pagination: { |
| | | capacity: 10, |
| | | page: 1, |
| | | total: 0, |
| | | }, |
| | | loading: false, |
| | | } |
| | | }, |
| | | created() { |
| | | this.getList() |
| | | }, |
| | | methods: { |
| | | getList(page) { |
| | | const { filters, pagination } = this |
| | | pagination.page = page || pagination.page |
| | | fetchList({ |
| | | model: { |
| | | ...filters, |
| | | // memberType: 0 |
| | | }, |
| | | ...pagination |
| | | }).then(res => { |
| | | console.log('res', res) |
| | | this.list = res.records || [] |
| | | this.pagination.total = res.total || 0 |
| | | }) |
| | | }, |
| | | clear() { |
| | | this.filters = {} |
| | | this.getList(0) |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.capacity = capacity |
| | | this.getList(0) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped></style> |
| | |
| | | window.location.href = app_url |
| | | } |
| | | }) |
| | | console.log('onLaunch') |
| | | }, |
| | | onShow: function () { |
| | | console.log('App Show') |
| | |
| | | "/zhyq_interface" : { |
| | | // è¿ä¸ªå段åéä¸ä½ é
ç½®çbasePrefixUrlä¸è´ï¼ç³»ç»è¯å«å°å¸¦æ/dev-api请æ±çå°åæ¶ï¼ä¼å¨å颿¼æ¥ä¸ä»£çæå¡å¨å°å |
| | | // "target" : "http://172.20.10.7:10010", // 代çæå¡å¨ååæIPå°å |
| | | // "target" : "http://192.168.0.107:10010", // 代çæå¡å¨ååæIPå°å |
| | | "target" : "http://10.50.250.253:8088/gateway_interface", // 代çæå¡å¨ååæIPå°å |
| | | "target" : "http://192.168.0.102:10010", // 代çæå¡å¨ååæIPå°å |
| | | // "target" : "http://10.50.250.253:8088/gateway_interface", // 代çæå¡å¨ååæIPå°å |
| | | // "target" : "https://atwl.ahzyssl.com/zhyq_interface", // 代çæå¡å¨ååæIPå°å |
| | | "changeOrigin" : true, // å
许跨å |
| | | "pathRewrite" : { |
| | |
| | | <template> |
| | | <view class="login"> |
| | | <image class="login_bg" src="@/static/login_bg@2x.png" mode="widthFix" /> |
| | | <image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" /> |
| | | <view class="login_title">宿³°ç©æµæºæ
§ååº</view> |
| | | <view class="login_title">ç©æµè½¦å¸æºç»å½</view> |
| | | <view class="login_list"> |
| | | <view class="login_list_item"> |
| | | <image src="@/static/login_ic_phone@2x.png" mode="widthFix" /> |
| | | <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" /> |
| | | <input |
| | | v-model="form.password" |
| | | @focus="showKeyboard = true" @blur="showKeyboard = false" |
| | | type="password" |
| | | placeholder="å¯ç " |
| | | /> |
| | | </view> |
| | | </view> |
| | | <view class="login_btn"> |
| | | <view class="login_btn_n" @click="onLogin">ç«å³ç»å½</view> |
| | | </view> |
| | | <!-- --> |
| | | <view class="btns" v-if="!showKeyboard"> |
| | | <view class="btn" @click="handleRegister">ç«å³æ³¨å</view> |
| | | <view class="btn separate"> | </view> |
| | | <view class="btn" @click="handleSetPsd">å¿è®°å¯ç </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { driverLogin, loginCaptcha, getUserInfo } from '@/api' |
| | | import { mapState, mapMutations } from 'vuex' |
| | | export default { |
| | | data() { |
| | | return { |
| | | form: { |
| | | username: '', |
| | | password: '' |
| | | }, |
| | | isShowProtocol: false, |
| | | showKeyboard: false, |
| | | countDown: 0 |
| | | } |
| | | }, |
| | | onLoad() { |
| | | this.initCaptcha() |
| | | }, |
| | | |
| | | methods: { |
| | | ...mapMutations(["setToken", "setDriverInfo"]), |
| | | handleRegister() { |
| | | uni.navigateTo({ |
| | | url: "/pages/driver/register" |
| | | }) |
| | | }, |
| | | handleSetPsd() { |
| | | uni.navigateTo({ |
| | | url: "/pages/driver/forgetPsd?phone=" + this.form.username |
| | | }) |
| | | }, |
| | | dealChange(e) { |
| | | console.log(e) |
| | | }, |
| | | initCaptcha() { |
| | | loginCaptcha().then(res => { |
| | | this.captcha = res.data |
| | | }) |
| | | }, |
| | | |
| | | onLogin() { |
| | | const { form } = this |
| | | if (!form.username) return uni.showToast({ |
| | | title: 'ææºå·ä¸è½ä¸ºç©º', |
| | | icon: 'none' |
| | | }) |
| | | if (!form.password) return uni.showToast({ |
| | | title: 'å¯ç ä¸è½ä¸ºç©º', |
| | | icon: 'none' |
| | | }) |
| | | driverLogin({ |
| | | ...form, |
| | | uuid: this.captcha.uuid, |
| | | openid: this.$store.state.openId, |
| | | code: '1' |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.setToken(res.data) |
| | | getUserInfo().then(ress => { |
| | | setTimeout(() => { |
| | | this.showToast('ç»å½æå') |
| | | }) |
| | | this.setDriverInfo(ress.data) |
| | | uni.redirectTo({ |
| | | url: "/pages/driver/index" |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .login { |
| | | width: 100%; |
| | | display: flex; |
| | | padding-top: 100rpx; |
| | | box-sizing: border-box; |
| | | align-items: center; |
| | | flex-direction: column; |
| | | background: linear-gradient( |
| | | 180deg, |
| | | rgba(39, 155, 170, 0.2) 0%, |
| | | rgba(39, 155, 170, 0) 100% |
| | | ); |
| | | .login_logo { |
| | | width: 180rpx; |
| | | height: 180rpx; |
| | | margin-bottom: 40rpx; |
| | | } |
| | | .login_bg { |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | z-index: -1; |
| | | } |
| | | .login_title { |
| | | font-size: 44rpx; |
| | | font-weight: 600; |
| | | color: #333333; |
| | | } |
| | | .login_list { |
| | | margin-top: 60rpx; |
| | | width: 100%; |
| | | padding: 0 60rpx; |
| | | box-sizing: border-box; |
| | | .login_list_item { |
| | | width: 100%; |
| | | border-radius: 50rpx; |
| | | height: 98rpx; |
| | | padding: 0 40rpx; |
| | | box-sizing: border-box; |
| | | background: #ffffff; |
| | | margin-bottom: 40rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | &:last-child { |
| | | margin-bottom: 0 !important; |
| | | } |
| | | image { |
| | | flex-shrink: 0; |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | | } |
| | | .captcha { |
| | | color: $uni-color-primary; |
| | | } |
| | | input { |
| | | flex: 1; |
| | | height: 100%; |
| | | color: #666666; |
| | | margin-left: 24rpx; |
| | | border: none; |
| | | } |
| | | } |
| | | } |
| | | .login_btn { |
| | | width: 100%; |
| | | padding: 0 60rpx; |
| | | box-sizing: border-box; |
| | | margin-top: 80rpx; |
| | | .for_psd { |
| | | color: $uni-color-primary; |
| | | margin-top: 40rpx; |
| | | width: 140rpx; |
| | | text-align: center; |
| | | margin: 40rpx auto; |
| | | } |
| | | .login_btn_n { |
| | | width: 100%; |
| | | height: 98rpx; |
| | | background: $uni-color-primary; |
| | | box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39, 155, 170, 0.2); |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #ffffff; |
| | | border-radius: 50rpx; |
| | | } |
| | | } |
| | | .deal_wrap { |
| | | position: absolute; |
| | | width: 100%; |
| | | left: 0; |
| | | text-align: center; |
| | | bottom: 108rpx; |
| | | .deal { |
| | | color: $uni-color-primary; |
| | | } |
| | | } |
| | | .btns{ |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | position: fixed; |
| | | bottom: 60rpx; |
| | | left: 0; |
| | | width: 100%; |
| | | .btn{ |
| | | font-size: 30rpx; |
| | | color: $uni-color-primary; |
| | | } |
| | | .separate{ margin: 0 8rpx; } |
| | | } |
| | | } |
| | | .modal { |
| | | padding: 32rpx; |
| | | } |
| | | </style> |
| | | <template>
|
| | | <view class="login">
|
| | | <image class="login_bg" src="@/static/login_bg@2x.png" mode="widthFix" />
|
| | | <image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" />
|
| | | <view class="login_title">宿³°ç©æµæºæ
§ååº</view>
|
| | | <view class="login_title">ç©æµè½¦å¸æºç»å½</view>
|
| | | <view class="login_list">
|
| | | <view class="login_list_item">
|
| | | <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
|
| | | <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" />
|
| | | <input v-model="form.password" @focus="showKeyboard = true" @blur="showKeyboard = false" type="password"
|
| | | placeholder="å¯ç " />
|
| | | </view>
|
| | | </view>
|
| | | <view class="login_btn">
|
| | | <view class="login_btn_n" @click="onLogin">ç«å³ç»å½</view>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="btns" v-if="!showKeyboard">
|
| | | <view class="btn" @click="handleRegister">ç«å³æ³¨å</view>
|
| | | <view class="btn separate"> | </view>
|
| | | <view class="btn" @click="handleSetPsd">å¿è®°å¯ç </view>
|
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import {
|
| | | driverLogin,
|
| | | loginCaptcha,
|
| | | getUserInfo
|
| | | } from '@/api'
|
| | | import {
|
| | | mapState,
|
| | | mapMutations
|
| | | } from 'vuex'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | form: {
|
| | | username: '',
|
| | | password: ''
|
| | | },
|
| | | isShowProtocol: false,
|
| | | showKeyboard: false,
|
| | | countDown: 0, |
| | | |
| | | ywinfo: {}
|
| | | }
|
| | | },
|
| | | onLoad() {
|
| | | this.initCaptcha()
|
| | | const ywinfo = uni.getStorageSync('ywinfo') || {}
|
| | | if (ywinfo.ywid && ywinfo.type == 0) { |
| | | this.ywinfo = ywinfo
|
| | | uni.setStorageSync('ywinfo', {})
|
| | | }
|
| | | },
|
| | |
|
| | | methods: {
|
| | | ...mapMutations(["setToken", "setDriverInfo"]),
|
| | | handleRegister() {
|
| | | uni.navigateTo({
|
| | | url: "/pages/driver/register"
|
| | | })
|
| | | },
|
| | | handleSetPsd() {
|
| | | uni.navigateTo({
|
| | | url: "/pages/driver/forgetPsd?phone=" + this.form.username
|
| | | })
|
| | | },
|
| | | dealChange(e) {
|
| | | console.log(e)
|
| | | },
|
| | | initCaptcha() {
|
| | | loginCaptcha().then(res => {
|
| | | this.captcha = res.data
|
| | | })
|
| | | },
|
| | |
|
| | | onLogin() {
|
| | | const {
|
| | | form
|
| | | } = this
|
| | | if (!form.username) return uni.showToast({
|
| | | title: 'ææºå·ä¸è½ä¸ºç©º',
|
| | | icon: 'none'
|
| | | })
|
| | | if (!form.password) return uni.showToast({
|
| | | title: 'å¯ç ä¸è½ä¸ºç©º',
|
| | | icon: 'none'
|
| | | })
|
| | | driverLogin({
|
| | | ...form,
|
| | | uuid: this.captcha.uuid,
|
| | | openid: this.$store.state.openId,
|
| | | code: '1'
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | this.setToken(res.data)
|
| | | getUserInfo().then(ress => {
|
| | | setTimeout(() => {
|
| | | this.showToast('ç»å½æå')
|
| | | }) |
| | | uni.setStorageSync('ywinfo', this.ywinfo)
|
| | | this.setDriverInfo(ress.data)
|
| | | uni.redirectTo({
|
| | | url: "/pages/driver/index"
|
| | | })
|
| | | })
|
| | | }
|
| | | })
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss" scoped>
|
| | | .login {
|
| | | width: 100%;
|
| | | display: flex;
|
| | | padding-top: 100rpx;
|
| | | box-sizing: border-box;
|
| | | align-items: center;
|
| | | flex-direction: column;
|
| | | background: linear-gradient(180deg,
|
| | | rgba(39, 155, 170, 0.2) 0%,
|
| | | rgba(39, 155, 170, 0) 100%);
|
| | |
|
| | | .login_logo {
|
| | | width: 180rpx;
|
| | | height: 180rpx;
|
| | | margin-bottom: 40rpx;
|
| | | }
|
| | |
|
| | | .login_bg {
|
| | | position: absolute;
|
| | | top: 0;
|
| | | left: 0;
|
| | | width: 100%;
|
| | | z-index: -1;
|
| | | }
|
| | |
|
| | | .login_title {
|
| | | font-size: 44rpx;
|
| | | font-weight: 600;
|
| | | color: #333333;
|
| | | }
|
| | |
|
| | | .login_list {
|
| | | margin-top: 60rpx;
|
| | | width: 100%;
|
| | | padding: 0 60rpx;
|
| | | box-sizing: border-box;
|
| | |
|
| | | .login_list_item {
|
| | | width: 100%;
|
| | | border-radius: 50rpx;
|
| | | height: 98rpx;
|
| | | padding: 0 40rpx;
|
| | | box-sizing: border-box;
|
| | | background: #ffffff;
|
| | | margin-bottom: 40rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | |
|
| | | &:last-child {
|
| | | margin-bottom: 0 !important;
|
| | | }
|
| | |
|
| | | image {
|
| | | flex-shrink: 0;
|
| | | width: 40rpx;
|
| | | height: 40rpx;
|
| | | }
|
| | |
|
| | | .captcha {
|
| | | color: $uni-color-primary;
|
| | | }
|
| | |
|
| | | input {
|
| | | flex: 1;
|
| | | height: 100%;
|
| | | color: #666666;
|
| | | margin-left: 24rpx;
|
| | | border: none;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .login_btn {
|
| | | width: 100%;
|
| | | padding: 0 60rpx;
|
| | | box-sizing: border-box;
|
| | | margin-top: 80rpx;
|
| | |
|
| | | .for_psd {
|
| | | color: $uni-color-primary;
|
| | | margin-top: 40rpx;
|
| | | width: 140rpx;
|
| | | text-align: center;
|
| | | margin: 40rpx auto;
|
| | | }
|
| | |
|
| | | .login_btn_n {
|
| | | width: 100%;
|
| | | height: 98rpx;
|
| | | background: $uni-color-primary;
|
| | | box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39, 155, 170, 0.2);
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #ffffff;
|
| | | border-radius: 50rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .deal_wrap {
|
| | | position: absolute;
|
| | | width: 100%;
|
| | | left: 0;
|
| | | text-align: center;
|
| | | bottom: 108rpx;
|
| | |
|
| | | .deal {
|
| | | color: $uni-color-primary;
|
| | | }
|
| | | }
|
| | |
|
| | | .btns {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | position: fixed;
|
| | | bottom: 60rpx;
|
| | | left: 0;
|
| | | width: 100%;
|
| | |
|
| | | .btn {
|
| | | font-size: 30rpx;
|
| | | color: $uni-color-primary;
|
| | | }
|
| | |
|
| | | .separate {
|
| | | margin: 0 8rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .modal {
|
| | | padding: 32rpx;
|
| | | }
|
| | | </style> |
| | |
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | code: ''
|
| | | code: 'qqq'
|
| | | }
|
| | | }, |
| | | onLoad(option) { |
| | | console.log('onLoad'); |
| | | if(option.ywid){ |
| | | uni.setStorageSync('ywinfo', { |
| | | type: option.type, |
| | |
| | | class="img" />
|
| | | <view v-if="item.type == 1" @click="videoClick(item, i)" class="video_wrap">
|
| | | <video :src="item.fileurlFull" initial-time="0.01" :show-center-play-btn="false" :controls="false"
|
| | | class="video" :enable-progress-gesture="false" autoplay muted />
|
| | | class="video" :enable-progress-gesture="false" muted />
|
| | | <image src="@/static/play.png" class="play" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | |
| | | ProtocolFlag: false, |
| | | captcha: {}, |
| | | htmlText: '', |
| | | windowHeight: '' |
| | | windowHeight: '', |
| | | |
| | | ywinfo: {} |
| | | } |
| | | }, |
| | | |
| | |
| | | this.initCaptcha() |
| | | const result = uni.getWindowInfo() |
| | | this.windowHeight = result.windowHeight |
| | | console.log('result', result); |
| | | |
| | | const ywinfo = uni.getStorageSync('ywinfo') || {} |
| | | if (ywinfo.ywid && ywinfo.type == 2) { |
| | | this.ywinfo = ywinfo |
| | | uni.setStorageSync('ywinfo', {}) |
| | | } |
| | | }, |
| | | onBackPress(options) { |
| | | uni.redirectTo({ |
| | |
| | | if (res.code === 200) { |
| | | this.setToken(res.data) |
| | | getUserInfo().then(ress => { |
| | | uni.setStorageSync('ywinfo', this.ywinfo) |
| | | this.setUserInfo(ress.data) |
| | | uni.redirectTo({ |
| | | url: "/pages/staff/index" |
| | |
| | | |
| | | // 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/#/' |
| | | |
| | |
| | | "uqrcodejs": "^4.0.7", |
| | | "v-scale-screen": "^2.0.0", |
| | | "vue": "^3.4.21", |
| | | "vue-loading-overlay": "^6.0.6", |
| | | "vue-router": "^4.3.0" |
| | | }, |
| | | "devDependencies": { |
| | |
| | | } |
| | | }, |
| | | "node_modules/sass": { |
| | | "version": "1.82.0", |
| | | "resolved": "https://registry.npmmirror.com/sass/-/sass-1.82.0.tgz", |
| | | "integrity": "sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q==", |
| | | "version": "1.83.0", |
| | | "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", |
| | | "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "chokidar": "^4.0.0", |
| | |
| | | "@vue/composition-api": { |
| | | "optional": true |
| | | } |
| | | } |
| | | }, |
| | | "node_modules/vue-loading-overlay": { |
| | | "version": "6.0.6", |
| | | "resolved": "https://registry.npmjs.org/vue-loading-overlay/-/vue-loading-overlay-6.0.6.tgz", |
| | | "integrity": "sha512-ZPrWawjCoNKGbCG9z4nePgbs/K9KXPa1j1oAJXP6T8FQho3NO+/chhjx4MLYFzfpwr+xkiQ8SNrV1kUG1bZPAw==", |
| | | "engines": { |
| | | "node": ">=12.13.0" |
| | | }, |
| | | "peerDependencies": { |
| | | "vue": "^3.2.0" |
| | | } |
| | | }, |
| | | "node_modules/vue-router": { |
| | |
| | | "uqrcodejs": "^4.0.7", |
| | | "v-scale-screen": "^2.0.0", |
| | | "vue": "^3.4.21", |
| | | "vue-loading-overlay": "^6.0.6", |
| | | "vue-router": "^4.3.0" |
| | | }, |
| | | "devDependencies": { |
| | |
| | | export const getTemperatureHumidityData = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/fightingAdmin/getTemperatureHumidityData', data) |
| | | } |
| | | export const monitorDataListP = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/fightingAdmin/monitorDataList', data) |
| | | } |
| | | |
| | | |
| | | // åºå
è°åº¦çæ¿ ä»æ¥æå°å®æè®¢åç»è®¡ |
| | |
| | | export const carsListPost = (data) => { |
| | | return request('/visitsAdmin/cloudService/board/api/platformJobRun/carsList', data) |
| | | } |
| | | // ç©æµè¿è¡è°åº¦çæ¿ æ¥è¦ä¿¡æ¯ |
| | | export const carsEventListP = (data) => { |
| | | return request('/visitsAdmin/cloudService/board/api/platformJobRun/carsEventList', data) |
| | | } |
| | | // ç©æµè¿è¡è°åº¦çæ¿ æ ¹æ®è½¦è¾æ¥ä¿¡æ¯ |
| | | export const getCarsJobDetails = (data) => { |
| | | return request('/visitsAdmin/cloudService/board/api/platformJobRun/getCarsJobDetails', data, 'POST') |
| | |
| | | path: '/LogisticsCenter', //å
¨çç©æµå¨é-ç©æµä¸å¿ |
| | | name: 'LogisticsCenter', |
| | | meta: { |
| | | title: 'å
¨çç©æµå¨é' |
| | | title: 'å®å¾½ä¸çæå鿧大å±' |
| | | }, |
| | | component: () => import('../views/LogisticsCenter.vue') |
| | | }, |
| | |
| | | <div v-if="data3 && data3.length > 0" class="list"> |
| | | <template v-for="item, i in data3"> |
| | | <div v-if="i < 6" class="line"> |
| | | <div class="top"><span v-if="i < 3">top</span>{{ i + 1 }}</div> |
| | | <div class="top" :class="{top3: i < 3}"><span v-if="i < 3">top</span>{{ i + 1 }}</div> |
| | | <div class="id_card">{{ item.carNo }}</div> |
| | | <div class="wrap"> |
| | | <ChargeRate :rate="item.rate" :color="i > 2 ? 'cyan' : '#e3a83a'" /> |
| | |
| | | box-shadow: inset 0px 0px 3px 0px #01D9FE; |
| | | margin-right: 10px; |
| | | } |
| | | .top3{ |
| | | box-shadow: inset 0px 0px 3px 0px #FEAF01; |
| | | } |
| | | |
| | | .id_card { |
| | | color: #DBEAEA; |
| | |
| | | <span class="item">æ¥è¦</span> |
| | | <span class="item">å±è½</span> |
| | | <span class="item">æ
é</span> |
| | | <span class="item">离线</span> |
| | | <span class="item">æ£å¸¸</span> |
| | | </div> |
| | | <div class="one-swiper list_content"> |
| | | <div class="swiper-wrapper"> |
| | |
| | | <div class="item"> |
| | | <img src="@/assets/images/FireFighting/xiaofang_ic_zaixian@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="name">å¨çº¿</div> |
| | | <div class="name">æ»æ°</div> |
| | | <div class="num">{{ dataList4.onlineDeviceNum }}</div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="item"> |
| | | <img src="@/assets/images/FireFighting/xiaofang_ic_lixian@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="name">离线</div> |
| | | <div class="name">æ£å¸¸</div> |
| | | <div class="num num4">{{ dataList4.offlineDeviceNum }}</div> |
| | | </div> |
| | | </div> |
| | |
| | | <span>温度/æ¹¿åº¦ä¼ æå¨</span> |
| | | </div> |
| | | <div class="right"> |
| | | <img @click="changeData8(-1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" alt=""> |
| | | <div class="num">{{dataIndex8 + 1}}/{{ dataList8.length }}</div> |
| | | <img @click="changeData8(1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" alt=""> |
| | | <img @click="changeData8(-1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" |
| | | alt=""> |
| | | <div class="num">{{ dataIndex8 + 1 }}/{{ dataList8.length }}</div> |
| | | <img @click="changeData8(1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" |
| | | alt=""> |
| | | </div> |
| | | </div> |
| | | <div class="list_wrap"> |
| | | <div class="title"> |
| | | <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt=""> |
| | | <span>å¸è´§åº1</span> |
| | | <span v-if="dataList8 && dataList8.length > 0">{{ dataList8[dataIndex8].humidityData.name }}</span> |
| | | </div> |
| | | <div class="list" v-if="dataList8 && dataList8.length > 0"> |
| | | <div class="item"> |
| | | <img class="icon" src="@/assets/images/FireFighting/ic_wendu@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="num">{{ dataList8[dataIndex8].temperatureData?.latestValue }}<span>°C</span></div> |
| | | <div class="la">éå¼ {{ dataList8[dataIndex8].temperatureData?.alarmLow }}ï½{{ dataList8[dataIndex8].temperatureData?.alarmHigh }}°C</div> |
| | | <div class="la">éå¼ {{ dataList8[dataIndex8].temperatureData?.alarmLow }}ï½{{ |
| | | dataList8[dataIndex8].temperatureData?.alarmHigh }}°C</div> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | | <img class="icon" src="@/assets/images/FireFighting/ic_shidu@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="num">{{ dataList8[dataIndex8].humidityData?.latestValue }}<span>%</span></div> |
| | | <div class="la">éå¼ {{ dataList8[dataIndex8].humidityData?.alarmLow }}ï½{{ dataList8[dataIndex8].humidityData?.alarmHigh }}</div> |
| | | <div class="la">éå¼ {{ dataList8[dataIndex8].humidityData?.alarmLow }}ï½{{ |
| | | dataList8[dataIndex8].humidityData?.alarmHigh }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <span>宿¶ä¼ æå¨æ£æµ</span> |
| | | </div> |
| | | <div class="right"> |
| | | <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" alt=""> |
| | | <div class="num">1/5</div> |
| | | <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" alt=""> |
| | | <img @click="changeData9(-1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" |
| | | alt=""> |
| | | <div class="num">{{ dataIndex9 + 1 }}/{{ dataTotal9 }}</div> |
| | | <img @click="changeData9(1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" |
| | | alt=""> |
| | | </div> |
| | | </div> |
| | | <div class="list_wrap"> |
| | | <div class="title_wrap"> |
| | | <div class="list_wrap2"> |
| | | <div class="item" v-for="item, i in dataListTemp9"> |
| | | <div class="title"> |
| | | <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt=""> |
| | | <span>1è·¯/æ°´å</span> |
| | | <span>{{ item.name }}</span> |
| | | </div> |
| | | <div class="title"> |
| | | <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt=""> |
| | | <span>2è·¯/æ¶²ä½</span> |
| | | <div class="watergage_wrap" v-if="item.obj.typeCode == 253958"> |
| | | <div class="watergage" :id="'watergage' + i"></div> |
| | | <div class="unit">{{ item.obj.value }}</div> |
| | | <div class="place">éå¼ {{ item.level }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="list"> |
| | | <div class="watergage_wrap"> |
| | | <div class="watergage" id="watergage"></div> |
| | | <div class="unit">2.50 <span>Mpa</span></div> |
| | | <div class="place">éå¼ 0ï½2.5Mpa</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="liquidlevel_wrap"> |
| | | <div class="liquidlevel" id="liquidlevel"></div> |
| | | <div class="unit">3.45 <span>M</span></div> |
| | | <div class="placeT">éå¼</div> |
| | | <div v-if="item.obj.typeCode == 254001" class="liquidlevel_wrap"> |
| | | <div class="liquidlevel" :id="'liquidlevel' + i"></div> |
| | | <div class="liquidle_te"> |
| | | <div class="unit">{{ item.obj.value }}</div> |
| | | <div class="placeT">éå¼{{ item.level }}</div> |
| | | </div> |
| | | <div class="place">éå¼ 0ï½4.50M</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, onMounted } from 'vue' |
| | | import { ref, onMounted, nextTick } from 'vue' |
| | | import VScaleScreen from 'v-scale-screen' |
| | | import FirePercent from '@/components/FirePercent.vue' |
| | | import dayjs from 'dayjs' |
| | |
| | | getFightingDeAlarm, |
| | | getFightingDeviceY, |
| | | getFighalarmDataList, |
| | | getTemperatureHumidityData |
| | | getTemperatureHumidityData, |
| | | monitorDataListP |
| | | } from '@/api' |
| | | |
| | | const colors = ['#FEAF01', '#01ABFE', '#51F9E4'] |
| | |
| | | }, 1000) |
| | | |
| | | |
| | | const initWatergage = () => { |
| | | const myChart = echarts.init(document.getElementById('watergage')) |
| | | var data_value = 1 |
| | | const initWatergage = (id, item) => { |
| | | const myChart = echarts.init(document.getElementById(id)) |
| | | var data_value = item.obj.value.replaceAll('Mpa', '') |
| | | const startI = item.level.indexOf('-') |
| | | const endI = item.level.indexOf('Mpa') |
| | | let maxNum = item.level.slice(startI + 1, endI) |
| | | let minNum = item.level.slice(0, startI) |
| | | // let maxNum = |
| | | const option = { |
| | | barMaxWidth: 3, |
| | | polar: { |
| | |
| | | series: [ |
| | | { |
| | | type: 'gauge', |
| | | min: 0, |
| | | max: 2.50, |
| | | min: minNum, |
| | | max: maxNum, |
| | | splitNumber: 5, |
| | | radius: '100%', |
| | | center: ['50%', '50%'], |
| | |
| | | myChart.resize() |
| | | }) |
| | | } |
| | | const initLiquidlevel = () => { |
| | | const myChart = echarts.init(document.getElementById('liquidlevel')) |
| | | var data = 65 |
| | | const initLiquidlevel = (id, item) => { |
| | | const myChart = echarts.init(document.getElementById(id)) |
| | | const startI = item.level.indexOf('-') |
| | | const endI = item.level.indexOf('M') |
| | | let maxNum = item.level.slice(startI + 1, endI) |
| | | let minNum = item.level.slice(0, startI) |
| | | let conNum = maxNum - minNum |
| | | let acNum = item.obj.value.replaceAll('M', '') |
| | | var data = (((acNum - minNum) / conNum) * 100).toFixed(0) |
| | | console.log('data', data); |
| | | |
| | | const option = { |
| | | tooltip: { |
| | | trigger: 'none', |
| | |
| | | |
| | | const dataList8 = ref([]) |
| | | const dataIndex8 = ref(0) |
| | | |
| | | const dataList9 = ref([]) |
| | | const dataListTemp9 = ref([]) |
| | | const dataIndex9 = ref(0) |
| | | const dataTotal9 = ref(0) |
| | | |
| | | const getData8 = () => { |
| | | getTemperatureHumidityData().then(res => { |
| | | dataList8.value = res.data || [] |
| | | }) |
| | | monitorDataListP().then(res => { |
| | | dataList9.value = res.data || [] |
| | | dataList9.value.forEach(item => { |
| | | if (item.dataList && item.dataList.length > 0) { |
| | | item.obj = item.dataList[0] |
| | | } |
| | | }) |
| | | if (dataList9.value.length > 0) { |
| | | dataTotal9.value = Math.ceil(dataList9.value.length / 2) |
| | | dataListTemp9.value = dataList9.value.slice(0, 2) |
| | | } |
| | | initEcharts9() |
| | | }) |
| | | } |
| | | const changeData8 = (num) => { |
| | | if(dataIndex8.value == dataList8.value.length - 1 && num > 0){ |
| | | if (dataIndex8.value == dataList8.value.length - 1 && num > 0) { |
| | | dataIndex8.value = 0 |
| | | }else if (dataIndex8.value == 0 && num < 0){ |
| | | } else if (dataIndex8.value == 0 && num < 0) { |
| | | dataIndex8.value = dataList8.value.length - 1 |
| | | }else{ |
| | | dataIndex8.value = dataIndex8.value + num |
| | | } else { |
| | | dataIndex8.value = dataIndex8.value + num |
| | | } |
| | | } |
| | | const changeData9 = (num) => { |
| | | // return |
| | | if (dataIndex9.value == dataTotal9.value - 1 && num > 0) { |
| | | dataIndex9.value = 0 |
| | | dataListTemp9.value = dataList9.value.slice(0, 2) |
| | | } else if (dataIndex9.value == 0 && num < 0) { |
| | | dataIndex9.value = dataTotal9.value - 1 |
| | | dataListTemp9.value = dataList9.value.slice(dataList9.value.length - 2, dataList9.value.length) |
| | | } else { |
| | | dataIndex9.value = dataIndex9.value + num |
| | | dataListTemp9.value = dataList9.value.slice(dataIndex9.value * 2, (dataIndex9.value + 1) * 2) |
| | | } |
| | | initEcharts9() |
| | | } |
| | | const initEcharts9 = () => { |
| | | dataListTemp9.value.forEach((item, i) => { |
| | | |
| | | if (item.obj && item.obj.typeCode == 253958) { |
| | | nextTick(() => { |
| | | initWatergage('watergage' + i, item) |
| | | }) |
| | | } |
| | | if (item.obj && item.obj.typeCode == 254001) { |
| | | nextTick(() => { |
| | | initLiquidlevel('liquidlevel' + i, item) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | const autoplayFlag = (list = [], leng = 4, time = 2000) => { |
| | | if (list.length > leng) { |
| | |
| | | getData8() |
| | | |
| | | }, 60 * 60 * 1000) |
| | | |
| | | initWatergage() |
| | | initLiquidlevel() |
| | | |
| | | setTimeout(() => { |
| | | loopFn1() |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | .place{ |
| | | |
| | | .place { |
| | | position: absolute; |
| | | top: 120px; |
| | | right: 70px; |
| | |
| | | width: 120px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .icon { |
| | | width: 70px; |
| | | height: 70px; |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .watergage_wrap { |
| | | text-align: center; |
| | | position: relative; |
| | | left: 30px; |
| | | .watergage { |
| | | width: 130px; |
| | | height: 112px; |
| | | } |
| | | .list_wrap2 { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 206px; |
| | | background-image: url('@/assets/images/FireFighting/bg_wendu@2x.png'); |
| | | background-size: cover; |
| | | |
| | | .unit { |
| | | font-weight: 500; |
| | | font-size: 18px; |
| | | position: relative; |
| | | bottom: 16px; |
| | | left: 4px; |
| | | .item { |
| | | width: 50%; |
| | | height: 100%; |
| | | |
| | | span { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | | .title { |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | color: #D2E0FF; |
| | | padding-left: 20px; |
| | | |
| | | .icon { |
| | | width: 16px; |
| | | margin-right: 8px; |
| | | } |
| | | } |
| | | |
| | | .place { |
| | | .watergage_wrap { |
| | | text-align: center; |
| | | position: relative; |
| | | bottom: 16px; |
| | | left: 4px; |
| | | font-size: 13px; |
| | | color: #869CC9; |
| | | } |
| | | } |
| | | left: 30px; |
| | | |
| | | .liquidlevel_wrap { |
| | | transform: scale(0.24); |
| | | color: #fff; |
| | | text-align: center; |
| | | position: relative; |
| | | left: 20px; |
| | | bottom: 10px; |
| | | .watergage { |
| | | width: 130px; |
| | | height: 112px; |
| | | } |
| | | |
| | | .unit { |
| | | font-weight: 500; |
| | | font-size: 80px; |
| | | position: relative; |
| | | bottom: 24px; |
| | | left: 4px; |
| | | .unit { |
| | | font-weight: 500; |
| | | font-size: 18px; |
| | | position: relative; |
| | | bottom: 16px; |
| | | left: 4px; |
| | | width: 130px; |
| | | margin-bottom: 6px; |
| | | margin-top: 2px; |
| | | |
| | | span { |
| | | font-size: 52px; |
| | | font-weight: 400; |
| | | span { |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | | } |
| | | } |
| | | |
| | | .place { |
| | | position: relative; |
| | | bottom: 16px; |
| | | left: 4px; |
| | | width: 130px; |
| | | font-size: 13px; |
| | | color: #869CC9; |
| | | } |
| | | } |
| | | |
| | | .placeT { |
| | | .liquidlevel_wrap { |
| | | position: relative; |
| | | bottom: 10px; |
| | | left: 4px; |
| | | font-size: 44px; |
| | | color: #869CC9; |
| | | opacity: 0; |
| | | } |
| | | |
| | | .liquidlevel { |
| | | width: 300px; |
| | | height: 396px; |
| | | /* border: 6px solid red; */ |
| | | .liquidle_te { |
| | | font-weight: 500; |
| | | font-size: 16px; |
| | | position: absolute; |
| | | top: 102px; |
| | | left: 0; |
| | | width: 214px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | |
| | | .placeT { |
| | | font-size: 12px; |
| | | color: #869CC9; |
| | | margin-top: 4px; |
| | | } |
| | | } |
| | | |
| | | /* .placeT { |
| | | position: relative; |
| | | bottom: 10px; |
| | | left: 4px; |
| | | font-size: 74px; |
| | | color: #869CC9; |
| | | opacity: 0; |
| | | } */ |
| | | |
| | | .liquidlevel { |
| | | width: 300px; |
| | | height: 400px; |
| | | transform: scale(0.24); |
| | | color: #fff; |
| | | text-align: center; |
| | | position: relative; |
| | | left: -42px; |
| | | top: -140px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | <img src="@/assets/images/LogisticsCenter/bg@2x.png" class="main_bg" alt="" /> |
| | | <div class="main_header"> |
| | | <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" /> |
| | | <div class="title">å
¨çç©æµå¨é</div> |
| | | <div class="title">å®å¾½ä¸çæå鿧大å±</div> |
| | | <div class="time_wrap"> |
| | | <span class="date">{{ date }}</span> |
| | | <span class="week">{{ week }}</span> |
| | |
| | | </div> |
| | | <div class="list_wrap"> |
| | | <div class="header line"> |
| | | <span class="item">è¿è¾è½¦è¾</span> |
| | | <span class="item status">ç¶æ</span> |
| | | <span class="item">ä½ç½®</span> |
| | | <span class="item">ååå·</span> |
| | | <span class="item status">订åç¶æ</span> |
| | | <span class="item">ç®çå°</span> |
| | | <span class="item">ä»»å¡ä¸è¾¾æ¶é´</span> |
| | | </div> |
| | | <div class="one-swiper list"> |
| | |
| | | </div> |
| | | <div class="center_box_two"> |
| | | <div class="echart_map" ref="mapEchart" id="echart_map"></div> |
| | | <div v-if="showModal1" @click="showModal1 = false" class="modal1"> |
| | | <div class="list"> |
| | | <div v-if="showModal1" class="modal1"> |
| | | <div class="content"> |
| | | <div class="head line"> |
| | | <div class="item">车çå·</div> |
| | | <div class="item">ååå·</div> |
| | | <div class="item addr">ç®çå°</div> |
| | | </div> |
| | | <div class="line" v-for="item in active1List"> |
| | | <div class="item">{{ item.platNumber }}</div> |
| | | <div class="item">{{ item.contractNumber }}</div> |
| | | <div class="item addr">{{ item.repertotyName }}</div> |
| | | <div class="list"> |
| | | <div class="line" v-for="item in active1List"> |
| | | <div class="item">{{ item.platNumber }}</div> |
| | | <div class="item">{{ item.contractNumber }}</div> |
| | | <div class="item addr">{{ item.repertotyName }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="second_title"> |
| | | <div class="title"> |
| | | <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" /> |
| | | <div>è¿ç¨èµæºå©ç¨ç</div> |
| | | <div>è¿åèµæºå©ç¨ç</div> |
| | | </div> |
| | | <div class="side"> |
| | | å
¨çï¼ |
| | |
| | | <!-- --> |
| | | <div class="modal_wrap" v-if="showModal"> |
| | | <div class="title_head"> |
| | | <img src="@/assets/images/energy_ef/chuku_ic_car@2x.png" alt=""> |
| | | <span>ååå·ï¼{{ modalInfo.contractNumber }}</span> |
| | | <div class="left"> |
| | | <img src="@/assets/images/energy_ef/chuku_ic_car@2x.png" alt=""> |
| | | <span>ååå·ï¼{{ modalInfo.contractNumber }}</span> |
| | | </div> |
| | | <div class="tit_status">{{ modalInfo.orderStatusDesc }}</div> |
| | | </div> |
| | | <div class="info"> |
| | | <div class="item"> |
| | |
| | | <div id="map-container" ref="mapContainer"></div> |
| | | <div class="fu_list"> |
| | | <div class="fu_item" v-for="item, k in modalInfo.cicleStatusList"> |
| | | <view v-if="k != modalInfo.cicleStatusList.length - 1" class="separate"></view> |
| | | <div class="item_title"> |
| | | <div class="icon"> |
| | | <img v-if="item.key == 0 && k != 0" src="@/assets/images/LogisticsCenter/ic_dingdan@2x.png" |
| | |
| | | <div v-else class="icon_wrap"></div> |
| | | <div class="text" :class="{ placeholder3: k == 0 && i == 0 }"> |
| | | {{ ite.orderStatusDes }} |
| | | <text v-if="ite.tel">ï¼åè´§ä»åºçµè¯ï¼</text> |
| | | <text v-if="ite.tel">,åè´§ä»åºçµè¯ï¼</text> |
| | | <text v-if="ite.tel" class="primaryColor">{{ ite.tel }}</text> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <Loading v-if="modalLoading" /> |
| | | </div> |
| | | <div class="modal_mask" v-if="showModal" @click="closeModal"></div> |
| | | <div class="modal_mask" v-if="showModal || showModal1" @click="closeModal"></div> |
| | | </div> |
| | | </v-scale-screen> |
| | | </template> |
| | |
| | | item.yearNum = 0 |
| | | mapList.value.forEach(ite => { |
| | | if (item.name == ite.name) { |
| | | item.value = ite.value |
| | | item.value = ite.yearNum |
| | | item.monthNum = ite.monthNum |
| | | item.yearNum = ite.yearNum |
| | | } |
| | |
| | | }, |
| | | itemStyle: { |
| | | show: true, |
| | | color: '#00114F', // é«äº®æåé¢è² |
| | | color: '#fff', // é«äº®æåé¢è² |
| | | borderColor: '#a4d0ec', // é«äº®è¾¹æ¡é¢è² |
| | | areaColor: '#63d5c1', //é«äº®åºåé¢è² |
| | | areaColor: '#0056FF', //é«äº®åºåé¢è² |
| | | }, |
| | | }, |
| | | selectedMode: false, |
| | | label: { |
| | | // å°å¾æ 注 |
| | | show: false, |
| | |
| | | show: true, |
| | | textStyle: { |
| | | color: '#000000', |
| | | fontSize: 10 |
| | | fontSize: 12 |
| | | } |
| | | }, |
| | | emphasis: { |
| | |
| | | stack: 'total', |
| | | barWidth: 14, |
| | | label: { |
| | | show: true |
| | | show: true, |
| | | textStyle: { |
| | | color: '#000000', |
| | | fontSize: 12 |
| | | } |
| | | }, |
| | | emphasis: { |
| | | focus: 'series' |
| | |
| | | barWidth: 14, |
| | | stack: 'total', |
| | | label: { |
| | | show: true |
| | | show: true, |
| | | textStyle: { |
| | | color: '#000000', |
| | | fontSize: 12 |
| | | } |
| | | }, |
| | | textStyle: { |
| | | color: '#000000', |
| | |
| | | y2: 0, |
| | | colorStops: [{ |
| | | offset: 0, |
| | | color: '#71f3ce' |
| | | color: '#73f7d1' |
| | | }, { |
| | | offset: 1, |
| | | color: '#4da999' |
| | | color: '#58beaa' |
| | | }] |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | emphasis: { |
| | | focus: 'series' |
| | |
| | | } |
| | | const closeModal = () => { |
| | | showModal.value = false |
| | | showModal1.value = false |
| | | modalInfo.value = {} |
| | | } |
| | | |
| | |
| | | containLabel: true |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis' |
| | | trigger: 'axis', |
| | | formatter: function (params) { |
| | | // éåæ¬æµ®æ¶çææç¹ï¼å®å¶åæ¾ç¤ºå
容 |
| | | let result = `<div style="width: 160px">${params[0].name}</div>` |
| | | params.forEach((item) => { |
| | | if (item.seriesName === 'æ»åºå') { |
| | | result += ` |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;"> |
| | | <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #5e9bca;margin-right: 4px;"></div><div>${item.seriesName}</div></div> |
| | | <div><strong>${item.value}</strong></div> |
| | | </div>` |
| | | } else if (item.seriesName === 'å½ååºå') { |
| | | result += ` |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;"> |
| | | <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #e2a44f;margin-right: 4px;"></div><div>${item.seriesName}</div></div> |
| | | <div><strong>${item.value}</strong></div> |
| | | </div>` |
| | | } else if (item.seriesName === 'åºåå©ç¨ç') { |
| | | result += ` |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;"> |
| | | <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #5a6fc0;margin-right: 4px;"></div><div>${item.seriesName}</div></div> |
| | | <div><strong>${item.value}%</strong></div> |
| | | </div>` |
| | | } |
| | | }) |
| | | return result |
| | | } |
| | | }, |
| | | xAxis: [{ |
| | | nameGap: 5, |
| | |
| | | }, |
| | | }, |
| | | axisLabel: { |
| | | color: '#D2E0FF' |
| | | color: '#869CC9' |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | |
| | | color: "#9eabc2" |
| | | }, |
| | | yAxisIndex: 1, |
| | | tooltip: { |
| | | show: true, |
| | | formatter: '{c}' + '%', |
| | | }, |
| | | label: { |
| | | show: false, |
| | | position: 'top', |
| | | color: '#fff', |
| | | // formatter: '{c}' + '%', |
| | | }, |
| | | data: data5.value.detailList.map(i => i.useRate) |
| | | } |
| | |
| | | borderColor: '#fff' |
| | | }, |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | formatter: function (params) { |
| | | // éåæ¬æµ®æ¶çææç¹ï¼å®å¶åæ¾ç¤ºå
容 |
| | | let result = `<div style="width: 160px">${params[0].name}</div>` |
| | | params.forEach((item) => { |
| | | if (item.seriesName === 'åºåºè½å') { |
| | | result += ` |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;"> |
| | | <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #487af3;margin-right: 4px;"></div><div>${item.seriesName}</div></div> |
| | | <div><strong>${item.value}</strong></div> |
| | | </div>` |
| | | } else if (item.seriesName === '彿¥åºåºé') { |
| | | result += ` |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;"> |
| | | <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #e2a44f;margin-right: 4px;"></div><div>${item.seriesName}</div></div> |
| | | <div><strong>${item.value}</strong></div> |
| | | </div>` |
| | | } else if (item.seriesName === 'åºåºå©ç¨ç') { |
| | | result += ` |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;"> |
| | | <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #b0bcd3;margin-right: 4px;"></div><div>${item.seriesName}</div></div> |
| | | <div><strong>${item.value}%</strong></div> |
| | | </div>` |
| | | } |
| | | }) |
| | | return result |
| | | } |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '0%', |
| | | bottom: '3%', |
| | | top: '18%', |
| | | containLabel: true |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis' |
| | | }, |
| | | xAxis: [{ |
| | | nameGap: 5, |
| | |
| | | show: false, |
| | | position: 'top', |
| | | color: '#fff', |
| | | // formatter: '{c}' + '%', |
| | | }, |
| | | data: data6.value.detailList.map(i => i.useRate) |
| | | } |
| | |
| | | borderColor: '#fff' |
| | | }, |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | formatter: function (params) { |
| | | // éåæ¬æµ®æ¶çææç¹ï¼å®å¶åæ¾ç¤ºå
容 |
| | | let result = `<div style="width: 160px">${params[0].name}</div>` |
| | | params.forEach((item) => { |
| | | if (item.seriesName === 'æ»è¿åèµæº') { |
| | | result += ` |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;"> |
| | | <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #88d9cc;margin-right: 4px;"></div><div>${item.seriesName}</div></div> |
| | | <div><strong>${item.value}</strong></div> |
| | | </div>` |
| | | } else if (item.seriesName === '彿¥ææ¥è¿å') { |
| | | result += ` |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;"> |
| | | <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #e2a44f;margin-right: 4px;"></div><div>${item.seriesName}</div></div> |
| | | <div><strong>${item.value}</strong></div> |
| | | </div>` |
| | | } else if (item.seriesName === '车è¾å©ç¨ç') { |
| | | result += ` |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;"> |
| | | <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #b0bcd3;margin-right: 4px;"></div><div>${item.seriesName}</div></div> |
| | | <div><strong>${item.value}%</strong></div> |
| | | </div>` |
| | | } |
| | | }) |
| | | return result |
| | | } |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '0%', |
| | | bottom: '3%', |
| | | top: '18%', |
| | | containLabel: true |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis' |
| | | }, |
| | | xAxis: [{ |
| | | nameGap: 5, |
| | |
| | | show: false, |
| | | position: 'top', |
| | | color: '#fff', |
| | | // formatter: '{c}' + '%', |
| | | }, |
| | | data: data7.value.detailList.map(i => i.useRate) |
| | | } |
| | |
| | | |
| | | .modal1 { |
| | | width: 500px; |
| | | height: 224px; |
| | | height: 192px; |
| | | background: rgba(0, 86, 255, 0.1); |
| | | backdrop-filter: blur(5px); |
| | | padding: 12px 30px; |
| | |
| | | top: 36px; |
| | | left: 12px; |
| | | border: 1px solid #4ba7f7; |
| | | z-index: 999999; |
| | | |
| | | .list { |
| | | height: 192px; |
| | | overflow: auto; |
| | | .content { |
| | | .list { |
| | | height: 128px; |
| | | overflow: auto; |
| | | } |
| | | |
| | | .line { |
| | | display: flex; |
| | |
| | | width: 600px; |
| | | height: 556px; |
| | | background: rgba(0, 30, 63, 0.5); |
| | | border: 1px solid #c6eef7; |
| | | /* border: 1px solid #c6eef7; */ |
| | | backdrop-filter: blur(5px); |
| | | position: fixed; |
| | | top: 20%; |
| | |
| | | padding: 24px; |
| | | |
| | | #map-container { |
| | | width: 300px; |
| | | height: 180px; |
| | | width: 260px; |
| | | height: 320px; |
| | | position: absolute; |
| | | top: 220px; |
| | | right: 10px; |
| | | top: 190px; |
| | | right: 20px; |
| | | z-index: 999999; |
| | | border-radius: 2px; |
| | | |
| | | :deep(.amap-markers) { |
| | | left: -12px !important; |
| | |
| | | .title_head { |
| | | display: flex; |
| | | align-items: center; |
| | | font-weight: bold; |
| | | font-size: 17px; |
| | | justify-content: space-between; |
| | | margin-bottom: 20px; |
| | | |
| | | .left { |
| | | display: flex; |
| | | align-items: center; |
| | | font-weight: bold; |
| | | font-size: 17px; |
| | | } |
| | | |
| | | .tit_status { |
| | | color: #af8832; |
| | | } |
| | | |
| | | img { |
| | | width: 20px; |
| | |
| | | |
| | | .fu_list { |
| | | height: 310px; |
| | | width: 290px; |
| | | margin-top: 20px; |
| | | overflow: auto; |
| | | |
| | | |
| | | .fu_item { |
| | | position: relative; |
| | | |
| | | .item_title { |
| | | margin-bottom: 6px; |
| | | |
| | |
| | | } |
| | | |
| | | .separate { |
| | | height: calc(100% - 125px); |
| | | width: 1px; |
| | | border: 1px dashed #CCCCCC; |
| | | height: calc(100% - 8px); |
| | | /* width: 1px; */ |
| | | border: 1px dashed #576783; |
| | | /* border: 1px dashed red; */ |
| | | position: absolute; |
| | | left: 26px; |
| | | top: 51px; |
| | | left: 10px; |
| | | top: 20px; |
| | | z-index: -1; |
| | | } |
| | | |
| | |
| | | |
| | | .text { |
| | | color: #b1bfdc; |
| | | margin-bottom: 6px; |
| | | width: 100%; |
| | | } |
| | | |
| | | .icon { |
| | |
| | | .h2 { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 24px; |
| | | } |
| | | |
| | | .h1 {} |
| | |
| | | .time { |
| | | padding-left: 39px; |
| | | font-size: 12px; |
| | | margin-top: 3px; |
| | | } |
| | | } |
| | | } |
| | |
| | | top: 0; |
| | | left: 0; |
| | | z-index: 9999; |
| | | background-color: rgba(0, 0, 0, 0.1); |
| | | /* background-color: rgba(0, 0, 0, 0.0); */ |
| | | /* background-color: red; */ |
| | | } |
| | | |
| | |
| | | </div> |
| | | <div class="one-swiper list_temp"> |
| | | <div class="swiper-wrapper"> |
| | | <div class="line swiper-slide one-swiper-slide" v-for="item in dataList3"> |
| | | <div @click="taskClick(item)" class="line swiper-slide one-swiper-slide" v-for="item in dataList3"> |
| | | <span class="item flag"><span :class="{ flag_bg: item.type == 1 || item.type == 3 }">{{ item.type |
| | | == 1 |
| | | || item.type == 3 ? 'åº' : 'å
¥' }}</span></span> |
| | |
| | | data1.currentInDoneNum |
| | | }}</span> |
| | | <span v-else>0</span> |
| | | <span>䏿¯</span> |
| | | 䏿¯ |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="name">已宿æ¯ä¾</div> |
| | | <div class="num"> |
| | | <span v-if="activeTab4 == 0 && data1.currentOutNum" class="finish">{{ ((data1.currentOutDoneNum / |
| | | data1.currentOutNum) * 100).toFixed(1) }}%</span> |
| | | data1.currentOutNum) * 100).toFixed(1) }}</span> |
| | | <span v-if="activeTab4 == 1 && data1.currentInNum" class="finish">{{ ((data1.currentInDoneNum / |
| | | data1.currentInNum) * 100).toFixed(1) }}%</span> |
| | | data1.currentInNum) * 100).toFixed(1) }}</span> |
| | | % |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <span>è½¦è¾æ¥è¦</span> |
| | | </div> |
| | | <div v-if="isShowCarW" class="war_list"> |
| | | <div class="line" v-for="item in data7.eventList"> |
| | | <div class="line" v-for="item in eventList"> |
| | | <div class="id_card">{{ item.carCode }}</div> |
| | | <div class="title">{{ item.title }}</div> |
| | | <div v-if="item.time">{{ item.time.slice(11) }}</div> |
| | |
| | | </div> |
| | | <div class="list two-swiper"> |
| | | <div class="swiper-wrapper"> |
| | | <div class="item two-swiper-slide swiper-slide" v-for="item in data6.stockList"> |
| | | <div :class="{ orange: item.num < 200 }" class="item two-swiper-slide swiper-slide" |
| | | v-for="item in data6.stockList"> |
| | | <div class="la">{{ item.name }}</div> |
| | | <div class="val">{{ item.num }}䏿¯</div> |
| | | </div> |
| | |
| | | <div class="icon_wrap"> |
| | | <img v-if="i != 0" class="dian" src="@/assets/images/ic_dangqian@2x.png" alt=""> |
| | | <img v-else src="@/assets/images/ic_jindu@2x.png" class="dian_ac" alt=""> |
| | | <div class="line"></div> |
| | | <div v-if="i != activeCar.logList.length - 1" class="line"></div> |
| | | </div> |
| | | <div class="content"> |
| | | <div class="status" :class="{ ac: i == 0 }">{{ statusMapD[item.objType] }}</div> |
| | |
| | | wltotalInList, |
| | | wltransportMeasure, |
| | | carsListPost, |
| | | getCarsJobDetails |
| | | getCarsJobDetails, |
| | | carsEventListP |
| | | } from '@/api' |
| | | import 'swiper/css/swiper.min.css' |
| | | import Swiper from 'swiper' |
| | |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | name: '个', |
| | | min: 0, |
| | | axisLabel: { |
| | | color: '#869CC9' |
| | | }, |
| | | nameTextStyle: { |
| | | color: '#869CC9', |
| | | padding: [0, 0, 0, -18] // å个æ°ååå«ä¸ºä¸å³ä¸å·¦ä¸åä½ç½®è·ç¦» |
| | | }, |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | width: 1, |
| | | color: "rgba(49,105,129,0.4)", |
| | | type: 'dashed' |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | type: 'value', |
| | | name: '䏿¯', |
| | | offset: 0, |
| | | type: 'value', |
| | |
| | | padding: [0, 0, 0, 12] // å个æ°ååå«ä¸ºä¸å³ä¸å·¦ä¸åä½ç½®è·ç¦» |
| | | }, |
| | | }, |
| | | { |
| | | type: 'value', |
| | | name: '个', |
| | | min: 0, |
| | | axisLabel: { |
| | | color: '#869CC9' |
| | | }, |
| | | nameTextStyle: { |
| | | color: '#869CC9', |
| | | padding: [0, 0, 0, -18] // å个æ°ååå«ä¸ºä¸å³ä¸å·¦ä¸åä½ç½®è·ç¦» |
| | | }, |
| | | splitLine: { |
| | | show: false, |
| | | lineStyle: { |
| | | width: 1, |
| | | color: "rgba(49,105,129,0.4)", |
| | | type: 'dashed' |
| | | } |
| | | }, |
| | | }, |
| | | ], |
| | | series: [ |
| | | { |
| | |
| | | position: 'top', |
| | | color: '#fff', |
| | | }, |
| | | yAxisIndex: 1, |
| | | yAxisIndex: 0, |
| | | itemStyle: { |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ |
| | | { |
| | |
| | | name: 'ä»»å¡å®æé', |
| | | type: 'bar', |
| | | barWidth: 10, |
| | | yAxisIndex: 1, |
| | | yAxisIndex: 0, |
| | | label: { |
| | | show: false, |
| | | position: 'top', |
| | |
| | | type: 'line', |
| | | smooth: false, |
| | | showAllSymbol: true, |
| | | yAxisIndex: 0, |
| | | yAxisIndex: 1, |
| | | symbol: 'none', |
| | | lineStyle: { |
| | | color: "#1a43bc" |
| | |
| | | show: false, |
| | | position: 'center' |
| | | }, |
| | | padAngle: 5, |
| | | tooltip: { |
| | | trigger: 'none' |
| | | }, |
| | | emphasis: { |
| | | // è®¾ç½®æ¬æµ®æ¶æ ·å¼ä¸ºç©º |
| | | scale: false, // å
³éæ¾å¤§ææ |
| | | itemStyle: { |
| | | shadowBlur: 0, // é´å½±æ¨¡ç³åº¦ä¸º 0 |
| | | shadowOffsetX: 0, |
| | | shadowColor: 'rgba(0, 0, 0, 0)', |
| | | }, |
| | | }, |
| | | padAngle: 3, |
| | | itemStyle: { |
| | | borderRadius: 10 |
| | | }, |
| | |
| | | showModal.value = false |
| | | activeCar.value = {} |
| | | } |
| | | const taskClick = (item) => { |
| | | getCarsJobDetails({ carCode: item.carCodeFront }).then(res => { |
| | | // getCarsJobDetails({ carCode: 'çAE5277' }).then(res => { |
| | | showModal.value = true |
| | | activeCar.value = { ...res.data, carCode: item.carCodeFront } |
| | | }) |
| | | } |
| | | |
| | | |
| | | const data1 = ref({}) |
| | |
| | | |
| | | const isShowCarW = ref(false) |
| | | const data7 = ref({}) |
| | | const eventList = ref([]) |
| | | const getData7 = () => { |
| | | carsListPost().then(res => { |
| | | const result = res.data || {} |
| | | data7.value = result |
| | | initMap() |
| | | }) |
| | | carsEventListP().then(res => { |
| | | eventList.value = res.data || [] |
| | | }) |
| | | } |
| | | |
| | |
| | | align-items: center; |
| | | padding: 0 10px; |
| | | font-size: 12px; |
| | | cursor: pointer; |
| | | |
| | | &:nth-of-type(2n) { |
| | | background: rgba(27, 64, 97, 0.52); |
| | |
| | | bottom: 0; |
| | | border-top: 1px solid #5ecbce; |
| | | border-bottom: 1px solid #5ecbce; |
| | | background: rgba(0, 30, 63, 0.4); |
| | | /* backdrop-filter: blur(5px); */ |
| | | |
| | | .head { |
| | | display: flex; |
| | | width: 280px; |
| | | height: 57px; |
| | | background: rgba(0, 30, 63, 0.4); |
| | | backdrop-filter: blur(5px); |
| | | display: flex; |
| | | align-items: center; |
| | | padding-left: 10px; |
| | |
| | | .war_list { |
| | | max-height: 300px; |
| | | overflow: auto; |
| | | |
| | | padding-left: 10px; |
| | | padding-bottom: 12px; |
| | | .line { |
| | | font-size: 13px; |
| | | color: #D2E0FF; |
| | |
| | | height: 36px !important; |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 14px; |
| | | |
| | | &:nth-of-type(2n+1) { |
| | | background: rgba(0, 152, 255, 0.13); |
| | |
| | | flex: 2; |
| | | } |
| | | } |
| | | |
| | | .orange { |
| | | color: #FF5728; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | <img src="@/assets/images/SecurityControl/title_short@2x.png" class="bg" alt=""> |
| | | </div> |
| | | <div class="num_wrap"> |
| | | <div class="num">{{ data.internalCarTotal }}</div> |
| | | <div class="num">{{ data.inParkCarTotal || 0 }}</div> |
| | | <img src="@/assets/images/SecurityControl/anfang_ic_data@2x.png" class="bg" alt=""> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <div class="list two-swiper"> |
| | | <div class="swiper-wrapper"> |
| | | <template v-for="item, i in dataList2.filter(i => i.total > 0)"> |
| | | <template v-for="item, i in dataList2.filter(i => i.totalNum > 0)"> |
| | | <div class="item two-swiper-slide swiper-slide"> |
| | | <div class="line"> |
| | | <div class="driver">{{ item.deviceType }}</div> |
| | |
| | | } |
| | | return item |
| | | }) |
| | | console.log('dataList2', dataList2.value); |
| | | |
| | | data2.value = total |
| | | if (online >= outline) { |
| | | temp.push({ name: 'å¨çº¿', value: online, rate: ((online / (online + outline)) * 100).toFixed(1) }) |
| | |
| | | <div class="list one-swiper"> |
| | | <div class="swiper-wrapper"> |
| | | <div class="line one-swiper-slide swiper-slide" v-for="item, i in dataList2" :key="i"> |
| | | <div class="top"><span v-if="i < 3">top</span>{{ i + 1 }}</div> |
| | | <div class="top" :class="{top3: i < 3}"><span v-if="i < 3">top</span>{{ i + 1 }}</div> |
| | | <div class="id_card">{{ item.platformName }}</div> |
| | | <div class="wrap"> |
| | | <ChargeRate :rate="item.rate" /> |
| | |
| | | <div class="val">{{ workModalParam.finishTimeStr }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="modal_bg" v-if="showWorkModal" @click="showWorkModal = false"></div> |
| | | <div class="modal_bg" v-if="showWorkModal" @click="closeModal"></div> |
| | | </div> |
| | | <div class="center_box_two"> |
| | | <div v-if="data4.videoIndexCodes && data4.videoIndexCodes.length > 0" class="videos"> |
| | |
| | | label: { |
| | | show: false, |
| | | position: 'center' |
| | | }, |
| | | tooltip: { |
| | | trigger: 'none' |
| | | }, |
| | | emphasis: { |
| | | // è®¾ç½®æ¬æµ®æ¶æ ·å¼ä¸ºç©º |
| | | scale: false, // å
³éæ¾å¤§ææ |
| | | itemStyle: { |
| | | shadowBlur: 0, // é´å½±æ¨¡ç³åº¦ä¸º 0 |
| | | shadowOffsetX: 0, |
| | | shadowColor: 'rgba(0, 0, 0, 0)', |
| | | }, |
| | | }, |
| | | padAngle: 2, |
| | | itemStyle: { |
| | |
| | | i.finishTime = dayjs(i.finishTime).format('HH:mm') |
| | | return i |
| | | }) |
| | | console.log('dataList5', dataList5.value) |
| | | |
| | | }) |
| | | } |
| | |
| | | const platformClick = (val) => { |
| | | const index = pointList.findIndex(i => i.name == val.platformName) |
| | | workModalParam.value = { ...val, ...pointList[index], index: pointList } |
| | | if(workModalParam.value.workTime){ |
| | | workModalParam.value.workTime = workModalParam.value.workTime.replaceAll('m', 'åé') |
| | | workModalParam.value.workTime = workModalParam.value.workTime.replaceAll('h', 'å°æ¶') |
| | | } |
| | | showWorkModal.value = true |
| | | } |
| | | const closeModal = () => { |
| | | showWorkModal.value = false |
| | | workModalParam.value = {} |
| | | } |
| | | const loopFn2 = () => { |
| | | var newSwiper1 = new Swiper('.one-swiper', { |
| | |
| | | box-shadow: inset 0px 0px 3px 0px #01D9FE; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .top3{ |
| | | box-shadow: inset 0px 0px 3px 0px #FEAF01; |
| | | } |
| | | .one-swiper-slide { |
| | | height: 40px !important; |
| | | } |
| | |
| | | padding: 22px 20px; |
| | | left: 850px; |
| | | top: 60px; |
| | | |
| | | z-index: 99999999; |
| | | .head { |
| | | display: flex; |
| | | justify-content: space-between; |