南昌市物联网技防平台-前端
tangzy
2021-04-01 e04b135bb8ea14634b00dd988d4ca3f206e89358
客户管理
2 files modified
703 ■■■■ changed files
src/api/system/tenant.js 143 ●●●●● patch | view | raw | blame | history
src/views/system/cs.vue 560 ●●●● patch | view | raw | blame | history
src/api/system/tenant.js
@@ -21,6 +21,62 @@
    }
  })
}
export const selectTy = (hn) => {
  return request({
    url: '/api/blade-system/tenant/selectTy',
    method: 'post',
    params: {
      hn
    }
  })
}
export const deletey = (hn) => {
  return request({
    url: '/api/blade-system/tenant/deletey',
    method: 'post',
    params: {
      hn
    }
  })
}
export const deletes = (hn) => {
  return request({
    url: '/api/blade-system/tenant/deletes',
    method: 'post',
    params: {
      hn
    }
  })
}
export const deleter = (hn) => {
  return request({
    url: '/api/blade-system/tenant/deleter',
    method: 'post',
    params: {
      hn
    }
  })
}
export const selectTs = (hn) => {
  return request({
    url: '/api/blade-system/tenant/selectTs',
    method: 'post',
    params: {
      hn
    }
  })
}
export const selectTr = (hn) => {
  return request({
    url: '/api/blade-system/tenant/selectTr',
    method: 'post',
    params: {
      hn
    }
  })
}
export const remove = (ids) => {
  return request({
@@ -47,6 +103,93 @@
    data: row
  })
}
export const instery = (dj, had, ht, ctime, content,hn) => {
  return request({
    url: '/api/blade-system/tenant/instery',
    method: 'post',
    params: {
      dj,
      had,
      ht,
      ctime,
      content,
      hn
    }
  })
}
export const insertsr = (category, attributes, developers, had, housetype, content, hn) => {
  return request({
    url: '/api/blade-system/tenant/insertsr',
    method: 'post',
    params: {
      category,
      attributes,
      developers,
      had,
      housetype,
      content,
      hn
    }
  })
}
export const updateInfor = (category, attributes, developers, had, housetype, content, hn) => {
  return request({
    url: '/api/blade-system/tenant/updateInfor',
    method: 'post',
    params: {
      category,
      attributes,
      developers,
      had,
      housetype,
      content,
      hn
    }
  })
}
export const updateInfoy = (dj, had, ht, ctime, content,hn) => {
  return request({
    url: '/api/blade-system/tenant/updateInfoy',
    method: 'post',
    params: {
      dj,
      had,
      ht,
      ctime,
      content,
      hn
    }
  })
}
export const insertss = (nature, had, motto, ctime, content,hn) => {
  return request({
    url: '/api/blade-system/tenant/insertss',
    method: 'post',
    params: {
      nature,
      had,
      motto,
      ctime,
      content,
      hn
    }
  })
}
export const updateInfos = (nature, had, motto, ctime, content,hn) => {
  return request({
    url: '/api/blade-system/tenant/updateInfoy',
    method: 'post',
    params: {
      nature,
      had,
      motto,
      ctime,
      content,
      hn
    }
  })
}
export const setting = (ids, form) => {
  return request({
src/views/system/cs.vue
@@ -26,18 +26,18 @@
                   plain
                   @click="handleDelete">删 除
        </el-button>
        <el-button size="small"
                   plain
                   v-if="userInfo.role_name.includes('administrator')"
                   icon="el-icon-setting"
                   @click="handleSetting">授权配置
        </el-button>
        <el-button size="small"
                   plain
                   v-if="userInfo.role_name.includes('administrator')"
                   icon="el-icon-coin"
                   @click="handleDatasource">数据源配置
        </el-button>
<!--        <el-button size="small"-->
<!--                   plain-->
<!--                   v-if="userInfo.role_name.includes('administrator')"-->
<!--                   icon="el-icon-setting"-->
<!--                   @click="handleSetting">授权配置-->
<!--        </el-button>-->
<!--        <el-button size="small"-->
<!--                   plain-->
<!--                   v-if="userInfo.role_name.includes('administrator')"-->
<!--                   icon="el-icon-coin"-->
<!--                   @click="handleDatasource">数据源配置-->
<!--        </el-button>-->
      </template>
      <template slot-scope="{row}"
                slot="accountNumber">
@@ -47,9 +47,8 @@
                slot="expireTime">
        <el-tag>{{ row.expireTime ? row.expireTime : '不限制' }}</el-tag>
      </template>
      <template slot-scope="{ row }" slot="jfzt">
        <i class="el-icon-check client-jf" v-if="row.type == '0'"></i>
        <i class="el-icon-close client-qf" v-else-if="row.type == '1'"></i>
      <template slot-scope="{row}" slot="type">
        <el-tag>{{row.type==='0'?'医院':row.type==='1'?'学校':row.type==='2'?'小区':'未知'}}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="租户授权配置"
@@ -68,13 +67,16 @@
</template>
<script>
import {getList, getDetail, remove, update, add, setting, datasource} from "@/api/system/tenant";
import {getList, getDetail, remove, update, add, setting, datasource,instery,updateInfoy,selectTy,insertss,updateInfos,selectTs,insertsr,updateInfor,selectTr,deletey,deletes,deleter} from "@/api/system/tenant";
import {mapGetters} from "vuex";
import AvueMap from 'avue-plugin-map'
import website from "@/config/website";
import {getRoleTree} from "@/api/system/role";
import AvueMap from 'avue-plugin-map'
var that;
export default {
  data() {
    that = this;
    return {
      form: {},
      selectionList: [],
@@ -114,11 +116,11 @@
            }]
          },
          {
            label: "用户名称",
            label: "客户名称",
            prop: "tenantName",
            search: true,
            width: 190,
            span: 24,
            span: 12,
            rules: [{
              required: true,
              message: "请输入参数名称",
@@ -142,10 +144,83 @@
            width: 150,
          },
          {
            label: "省份",
            prop: "province",
            search: true,
            searchSpan: 3,
            searchLabelWidth: 45,
            placeholder: "省份",
            type: "select",
            props: {
              label: "name",
              value: "code"
            },
            cascaderItem: ["city", "district"],
            dicUrl: "/api/blade-system/region/select",
            span: 6,
            className: "cityClass1"
          },
          {
            label: "地市",
            prop: "city",
            type: "select",
            searchPlaceholder: "地市",
            placeholder: "地市",
            searchLabelWidth: 1,
            searchSpan: 2,
            search: true,
            props: {
              label: "name",
              value: "code"
            },
            dicUrl: "/api/blade-system/region/select?code={{key}}",
            span: 3,
            labelWidth: "0",
            className: "cityClass2"
          },
          {
            label: "区县",
            searchSpan: 2,
            searchLabelWidth: 1,
            searchPlaceholder: "区县",
            placeholder: "区县",
            search: true,
            prop: "district",
            type: "select",
            props: {
              label: "name",
              value: "code"
            },
            dicUrl: "/api/blade-system/region/select?code={{key}}",
            span: 3,
            labelWidth: "0",
            className: "cityClass3"
          },
          {
            label: '坐标',
            prop: 'map',
            hide: true,
            span: 24,
            component: "AvueMap",
          },
          {
            label: '经度',
            hide: true,
            addDisplay: false,
            prop: 'jd',
          },
          {
            label: '纬度',
            hide: true,
            addDisplay: false,
            prop: 'wd',
          },
          {
            label: "账号额度",
            prop: "accountNumber",
            width: 90,
            slot: true,
            hide: true,
            addDisplay: false,
            editDisplay: false,
          },
@@ -154,13 +229,240 @@
            prop: "expireTime",
            width: 180,
            slot: true,
            hide: true,
            addDisplay: false,
            editDisplay: false,
          },
          {
            label: "类型",
            prop: "type",
            width: 80,
            type: "select",
            rules: [{
              required: true,
              message: "请选择类型",
              trigger: "blur"
            }],
            dicData: [
              {
                label: "医院",
                value: "0"
              },
              {
                label: "学校",
                value: "1"
              },
              {
                label: "小区",
                value: "2"
              }
            ],
            change: function (value,column) {
              if (value.value == "0") {
                that.option.group = [
                  {
                    label: '详细信息',
                    prop: 'detailInfo',
                    icon: 'el-icon-s-order',
                    column: [
                      {
                        label: "医院等级",
                        prop: "dj",
                        hide: true,
                        dicData: [],
                        props: {
                          label: "title",
                          value:""
                        },
                        checkStrictly: true,
                        rules: [{
                          required: true,
                          message: "请输入医院等级",
                          trigger: "blur"
                        }]
                      },
                      {
                        label: "医院类别",
                        prop: "ht",
                        rules: [{
                          required: true,
                          message: "请输入医院类别",
                          trigger: "blur"
                        }]
                      },
                      {
                        label: "成立时间",
                        type: "datetime",
                        prop: "ctime",
                        format: "yyyy-MM-dd",
                        valueFormat: "yyyy-MM-dd",
                        rules: [{
                          required: true,
                          message: "请输入成立时间",
                          trigger: "blur"
                        }]
                      },
                      {
                        label: "地址",
                        prop:"had",
                        rules: [{
                          required: true,
                          message: "请输入地址",
                          trigger: "blur"
                        }]
                      },
                      {
                        label: "介绍",
                        prop: "content",
                        rules: [{
                          required: true,
                          message: "请输入介绍",
                          trigger: "blur"
                        }],
                        span:24,
                      }
                    ]
                  }
                  ]
              }
              else if (value.value=="1"){
                that.option.group = [
                  {
                    label: '详细信息',
                    prop: 'dutyInfo',
                    icon: 'el-icon-s-custom',
                    column: [
                      {
                        label: "学校性质",
                        prop: "nature",
                        hide: true,
                        dicData: [],
                        props: {
                          label: "title",
                          value:""
                        },
                        rules: [{
                          required: true,
                          message: "请输入学校性质",
                          trigger: "blur"
                        }]
                      },
                      {
                        label: "校训",
                        prop: "motto",
                        rules: [{
                          required: true,
                          message: "请输入校训",
                          trigger: "blur"
                        }]
                      },
                      {
                        label: "创办时间",
                        type: "datetime",
                        prop: "ctime",
                        format: "yyyy-MM-dd",
                        valueFormat: "yyyy-MM-dd",
                        rules: [{
                          required: true,
                          message: "请输入创办时间"
                        }]
                      },
                      {
                        label: "地址",
                        prop:"had",
                        rules: [{
                          required: true,
                          message: "请输入地址"
                        }]
                      },
                      {
                        label: "介绍",
                        prop: "content",
                        span:24,
                        rules: [{
                          required: true,
                          message: "请输入介绍"
                        }]
                      }
                    ]
                  }
                ]
              }
              else if (value.value=="2") {
                that.option.group = [
                  {
                    label: '详细信息',
                    prop: 'baseInfo',
                    icon: 'el-icon-s-solid',
                    column: [
                      {
                        label: "小区类别",
                        prop: "category",
                        hide: true,
                        dicData: [],
                        props: {
                          label: "title",
                          value:""
                        },
                        rules: [{
                          required: true,
                          message: "请输入小区类别"
                        }]
                      },
                      {
                        label: "小区属性",
                        prop: "attributes",
                        rules: [{
                          required: true,
                          message: "请输入小区属性"
                        }]
                      },
                      {
                        label: "开发商",
                        prop:"developers",
                        rules: [{
                          required: true,
                          message: "请输入开发商"
                        }]
                      },
                      {
                        label: "地址",
                        prop:"had",
                        rules: [{
                          required: true,
                          message: "请输入地址"
                        }]
                      },
                      {
                        label: "户型",
                        prop:"housetype",
                        rules: [{
                          required: true,
                          message: "请输入户型"
                        }]
                      },
                      {
                        label: "介绍",
                        prop: "content",
                        rules: [{
                          required: true,
                          message: "请输入介绍"
                        }],
                        span:24,
                      }
                    ]
                  }
                ]
              }
              else {
                that.option.group =[]
              }
            }
          },
          {
            label: "绑定域名",
            prop: "domain",
            span: 24,
            hide: true,
          },
          {
            label: "系统背景",
@@ -177,88 +479,6 @@
          },
        ],
        group: [
          {
            label: '基础信息',
            prop: 'baseInfo',
            icon: 'el-icon-user-solid',
            column: [
            ]
          },
          {
            label: '详细信息',
            prop: 'detailInfo',
            icon: 'el-icon-s-order',
            column: [
              {
                label: "用户昵称",
                prop: "name",
                hide: true,
                rules: [{
                  required: true,
                  message: "请输入用户昵称",
                  trigger: "blur"
                }]
              },
              {
                label: "用户姓名",
                prop: "realName",
                rules: [{
                  required: true,
                  message: "请输入用户姓名",
                  trigger: "blur"
                }, {
                  min: 2,
                  max: 5,
                  message: '姓名长度在2到5个字符'
                }]
              },
              {
                label: "手机号码",
                prop: "phone",
                overHidden: true
              },
              {
                label: "电子邮箱",
                prop: "email",
                hide: true,
                overHidden: true
              },
              {
                label: "用户性别",
                prop: "sex",
                type: "select",
                dicData: [
                  {
                    label: "男",
                    value: 1
                  },
                  {
                    label: "女",
                    value: 2
                  },
                  {
                    label: "未知",
                    value: 3
                  }
                ],
                hide: true
              },
              {
                label: "用户生日",
                type: "date",
                prop: "birthday",
                format: "yyyy-MM-dd hh:mm:ss",
                valueFormat: "yyyy-MM-dd hh:mm:ss",
                hide: true
              },
              {
                label: "账号状态",
                prop: "statusName",
                hide: true,
                display: false
              }
            ]
          },
        ]
      },
      data: [],
@@ -305,6 +525,15 @@
      }
    };
  },
  watch:{
    'form.map':{// form是表单或者表格绑定的数据集,v-model='form'
      handler(val){
        this.form.jd = val.latitude
        this.form.wd = val.longitude
      },
      immediate: true
    }
  },
  computed: {
    ...mapGetters(["userInfo", "permission"]),
    permissionList() {
@@ -329,6 +558,15 @@
  methods: {
    rowSave(row, done, loading) {
      add(row).then(() => {
        if (row.type=="0"){
          instery(row.dj,row.had,row.ht,row.ctime,row.content,row.tenantName);
        }
        else if (row.type=="1"){
          insertss(row.nature,row.had,row.motto,row.ctime,row.content,row.tenantName);
        }
        else if (row.type=="2") {
          insertsr(row.category, row.attributes, row.developers,row.had, row.housetype, row.content, row.hn)
        }
        this.onLoad(this.page);
        this.$message({
          type: "success",
@@ -341,6 +579,15 @@
      });
    },
    rowUpdate(row, index, done, loading) {
      if (row.type=="0"){
        updateInfoy(row.dj,row.had,row.ht,row.ctime,row.content,row.tenantName);
      }
      else if (row.type=="1"){
        updateInfos(row.nature,row.had,row.motto,row.ctime,row.content,row.tenantName);
      }
      else if (row.type=="2"){
        updateInfor(row.category, row.attributes, row.developers,row.had, row.housetype, row.content, row.tenantName)
      }
      update(row).then(() => {
        this.onLoad(this.page);
        this.$message({
@@ -360,6 +607,15 @@
        type: "warning"
      })
        .then(() => {
          if (row.type=="0"){
            deletey(row.tenantName)
          }
          else if (row.type=="1"){
            deletes(row.tenantName)
          }
          else if (row.type=="2"){
            deleter(row.tenantName)
          }
          return remove(row.id);
        })
        .then(() => {
@@ -371,16 +627,100 @@
        });
    },
    beforeOpen(done, type) {
      if (["view"].includes(type)) {
      if (["edit"].includes(type)) {
        getDetail(this.form.id).then(res => {
          const data = res.data.data;
          if (!(data.accountNumber > 0)) {
            data.accountNumber = "不限制";
          if (this.form.type=="1"){
            const data = res.data.data;
            selectTs(this.form.tenantName).then( re=>{
              const data = res.data.data;
              data.nature=re.data.data[0].nature
              data.motto=re.data.data[0].motto
              data.ctime=re.data.data[0].ctime
              data.had=re.data.data[0].had
              data.content=re.data.data[0].content
              this.form = data;
            })
          }
          if (!data.expireTime) {
            data.expireTime = "不限制";
          else if (this.form.type=="0"){
            selectTy(this.form.tenantName).then( re=>{
              const data = res.data.data;
              data.dj=re.data.data[0].dj
              data.ht=re.data.data[0].ht
              data.ctime=re.data.data[0].ctime
              data.had=re.data.data[0].had
              data.content=re.data.data[0].content
              this.form = data;
            })
          }
          this.form = data;
          else if (this.form.type=="2"){
            selectTr(this.form.tenantName).then( re=>{
              const data = res.data.data;
              data.category=re.data.data[0].category
              data.attributes=re.data.data[0].attributes
              data.developers=re.data.data[0].developers
              data.had=re.data.data[0].had
              data.housetype=re.data.data[0].housetype
              data.content=re.data.data[0].content
              this.form = data;
            })
          }
        });
      }
      else if (["view"].includes(type)){
        getDetail(this.form.id).then(res => {
          if (this.form.type=="1") {
            selectTs(this.form.tenantName).then( re=>{
              const data = res.data.data;
              data.nature=re.data.data[0].nature
              data.motto=re.data.data[0].motto
              data.ctime=re.data.data[0].ctime
              data.had=re.data.data[0].had
              data.content=re.data.data[0].content
              if (!(data.accountNumber > 0)) {
                data.accountNumber = "不限制";
              }
              if (!data.expireTime) {
                data.expireTime = "不限制";
              }
              this.form = data;
            })
          }
          else if (this.form.type=="0"){
            selectTy(this.form.tenantName).then( re=>{
              const data = res.data.data;
              data.dj=re.data.data[0].dj
              data.ht=re.data.data[0].ht
              data.ctime=re.data.data[0].ctime
              data.had=re.data.data[0].had
              data.content=re.data.data[0].content
              if (!(data.accountNumber > 0)) {
                data.accountNumber = "不限制";
              }
              if (!data.expireTime) {
                data.expireTime = "不限制";
              }
              this.form = data;
            })
          }
          else if (this.form.type=="2"){
            selectTr(this.form.tenantName).then( re=>{
              const data = res.data.data;
              data.category=re.data.data[0].category
              data.attributes=re.data.data[0].attributes
              data.developers=re.data.data[0].developers
              data.had=re.data.data[0].had
              data.housetype=re.data.data[0].housetype
              data.content=re.data.data[0].content
              if (!(data.accountNumber > 0)) {
                data.accountNumber = "不限制";
              }
              if (!data.expireTime) {
                data.expireTime = "不限制";
              }
              this.form = data;
            })
          }
        });
      }
      done();