dialogComponent.vue 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. <template>
  2. <div class="systemCard">
  3. <el-dialog
  4. :title="dialogTitle"
  5. v-model="showDialog"
  6. @open="open()"
  7. @close="closeDialog(0)"
  8. >
  9. <el-card class="box-card grid-content">
  10. <el-tabs
  11. v-model="activeName"
  12. class="demo-tabs"
  13. @tab-click="handleClick"
  14. >
  15. <!-- 常规配置start -->
  16. <el-tab-pane label="常规配置" name="first">
  17. <el-form
  18. ref="formInfo"
  19. :model="form"
  20. class="demo-form-inline"
  21. label-width="150px"
  22. :rules="rules"
  23. >
  24. <el-form-item label="主页标题:" prop="middleTitle">
  25. <el-input v-model="form.middleTitle"></el-input>
  26. </el-form-item>
  27. <el-form-item label="主页logo:" prop="homeLogo">
  28. <el-input v-model="form.homeLogo"></el-input>
  29. </el-form-item>
  30. <el-form-item label="首页请求地址:" prop="homePageUrl">
  31. <el-input v-model="form.homePageUrl"></el-input>
  32. <!-- <el-select v-model="form.homePageUrl" placeholder="请选择">
  33. <el-option label="地址1" :value="1"></el-option>
  34. <el-option label="地址2" :value="2"></el-option>
  35. </el-select> -->
  36. </el-form-item>
  37. <el-form-item label="主页导航栏:" prop="homeLayout">
  38. <el-radio-group v-model="form.homeLayout">
  39. <el-radio :label="1" value="1">顶部导航栏</el-radio>
  40. <el-radio :label="2" value="2">左侧导航栏</el-radio>
  41. </el-radio-group>
  42. </el-form-item>
  43. <br />
  44. <div style="text-align: right">
  45. <el-button @click="closeDialog(0)">取消</el-button>
  46. <el-button type="primary" @click="submitForm()">保存</el-button>
  47. </div>
  48. </el-form>
  49. </el-tab-pane>
  50. <!-- 常规配置end -->
  51. <!-- 登录页配置start -->
  52. <el-tab-pane label="登录页配置" name="second">
  53. <el-form
  54. ref="formInfo2"
  55. :model="form"
  56. class="demo-form-inline"
  57. label-width="150px"
  58. :rules="rules"
  59. >
  60. <el-form-item label="登录页标题:" prop="tenantName">
  61. <el-input v-model="form.tenantName"></el-input>
  62. </el-form-item>
  63. <el-form-item label="登录页logo:" prop="tenantManager">
  64. <el-input v-model="form.tenantManager"></el-input>
  65. </el-form-item>
  66. <el-form-item label="登录页背景:" prop="tenantManager">
  67. <el-input v-model="form.tenantManager"></el-input>
  68. </el-form-item>
  69. <el-form-item label="登录页底部名称:" prop="tenantName">
  70. <el-input v-model="form.tenantName"></el-input>
  71. </el-form-item>
  72. <el-form-item label="标签页图标:" prop="tenantManager">
  73. <el-input v-model="form.tenantManager"></el-input>
  74. </el-form-item>
  75. <br />
  76. <div style="text-align: right">
  77. <el-button @click="closeDialog(0)">取消</el-button>
  78. <el-button type="primary" @click="submitForm()">保存</el-button>
  79. </div>
  80. </el-form>
  81. </el-tab-pane>
  82. <!-- 修登录页配置end -->
  83. <!-- 中间页配置start -->
  84. <el-tab-pane label="中间页配置" name="third">
  85. <el-form
  86. ref="formInfo3"
  87. :model="form"
  88. class="demo-form-inline"
  89. label-width="150px"
  90. :rules="rules"
  91. >
  92. <el-form-item label="是否开启中间页:" prop="tenantName">
  93. <el-switch v-model="value" size="large" />
  94. </el-form-item>
  95. <el-form-item label="中间页logo:" prop="tenantManager">
  96. <el-input v-model="form.tenantManager"></el-input>
  97. </el-form-item>
  98. <el-form-item label="中间页背景:" prop="tenantManager">
  99. <el-input v-model="form.tenantManager"></el-input>
  100. </el-form-item>
  101. <el-form-item label="中间页底部名称:" prop="tenantName">
  102. <el-input v-model="form.tenantName"></el-input>
  103. </el-form-item>
  104. <br />
  105. <div style="text-align: right">
  106. <el-button @click="closeDialog(0)">取消</el-button>
  107. <el-button type="primary" @click="submitForm()">保存</el-button>
  108. </div>
  109. </el-form>
  110. </el-tab-pane>
  111. <!-- 中间页配置end -->
  112. <!-- 其他配置start -->
  113. <el-tab-pane label="其他配置" name="forth">
  114. 其他配置设计开发中...
  115. </el-tab-pane>
  116. <!-- 其他配置end -->
  117. </el-tabs>
  118. </el-card>
  119. </el-dialog>
  120. </div>
  121. </template>
  122. <script>
  123. import { useStore } from 'vuex'
  124. import { defineComponent, ref, watchEffect, onMounted } from 'vue'
  125. import * as api from '@/api/tenantManage/systemConfig.js'
  126. import { ElMessage } from 'element-plus'
  127. // import { parseTime } from '@/utils'
  128. // import { validatorPhone, parseTime, isEmail } from '@/utils'
  129. export default defineComponent({
  130. name: 'DialogComponent',
  131. emits: ['closeDialog'],
  132. props: {
  133. show_Dialog: Boolean,
  134. configStatus: Boolean,
  135. dialogTitle: String,
  136. itemInfo: {
  137. type: Object,
  138. default: function () {
  139. return {}
  140. },
  141. },
  142. },
  143. setup(props, { emit }) {
  144. const store = useStore()
  145. const beginTime = ref('')
  146. const showDialog = ref(false)
  147. const form = ref({})
  148. const formInfo = ref(null)
  149. const value = ref(true)
  150. const activeName = ref('first')
  151. const getPlatformBoxList = ref([])
  152. const roleValid = (rule, value, callback) => {
  153. rule
  154. if (value.length === 0) {
  155. callback(new Error('角色不能为空'))
  156. } else {
  157. callback()
  158. }
  159. }
  160. // 保存操作
  161. const submitForm = () => {
  162. formInfo.value.validate((valid) => {
  163. if (valid) {
  164. form.value.tenantId=props.itemInfo.tenantId
  165. if (props.configStatus) {
  166. alert('已配置修改提交')
  167. api.updaMiddleConfig(form.value).then((requset) => {
  168. if (requset.status === 'SUCCESS') {
  169. ElMessage.success({
  170. message: '修改配置成功',
  171. type: 'success',
  172. })
  173. closeDialog()
  174. } else {
  175. ElMessage.error(requset.msg)
  176. }
  177. })
  178. } else {
  179. alert('未配置新增提交')
  180. api.addMiddleConfig(form.value).then((requset) => {
  181. if (requset.status === 'SUCCESS') {
  182. ElMessage.success({
  183. message: '新增配置成功',
  184. type: 'success',
  185. })
  186. closeDialog()
  187. } else {
  188. ElMessage.error(requset.msg)
  189. }
  190. })
  191. }
  192. } else {
  193. console.log('error submit!!')
  194. return false
  195. }
  196. })
  197. }
  198. const open = () => {
  199. setTimeout(function () {
  200. form.value = props.itemInfo
  201. console.log('子组件中form.value')
  202. console.log(form.value)
  203. }, 500)
  204. optionselect()
  205. // alert(props.configStatus)
  206. }
  207. // 关闭弹框
  208. const closeDialog = (flag) => {
  209. resetForm()
  210. showDialog.value = false
  211. emit('closeDialog', flag)
  212. }
  213. function resetForm() {
  214. formInfo.value.resetFields()
  215. }
  216. //角色下拉请求
  217. function optionselect() {
  218. api.getPlatformBoxList().then((requset) => {
  219. if (requset.status === 'SUCCESS') {
  220. getPlatformBoxList.value = requset.data
  221. } else {
  222. ElMessage.error(requset.msg)
  223. }
  224. })
  225. }
  226. watchEffect((fn, options) => {
  227. fn, options
  228. showDialog.value = props.show_Dialog
  229. })
  230. //禁止选择以前的时间
  231. const pickerEndDate = (time) => {
  232. const timeRange = 1 * 24 * 60 * 60 * 1000
  233. return time.getTime() <= Date.now() - timeRange * 1
  234. }
  235. onMounted(() => {})
  236. return {
  237. pickerEndDate,
  238. roleValid,
  239. submitForm,
  240. closeDialog,
  241. open,
  242. store,
  243. beginTime,
  244. showDialog,
  245. checked: true,
  246. form,
  247. formInfo,
  248. getPlatformBoxList,
  249. activeName,
  250. value,
  251. rules: {
  252. middleTitle: [
  253. { required: true, message: '请输入主页标题', trigger: 'blur' },
  254. {
  255. min: 1,
  256. max: 30,
  257. message: '长度在 1 到 30个字符',
  258. trigger: 'blur',
  259. },
  260. ],
  261. homeLogo: [
  262. { required: true, message: '请输入主页logo', trigger: 'blur' },
  263. ],
  264. homePageUrl: [
  265. { required: true, message: '请输入主页请求地址', trigger: 'blur' },
  266. ],
  267. homeLayout: [
  268. { required: true, message: '请选则主页导航布局', trigger: 'change' },
  269. ],
  270. },
  271. }
  272. },
  273. })
  274. </script>
  275. <style scoped lang="scss">
  276. .el-card {
  277. --el-card-border-color: var(--el-border-color-light, #fff);
  278. border: 0px solid red;
  279. }
  280. .el-card.is-always-shadow {
  281. box-shadow: none;
  282. }
  283. ::v-deep .el-card__body {
  284. padding: 0 !important;
  285. }
  286. ::v-deep .el-tabs__header {
  287. margin-bottom: 30px;
  288. }
  289. .el-input,
  290. .el-select,
  291. .el-date-editor.el-input,
  292. .el-date-editor.el-input__inner {
  293. width: 240px;
  294. }
  295. // .el-form-item {
  296. // margin: 0 0 20px !important;
  297. // }
  298. // label样式
  299. .el-form-item__label {
  300. width: 120px !important;
  301. }
  302. .el-form-item__content {
  303. margin-left: 100px;
  304. }
  305. .demo-form-inline .el-form-item:not(.user-layout .el-form-item) {
  306. // margin: 0 auto 20px 55px;
  307. }
  308. </style>
  309. <style>
  310. .systemCard .el-dialog__body {
  311. padding-top: 10px !important;
  312. }
  313. </style>