zhaowei
2025-07-04 adeb4d53b1f93ee1402c2e124ae69c2cd637e817
src/views/system/modules/UserModal.vue
@@ -41,6 +41,7 @@
            placeholder="请输入用户账号"
            v-model="model.username"
            :readOnly="!!model.id"
            autocomplete="off"
          />
        </a-form-model-item>
@@ -55,6 +56,7 @@
              type="password"
              placeholder="请输入登录密码"
              v-model="model.password"
              autocomplete="off"
            />
          </a-form-model-item>
@@ -97,10 +99,6 @@
          />
        </a-form-model-item>
        <!--<a-form-model-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
        <!--<j-select-position placeholder="请选择职务" :multiple="false" v-model="model.post"/>-->
        <!--</a-form-model-item>-->
        <a-form-model-item
          label="角色分配"
          :labelCol="labelCol"
@@ -114,6 +112,23 @@
            placeholder="请选择角色"
          >
          </j-multi-select-tag>
        </a-form-model-item>
        <a-form-model-item
          label="首页权限"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
        >
          <a-radio-group
            v-model="model.userType"
            :defaultValue="0"
          >
            <a-radio :value="4">公司级</a-radio>
            <a-radio :value="3">车间级</a-radio>
            <a-radio :value="2">工段级</a-radio>
            <a-radio :value="1">操作工</a-radio>
            <a-radio :value="0">无</a-radio>
          </a-radio-group>
        </a-form-model-item>
        <!--部门分配-->
@@ -134,9 +149,9 @@
          </j-select-depart>
        </a-form-model-item>
        <!--车间分配-->
        <!--MDC车间分配-->
        <a-form-model-item
          label="车间分配"
          label="MDC车间分配"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
          v-show="!productionDisabled"
@@ -151,41 +166,67 @@
        </a-form-model-item>
        <a-form-model-item
          label="选择设备"
          label="MDC设备分配"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
          v-show="!productionDisabled"
        >
          <a-input-search :readOnly="true" v-model="model.equipmentIds" @search="deviceSearch" enter-button
                          placeholder="请选择设备" :disabled="!model.selectedProduction"/>
          <a-input-search
            :readOnly="true"
            v-model="model.equipmentIds"
            @search="deviceSearch"
            enter-button
            placeholder="请选择设备"
            :disabled="!model.selectedProduction"
          />
        </a-form-model-item>
        <a-form-model-item
          label="班组分配"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
          prop="teamId"
        >
          <j-dict-select-tag
            v-model="model.teamId"
            :triggerChange="true"
            dictCode="mom_base_team,name,id,del_flag = 0"
            placeholder="请维护班组"
          ></j-dict-select-tag>
        </a-form-model-item>
        <a-form-model-item
          label="中心分配"
          label="EAM中心分配"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
          prop="areaId"
        >
          <j-dict-select-tag
            v-model="model.areaId"
          <j-multi-select-tag
            :triggerChange="true"
            dictCode="mom_base_area,name,id,del_flag = 0"
            v-model="model.eamFactoryIds"
            dictCode="mom_base_area,name,id,del_flag = 0 and type = 1"
            placeholder="请维护中心"
          ></j-dict-select-tag>
          >
          </j-multi-select-tag>
        </a-form-model-item>
        <a-form-model-item
          label="EAM设备分配"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
          v-show="!productionDisabled"
        >
          <a-input-search
            :readOnly="true"
            v-model="model.eamEquipmentIds"
            @search="deviceSearch"
            enter-button
            placeholder="请选择设备"
            :disabled="!model.selectedProduction"
          />
        </a-form-model-item>
        <a-form-model-item
          label="维修部门/班组分配"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
          v-show="!repairDepartDisabled"
        >
          <j-select-repair-depart
            v-model="model.selectedRepairDeparts"
            :multi="true"
            @back="backRepairDepartInfo"
            :backRepairDepart="true"
            :treeRepairDepartOpera="true"
          ></j-select-repair-depart>
        </a-form-model-item>
        <a-form-model-item
          label="负责部门"
          :labelCol="labelCol"
@@ -200,96 +241,6 @@
          >
          </j-multi-select-tag>
        </a-form-model-item>
        <a-form-model-item
          label="头像"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
        >
          <j-image-upload
            class="avatar-uploader"
            text="上传"
            v-model="model.avatar"
          ></j-image-upload>
        </a-form-model-item>
        <a-form-model-item
          label="生日"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
        >
          <a-date-picker
            style="width: 100%"
            placeholder="请选择生日"
            v-model="model.birthday"
            :format="dateFormat"
            :getCalendarContainer="node => node.parentNode"
          />
        </a-form-model-item>
        <a-form-model-item
          label="性别"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
        >
          <a-select
            v-model="model.sex"
            placeholder="请选择性别"
            :getPopupContainer="(target) => target.parentNode"
          >
            <a-select-option :value="1">男</a-select-option>
            <a-select-option :value="2">女</a-select-option>
          </a-select>
        </a-form-model-item>
        <a-form-model-item
          label="邮箱"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
          prop="email"
        >
          <a-input
            placeholder="请输入邮箱"
            v-model="model.email"
          />
        </a-form-model-item>
        <a-form-model-item
          label="手机号码"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
          prop="phone"
        >
          <a-input
            placeholder="请输入手机号码"
            v-model="model.phone"
          />
        </a-form-model-item>
        <a-form-model-item
          label="座机"
          :labelCol="labelCol"
          :wrapperCol="wrapperCol"
          prop="telephone"
        >
          <a-input
            placeholder="请输入座机"
            v-model="model.telephone"
          />
        </a-form-model-item>
        <a-form-model-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">
          <a-radio-group v-model="model.userType">
            <a-radio :value="1">普通用户</a-radio>
            <a-radio :value="2">工段主管</a-radio>
            <a-radio :value="3">车间主管</a-radio>
            <a-radio :value="4">公司主管</a-radio>
          </a-radio-group>
        </a-form-model-item>
        <!--<a-form-model-item label="工作流引擎" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
        <!--<j-dict-select-tag  v-model="model.activitiSync"  placeholder="请选择是否同步工作流引擎" :type="'radio'" dictCode="activiti_sync"/>-->
        <!--</a-form-model-item>-->
      </a-form-model>
    </a-spin>
@@ -313,7 +264,11 @@
      </a-button>
    </div>
    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'选择设备'"/>
    <select-device-modal
      ref="selectDeviceModal"
      @selectFinished="selectOK"
      :title="'选择设备'"
    />
  </a-drawer>
</template>
@@ -326,6 +281,7 @@
  import { disabledAuthFilter } from '@/utils/authFilter'
  import { duplicateCheck } from '@/api/api'
  import JSelectProduction from '../../../components/jeecgbiz/JSelectProduction'
  import JSelectRepairDepart from '../../../components/jeecgbiz/JSelectRepairDepart'
  import { mapActions } from 'vuex'
  import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
  import SelectDeviceModal from './SelectDeviceModal'
@@ -334,13 +290,15 @@
    name: 'UserModal',
    components: {
      SelectDeviceModal,
      JSelectProduction
      JSelectProduction,
      JSelectRepairDepart
    },
    data() {
      return {
        departDisabled: false, //是否是我的部门调用该页面
        productionDisabled: false, //是否是我的车间调用该页面
        roleDisabled: false, //是否是角色维护调用该页面
        repairDepartDisabled: false, //是否是我的维修部门班组调用该页面
        modalWidth: 800,
        drawerWidth: 700,
        modaltoggleFlag: true,
@@ -390,15 +348,19 @@
          userProductionList: '/sys/user/userProductionList',
          userId: '/sys/user/generateUserId', // 引入生成添加用户情况下的url
          syncUserByUserName: '/act/process/extActProcess/doSyncUserByUserName',//同步用户到工作流
          queryTenantList: '/sys/tenant/queryList'
          queryTenantList: '/sys/tenant/queryList',
          userRepairDepartList: '/sys/user/userRepairDepartList',
          repairDepartTreeList: '/eam/eamBaseRepairDepart/queryTreeList'
        },
        tenantsOptions: [],
        rolesOptions: [],
        nextDepartOptions: [],
        nextProductionOptions: [],
        nextRepairDepartOptions: [],
        isDepartType: '',
        model: {
          selectedProduction: ''
          selectedProduction: '',
          selectedRepairDeparts: ''
        }
      }
    },
@@ -426,6 +388,7 @@
      this.initRoleList()
      this.initTenantList()
      this.queryTreeData()
      this.getRepairDepartTreeDataByApi()
    },
    computed: {
      uploadAction: function() {
@@ -448,14 +411,30 @@
        }).finally(() => {
        })
      },
      // 获取维修班组树
      getRepairDepartTreeDataByApi() {
        getAction(this.url.repairDepartTreeList)
          .then(res => {
            if (res.success) {
              this.repairDepartTreeData = res.result
            } else {
              this.$notification.warning({
                message: '消息',
                description: res.message
              })
            }
          })
      },
      add() {
        this.refresh()
        this.edit({
          activitiSync: '1',
          userType: 0,
          userIdentity: 1,
          selectedroles: '',
          selecteddeparts: '',
          selectedProduction: ''
          selectedProduction: '',
          selectedRepairDeparts: ''
        })
      },
      edit(record) {
@@ -476,6 +455,8 @@
        if (record.hasOwnProperty('id')) {
          that.getUserRoles(record.id)
          that.getUserDeparts(record.id)
          that.getUserProductions(record.id)
          that.getUserRepairDeparts(record.id)
        }
      },
      isDisabledAuth(code) {
@@ -548,7 +529,9 @@
            that.nextDepartOptions = departOptions
          }
        })
      },
      getUserProductions(userid) {
        let that = this
        // 获取车间分配
        getAction(that.url.userProductionList, { userId: userid }).then((res) => {
          if (res.success) {
@@ -567,7 +550,27 @@
            that.nextProductionOptions = ProductionOptions
          }
        })
        //车间的url
      },
      getUserRepairDeparts(userid) {
        let that = this
        // 获取维修部门/班组分配
        getAction(that.url.userRepairDepartList, { userId: userid }).then((res) => {
          if (res.success) {
            let repairDepartOptions = []
            let selectedRepairDepartKeys = []
            for (let i = 0; i < res.result.length; i++) {
              selectedRepairDepartKeys.push(res.result[i].key)
              //新增负责维修部门/班组选择下拉框
              repairDepartOptions.push({
                value: res.result[i].key,
                label: res.result[i].title
              })
            }
            this.$set(this.model, 'selectedRepairDeparts', selectedRepairDepartKeys.join(','))
            that.nextRepairDepartOptions = repairDepartOptions
          }
        })
      },
      backDepartInfo(info) {
        this.model.departIds = this.model.selecteddeparts
@@ -583,11 +586,19 @@
          return c
        })
      },
      backRepairDepartInfo(info) {
        this.model.repairDepartIds = this.model.selectedRepairDeparts
        this.nextRepairDepartOptions = info.map((item, index, arr) => {
          let c = { label: item.text, value: item.value + '' }
          return c
        })
      },
      refresh() {
        this.userId = ''
        this.nextDepartOptions = []
        this.nextProductionOptions = []
        this.nextRepairDepartOptions = []
        this.departIdShow = false
      },
      close() {
@@ -596,6 +607,7 @@
        this.disableSubmit = false
        this.nextDepartOptions = []
        this.nextProductionOptions = []
        this.nextRepairDepartOptions = []
        this.departIdShow = false
        this.$refs.form.resetFields()
      },