addSiteCom.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <el-dialog
  3. :title="dialogTitle"
  4. v-model="dialogVisible"
  5. @close="closeDialog2('默认关闭')"
  6. @open="open"
  7. width="400px"
  8. >
  9. <el-form
  10. ref="formInfo"
  11. :model="form"
  12. class="demo-form-inline"
  13. label-width="100px"
  14. :rules="rules"
  15. >
  16. <el-form-item label="站点名称:" prop="siteName">
  17. <el-input v-model="form.siteName"></el-input>
  18. </el-form-item>
  19. <!-- <el-form-item label="站点编号:" prop="siteName">
  20. <el-input v-model="form.siteName"></el-input>
  21. </el-form-item> -->
  22. <el-form-item label="选择模板:" prop="region">
  23. <el-select v-model="form.region" placeholder="请选择">
  24. <el-option
  25. v-for="(item, index) in listData"
  26. :key="index"
  27. :label="item.siteName"
  28. :value="item.id"
  29. ></el-option>
  30. </el-select>
  31. </el-form-item>
  32. <div style="text-align: right">
  33. <el-button type="primary" @click="submitForm()">保存</el-button>
  34. </div>
  35. </el-form>
  36. </el-dialog>
  37. </template>
  38. <script>
  39. import { defineComponent, ref, watchEffect, onMounted } from 'vue'
  40. import * as api from '@/api/siteManage/index'
  41. import { ElMessage } from 'element-plus'
  42. import { useStore } from 'vuex'
  43. export default defineComponent({
  44. name: 'AddSiteCom',
  45. emits: ['closeDialog','changeFather'],
  46. props: {
  47. flag: Boolean,
  48. dialogTitle: String,
  49. itemInfo: Object,
  50. treeLevel: Number,
  51. groupingId: Number,
  52. },
  53. setup(props, context) {
  54. const store = useStore()
  55. context
  56. const dialogVisible = ref(false)
  57. const formInfo = ref(null)
  58. const form = ref([])
  59. const listData = ref([])
  60. // open(): Dialog弹窗打开之前做的事
  61. const open = () => {
  62. // store.commit('publicSiteList')
  63. // listData.value=store.state.siteList
  64. api.list({}).then((requset) => {
  65. if (requset.status === 'SUCCESS') {
  66. listData.value = requset.data
  67. } else {
  68. ElMessage.error(requset.msg)
  69. }
  70. })
  71. store.state.basicInfoConst = 1
  72. form.value = props.itemInfo.value;
  73. }
  74. // 关闭弹框
  75. const closeDialog2 = (res) => {
  76. context.emit('closeDialog', res)
  77. store.state.basicInfoConst++
  78. }
  79. watchEffect((fn, options) => {
  80. fn, options
  81. dialogVisible.value = props.flag
  82. })
  83. const roleValid = (rule, value, callback) => {
  84. rule
  85. if (value.length === 0) {
  86. callback(new Error('角色不能为空'))
  87. } else {
  88. callback()
  89. }
  90. }
  91. // 保存-修改操作
  92. const submitForm = () => {
  93. // store.state.basicInfoConst = 1
  94. console.log('form.region')
  95. console.log(form.value.region)
  96. console.log('form.siteName')
  97. console.log(form.value.siteName)
  98. formInfo.value.validate((valid) => {
  99. if (valid) {
  100. store.state.basicInfoSiteName = form.value.siteName
  101. context.emit(
  102. 'changeFather',
  103. form.value.siteName,
  104. form.value.region ? form.value.region : '',
  105. props.groupingId
  106. )
  107. closeDialog2('')
  108. } else {
  109. console.log('error submit!!')
  110. return false
  111. }
  112. })
  113. }
  114. //站点模板下拉列表
  115. // function list() {
  116. // api.list({}).then((requset) => {
  117. // if (requset.status === 'SUCCESS') {
  118. // listData.value = requset.data
  119. // } else {
  120. // ElMessage.error(requset.msg)
  121. // }
  122. // })
  123. // }
  124. onMounted(() => {
  125. // list()
  126. })
  127. return {
  128. closeDialog2,
  129. dialogVisible,
  130. listData,
  131. roleValid,
  132. formInfo,
  133. form,
  134. open,
  135. submitForm,
  136. rules: {
  137. siteName: [
  138. // required 是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
  139. { required: true, message: '请输入站点名称', trigger: 'blur' },
  140. // {
  141. // min: 3,
  142. // max: 6,
  143. // message: "用户名长度在 3 到 6 个字符",
  144. // trigger: "blur",
  145. // },
  146. ],
  147. },
  148. }
  149. },
  150. })
  151. </script>
  152. <style scoped lang="scss">
  153. </style>