itemCRUDDialog.vue 6.33 KB
<template>
  <el-dialog
    :title="title"
    :visible.sync="visible"
    width="700px"
    append-to-body
    @close="$emit('update:show', false)"
  >
    <el-form ref="diaForm" :model="data" :rules="rules" label-width="100px">
      <div v-if="!switch1">
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="行" prop="iRow">
              <el-input v-model="data.iRow" placeholder="请输入行"/>
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="列" prop="iColumn">
              <el-input v-model="data.iColumn" placeholder="请输入列"/>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="层" prop="iLayer">
              <el-input v-model="data.iLayer" placeholder="请输入层"/>
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="格" prop="iGrid">
              <el-input v-model="data.iGrid" placeholder="请输入格"/>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="库位类型" prop="locationType">
              <el-select v-model="data.locationType" placeholder="请输入库位类型">
                <el-option v-for="item in locationType"
                           :key="item.dictValue"
                           :label="item.dictLabel"
                           :value="item.dictValue"/>
              </el-select>
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="库区编码" prop="zoneCode">
              <el-select v-model="data.zoneCode" placeholder="请选择库区编码">
                <el-option v-for="item in zone"
                           :key="item.dictValue"
                           :label="item.dictLabel"
                           :value="item.dictValue"/>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="库位状态" prop="status">
              <el-select v-model="data.status" placeholder="请输入库位状态">
                <el-option v-for="item in locationStatus"
                           :key="item.dictValue"
                           :label="item.dictLabel"
                           :value="item.dictValue"/>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
      </div>
      <div v-if="switch1">
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="容器编码" prop="containerCode">
              <el-input v-model="data.containerCode" placeholder="请输入容器编码"/>
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="库位状态" prop="status">
              <el-select v-model="data.status" placeholder="请输入库位状态">
                <el-option v-for="item in locationStatus"
                           :key="item.dictValue"
                           :label="item.dictLabel"
                           :value="item.dictValue"/>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
      </div>
    </el-form>

    <div slot="footer" class="dialog-footer">
      <el-button type="primary" @click="submitForm">确 定</el-button>
      <el-button @click="cancel">取 消</el-button>
    </div>

  </el-dialog>
</template>

<script>
  import {edit, add} from '@/api/config/InventoryInfo/location'

  export default {
    name: 'itemCRUDDialog',
    props: {
      show: {
        type: Boolean,
        default: false
      },
      switch1: {
        type: Boolean,
        default: false
      },
      title: {
        type: String,
        default: ''
      },
      locationType: {
        type: Array,
        default: () => []
      },
      locationStatus: {
        type: Array,
        default: () => []
      },
      zone: {
        type: Array,
        default: () => []
      },
      editData: {
        type: String,
        default: ""
      }
    },
    watch: {
      show() {
        this.visible = this.show
        if (this.show) {
          if (!this.switch1) {
            this.data = {}
          } else {
            this.data = JSON.parse(this.editData)
          }
        }
      }
    },
    data() {
      return {
        data: {},
        visible: this.show,
        rules: {
          iRow: [
            {required: true, message: '请输入行', trigger: 'blur'}
          ],
          iColumn: [
            {required: true, message: '请输入列', trigger: 'blur'}
          ],
          iLayer: [
            {required: true, message: '请输入层', trigger: 'blur'}
          ],
          iGrid: [
            {required: true, message: '请输入格', trigger: 'blur'}
          ],
          locationType: [
            {required: true, message: '请输入库位类型', trigger: 'blur'}
          ],
          zoneCode: [
            {required: true, message: '请输入库区编码', trigger: 'blur'}
          ],
          status: [
            {required: true, message: '请输入库位状态', trigger: 'blur'}
          ],
        }
      }
    },
    methods: {
      /** 提交按钮 */
      submitForm: function () {
        this.$refs['diaForm'].validate(valid => {
          if (valid) {
            if (this.switch1) {
              edit(this.data).then(response => {
                if (response.code === 200) {
                  this.visible = false
                  this.msgSuccess('修改成功')
                  this.$emit('globalQuery')
                }
              })
            } else {
              add(this.data).then(response => {
                if (response.code === 200) {
                  this.$emit('globalQuery')
                  this.msgSuccess('新增成功')
                  this.visible = false
                }
              })
            }
          }
        })
      },
      // 重置对话框表单
      reset() {
        this.$refs['diaForm'].resetFields()
        this.visible = false
      },
      //关闭对话框
      cancel() {
        this.reset()
      },
    }
  }
</script>

<style scoped>

</style>