add.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <template>
  2. <div class="app-container">
  3. <el-form ref="loginForm" :model="rateForm" :rules="rateRules" label-width="160px" class="customer-form" size="mini">
  4. <el-form-item label="用戶名" prop="nickname">
  5. <el-input v-model="rateForm.nickname" />
  6. </el-form-item>
  7. <el-form-item label="登錄密碼" prop="password">
  8. <el-input v-model="rateForm.password" />
  9. </el-form-item>
  10. <el-form-item label="禁止登出" prop="password">
  11. <el-switch
  12. v-model="rateForm.loginOut"
  13. active-color="#13ce66"
  14. :active-value="1"
  15. :inactive-value="0"
  16. />
  17. </el-form-item>
  18. <!-- <el-form-item label="性別" prop="">-->
  19. <!-- <el-radio-group v-model="rateForm.gender">-->
  20. <!-- <el-radio :label="1">男</el-radio>-->
  21. <!-- <el-radio :label="2">女</el-radio>-->
  22. <!-- </el-radio-group>-->
  23. <!-- </el-form-item>-->
  24. <el-form-item label="測試週期">
  25. <el-date-picker
  26. v-model="rateForm.period"
  27. type="daterange"
  28. range-separator="至"
  29. start-placeholder="開始日期"
  30. end-placeholder="結束日期"
  31. value-format="yyyy-MM-dd HH:mm:ss"
  32. :picker-options="pickerOptions"
  33. />
  34. </el-form-item>
  35. <el-form-item label="量表提示時間">
  36. <el-time-picker
  37. v-model="rateForm.scaleTime"
  38. placeholder="量表提示時間"
  39. value-format="HH:mm:ss"
  40. />
  41. </el-form-item>
  42. <el-form-item label="數字顯示時長" prop="showTime">
  43. <el-input v-model="rateForm.showTime" type="number">
  44. <template slot="append">ms</template>
  45. </el-input>
  46. </el-form-item>
  47. <el-form-item label="數字交換間隔" prop="hideTime">
  48. <el-input v-model="rateForm.hideTime" type="number">
  49. <template slot="append">ms</template>
  50. </el-input>
  51. </el-form-item>
  52. <el-form-item label="正確數字出現次數" prop="correct">
  53. <el-input v-model="rateForm.correct" type="number" />
  54. </el-form-item>
  55. <el-form-item label="隨機數字出現次數" prop="supporting">
  56. <el-input v-model="rateForm.supporting" type="number" />
  57. </el-form-item>
  58. <el-form-item label="遊戲練習結束進入測試的時長" prop="practice">
  59. <el-input v-model="rateForm.practice" type="number">
  60. <template slot="append">ms</template>
  61. </el-input>
  62. </el-form-item>
  63. <el-form-item label="遊戲前練習正確數字出現次數" prop="practice">
  64. <el-input v-model="rateForm.exerciseRight" type="number" />
  65. </el-form-item>
  66. <el-form-item label="練習數字出現的次數" prop="practice">
  67. <el-input v-model="rateForm.exercise" type="number" />
  68. </el-form-item>
  69. <el-form-item label="游戏版本">
  70. <el-checkbox-group v-model="rateForm.versions">
  71. <el-checkbox label="A" style="margin-right: 10px" />
  72. <el-checkbox label="B" style="margin-right: 10px" />
  73. <el-checkbox label="C" style="margin-right: 10px" />
  74. </el-checkbox-group>
  75. </el-form-item>
  76. <el-form-item label="遊戲時間段" style="width: 800px">
  77. <el-row v-for="(items, index) in gameConfigs" :key="index" style="display: flex;align-items: center">
  78. <div />
  79. <el-time-select
  80. v-model="items.startTime"
  81. size="mini"
  82. placeholder="遊戲時間段"
  83. style="width: 150px"
  84. :picker-options="{
  85. start: '00:00',
  86. step: '00:01:00',
  87. end: '23:59',
  88. minTime: index > 0 ? gameConfigs[index-1].endTime : null,
  89. }"
  90. />
  91. <el-time-select
  92. v-model="items.endTime"
  93. size="mini"
  94. placeholder="遊戲時間段"
  95. style="width: 150px"
  96. :picker-options="{
  97. step: '00:01:00',
  98. minTime: items.startTime,
  99. start: '00:00',
  100. end: '23:59'
  101. }"
  102. />
  103. <div>
  104. <i class="el-icon-circle-plus" @click="addConfig()" />
  105. <i v-if="gameConfigs.length !== 1" class="el-icon-remove a_style" @click="deleteConfig(index)" />
  106. </div>
  107. </el-row>
  108. </el-form-item>
  109. </el-form>
  110. <el-button size="small" type="primary" @click="addUser">添加</el-button>
  111. </div>
  112. </template>
  113. <script>
  114. import { add } from '@/api/user'
  115. import { Message } from 'element-ui'
  116. export default {
  117. name: 'Add',
  118. data() {
  119. return {
  120. rateForm: {
  121. versions: []
  122. },
  123. pickerOptions: {
  124. disabledDate(time) {
  125. return time.getTime() < Date.now() - 8.64e7
  126. }
  127. },
  128. rateRules: {
  129. nickname: [{ required: true, message: '請添加名字', trigger: 'blur' }],
  130. password: [
  131. { required: true, min: 6, max: 7, message: '6位密碼', trigger: 'blur' },
  132. { required: true, pattern: /^[0-9a-zA-Z]*$/, message: '數字和字符', trigger: 'blur' }
  133. ]
  134. },
  135. options: [],
  136. gameConfigs: [{}]
  137. }
  138. },
  139. created() {
  140. },
  141. methods: {
  142. addUser() {
  143. this.rateForm.scaleStart = this.rateForm.period[0]
  144. this.rateForm.scaleEnd = this.rateForm.period[1]
  145. this.rateForm.version = this.rateForm.versions.join(',')
  146. this.rateForm.configs = JSON.stringify(this.gameConfigs)
  147. add(this.rateForm).then(response => {
  148. Message({
  149. message: '添加成功',
  150. type: 'success',
  151. duration: 2 * 1000
  152. })
  153. if (response.code === 200) {
  154. this.$router.go(-1)
  155. }
  156. })
  157. },
  158. addConfig() {
  159. this.gameConfigs.push({ versions: [] })
  160. },
  161. deleteConfig(index) {
  162. this.gameConfigs.splice(index, 1)
  163. }
  164. }
  165. }
  166. </script>
  167. <style scoped>
  168. .customer-form{
  169. width: 500px;
  170. }
  171. </style>