luobisheng
2022-11-08 2406ac9a70e51e76c6ba95efb69f641c7b22e8ea
src/views/systemSetting/platform/cockpitManage/createUser/index.vue
@@ -7,114 +7,111 @@
          label-width="140px"
          autoComplete="on"
          :model="depart"
          :rules="createDepartRules"
          :rules="departRules"
          label-position="right"
        >
          <!-- 部门名称 -->
          <span style="heght:18px;display:block;line-height: 14px;">
            执法人员结构
          </span>
          <el-form-item class="optionItem" label="部门名称:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入部门名称"></el-input>
          <el-form-item class="optionItem" label="部门名称:" prop="name">
            <el-input v-model="depart.name" placeholder="请输入部门名称"></el-input>
          </el-form-item>
          <!-- 上级部门 -->
          <el-form-item class="optionItem" label="部门人数:" prop="departName">
            <el-input v-model="depart.departNumber" placeholder="请输入部门人数"></el-input>
          <el-form-item class="optionItem" label="部门人数:" prop="peopleNumber">
            <el-input v-model="depart.peopleNumber" placeholder="请输入部门人数"></el-input>
          </el-form-item>
          <el-form-item class="optionItem" label="辖区管理:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入辖区管理"></el-input>
          <el-form-item class="optionItem" label="辖区管理:" prop="regionIds">
            <el-input v-model="depart.regionIds" placeholder="请输入辖区管理"></el-input>
          </el-form-item>
          <el-form-item class="optionItem" label="本科学历以上人数:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入本科学历以上人数"></el-input>
          <el-form-item class="optionItem" label="本科学历以上人数:" prop="upUndergraduatePeopleNumber">
            <el-input v-model="depart.upUndergraduatePeopleNumber" placeholder="请输入本科学历以上人数"></el-input>
          </el-form-item>
          <el-form-item class="optionItem" label="持证人员数:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入持证人员数"></el-input>
          <el-form-item class="optionItem" label="持证人员数:" prop="holderNumber">
            <el-input v-model="depart.holderNumber" placeholder="请输入持证人员数"></el-input>
          </el-form-item>
          <el-form-item class="optionItem" label="45岁以下人数:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入45岁以下人数"></el-input>
          <el-form-item class="optionItem" label="45岁以下人数:" prop="underFortyFivePeopleNumber">
            <el-input v-model="depart.underFortyFivePeopleNumber" placeholder="请输入45岁以下人数"></el-input>
          </el-form-item>
          <el-form-item class="optionItem" label="持法律职业资格证书人数:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入持法律职业资格证书人数"></el-input>
          <el-form-item class="optionItem" label="持法律职业资格证书人数:" prop="legalProfessionalQualificationCertificatePeopleNumber">
            <el-input v-model="depart.legalProfessionalQualificationCertificatePeopleNumber" placeholder="请输入持法律职业资格证书人数"></el-input>
          </el-form-item>
          <span>
            作风纪律
          </span>
          <el-form-item class="optionItem" label="通报数量:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入通报数量"></el-input>
          <el-form-item class="optionItem" label="通报数量:" prop="reportNumber">
            <el-input v-model="depart.reportNumber" placeholder="请输入通报数量"></el-input>
          </el-form-item>
          <el-form-item class="optionItem" label="违纪行为数量:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入违纪行为数量"></el-input>
          <el-form-item class="optionItem" label="违纪行为数量:" prop="disciplinaryOffenceNumber">
            <el-input v-model="depart.disciplinaryOffenceNumber" placeholder="请输入违纪行为数量"></el-input>
          </el-form-item>
          <el-form-item class="optionItem" label="违法犯罪行为数量:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入违法犯罪行为数量"></el-input>
          <el-form-item class="optionItem" label="违法犯罪行为数量:" prop="criminalOffenseNumber">
            <el-input v-model="depart.criminalOffenseNumber" placeholder="请输入违法犯罪行为数量"></el-input>
          </el-form-item>
          <span>案件办理</span>
          <el-form-item class="optionItem" label="每月案件办理量:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入每月案件办理量"></el-input>
          <el-form-item class="optionItem" label="每月案件办理量:" prop="monthCaseNumber">
            <el-input v-model="depart.monthCaseNumber" placeholder="请输入每月案件办理量"></el-input>
          </el-form-item>
          <el-form-item class="optionItem" label="未超时案件量:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入未超时案件量"></el-input>
          <el-form-item class="optionItem" label="未超时案件量:" prop="noTimeoutCaseNumber">
            <el-input v-model="depart.noTimeoutCaseNumber" placeholder="请输入未超时案件量"></el-input>
          </el-form-item>
          <el-form-item class="optionItem" label="复议或诉讼数:" prop="departName">
            <el-input v-model="depart.departName" placeholder="请输入复议或诉讼数"></el-input>
          <el-form-item class="optionItem" label="复议或诉讼数:" prop="reviewOrLawsuitNumber">
            <el-input v-model="depart.reviewOrLawsuitNumber" placeholder="请输入复议或诉讼数"></el-input>
          </el-form-item>
        </el-form>
      </div>
    </main>
    <footer>
      <div class="optionBtn">
        <el-button @click="handleClose">取消</el-button>
        <el-button type="primary" class="btn submit" @click="handleUser"
          >确定</el-button
        >
        <el-button type="primary" class="btn submit" @click="handleUser()">确定</el-button>
      </div>
    </footer>
  </div>
</template>
<script>
import { getTypeList } from "@/utils/helper";
import { addTeam } from "@/api/system/portal/teamConstruction";
import { SUCCESS_CODE } from "@/utils";
export default {
  data() {
    const validateNickname = (rule, value, callback) => {
      if (!value) {
        callback(new Error("请填写部门名称"));
      } else {
        callback();
      }
    };
    const validatePass = (rule, value, callback) => {
      if (!value) {
        callback();
      } else {
        callback();
      }
    };
    const validatePhone = (rule, value, callback) => {
      if (!value) {
        callback();
      } else {
        callback();
      }
    };
    return {
      depart: {
        departName: "",
        parentId: "",
        departType: "",
        departDes: "",
        // 执法人员结构
        name: '',
        peopleNumber: '',
        regionIds: '',
        upUndergraduatePeopleNumber: '',
        holderNumber: '',
        underFortyFivePeopleNumber: '',
        legalProfessionalQualificationCertificatePeopleNumber: '',
        // 作风纪律
        reportNumber: null,
        disciplinaryOffenceNumber: null,
        criminalOffenseNumber: null,
        // 案件办理
        monthCaseNumber: null,
        noTimeoutCaseNumber: null,
        reviewOrLawsuitNumber: null
      },
      createDepartRules: {
        departName: [
          { required: true, trigger: "blur", validator: validateNickname },
        ],
        parentId: [
          { required: false, trigger: "blur", validator: validatePass },
        ],
        departType: [
          { required: false, trigger: "blur", validator: validatePhone },
        ],
        departDes: [{ required: false, trigger: "blur" }],
      departRules: {
        name: [{ required: true, trigger: "blur", message: '部门名称必填'  }],
        peopleNumber: [{ required: true, trigger: "blur", message: '部门人数必填' }],
        regionIds: [{ required: true, trigger: "blur", message: '辖区管理必填' }],
        upUndergraduatePeopleNumber: [{ required: true, trigger: "blur", message: '本科学历以上人数必填' }],
        holderNumber: [{ required: true, trigger: "blur", message: '持证人员数必填' }],
        underFortyFivePeopleNumber: [{ required: true, trigger: "blur", message: '45岁以下人数必填' }],
        legalProfessionalQualificationCertificatePeopleNumber: [{ required: true, trigger: "blur", message: '持法律职业资格证书人数必填' }],
        reportNumber: [{ required: true, trigger: "blur", message: '通报数量必填' }],
        disciplinaryOffenceNumber: [{ required: true, trigger: "blur", message: '违纪行为数量:必填' }],
        criminalOffenseNumber: [{ required: true, trigger: "blur", message: '违法犯罪行为数量必填' }],
        monthCaseNumber: [{ required: true, trigger: "blur", message: '每月案件办理量必填' }],
        noTimeoutCaseNumber: [{ required: true, trigger: "blur", message: '未超时案件量必填' }],
        reviewOrLawsuitNumber: [{ required: true, trigger: "blur", message: '复议或诉讼数必填' }]
      },
      userList: [],
      departList: [],
@@ -128,16 +125,17 @@
      mylabel: "",
      defaultProps: {
        children: "children",
        label: "departName",
        label: "name",
      },
    };
  },
  created() {
    const that = this;
    // 获取部门树形结构图
    this.getDepartTree();
    // 获取用户列表
    this.getUserList();
    // 获取部门类型列表
    this.getDepartTypeList();
  },
@@ -145,55 +143,37 @@
    handleUser() {
      this.$refs.user.validate((valid) => {
        if (valid) {
          const { depart, checkedList, selectOrg } = this;
          const arr = [];
          checkedList.forEach((item) => {
            arr.push({ leader: item.leader, userId: item.id });
          });
          console.log(arr);
          this.$axios({
            method: "post",
            url: "/sccg/depart/create",
            data: {
              departName: depart.departName,
              parentId: selectOrg.orgsid[0],
              departType: depart.departType,
              departDes: depart.departDes,
              departManagerList: arr,
            },
          }).then((res) => {
            if (res.code === 200) {
              this.$message({
                message: res.message,
                type: "success",
          addTeam(this.depart)
              .then(({ code, message }) => {
                if (code === SUCCESS_CODE) {
                  this.$message({ type: 'success', message });
                  this.$emit('closeUpdateDialog');
                } else {
                  this.$message({ type: 'warning', message });
                }
              })
              .catch(err => {
                this.$message({ type: 'error', message: err });
              });
              this.refresh();
            } else if (res.code === 2001) {
              this.$message({
                message: res.message,
                type: "error",
              });
              this.refresh();
            }
          });
        } else {
          return false;
          this.$message({ type: 'warning', message: '请检查必填项' });
        }
      });
    },
    // 获取部门树形结构图
    getDepartTree() {
      this.$axios({
        method: "get",
        url: "sccg/depart/tree",
      }).then((res) => {
        // console.log(res);
        // res.data.unshift({ id: 0, departName: "顶级菜单" });
        this.departList = res.data;
      });
    },
    // 获取所有用户信息
    getUserList() {
      // 获取所有用户信息、用户查询(暂时支持电话号码)
      this.$axios.get(`/sccg/depart/query_surplus_user`).then((res) => {
        if (res.code === 200) {
@@ -201,13 +181,12 @@
        }
      });
    },
    addUser() {
      console.log(this.checkedUser);
      console.log(this.userList);
      this.checkedList = [];
      this.userList.forEach((item) => {
        this.checkedUser.forEach((child) => {
          if (item.id == child) {
          if (item.id === child) {
            this.checkedList.push({
              id: item.id,
              username: item.username,
@@ -219,17 +198,22 @@
      this.checkedList[0].leader = true;
      this.openUser = false;
    },
    handleClose() {
      this.$emit("changMyDialog", { flag: false });
    },
    // 获取部门类型
    async getDepartTypeList() {
      this.departTypeList = await getTypeList(1, "08");
    },
    handleCheck(data, checked) {
      this.depart.parentId = data.departName;
      this.depart.parentId = data.name;
      // 获取当前选择的id在数组中的索引
      const indexs = this.selectOrg.orgsid.indexOf(data.id);
      // 如果不存在数组中,并且数组中已经有一个id并且checked为true的时候,代表不能再次选择。
      if (indexs < 0 && this.selectOrg.orgsid.length === 1 && checked) {
        this.$message({
@@ -237,9 +221,11 @@
          type: "warning",
          showClose: true,
        });
        // 设置已选择的节点为false 很重要
        this.$refs.tree.setChecked(data, false);
      } else if (this.selectOrg.orgsid.length === 0 && checked) {
        // 发现数组为空 并且是已选择
        // 防止数组有值,首先清空,再push
        this.selectOrg.orgsid = [];
@@ -249,11 +235,13 @@
        this.selectOrg.orgsid.length === 1 &&
        !checked
      ) {
        // 再次直接进行赋值为空操作
        this.selectOrg.orgsid = [];
        this.depart.parentId = "";
      }
    },
    // 设置领导
    setLeader(idx) {
      this.checkedList.forEach((item, index) => {