Houjie
3 天以前 3c5205d857446563b3f89ae7432d76ba6d945a69
Merge remote-tracking branch 'origin/master'
已修改5个文件
434 ■■■■■ 文件已修改
src/views/base/ShiftGroupManager.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/base/modules/group/GroupModal.vue 293 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/cms/CuttingReceiveList.vue 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/modules/MesMaterialTransferRequestForm.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/modules/WorkOrderSelectModal.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/base/ShiftGroupManager.vue
@@ -7,7 +7,13 @@
          <!-- 搜索区域 -->
          <a-form layout="inline" @keyup.enter.native="searchQuery">
            <a-row :gutter="24">
              <a-col :md="6" :sm="8">
              <a-col :xl="6" :lg="7" :md="8" :sm="24">
                <a-form-item label="产线">
                  <j-dict-select-tag placeholder="请选择产线" v-model="queryParam.factoryId"
                                     dictCode="base_factory,factory_name,id,del_flag=0 and factory_category='3'"></j-dict-select-tag>
                </a-form-item>
              </a-col>
              <a-col :xl="6" :lg="7" :md="8" :sm="24">
                <a-form-item label="班组名称" :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}">
                  <a-input placeholder="" v-model="queryParam.groupName"></a-input>
                </a-form-item>
@@ -89,7 +95,7 @@
              <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
            <a-col :md="9" :sm="24">
             <a-button type="primary" @click="searchQuery2" icon="search" style="margin-left: 21px">查询</a-button>
              <a-button type="primary" @click="searchReset2" icon="reload" style="margin-left: 8px">重置</a-button>
              <a-button type="info" @click="searchReset2" icon="reload" style="margin-left: 8px">重置</a-button>
            </a-col>
          </span>
@@ -170,7 +176,7 @@
        queryParam2: {},
        dataSource1: [],
        dataSource2: [],
        ipagination1: {
        ipagination: {
          current: 1,
          pageSize: 10,
          pageSizeOptions: ['10', '20', '30'],
@@ -192,9 +198,9 @@
          showSizeChanger: true,
          total: 0
        },
        isorter1: {
          column: 'createTime',
          order: 'desc'
        isorter: {
          column: 'groupCode',
          order: 'asc'
        },
        isorter2: {
          column: 'createTime',
src/views/base/modules/group/GroupModal.vue
@@ -12,42 +12,37 @@
    style="top:5%;height: 85%;overflow-y: hidden">
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form"  v-bind="layout"  :model="model" :rules="validatorRules">
      <a-form-model ref="form" :model="model" :rules="validatorRules">
        <a-form-model-item label="班组编码" required prop="groupCode" :labelCol="labelCol" :wrapperCol="wrapperCol">
          <a-input v-model="model.groupCode" :disabled="roleDisabled"  placeholder="请输入班组编码"/>
          <a-input v-model="model.groupCode" :disabled="roleDisabled" placeholder="请输入班组编码" />
        </a-form-model-item>
        <a-form-model-item label="班组名称" required prop="groupName" :labelCol="labelCol" :wrapperCol="wrapperCol">
          <a-input v-model="model.groupName" placeholder="请输入班组名称"/>
          <a-input v-model="model.groupName" placeholder="请输入班组名称" />
        </a-form-model-item>
         <a-form-model-item label="班组长" prop="groupManager" :labelCol="labelCol" :wrapperCol="wrapperCol">
        <a-form-model-item label="班组长" prop="groupManager" :labelCol="labelCol" :wrapperCol="wrapperCol">
          <j-search-select-tag
            type="list"
            v-model="model.groupManager"
            :trigger-change="true"
            dict="sys_user,realname,id, del_flag='0' and status='1'"
            placeholder="请选择班组长"
          />
        </a-form-model-item>
        <a-form-model-item label="产线" prop="factoryId" :labelCol="labelCol" :wrapperCol="wrapperCol">
          <j-dict-select-tag placeholder="请选择产线" v-model="model.factoryId"
                             dictCode="base_factory,factory_name,id,del_flag=0 and factory_category='3'"></j-dict-select-tag>
        </a-form-model-item>
        <a-form-model-item label="班次" prop="shiftId" :labelCol="labelCol" :wrapperCol="wrapperCol">
          <j-dict-select-tag
                type="list"
                v-model="model.groupManager"
                :trigger-change="true"
                dictCode="sys_user,realname,id"
                placeholder="请选择班组长"
              />
        </a-form-model-item>
         <a-form-model-item label="产线" prop="factoryId" :labelCol="labelCol" :wrapperCol="wrapperCol">
         <j-select-factory
            v-model="model.factoryId"
            :multi="true"
            @back="backFactoryInfo"
            :backProduction="true"
            :treeProductOpera="true"
          ></j-select-factory>
        </a-form-model-item>
         <a-form-model-item label="班次" prop="shiftId" :labelCol="labelCol" :wrapperCol="wrapperCol">
          <j-dict-select-tag
                type="list"
                v-model="model.shiftId"
                :trigger-change="true"
                dictCode="base_shift,shift_name,id"
                placeholder="请选择班次"
              />
            type="list"
            v-model="model.shiftId"
            :trigger-change="true"
            dictCode="base_shift,shift_name,id"
            placeholder="请选择班次"
          />
        </a-form-model-item>
        <a-form-model-item label="备注" prop="remark" :labelCol="labelCol" :wrapperCol="wrapperCol">
          <a-textarea :rows="5" v-model="model.remark" placeholder="请输入备注"/>
          <a-textarea :rows="5" v-model="model.remark" placeholder="请输入备注" />
        </a-form-model-item>
      </a-form-model>
    </a-spin>
@@ -55,130 +50,138 @@
</template>
<script>
  import {duplicateCheck } from '@/api/api'
  import {postAction,requestPut} from '@/api/manage'
  import JDictSelectTag from '@/components/dict/JDictSelectTag'
  import JSelectFactory from '../../../../components/jeecgbiz/JSelectFactory'
  export default {
    name: "GroupModal",
    components: {
    JDictSelectTag,
    JSelectFactory
import { duplicateCheck } from '@/api/api'
import { postAction, requestPut } from '@/api/manage'
import JDictSelectTag from '@/components/dict/JDictSelectTag'
export default {
  name: 'GroupModal',
  components: {
    JDictSelectTag
  },
    data () {
      return {
        title:"操作",
        visible: false,
        roleDisabled: false,
        model: {},
        labelCol: {
          xs: { span: 24 },
          sm: { span: 5 },
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
        },
        confirmLoading: false,
        validatorRules:{
          groupName: [
            { required: true, message: '请输入班组名称!' },
            { min: 2, max: 30, message: '长度在 2 到 30 个字符', trigger: 'blur' }
          ],
          groupCode: [
            { required: true, message: '请输入班组名称!'},
            { min: 0, max: 64, message: '长度不超过 64 个字符', trigger: 'blur' },
            { validator: this.validategroupCode}
          ],
          remark: [
            { min: 0, max: 126, message: '长度不超过 126 个字符', trigger: 'blur' }
          ]
        },
        url: {
          add: "/base/shiftGroup/add",
          edit: "/base/shiftGroup/edit",
        },
        nextFactoryOptions: [],
      }
  data() {
    return {
      title: '操作',
      visible: false,
      roleDisabled: false,
      model: {},
      labelCol: {
        xs: { span: 24 },
        sm: { span: 5 }
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 16 }
      },
      confirmLoading: false,
      validatorRules: {
        groupName: [
          { required: true, message: '请输入班组名称!' },
          { min: 2, max: 30, message: '长度在 2 到 30 个字符', trigger: 'blur' }
        ],
        groupCode: [
          { required: true, message: '请输入班组名称!' },
          { min: 0, max: 64, message: '长度不超过 64 个字符', trigger: 'blur' },
          { validator: this.validategroupCode }
        ],
        factoryId: [
          { required: true, message: '请选择产线!' },
        ],
        groupManager: [
          { required: true, message: '请选择班组长!' },
        ],
        shiftId: [
          { required: true, message: '请选择班班次!' },
        ],
        remark: [
          { min: 0, max: 126, message: '长度不超过 126 个字符', trigger: 'blur' }
        ]
      },
      url: {
        add: '/base/shiftGroup/add',
        edit: '/base/shiftGroup/edit'
      },
      nextFactoryOptions: []
    }
  },
  created() {
    //备份model原始值
    this.modelDefault = JSON.parse(JSON.stringify(this.model))
  },
  methods: {
    add() {
      this.edit(this.modelDefault)
    },
    created () {
      //备份model原始值
      this.modelDefault = JSON.parse(JSON.stringify(this.model));
    edit(record) {
      this.model = Object.assign({}, record)
      this.visible = true
    },
    methods: {
      add () {
        this.edit(this.modelDefault);
      },
      edit (record) {
        this.model = Object.assign({}, record);
        this.visible = true;
      },
      close () {
        this.$refs.form.clearValidate();
        this.$emit('close');
        this.visible = false;
      },
      handleOk () {
        const that = this;
        // 触发表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = true;
            let obj;
            if(!this.model.id){
              obj=postAction(this.url.add, this.model)
            }else{
              obj=requestPut(this.url.edit, this.model, {
                    id: this.model.id
                  })
            }
            obj.then((res)=>{
              if(res.success){
                that.$message.success(res.message);
                that.$emit('ok');
              }else{
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
              that.close();
    close() {
      this.$refs.form.clearValidate()
      this.$emit('close')
      this.visible = false
    },
    handleOk() {
      const that = this
      // 触发表单验证
      this.$refs.form.validate(valid => {
        if (valid) {
          that.confirmLoading = true
          let obj
          if (!this.model.id) {
            obj = postAction(this.url.add, this.model)
          } else {
            obj = requestPut(this.url.edit, this.model, {
              id: this.model.id
            })
          }else{
            return false;
          }
          obj.then((res) => {
            if (res.success) {
              that.$message.success(res.message)
              that.$emit('ok')
            } else {
              that.$message.warning(res.message)
            }
          }).finally(() => {
            that.confirmLoading = false
            that.close()
          })
        } else {
          return false
        }
      })
    },
    handleCancel() {
      this.close()
    },
    validategroupCode(rule, value, callback) {
      if (/[\u4E00-\u9FA5]/g.test(value)) {
        callback('班组编码不可输入汉字!')
      } else {
        let params = {
          tableName: 'base_shift_group',
          fieldName: 'group_code',
          fieldVal: value,
          dataId: this.model.id
        }
        duplicateCheck(params).then((res) => {
          if (res.success) {
            callback()
          } else {
            callback(res.message)
          }
        })
      },
      handleCancel () {
        this.close()
      },
      validategroupCode(rule, value, callback){
        if(/[\u4E00-\u9FA5]/g.test(value)){
          callback("班组编码不可输入汉字!");
        }else{
          let params = {
            tableName: "base_shift_group",
            fieldName: "group_code",
            fieldVal: value,
            dataId: this.model.id,
          };
          duplicateCheck(params).then((res)=>{
            if(res.success){
              callback();
            }else{
              callback(res.message);
            }
          });
        }
      },
      backFactoryInfo(info) {
        this.model.factoryIds = this.model.factoryId
        this.nextFactoryOptions = info.map((item, index, arr) => {
          let c = { label: item.text, value: item.value + '' }
          return c
        })
      },
      }
    },
    backFactoryInfo(info) {
      this.model.factoryIds = this.model.factoryId
      this.nextFactoryOptions = info.map((item, index, arr) => {
        let c = { label: item.text, value: item.value + '' }
        return c
      })
    }
  }
}
</script>
<style scoped>
src/views/cms/CuttingReceiveList.vue
@@ -120,7 +120,7 @@
            <!--        </span>-->
            <span slot="action" slot-scope="text, record">
          <a @click="handleEdit(record)" :disabled="record.orderStatus === '2'">编辑</a>
          <a @click="handleEdit(record)" :disabled="record.orderStatus === '2' || record.orderStatus === '3'">编辑</a>
          <a-divider type="vertical" />
          <a-dropdown>
            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
@@ -128,15 +128,10 @@
              <a-menu-item>
                <a @click="handleDetail(record)">详情</a>
              </a-menu-item>
               <!--              <a-menu-item v-if="record.orderStatus != '2'">-->
               <!--                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">-->
               <!--                  <a>删除</a>-->
               <!--                </a-popconfirm>-->
               <!--              </a-menu-item>-->
              <a-menu-item v-if="record.orderStatus !== '2'">
              <a-menu-item v-if="record.orderStatus === '1'">
                  <a @click="handleSubmit(record.id)" :disabled="record.orderStatus === '3'">提交</a>
              </a-menu-item>
              <a-menu-item v-if="record.orderStatus !== '2'">
              <a-menu-item v-if="record.orderStatus === '1'">
                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                  <a>删除</a>
                </a-popconfirm>
@@ -282,7 +277,8 @@
            deleteBatch: '/cms/cuttingReceive/deleteBatch',
            exportXlsUrl: '/cms/cuttingReceive/exportXls',
            importExcelUrl: 'cms/cuttingReceive/importExcel',
            submit: '/cms/cuttingReceive/submit'
            submit: '/cms/cuttingReceive/submit',
            returnBack: '/cms/cuttingReceive/handleBack'
         },
         dictOptions: {},
         superFieldList: []
@@ -393,7 +389,62 @@
            }
         })
      },
      //TODO:刀具归还 handleBack
      /**
       *  单据领用
       */
      handleBack: function(id) {
         if (!this.url.returnBack) {
            this.$message.error('请设置url.return属性!')
            return
         }
         let targetId = id // 从参数获取ID
         // 如果没有通过参数传递ID,则检查选中的记录
         if (!targetId) {
            if (this.selectedRowKeys.length != 1) {
               this.$message.warning('请选择一条记录!')
               return
            } else {
               targetId = this.selectedRowKeys[0]
            }
         }
         // 将参数作为查询参数附加到URL上
         let httpurl = this.url.returnBack + '?orderId=' + encodeURIComponent(targetId)
         let method = 'get'
         var params = {}  // 清空params,因为参数已经在URL中传递
         const that = this
         this.$confirm({
            title: '确认提交!',
            // content: '正在提交数据,请耐心等待...',
            okText: '确认',
            cancelText: '取消',
            onOk() {
               // 显示加载提示
               const hide = that.$message.loading('正在提交数据,请耐心等待...', 0)
               // 发送请求
               return httpAction(httpurl, params, method).then((res) => {
                  hide() // 隐藏加载提示
                  if (res.success) {
                     that.$message.success(res.message)
                     that.loadData()
                  } else {
                     that.$message.warning(res.message)
                  }
               }).catch(error => {
                  hide() // 隐藏加载提示
                  that.$message.error('提交失败: ' + error.message)
               }).finally(() => {
                  that.loading = false
               })
            }
         })
      }
   }
}
</script>
src/views/mes/modules/MesMaterialTransferRequestForm.vue
@@ -42,11 +42,9 @@
          </a-col>
          <a-col :span="12">
            <a-form-model-item label="拉动物料" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber">
              <a-select v-model="model.materialNumber" placeholder="请选择拉动物料" @change="handleMaterialNumberChange">
                <a-select-option v-for="item in materialList" :value="item.materialNumber" :title="item.materialName" :key="item.materialNumber">
                  {{ item.materialName }}
                </a-select-option>
              </a-select>
              <j-search-select-tag v-model="model.materialNumber" placeholder="请选择拉动物料"
                                   :dict-options="materialList" @change="handleMaterialNumberChange">
              </j-search-select-tag>
            </a-form-model-item>
          </a-col>
          <a-col :span="12">
@@ -118,7 +116,7 @@
        workOrderQuery: '/mes/mesProductionWorkOrder/queryById'
      },
      materialList: [], //物料列表
      workOrderObj: {}, //工单对象
      workOrderObj: {} //工单对象
    }
  },
  computed: {
@@ -140,17 +138,21 @@
      this.model.workOrderCode = this.model.workOrderId_dictText
      this.visible = true
      if (this.model.workOrderId) {
        this.editable = true;
        this.editable = true
        let workOrderRes = await this.loadProductionWorkOrder(this.model.workOrderId)
        if(!workOrderRes.success || !workOrderRes.result) {
          return;
        if (!workOrderRes.success || !workOrderRes.result) {
          return
        }
        //排产工单赋值
        this.workOrderObj = Object.assign({}, workOrderRes.result);
        this.workOrderObj = Object.assign({}, workOrderRes.result)
        //物料列表
        let materialListRes = await this.loadMaterialList(workOrderRes.result.materialNumber)
        if (materialListRes.success && materialListRes.result && materialListRes.result.length > 0) {
          this.materialList = [...materialListRes.result]
          this.materialList = materialListRes.result.map(item => ({
            ...item,
            value: item.materialNumber,
            text: item.materialName
          }))
        } else {
          this.materialList = []
        }
@@ -163,24 +165,28 @@
          this.model.targetWarehouseId = undefined
          this.model.warehouseName = ''
        }
      }else {
        this.editable = false;
      } else {
        this.editable = false
      }
    },
    async selectConfirm(rows) {
      if (rows && rows.length > 0) {
        //清空关联数据
        this.model.materialNumber = undefined;
        this.model.materialName = '';
        this.model.specifiedQuantity = 0;
        this.model.materialNumber = undefined
        this.model.materialName = ''
        this.model.specifiedQuantity = 0
        //赋值新的数据
        this.model.workOrderId = rows[0].id
        this.model.workOrderCode = rows[0].workOrderCode
        //排产工单赋值
        this.workOrderObj = Object.assign({}, rows[0]);
        this.workOrderObj = Object.assign({}, rows[0])
        let materialListRes = await this.loadMaterialList(rows[0].materialNumber)
        if (materialListRes.success && materialListRes.result && materialListRes.result.length > 0) {
          this.materialList = [...materialListRes.result]
          this.materialList = materialListRes.result.map(item => ({
            ...item,
            value: item.materialNumber,
            text: item.materialName
          }))
        } else {
          this.materialList = []
        }
@@ -194,13 +200,13 @@
        }
      } else {
        //清空关联数据
        this.model.materialNumber = undefined;
        this.model.materialName = '';
        this.model.specifiedQuantity = 0;
        this.model.materialNumber = undefined
        this.model.materialName = ''
        this.model.specifiedQuantity = 0
        this.materialList = []
        this.model.targetWarehouseId = undefined
        this.model.warehouseName = ''
        this.workOrderObj = {};
        this.workOrderObj = {}
      }
    },
    submitForm() {
src/views/mes/modules/WorkOrderSelectModal.vue
@@ -70,7 +70,7 @@
        workOrderStatus: this.orderStatus,
      },
      url: {
        list: "/mes/mesProductionWorkOrder/list"
        list: "/mes/mesProductionWorkOrder/queryWorkOrderByTransfer"
      },
      columns: [
        {