ll
liukangdong
2024-09-06 d39cce94b1e2ac194fbf8c76b4925c7dcb41160e
admin/src/views/platform/queueUp.vue
@@ -2,33 +2,92 @@
  <div class="main_app">
    <div class="mb20 main_header">
      <div class="platgroup_tabs">
        <div
          class="tab"
          :class="{ active: activeGroup.id === item.id }"
          @click="platgroupClick(item)"
          v-for="(item, i) in PlatGroupList"
          :key="i"
        >
        <div class="tab" :class="{ active: activeGroup.id === item.id }" @click="platgroupClick(item)"
          v-for="(item, i) in PlatGroupList" :key="i">
          {{ item.name }}
        </div>
    </div>
    </div>
    <QueryForm v-model="filters" :query-form-config="queryQueueUpConfig" @handleQuery="getList(1)" @clear="clear">
    </QueryForm>
    <div class="main_content">
      <div class="static_wrap">
        <span>等待:<span class="num">{{ staticParam.waitNum }}</span></span>
        <span class="mr30">{{ }}</span>
        <span>挂起:<span class="red">{{ staticParam.exceptionNum }}</span></span>
        <span></span>
      </div>
    </div>
    <el-table class="mb20" v-loading="loading" :data="dataList" stripe row-key="id" default-expand-all>
      <el-table-column type="index" label="序号" width="80" />
      <el-table-column label="车牌号" width="160">
        <template slot-scope="{ row }">
          <div class="plate_id">
            <span>{{ row.carCodeFront.slice(0, 1) }}</span>
            <span>{{ row.carCodeFront.slice(1, 2) }}</span>
            <span>·</span>
            <span>{{ row.carCodeFront.slice(2) }}</span>
          </div>
        </template>
      </el-table-column>
      <el-table-column prop="carrierName" label="运输公司" min-width="200" />
      <el-table-column prop="code" label="运单号" min-width="200" />
      <el-table-column prop="totalNum" label="总运输量(万支)" min-width="130" />
      <el-table-column prop="driverName" label="驾驶员" min-width="140">
        <template slot-scope="{ row }">
          <span class="mr10">{{ row.driverName }}</span>
          <span>{{ row.drivierPhone }}</span>
        </template>
      </el-table-column>
      <el-table-column prop="signDate" label="签到时间" min-width="150" />
      <el-table-column label="操作" width="100" fixed="right">
        <template slot-scope="{ row }">
          <el-button type="text" @click="handleDetail(row)" v-permissions="['business:company:update']">运单详情</el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination" />
    <!--  -->
    <WaybillDetail
      ref="WaybillDetailRef"
      v-if="isShowDetail"
      @success="getList"
      @close="isShowDetail = false"
    />
  </div>
</template>
<script>
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
import {
  getPlatformGroupList
  getPlatformGroupList,
  platformLineUpPage,
  getPlatformGroupWork
} from '@/api'
import { queryQueueUpConfig } from './config'
import WaybillDetail from './components/WaybillDetail.vue'
export default {
  components: {
    Pagination,
    QueryForm,
    WaybillDetail
  },
  data () {
    return {
      filters: {},
      activeGroup: {},
      PlatGroupList: [],
      isShowSet: false, // 月台配置
      setParam: {},
      staticParam: {},
      dataList: [],
      loading: false,
      pagination: {
        pageSize: 10,
        page: 1,
        total: 0,
      },
      queryQueueUpConfig,
      isShowDetail: false, // 运单详情
      detail: {}
    }
@@ -43,36 +102,137 @@
        queryType: 1
      }).then(res => {
        this.PlatGroupList = res || []
        if (res && res.length > 0) {
        if (this.activeGroup && this.activeGroup.id) {
          this.activeGroup = res.find(item => item.id === this.activeGroup.id)
        } else {
          this.activeGroup = res[0]
        }
          this.getPlatformGroupWork()
          this.getList()
        }
      })
    },
    getList() {
      const { activeGroup, pagination, filters } = this
      this.loading = true
      platformLineUpPage({
        model: { platformGroupId: activeGroup.id, ...filters, callType: 3 },
        capacity: pagination.pageSize,
        page: pagination.page,
      }).then(res => {
        this.loading = false
        this.dataList = res.records || []
        this.pagination.total = res.total || 0
      }, () => {
        this.loading = false
      })
    },
    getPlatformGroupWork() {
      const { activeGroup } = this
      getPlatformGroupWork(activeGroup.id).then(res => {
        this.staticParam = res || {}
      })
    },
    handleSizeChange(e) {
      this.pagination.pageSize = e
      this.getList()
    },
    handlePageChange(e) {
      this.pagination.page = e
      this.getList()
    },
    platgroupClick (item) {
      this.activeGroup = { ...item }
      this.pagination.page = 1
      this.filters = {}
      this.getPlatformGroupWork()
      this.getList()
    },
    getList () { },
    clear () { }
    clear() {
      this.pagination.page = 1
      this.filters = {}
      this.getList()
    },
    handleDetail(row) {
      this.isShowDetail = true
      this.$nextTick(() => {
        this.$refs.WaybillDetailRef.isShowModal = true
      })
    },
  }
}
</script>
<style lang="scss" scoped>
@import "@/assets/style/variables.scss";
.main_content {
  background-color: #fff;
  position: relative;
  z-index: 999;
  top: -10;
  margin: -20px;
  padding: 0 20px;
  .static_wrap {
    height: 50px;
    line-height: 50px;
    color: #666666;
    font-size: 15px;
    padding: 0 20px;
    background: #F4FAFB;
    border-radius: 2px 2px 0px 0px;
    margin-bottom: 36px;
    .num {
      color: #111111;
    }
  }
}
.plate_id {
  display: flex;
  width: 111px;
  font-weight: 600;
  height: 30px;
  line-height: 30px;
  font-size: 16px;
  color: #111111;
  border-radius: 4px;
  border: 1px solid #dfdede;
  span {
    &:nth-of-type(1) {
      background: $primary-color;
      padding: 0 6px;
      color: #fff
    }
    &:nth-of-type(2) {
      padding-left: 2px;
    }
    &:nth-of-type(4) {
      padding-right: 3px;
    }
  }
}
.main_header {
  .platgroup_tabs {
    flex: 1;
    display: flex;
    border-bottom: 1px solid #dfe2e8;
    .tab {
      color: #666666;
      margin-right: 40px;
      cursor: pointer;
      padding-bottom: 18px;
      padding-bottom: 14px;
      border-bottom: 2px solid #fff;
    }
    .active {
      font-weight: 500;
      font-size: 15px;