add.vue 5.58 KB
Newer Older
xulili's avatar
xulili committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
<template>
  <el-dialog
    custom-class="party-dialog"
    title="新建账号"
    :visible.sync="dialogVisible"
    width="720px"
    :before-close="handleClose"
  >
    <div class="dialog-content">
      <el-form
        ref="form"
        :model="form"
        :rules="rules"
        label-width="80px"
        label-position="top"
        class="party-form"
      >
        <div class="form-row">
          <el-form-item label="系统用户名" prop="userName">
xulili's avatar
xulili committed
20 21 22 23 24
            <el-input
              v-model.trim="form.userName"
              placeholder="请填写"
              oninput="value = value.trim()"
            ></el-input>
xulili's avatar
xulili committed
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
          </el-form-item>
          <el-form-item label="所在机构" prop="orgId">
            <el-select v-model="form.orgId" filterable placeholder="请选择">
              <el-option
                v-for="item in organList"
                :key="item.id"
                :label="item.name"
                :value="item.id"
              >
              </el-option>
            </el-select>
          </el-form-item>
        </div>
        <el-form-item label="账号有效期" prop="permanent">
          <el-radio-group v-model="form.permanent">
            <el-radio :label="true">永久有效</el-radio>
            <el-radio :label="false">设置有效期</el-radio>
          </el-radio-group>
          <div v-if="!form.permanent">
            <el-date-picker
              class="mt16"
              v-model="form.date"
              type="daterange"
xulili's avatar
xulili committed
48
              value-format="yyyy-MM-dd"
xulili's avatar
xulili committed
49 50
              range-separator="至"
              start-placeholder="开始日期"
xulili's avatar
xulili committed
51 52
              end-placeholder="结束日期"
            >
xulili's avatar
xulili committed
53 54 55 56 57 58
            </el-date-picker>
          </div>
        </el-form-item>
        <el-form-item label="账号类型" prop="roleList">
          <el-checkbox-group v-model="form.roleList" :min="1">
            <el-checkbox
xulili's avatar
xulili committed
59
              v-for="(item, index) in rolesList"
xulili's avatar
xulili committed
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
              :key="index"
              :label="item.id"
            >
              {{ item.name }}
            </el-checkbox>
          </el-checkbox-group>
        </el-form-item>
      </el-form>
    </div>
    <div slot="footer" class="dialog-footer btn-group">
      <el-button @click="handleClose()">取 消</el-button>
      <el-button type="primary" @click="handleSubmit()">确 定</el-button>
    </div>
  </el-dialog>
</template>
<script>
export default {
  data() {
    return {
      dialogVisible: false,
      form: {
        userName: "",
        orgId: "",
        permanent: true,
        date: "",
        roleList: [],
xulili's avatar
xulili committed
86
        type: 1, //1.用户账号 2.平台单位单位管理员账号 3.机顶盒账号 4.运维账号
xulili's avatar
xulili committed
87 88 89 90
      },
      rules: {
        userName: [
          { required: true, message: "请选择系统用户名", trigger: "change" },
xulili's avatar
xulili committed
91
          { min: 1, max: 20, message: "请输入1到20个字符" },
xulili's avatar
xulili committed
92 93 94 95 96 97 98
        ],
        orgId: [
          { required: true, message: "请输入所在机构", trigger: "change" },
        ],
        permanent: [
          { required: true, message: "请选择账号有效期", trigger: "change" },
        ],
xulili's avatar
xulili committed
99 100 101 102 103 104 105 106
        roleList: [
          {
            type: "array",
            required: true,
            message: "请选择账号类型",
            trigger: "change",
          },
        ],
xulili's avatar
xulili committed
107 108 109
      },
    };
  },
xulili's avatar
xulili committed
110 111 112 113 114 115
  props: {
    organList: {
      type: Array,
      default: () => {
        return [];
      },
xulili's avatar
xulili committed
116
    },
xulili's avatar
xulili committed
117 118 119 120 121
    rolesList: {
      type: Array,
      default: () => {
        return [];
      },
xulili's avatar
xulili committed
122
    },
xulili's avatar
xulili committed
123 124 125
  },
  mounted() {},
  methods: {
xulili's avatar
xulili committed
126 127 128 129
    // 弹窗关闭
    handleClose() {
      this.$confirm("确认关闭?")
        .then((_) => {
xulili's avatar
xulili committed
130
          this.handleReset();
xulili's avatar
xulili committed
131 132 133
        })
        .catch((_) => {});
    },
xulili's avatar
xulili committed
134 135 136 137 138 139 140 141 142 143 144
    handleReset() {
      this.dialogVisible = false;
      this.$refs.form.resetFields();
      this.form = {
        userName: "",
        orgId: "",
        permanent: true,
        date: "",
        roleList: [],
        type: 1,
      };
xulili's avatar
xulili committed
145 146
    },
    // 提交
xulili's avatar
xulili committed
147
    handleSubmit() {
xulili's avatar
xulili committed
148 149 150
      // 校验用户输入值
      this.$refs.form.validate((valid) => {
        if (valid) {
xulili's avatar
xulili committed
151 152 153 154 155 156 157 158
          let user = {};
          if (!this.form.permanent && !this.form.date) {
            this.$message.error("请选择有效期");
            return false;
          }
          if (!this.form.permanent) {
            user.effectiveDate = this.form.date[0];
            user.exiredDate = this.form.date[1];
xulili's avatar
xulili committed
159 160 161
          }
          user.userName = this.form.userName;
          user.orgId = this.form.orgId;
xulili's avatar
xulili committed
162
          user.roleList = this.form.roleList;
xulili's avatar
xulili committed
163
          user.permanent = this.form.permanent;
xulili's avatar
xulili committed
164
          user.type = this.form.type;
xulili's avatar
xulili committed
165 166 167 168 169 170 171 172 173
          this.$https(
            {
              method: "post",
              url: "tUser/add",
              authType: this.backToken,
            },
            user
          )
            .then((res) => {
xulili's avatar
xulili committed
174 175 176 177 178 179 180 181
              if (res.status == 200) {
                if (res.data.resultCode == 200) {
                  this.$message({
                    type: "success",
                    message: res.data.message,
                  });
                  this.handleReset();
                  this.$emit("success", true);
xulili's avatar
xulili committed
182
                } else {
xulili's avatar
xulili committed
183 184
                  this.$message.error(res.data.message);
                }
xulili's avatar
xulili committed
185
              } else {
xulili's avatar
xulili committed
186 187
                this.$message.error(res.data);
              }
xulili's avatar
xulili committed
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
            })
            .catch((err) => {
              console.log(res);
            });
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    },
  },
};
</script>
<style lang="less" scoped>
.form-row {
  display: flex;
  justify-content: space-between;
}
</style>