routeInfo.vue 11.8 KB
<template>
  <div ref="routeInfo" class="route-container">
    <el-collapse accordion v-model="routesInfo" @change="collapseChange">
      <el-collapse-item v-for="(item, index) in routesInfo" :key="item.route">
        <!-- 航线名 -->
        <template slot="title">
          <strong>{{ item.route }}</strong>
        </template>
        <!-- 航线设置信息 -->
        <div class="route-info info-item">
          <el-card class="route-info-card">
            <!-- 有数据时 -->
            <section v-if="item.data">
              <div slot="header" class="route-config-header">
                <el-button type="primary" round size="small" :disabled="item.disabled"
                  :loading="item.loading">保存</el-button>
                <span class="flight-route-title">普通规则</span>
              </div>
              <div class="route-config-info">
                <el-col :span="24">
                  <el-form-item label="始发站">
                    <el-col :span="4">
                      <el-radio-group v-model="item.location" @change="changeLocation">
                        <el-radio label="1">包含始发站</el-radio>
                        <el-radio label="2">不包含始发站</el-radio>
                      </el-radio-group>
                    </el-col>
                    <el-col :span="10">
                      <el-input type="textarea" v-model="item.location" :rows="4" placeholder="始发站之间用回车符分隔"
                        style="width: 500px">
                      </el-input>
                    </el-col>
                  </el-form-item>
                </el-col>
                <el-col :span="24">
                  <el-form-item label="目的站">
                    <el-col :span="4">
                      <el-radio-group v-model="isDestinationSite" @change="changeDestinationSite">
                        <el-radio label="1">包含目的站</el-radio>
                        <el-radio label="2">不包含目的站</el-radio>
                      </el-radio-group>
                    </el-col>
                    <el-col :span="10">
                      <el-input type="textarea" v-model="item.destinationSite" :rows="4" placeholder="目的站之间用回车符分隔"
                        style="width: 500px">
                      </el-input>
                    </el-col>
                  </el-form-item>
                </el-col>
                <el-col :span="24">
                  <el-col :span="12">
                    <el-form-item label="URSA包含">
                      <el-input type="textarea" v-model="item.includeUrsa" :rows="4" placeholder="URSA之间用分号分隔,例:F2;F3;P_">
                      </el-input>
                    </el-form-item>
                  </el-col>
                  <el-col :span="12">
                    <el-form-item label="URSA不包含">
                      <el-input type="textarea" v-model="item.notIncludeUrsa" :rows="4"
                        placeholder="URSA之间用分号分隔,例:F2;F3;P_">
                      </el-input>
                    </el-form-item>
                  </el-col>
                </el-col>
                <el-col :span="24">
                  <el-col :span="9">
                    <el-form-item label="件数">
                      <el-col :span="10">
                        <el-input class="numberInput" v-model.trim="item.minNumOfPieces">
                        </el-input>
                        <span ref="minNumOfPieces" class="el-form-item__error"></span>
                      </el-col>
                      <el-col style="text-align: center" :span="1">-</el-col>
                      <el-col :span="10">
                        <el-input class="numberInput" v-model.trim="item.maxNumOfPieces">
                        </el-input>
                      </el-col>
                    </el-form-item>
                  </el-col>
                  <el-col :span="9">
                    <el-form-item label="重量(KG)">
                      <el-col :span="10">
                        <el-input class="numberInput" v-model.trim="item.minWeight">
                        </el-input>
                        <span ref="minWeight" class="el-form-item__error"></span>
                      </el-col>
                      <el-col style="text-align: center" :span="1">-</el-col>
                      <el-col :span="10">
                        <el-input class="numberInput" v-model.trim="item.maxWeight">
                        </el-input>
                      </el-col>
                    </el-form-item>
                  </el-col>
                </el-col>
                <el-col :span="24">
                  <el-form-item label="申报类别">
                    <el-card shadow="never" style="width: 95%">
                      <el-checkbox-group v-model="item.typeOfGoods" @change="changeCargoType">
                        <el-row>
                          <el-col v-for="item in cargoType" :span="2" :key="item.id">
                            <el-checkbox :label="item.chineseName" :name="item.chineseName" :key="item.code">
                              <Tooltips :content="item.chineseName" :refName="item.code">
                              </Tooltips>
                            </el-checkbox>
                          </el-col>
                        </el-row>
                      </el-checkbox-group>
                    </el-card>
                  </el-form-item>
                </el-col>
                <el-col :span="24">
                  <el-form-item label="货物类型">
                    <el-card shadow="never" style="width: 95%">
                      <el-checkbox-group v-model="item.cargoType" @change="changeCargoStatus">
                        <el-row>
                          <el-col :span="3" v-for="item in cargoStatus" :key="item.id">
                            <el-checkbox :label="item.chineseName" :name="item.chineseName" :key="item.code" disabled>
                              <Tooltips :content="item.chineseName" :refName="item.code">
                              </Tooltips>
                            </el-checkbox>
                          </el-col>
                        </el-row>
                      </el-checkbox-group>
                    </el-card>
                  </el-form-item>
                </el-col>
                <el-col :span="24">
                  <el-form-item label="取件扫描号">
                    <el-card shadow="never" style="width: 95%">
                      <el-checkbox-group v-model="item.puporpuxCode" @change="changePuporpux">
                        <el-row>
                          <el-col :span="2" v-for="item in puporpux" :key="item.id">
                            <el-checkbox :label="item.chineseName" :name="item.chineseName" :key="item.code">
                              <Tooltips :content="item.chineseName" :refName="item.code">
                              </Tooltips>
                            </el-checkbox>
                          </el-col>
                        </el-row>
                      </el-checkbox-group>
                    </el-card>
                  </el-form-item>
                </el-col>
                <el-col :span="24">
                  <el-form-item label="Service Code">
                    <el-card shadow="never" style="width: 95%">
                      <el-checkbox-group v-model="item.serviceCode" @change="changeServiceCode">
                        <el-row>
                          <el-col :span="2" v-for="item in serviceCode" :key="item.id">
                            <el-checkbox :label="item.chineseName" :name="item.chineseName" :key="item.code">
                              <Tooltips :content="item.chineseName" :refName="item.code">
                              </Tooltips>
                            </el-checkbox>
                          </el-col>
                        </el-row>
                      </el-checkbox-group>
                    </el-card>
                  </el-form-item>
                </el-col>
                <el-col :span="24">
                  <el-form-item label="Handling Code">
                    <el-card shadow="never" style="width: 95%">
                      <el-checkbox-group v-model="item.handlingCode" @change="changeHandlingCode">
                        <div class="checkboxItem" v-for="item in handlingCode" :key="item.id">
                          <el-checkbox :label="item.chineseName" :name="item.chineseName" :key="item.code">
                            <Tooltips :content="item.chineseName" :refName="item.code">
                            </Tooltips>
                          </el-checkbox>
                        </div>
                      </el-checkbox-group>
                    </el-card>
                  </el-form-item>
                </el-col>
                <el-col :span="24">
                  <el-form-item label="Sub Category">
                    <el-card shadow="never" style="width: 95%">
                      <el-checkbox-group v-model="item.subCategory" @change="changeSubCategory">
                        <div class="checkboxItem" v-for="item in subCategory" :key="item.id">
                          <el-checkbox :label="item.chineseName" :name="item.chineseName" :key="item.code">
                            <Tooltips :content="item.chineseName" :refName="item.code">
                            </Tooltips>
                          </el-checkbox>
                        </div>
                      </el-checkbox-group>
                    </el-card>
                  </el-form-item>
                </el-col>
              </div>
            </section>
            <!-- 没有数据时 -->
            <div class="no-data" v-else>
              <el-empty description="未设置规则!">
                <el-button type="primary" size="small" @click="addRouteRule(index)">新增规则</el-button>
              </el-empty>
            </div>
          </el-card>
        </div>
      </el-collapse-item>
    </el-collapse>
  </div>
</template>
<script>
export default {
  name: "routeInfo",
  props: {
    routesInfo: { // 航线规则信息
      type: Array,
      default: () => []
    },
    cargoType: { // 申报类别
      type: Array,
      default: () => []
    },
    cargoStatus: { // 货物类型
      type: Array,
      default: () => []
    },
    puporpux: { // 取件扫描号
      type: Array,
      default: () => []
    },
    serviceCode: { // Service Code
      type: Array,
      default: () => []
    },
    handlingCode: { // Handling Code
      type: Array,
      default: () => []
    },
    subCategory: { // Sub Category
      type: Array,
      default: () => []
    },
  },
  data() {
    return {};
  },
  computed: {},
  created() { },
  mounted() { },
  methods: {
    // 当前激活面板改变时触发
    collapseChange(name) {
      this.$emit("collapse", name);
    },
    // 始发站
    changeLocation(val) {
      this.$emit("location", val);
    },
    // 目的站
    changeDestinationSite(val) {
      this.$emit("destinationSite", val);
    },
    // 申报类别
    changeCargoType(arr) {
      this.$emit("cargoType", arr);
    },
    // 货物类型
    changeCargoStatus(arr) {
      this.$emit("cargoStatus", arr);
    },
    // 取件扫描号
    changePuporpux(arr) {
      this.$emit("puporpux", arr);
    },
    // Service Code
    changeServiceCode(arr) {
      this.$emit("serviceCode", arr);
    },
    // Handling Code
    changeHandlingCode(arr) {
      this.$emit("handlingCode", arr);
    },
    // Sub Category
    changeSubCategory(arr) {
      this.$emit("subCategory", arr);
    },
    // 新增规则
    addRouteRule(index) {
      this.$emit("addRlue", index);
    }
  },
};
</script>
<style lang='scss'>
.route-container {
  .route-info {
    .route-info-card {
      .route-config-header {
        .flight-route-title {}
      }

      .route-config-info {}
    }
  }
}
</style>