zhaowei
2025-07-07 9b5a856a2cfe378f5ca7304a0af17b3d7b06ff69
1、工厂建模和维修班组页面新增机构编码必填校验
已修改8个文件
302 ■■■■■ 文件已修改
src/mixins/JeecgListMixin.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/authFilter.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/base/EamMaintenanceStandardList.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/base/EamProductionUserManagement.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/base/EamRepairDepartList.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/base/modules/EamMaintenanceStandardDetailList.vue 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/base/modules/EamProductionModal.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/base/modules/EamRepairDepartModal.vue 141 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mixins/JeecgListMixin.js
@@ -8,7 +8,6 @@
import Vue from 'vue'
import { ACCESS_TOKEN, TENANT_ID } from "@/store/mutation-types"
import store from '@/store'
import { buttonShowAuthFilter } from '@/utils/authFilter'
export const JeecgListMixin = {
  data(){
@@ -75,9 +74,6 @@
    }
  },
  methods:{
    isShowAuth(code){
      return buttonShowAuthFilter(code);
    },
    loadData(arg) {
      if(!this.url.list){
        this.$message.error("请设置url.list属性!")
src/utils/authFilter.js
@@ -274,29 +274,4 @@
function substrPre(str,pre) {
  return str.substr(pre.length);
}
/**
 * 显示权限
 * @param {*} code
 * @returns
 */
export function buttonShowAuthFilter(code) {
  if(code){
    if(nodeShowAuth(code)){
      return true;
    }else{
      return false;
    }
  }else{
    return false;
  }
}
function nodeShowAuth(code){
  let authList = JSON.parse(sessionStorage.getItem(USER_AUTH) || "[]");
  for (let auth of authList) {
    if(auth.action == code) {
      return true;
    }
  }
  return false;
}
src/views/eam/base/EamMaintenanceStandardList.vue
@@ -129,7 +129,7 @@
        <a-tab-pane tab='保养标准明细项' key="1">
          <div class="table-operator" style="margin:-16px">
            <eam-maintenance-standard-detail-list ref="standardDetailRef" :standardId="standardId"
                                                  :selectionRows="selectionRows"/>
                                                  :pageSelectionRow="selectionRows[0]"/>
          </div>
        </a-tab-pane>
@@ -138,7 +138,7 @@
    <!-- table区域-end -->
    <!-- 表单区域 -->
    <eamMaintenanceStandard-modal ref="modalForm" @ok="modalFormOk"></eamMaintenanceStandard-modal>
    <eamMaintenanceStandard-modal ref="modalForm" @ok="modalFormOk"/>
  </a-card>
</template>
src/views/eam/base/EamProductionUserManagement.vue
@@ -21,18 +21,9 @@
          <a-input-search @search="onSearch" style="width:100%;margin-top: 10px" placeholder="请输入车间名称"/>
          <!-- 树-->
          <a-col :md="10" :sm="24">
            <a-tree
              checkable
              multiple
              @select="onSelect"
              @check="onCheck"
              :selectedKeys="selectedKeys"
              :checkedKeys="checkedKeys"
              :treeData="departTree"
              :checkStrictly="checkStrictly"
              :expandedKeys="expandedKeys"
              :autoExpandParent="autoExpandParent"
              @expand="onExpand"/>
            <a-tree checkable multiple @select="onSelect" @check="onCheck" :selectedKeys="selectedKeys"
                    :checkedKeys="checkedKeys" :treeData="departTree" :checkStrictly="checkStrictly"
                    :expandedKeys="expandedKeys" :autoExpandParent="autoExpandParent" @expand="onExpand"/>
          </a-col>
        </div>
      </a-card>
@@ -61,10 +52,10 @@
            <template v-if="selectedKeys.length>0">
              <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol"
                            :wrapperCol="wrapperCol">
                <a-form-model-item label="机构编码">
                <a-form-model-item label="机构编码" prop="factoryCode">
                  <a-input placeholder="请输入机构编码" v-model="model.factoryCode"/>
                </a-form-model-item>
                <a-form-model-item expandedKeys prop="factoryName" label="机构名称">
                <a-form-model-item prop="factoryName" label="机构名称">
                  <a-input placeholder="请输入机构名称" v-model="model.factoryName"/>
                </a-form-model-item>
                <a-form-model-item expandedKeys label="上级车间">
@@ -143,7 +134,8 @@
          sm: { span: 16 }
        },
        validatorRules: {
          factoryName: [{ required: true, message: '请输入机构名称!', trigger: 'change' }]
          factoryCode: [{ required: true, message: '请输入机构编号', trigger: 'change' }],
          factoryName: [{ required: true, message: '请输入机构名称', trigger: 'change' }]
        },
        url: {
          getProductionTreeList: '/eam/BaseFactory/queryTreeList',
src/views/eam/base/EamRepairDepartList.vue
@@ -27,19 +27,10 @@
          <a-input-search @search="onSearch" style="width:100%;margin-top: 10px" placeholder="请输入维修部门名称"/>
          <!-- 树-->
          <a-col :md="10" :sm="24">
            <a-tree
              checkable
              multiple
              @select="onSelect"
              @check="onCheck"
              @rightClick="rightHandle"
              :selectedKeys="selectedKeys"
              :checkedKeys="checkedKeys"
              :treeData="departTree"
              :checkStrictly="checkStrictly"
              :expandedKeys="iExpandedKeys"
              :autoExpandParent="autoExpandParent"
              @expand="onExpand"/>
            <a-tree checkable multiple @select="onSelect" @check="onCheck" @rightClick="rightHandle"
                    :selectedKeys="selectedKeys" :checkedKeys="checkedKeys" :treeData="departTree"
                    :checkStrictly="checkStrictly" :expandedKeys="iExpandedKeys" :autoExpandParent="autoExpandParent"
                    @expand="onExpand"/>
          </a-col>
        </div>
      </a-card>
@@ -68,20 +59,15 @@
          <a-card :bordered="false" v-if="selectedKeys.length>0">
            <a-form-model ref="form" :model="model" :rules="validatorRules">
              <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="departCode" label="维修部门编号">
                <a-input placeholder="请输入产线/维修部门编号" v-model="model.departCode"/>
                <a-input placeholder="请输入维修部门/班组编号" v-model="model.departCode"/>
              </a-form-model-item>
              <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="departName" label="维修部门名称">
                <a-input placeholder="请输入产线/维修部门名称" v-model="model.departName"/>
                <a-input placeholder="请输入维修部门/班组名称" v-model="model.departName"/>
              </a-form-model-item>
              <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="上级维修部门">
                <a-tree-select
                  style="width:100%"
                  :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
                  :treeData="treeData"
                  :disabled="disable"
                  v-model="model.parentId"
                  placeholder="无">
                </a-tree-select>
                <a-tree-select style="width:100%" :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
                               :treeData="treeData" :disabled="disable" v-model="model.parentId"
                               placeholder="无"/>
              </a-form-model-item>
              <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="排序">
                <a-input-number v-model="model.departOrder"/>
@@ -109,10 +95,10 @@
  </a-row>
</template>
<script>
import { queryRepairDepartTreeList, queryRepDepIdTree, deleteByRepairDepartId } from '@api/api'
import { httpAction, deleteAction } from '@api/manage'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import EamRepairDepartModal from './modules/EamRepairDepartModal'
  import { queryRepairDepartTreeList, queryRepDepIdTree, deleteByRepairDepartId } from '@api/api'
  import { httpAction, deleteAction } from '@api/manage'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import EamRepairDepartModal from './modules/EamRepairDepartModal'
  export default {
    name: 'EamRepairDepartList',
@@ -157,7 +143,8 @@
          edges: []
        },
        validatorRules: {
          departName: [{ required: true, message: '请输入产线/维修部门名称!' }]
          departCode: [{ required: true, message: '请输入维修部门/班组编号' }],
          departName: [{ required: true, message: '请输入维修部门/班组名称' }]
        },
        url: {
          delete: '/eam/eamBaseRepairDepart/delete',
src/views/eam/base/modules/EamMaintenanceStandardDetailList.vue
@@ -1,27 +1,21 @@
<template>
  <a-card :bordered="false">
    <!-- table区域-begin -->
    <div>
      <a-table
        ref="detailTable"
        size="middle"
        bordered
        rowKey="id"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        class="j-table-force-nowrap"
        @change="handleTableChange">
      </a-table>
    </div>
    <!-- table区域-end -->
    <a-table
      ref="detailTable"
      size="middle"
      bordered
      rowKey="id"
      :columns="columns"
      :dataSource="dataSource"
      :pagination="ipagination"
      :loading="loading"
      class="j-table-force-nowrap"
      @change="handleTableChange">
    </a-table>
  </a-card>
</template>
<script>
  import '@/assets/less/TableExpand.less'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import { getAction } from '@api/manage'
@@ -34,13 +28,18 @@
        required: true,
        default: '-1'
      },
      selectionRows:{}
      pageSelectionRow: {
        type: Object,
        default: () => {
        }
      }
    },
    data() {
      return {
        description: '保养标准明细管理页面',
        // 表头
        columns: [
        columns: [],
        defaultColumns: [
          {
            title: '序号',
            align: 'center',
@@ -57,7 +56,7 @@
            title: '保养项分类',
            align: 'center',
            dataIndex: 'itemCategory_dictText',
            ellipsis: true
            width: 150
          },
          {
            title: '保养项目',
@@ -87,9 +86,15 @@
            this.clearList()
          }
        }
      },
      pageSelectionRow: {
        handler(val) {
          if (val) {
            if (val.maintenanceCategory != 'THIRD_MAINTENANCE') this.columns = [...this.defaultColumns.filter(item => item.dataIndex != 'itemPart')]
            else this.columns = [...this.defaultColumns.filter(item => item.dataIndex != 'itemCategory_dictText')]
          }
        }
      }
    },
    created() {
    },
    computed: {},
    methods: {
@@ -138,7 +143,4 @@
      }
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less';
</style>
</script>
src/views/eam/base/modules/EamProductionModal.vue
@@ -8,7 +8,7 @@
    @cancel="handleCancel"
    cancelText="关闭">
    <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
      <a-form-model-item label="机构编码">
      <a-form-model-item label="机构编码" hasFeedback prop="factoryCode">
        <a-input placeholder="请输入机构编码" v-model="model.factoryCode"/>
      </a-form-model-item>
      <a-form-model-item label="机构名称" hasFeedback prop="factoryName">
@@ -60,8 +60,9 @@
        },
        confirmLoading: false,
        validatorRules: {
          factoryName: [{ required: true, message: '请输入机构名称!', trigger: 'change' }],
          factoryCategory: [{ required: true, message: '请选择机构类型!', trigger: 'change' }]
          factoryCode: [{ required: true, message: '请输入机构编码', trigger: 'change' }],
          factoryName: [{ required: true, message: '请输入机构名称', trigger: 'change' }],
          factoryCategory: [{ required: true, message: '请选择机构类型', trigger: 'change' }]
        },
        url: {
          queryById: '/eam/BaseFactory/queryIdTree',
src/views/eam/base/modules/EamRepairDepartModal.vue
@@ -12,13 +12,12 @@
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form" :model="model" :rules="validatorRules">
        <a-form-model-item
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
          label="维修部门/班组名称"
          prop="departName"
          :hidden="false"
          hasFeedback >
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="维修部门/班组编号" prop="departCode"
                           hasFeedback>
          <a-input placeholder="请输入维修部门/班组编号" v-model="model.departCode"/>
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="维修部门/班组名称" prop="departName"
                           hasFeedback>
          <a-input id="departName" placeholder="请输入维修部门/班组名称" v-model="model.departName"/>
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" :hidden="seen" label="上级部门" hasFeedback>
@@ -54,115 +53,117 @@
  import { queryRepDepIdTree } from '@/api/api'
  import pick from 'lodash.pick'
  import ATextarea from 'ant-design-vue/es/input/TextArea'
  export default {
    name: "EamRepairDepartModal",
    name: 'EamRepairDepartModal',
    components: { ATextarea },
    data () {
    data() {
      return {
        departTree:[],
        orgTypeData:[],
        phoneWarning:'',
        departName:"",
        title:"操作",
        seen:false,
        departTree: [],
        orgTypeData: [],
        phoneWarning: '',
        departName: '',
        title: '操作',
        seen: false,
        visible: false,
        condition:true,
        disableSubmit:false,
        condition: true,
        disableSubmit: false,
        model: {},
        menuhidden:false,
        menuusing:true,
        menuhidden: false,
        menuusing: true,
        labelCol: {
          xs: { span: 24 },
          sm: { span: 5 },
          sm: { span: 5 }
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
          sm: { span: 16 }
        },
        confirmLoading: false,
        validatorRules:{
          departName:[{ required: true, message: '请输入维修部门/班组名称!' }],
        validatorRules: {
          departCode: [{ required: true, message: '请输入维修部门/班组编号' }],
          departName: [{ required: true, message: '请输入维修部门/班组名称' }]
        },
        url: {
          add: "/eam/eamBaseRepairDepart/add",
          add: '/eam/eamBaseRepairDepart/add'
        },
        dictDisabled:true,
        dictDisabled: true
      }
    },
    created () {
    created() {
    },
    methods: {
      loadTreeData(){
        var that = this;
        queryRepDepIdTree().then((res)=>{
          if(res.success){
            that.departTree = [];
      loadTreeData() {
        var that = this
        queryRepDepIdTree().then((res) => {
          if (res.success) {
            that.departTree = []
            for (let i = 0; i < res.result.length; i++) {
              let temp = res.result[i];
              that.departTree.push(temp);
              let temp = res.result[i]
              that.departTree.push(temp)
            }
          }
        })
      },
      add (depart) {
        if(depart){
          this.seen = false;
          this.dictDisabled = false;
        }else{
          this.seen = true;
          this.dictDisabled = true;
      add(depart) {
        if (depart) {
          this.seen = false
          this.dictDisabled = false
        } else {
          this.seen = true
          this.dictDisabled = true
        }
        this.edit(depart);
        this.edit(depart)
      },
      edit (record) {
        this.visible = true;
      edit(record) {
        this.visible = true
        this.model = Object.assign({}, this.defaultModel, record)
        this.loadTreeData();
        this.model.parentId = record!=null?record.toString():null;
        this.loadTreeData()
        this.model.parentId = record != null ? record.toString() : null
      },
      close () {
        this.$emit('close');
        this.disableSubmit = false;
        this.visible = false;
        this.$refs.form.resetFields();
      close() {
        this.$emit('close')
        this.disableSubmit = false
        this.visible = false
        this.$refs.form.resetFields()
      },
      handleOk () {
        const that = this;
      handleOk() {
        const that = this
        // 触发表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = true;
            httpAction(this.url.add,this.model,"post").then((res)=>{
              if(res.success){
            that.confirmLoading = true
            httpAction(this.url.add, this.model, 'post').then((res) => {
              if (res.success) {
                // that.$message.success(res.message);
                that.$notification.warning({
                  message:'消息',
                  description:res.message
                });
                that.loadTreeData();
                that.$emit('ok');
              }else{
                  message: '消息',
                  description: res.message
                })
                that.loadTreeData()
                that.$emit('ok')
              } else {
                // that.$message.warning(res.message);
                that.$notification.warning({
                  message:'消息',
                  description:res.message
                });
                  message: '消息',
                  description: res.message
                })
              }
            }).finally(() => {
              that.confirmLoading = false;
              that.close();
              that.confirmLoading = false
              that.close()
            })
          }else{
            return false;
          } else {
            return false
          }
        })
      },
      handleCancel () {
      handleCancel() {
        this.close()
      },
      }
    }
  }
</script>