rule.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <Group style="height: 100%;">
  3. <el-tabs v-model="activeName" @tab-click="handleClick">
  4. <el-tab-pane :label="$t('primaryField')" name="primaryField">
  5. <Ruleform @getPageData="getPageData" :formData="pageData[0]" />
  6. </el-tab-pane>
  7. <el-tab-pane :label="$t('intermediateField')" name="intermediateField">
  8. <Ruleform @getPageData="getPageData" :formData="pageData[1]" />
  9. </el-tab-pane>
  10. <el-tab-pane :label="$t('higherOrderField')" name="higherOrderField">
  11. <Ruleform @getPageData="getPageData" :formData="pageData[2]" />
  12. </el-tab-pane>
  13. <el-tab-pane :label="$t('customRoom')" name="customRoom">
  14. <el-form :model="formData" ref="formRef" label-suffix=":">
  15. <el-form-item>
  16. <span style="width: 360px;">{{$t('customizeRoom')}}:</span>
  17. </el-form-item>
  18. <el-form-item prop="pokerRoomTicket" :rules="[
  19. { required: true, message: $t('fieldRequired'), trigger: 'blur' },
  20. { type:'number',min:0.1,message: $t('greaterThanZero'), trigger: 'blur' }
  21. ]">
  22. <div class="row">
  23. <span style="color: red;">*</span><span style="width: 460px;">{{$t('customizeRoomRates')}}:</span>
  24. <el-input v-model.number="formData.pokerRoomTicket" :placeholder="$t('pleaseEnter')" />
  25. </div>
  26. </el-form-item>
  27. <el-form-item>
  28. <span style="width: 360px;">{{$t('configuration')}}:</span>
  29. </el-form-item>
  30. <el-form-item prop="pokerRoomDuration" :rules="[
  31. { required: true, message: $t('lengthRequired'), trigger: 'blur' },
  32. { type:'number',min:0.1,message: $t('greaterThanZero'), trigger: 'blur' }
  33. ]">
  34. <div class="row">
  35. <span style="color: red;">*</span><span style="width: 580px;">{{$t('roomLength')}}:</span>
  36. <el-input v-model.number="formData.pokerRoomDuration" :placeholder="$t('pleaseEnter')" />
  37. </div>
  38. </el-form-item>
  39. </el-form>
  40. <div style="display: flex;justify-content: flex-end;">
  41. <el-button type="primary" @click="handleSubmit">{{$t('save')}}</el-button>
  42. </div>
  43. </el-tab-pane>
  44. </el-tabs>
  45. </Group>
  46. </template>
  47. <script setup name="user">
  48. import { ref, reactive, onMounted, computed} from 'vue';
  49. import Group from '@/components/group.vue';
  50. import Ruleform from '@/components/ruleform.vue';
  51. import request from '@/utils/request';
  52. import { ElMessage } from 'element-plus';
  53. import i18n from '@/utils/i18n'
  54. const pageData = ref([{}, {}, {}]);
  55. const formRef = ref(null)
  56. const activeName = ref('primaryField')
  57. const formData = reactive({
  58. roomNumber: ''
  59. });
  60. const getPageData = async () => {
  61. try {
  62. const res = await request('get', '/admin/poker/getPokerGameInfoList');
  63. if (res.code === 200) {
  64. pageData.value = res.data;
  65. }
  66. } catch (error) {
  67. console.error('error:', error);
  68. }
  69. };
  70. const handleSubmit = async() => {
  71. formRef.value.validate(async (valid)=>{
  72. if(valid){
  73. const res = await request('post', 'admin/updateSystemConfigure', {...formData,roomNumber:'customRoom'})
  74. if (res.code === 200) {
  75. ElMessage.success(i18n.global.t('successfulOperation'))
  76. getPageData()
  77. }
  78. }
  79. })
  80. }
  81. const handleClick = async(tab) => {
  82. if (tab.paneName === 'customRoom') {
  83. const res = await request('get', 'admin/getSystemConfigure')
  84. if (res.code === 200) {
  85. Object.assign(formData, res.data)
  86. }
  87. }
  88. }
  89. onMounted(() => {
  90. getPageData();
  91. });
  92. </script>
  93. <style lang="scss" scoped>
  94. .deafault {
  95. display: flex;
  96. align-items: center;
  97. }
  98. .row {
  99. display: flex;
  100. margin-right: 16px;
  101. }
  102. ::v-deep .el-input__wrapper{
  103. background-color: #fffdef !important;
  104. }
  105. </style>