zhouwx
2025-05-19 457f9c817adef8b003ee6379f493798bae5cbb69
src/views/Admin/components/sameLevelMod.vue
@@ -12,17 +12,17 @@
      :afterClose="clearMod"
  >
    <a-form-model ref="ruleForm" :rules="rules" :model="form" :label-col="labelCol" :wrapper-col="wrapperCol" :colon="false">
      <a-form-model-item label="姓名或称呼" prop="name">
        <a-input v-model="form.name"/>
      <a-form-model-item label="姓名或称呼" prop="recipientName">
        <a-input v-model="form.recipientName"/>
      </a-form-model-item>
      <a-form-model-item label="单位名称(备注)" prop="depName">
        <a-input v-model="form.depName"/>
      <a-form-model-item label="单位名称(备注)" prop="company">
        <a-input v-model="form.company"/>
      </a-form-model-item>
      <a-form-model-item label="手机号码" prop="phone">
        <a-input v-model="form.phone"/>
      </a-form-model-item>
      <a-form-model-item label="选择级别" prop="level">
        <a-select v-model="form.level" placeholder="监管级别">
      <a-form-model-item label="单位层级">
        <a-select v-model="form.unittype" placeholder="单位层级" disabled>
          <a-select-option :value="1">
            省级
          </a-select-option>
@@ -37,25 +37,47 @@
          </a-select-option>
        </a-select>
      </a-form-model-item>
      <a-form-model-item label="所属地区" prop="area">
      <a-form-model-item label="所属地区" prop="districtId">
        <a-tree-select
            v-model="form.area"
            v-model="form.districtId"
            style="width: 100%"
            :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
            :tree-data="areaData"
            placeholder="行政区划"
            :replaceFields="replaceFields"
            @change="changeArea"
            disabled
        >
        </a-tree-select>
      </a-form-model-item>
      <a-form-model-item label="选择分组" prop="peerRecipientGroupId">
        <a-select v-model="form.peerRecipientGroupId"  style="width: 100%">
          <a-select-option v-for="(item,index) in groupData" :value="item.id" :key="index">{{item.name}}</a-select-option>
        </a-select>
      </a-form-model-item>
    </a-form-model>
  </a-modal>
</template>
<script>
import { addUser } from '@/api/user'
import {addRecipient, addUser, getSameLevelGroupList, updateRecipient, updateUser} from "@/api/user";
import {verifySimplePhone} from "@/util/validate";
export default {
  name: 'userMod',
  props: [],
  data () {
    let validatePhone = (rule, value, callback)=>{
      if(value === ''){
        callback(new Error('请输入手机号'))
      }else{
        if(!verifySimplePhone(value)){
          callback(new Error('手机号格式有误'))
        }else{
          callback()
        }
      }
    }
    return {
      title: '新增用户',
      visible: false,
@@ -63,20 +85,27 @@
      labelCol: { span: 4 },
      wrapperCol: { span: 14 },
      areaData: [],
      groupData: [],
      replaceFields: {
        children:'children',
        title:'name',
        key:'id',
        value: 'id'
      },
      unitName: '',
      form: {
        name: '',
        depName: '',
        id: null,
        recipientName: '',
        company: '',
        phone: '',
        level: null,
        area: null
        unittype: null,
        districtId: null,
        peerRecipientGroupId: ''
      },
      rules: {
        name: [{ required: true, message: '请输入姓名', trigger: 'blur'}],
        phone: [{ required: true, message: '请输入手机号', trigger: 'blur'}],
        depName: [{ required: true, message: '请输入单位名称', trigger: 'blur'}],
        level: [{ required: true, message: '请选择监管级别', trigger: 'change'}],
        area: [{ required: true, message: '请选择行政区划', trigger: 'change'}]
        recipientName: [{ required: true, message: '请输入姓名或称呼', trigger: 'blur'}],
        company: [{ required: true, message: '请输入单位名称(备注)', trigger: 'blur'}],
        phone: [{ required: true, validator: validatePhone, trigger: 'blur'}],
      }
    }
  },
@@ -84,32 +113,71 @@
    const t = this
  },
  methods:{
    openDialog(type,data){
    openDialog(type,data,group){
      const t = this
      group.forEach(item => {
        if(item.name === '未分类'){
          item.id = ''
        }
      })
      t.groupData = group
      console.log(t.groupData,'data222')
      if(type == 'add'){
        t.title = '新增用户'
        t.form = {
          name: '',
          depName: '',
          id: null,
          recipientName: '',
          company: '',
          phone: '',
          level: null,
          area: null
          unittype: null,
          districtId: null,
          peerRecipientGroupId: ''
        }
      }else{
        t.title = '编辑用户'
        t.form = data
        for(let i in data){
          if(t.isValidKey(i,t.form)){
            t.form[i] = data[i]
          }
        }
        t.form.peerRecipientGroupId = data.peerRecipientGroupId ? data.peerRecipientGroupId: ''
      }
      t.visible = true
    },
    isValidKey(key, object){
      return key in object;
    },
    clearMod(){
      this.$refs.ruleForm.clearValidate()
      this.$refs.ruleForm.resetFields()
    },
    onSubmit() {
      this.$refs.ruleForm.validate(valid => {
        if (valid) {
          alert('submit!');
          if(this.title == '新增用户'){
            const { id,...data } = this.form
            addRecipient(data).then((res)=>{
              if(res.data.code == 100){
                this.$message.success('新增平级接收人成功')
                this.$emit('refresh')
              }else{
                this.$message.error(res.data.msg)
              }
            })
          }else{
            const data = this.form
            updateRecipient(data).then((res)=>{
              if(res.data.code == 100){
                this.$message.success('修改用户成功')
                this.$emit('refresh')
              }else{
                this.$message.error(res.data.msg)
              }
            })
          }
          this.visible = false
        } else {
          return false;
@@ -117,16 +185,40 @@
      });
    },
    handleOk(e) {
    changeArea(value, label, extra){
      const t = this
      t.confirmLoading = true;
      t.form.districtId = value
      const code = t.findCodeById(t.areaData,value).code
      if(code.length == 2){
        t.form.company = '自治区自然灾害综合监测预警中心'
        // t.form.province = t.findNodeByCode(t.areaData,code).name
        // t.form.city = ''
        // t.form.area = ''
        // t.form.town = ''
      } else if(code.length == 9){
        // t.form.province = t.findNodeByCode(t.areaData,code.substr(0,2)).name
        // t.form.city = t.findNodeByCode(t.areaData,code.substr(0,4)).name
        // t.form.area = t.findNodeByCode(t.areaData,code.substr(0,6)).name
        // t.form.town = t.findNodeByCode(t.areaData,code).name
        t.form.company = label[0]
      } else{
        // if(code.length == 4){
        //   t.form.city = t.findNodeByCode(t.areaData,code).name
        //   t.form.area = ''
        // }
        // if(code.length == 6){
        //   t.form.city = t.findNodeByCode(t.areaData,code.substr(0,4)).name
        //   t.form.area = t.findNodeByCode(t.areaData,code).name
        // }
        // t.form.province = t.findNodeByCode(t.areaData,code.substr(0,2)).name
        // t.form.town = ''
        t.form.company = label[0] + '自然灾害综合预警监测中心'
      }
    },
    handleCancel(e) {
      const t = this
      t.visible = false;
    },
    onChange(value) {
      console.log(value);
    }
  }
}