MrShi
7 天以前 3a154bdb0a5aaa2c0ac3eac95a6ba747068bd454
admin/src/components/business/OperaJkSketchWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,140 @@
<template>
  <GlobalWindow
    :title="title"
    width="70%"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <p class="tip-warn"><i class="el-icon-warning"></i>优化说明:<br>
      1、当前优化任务最多支持<span class="orange">【 {{lineNum}} ã€‘</span>条线路;<br>
      2、合理选择线路,选择线路的总客户数和总送货量需要满足当日订单累计值;<br>
      3、强制优化表示忽略该主线优化中的任务,重新开启优化任务(不建议);<br>
    </p>
<!--    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="生成线路数量" prop="planLineNum">
        <el-input type="number" disabled  v-model="form.planLineNum" placeholder="请输入线路数" v-trim/>
      </el-form-item>
    </el-form>-->
    <div>
      <el-form :model="form" ref="form" :rules="rules">
        <el-form-item label="是否强制优化" prop="forceUpdate">
          <el-radio-group v-model="form.forceUpdate">
            <el-radio :label="0" :value="0">不强制</el-radio>
            <el-radio :label="1" :value="1">强制</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item label="选择生成线路" prop="lineIdList" >
          <el-table  :data="lineList" stripe    @selection-change="handleSelectionChange">
            <el-table-column type="selection" width="55"></el-table-column>
            <el-table-column prop="name" label="送货线路" min-width="130px" show-tooltip-when-overflow>  </el-table-column>
            <el-table-column prop="maxCustomer" label="客户数(户)" min-width="100px"  show-tooltip-when-overflow></el-table-column>
            <el-table-column prop="maxOrder" label="送货量(条)" min-width="100px"  show-tooltip-when-overflow></el-table-column>
            <el-table-column prop="carCode" label="车牌号" min-width="100px"></el-table-column>
            <el-table-column prop="memberName" label="送货司机" min-width="100px"></el-table-column>
          </el-table>
        </el-form-item>
      </el-form>
    </div>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { allList } from '@/api/business/jkLine'
export default {
  name: 'OperaJkSketchWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        planLineNum: '',
        forceUpdate: 0,
        lineIdList: []
      },
      categoryId: null,
      lineList: [],
      lineNum: null,
      // éªŒè¯è§„则
      rules: {
        lineIdList: [{ required: true, message: '请选择生成线路数量' }],
        forceUpdate: [{ required: true, message: '请选择是否强制优化' }]
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkSketch',
      'field.id': 'id'
    })
  },
  methods: {
    handleSelectionChange (rows) {
      this.form.lineIdList = []
      if (rows || rows.length) {
        rows.forEach(item => {
          this.form.lineIdList.push(item.id)
        })
      }
    },
    open (title, target) {
      if (!target || !target.id) {
        return
      }
      this.lineList = []
      this.title = title
      this.visible = true
      this.categoryId = target.categoryId
      this.form.id = target.id
      this.form.planLineNum = target.planLineNum
      this.form.forceUpdate = 0
      this.form.lineIdList = []
      this.loadLines()
    },
    confirm () {
      this.$refs.form.validate((valid) => {
        if (!valid) {
          return
        }
      /*  if (this.form.planLineNum <= 0 || this.form.planLineNum > this.lineNum) {
          this.$message.error('优化线路数必须在[1-' + this.lineNum + ']范围内!')
          return
        }*/
        this.confirmDo()
      })
    },
    confirmDo () {
      // è°ƒç”¨æ–°å»ºæŽ¥å£
      this.isWorking = true
      this.api.updateById({
        id: this.form.id,
        lineIdList: this.form.lineIdList,
        forceUpdate: this.form.forceUpdate
      })
        .then(() => {
          this.visible = false
          this.$tip.apiSuccess('优化任务正在后台执行,请等待优化完成后查看优化结果!')
          this.$emit('success')
        })
        .catch(e => {
          // this.$tip.apiFailed(e)
        })
        .finally(() => {
          this.isWorking = false
        })
    },
    loadLines () {
      allList({
        categoryId: this.categoryId
      }).then(res => {
        this.lineList = res || []
        this.lineNum = this.lineList.length
      })
    }
  }
}
</script>