import routerUserMenu from '@/mixins/router-user-menu'
import breadcrumbComponent from '@/components/breadcrumb.vue'
/**
 * 页面组件设置
 *
 *  version = "1.0.0";
 *  author = "徐飞";
 *  email = "xu.fei@data-u.com";
 * */
export default {
  name: 'detail',
  components:{ breadcrumbComponent},
  mixins: [routerUserMenu],
  data () {
    return {
      // 组件id（修改和查看）
      id: false,
      // 新建对象
      database: {
        charset: '',
        databaseName: '',
        databaseType: '',
        resourceName: '',
        resourcePort: '',
        resourceType: '',
        password: '',
        username: '',
        ip: '',
      },
      // 页面打开类型，0：新建，1：查看，2：修改
      dialogState: 0,
      resourceTypeOptions: [],
      charsetOptions: [],
      databaseTypeOptions: [],
    }
  },
  computed: {
    // 组件设置是否只读
    readonly: {
      // getter
      get: function(){
        return (this.dialogState === 1)
      },
      // setter
      set: function (newValue) {
      }
    }
  },
  mounted () {
    // 初始化
    this.init()
  },
  methods: {
    //  如果有id，则获取id对应的部门信息赋值给formInfo
    init(){
      // 获取url参数
      let params = this.$route.params
      if(params.hasOwnProperty('id')){
        // 如果有id，则加载组件对象
        this.id = params.id
        this.getDetail()
      }
      // 根据页面参数设置当前页面类型
      this.dialogState = params.id ? 2 : 0

      //获取字符集下拉列表
      this.getCharsetOptions()
      //获取数据库类型下拉列表
      this.getDatabaseTypeOptions()
      // 获取资源类型下拉列表
      this.getResourceTypeOptions()
    },

    getResourceTypeOptions(){
      this.$api.database.listResourceType().then(res=>{
        this.resourceTypeOptions=res.data
      })
    },

    getCharsetOptions(){
      this.$api.database.listCharsetType().then(res=>{
        this.charsetOptions=res.data
      })
    },

    getDatabaseTypeOptions(){
      this.$api.database.listDatabaseType()
        .then(res => {
          this.databaseTypeOptions = res.data
        })
    },

    // 获取回显详情信息
    getDetail(){
      let params = { id: this.id }
      let _this=this
      this.$api.database.getDatabaseById(params)
        .then(res => {
          if (res.code == 1) {
            if(res.data){
              _this.database = res.data

              _this.$nextTick(()=>{
                _this.$refs.database.clearValidate()
              })
            }
          }
        })
    },

    // 测试连接
    getTestConnection(){
      let _this = this
      // 判断组件设置是否通过验证
      this.$refs.database.validate((valid) => {
        if (valid) {
          // 提交后台并在成功后回到上一页
          let params = _this.database
          _this.$api.database.getTestConnection(params)
            .then(res => {
              if (res.code==1){
                _this.$message.success(res.msg)
              } else {
                _this.$message.error(res.msg)
              }
            })
        } else {
          return false
        }
      })

    },

    // 提交保存
    add(){
      let _this = this
      // 判断组件设置是否通过验证
      this.$refs.database.validate((valid) => {
        if (valid) {
          // 提交后台并在成功后回到上一页
          let params = _this.database
          _this.$api.database.saveDatabase(params)
            .then(res => {
              if (res.code == 1) {
                _this.$message.success(res.msg)
                _this.goBack()
              }
            })
        } else {
          return false
        }
      })
    },

    // 更新
    update(){
      let _this = this
      // 判断组件设置是否通过验证
      this.$refs.database.validate((valid) => {
        if (valid) {
          // 提交后台并在成功后回到上一页
          let params = _this.database
          params.id=_this.id
          _this.$api.database.updateDatabase(params)
            .then(res => {
              if (res.code == 1) {
                _this.$message.success(res.msg)
                _this.goBack()
              }
            })
        } else {
          return false;
        }
      })
    }
  }
}
