edit.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <template>
  2. <div v-loading="loading">
  3. <div class="white-box">
  4. <el-form ref="form" :model="form" label-width="250px" class="bkele-form-page">
  5. <el-form-item v-show="isAddOrEdit" :label="$t('Administrator.loginAccount')">
  6. <el-input v-model="form.adminName" :disabled="isEdit" />
  7. </el-form-item>
  8. <el-form-item v-show="isAddOrEdit" :label="$t('Administrator.name')">
  9. <el-input v-model="form.realName" />
  10. </el-form-item>
  11. <el-form-item v-show="isAddOrEdit" :label="$t('Administrator.role')">
  12. <el-select v-model="form.roleId" :placeholder="$t('Administrator.pleaseSelectRole')">
  13. <el-option v-for="item in roles" :key="item.ID" :label="item.ROLE_NAME" :value="item.ID" />
  14. </el-select>
  15. </el-form-item>
  16. <el-form-item :label="$t('transportationConfig.countryName')"><!-- 国家 -->
  17. <el-select v-model="form.countryId" multiple :placeholder="$t('Administrator.pleaseSelectCountry')">
  18. <el-option v-for="item in countries" :key="item.ID" :label="item.NAME" :value="item.ID" />
  19. </el-select>
  20. </el-form-item>
  21. <el-form-item :label="$t('Administrator.password')"><!-- 密码 -->
  22. <el-input v-model="form.password" type="password" />
  23. </el-form-item>
  24. <el-form-item :label="$t('Administrator.confirmPassword')"><!-- 确认密码 -->
  25. <el-input v-model="form.surePassword" type="password" />
  26. </el-form-item>
  27. <el-form-item v-show="isAddOrEdit" :label="$t('Administrator.bindIp')">
  28. <el-input
  29. v-model="form.bindIp"
  30. type="textarea"
  31. :rows="4"
  32. :placeholder="$t('Administrator.pleaseInputContent')"
  33. />
  34. <el-tag type="info">{{ $t("Administrator.bindIpNotice") }}</el-tag>
  35. </el-form-item>
  36. <el-form-item v-show="isAddOrEdit" :label="$t('common.note')">
  37. <el-input v-model="form.remark" />
  38. </el-form-item>
  39. <el-form-item v-show="isAddOrEdit" :label="$t('Administrator.isEnable')">
  40. <el-switch v-model="form.isEnable" />
  41. </el-form-item>
  42. <el-form-item v-show="isAddOrEdit" :label="$t('Administrator.isModifyPwd')">
  43. <el-switch v-model="form.isModifyPassword" />
  44. </el-form-item>
  45. <el-form-item>
  46. <el-button type="primary" :loading="submitButtonStat" @click="onSubmit">{{ $t('common.save') }}<!--保存--></el-button>
  47. </el-form-item>
  48. </el-form>
  49. </div>
  50. </div>
  51. </template>
  52. <script>
  53. import { adminAddAndEditAndChangePassword, adminAdd, adminEdit } from '@/api/filter'
  54. import {getCountries} from "@/api/site";
  55. import {isArray} from "@/utils/validate";
  56. export default {
  57. name: 'RoleAdd',
  58. data() {
  59. return {
  60. form: {
  61. adminName: null,
  62. realName: null,
  63. remark: null,
  64. isEnable: true,
  65. isModifyPassword: false,
  66. bindIp: '',
  67. roleId: null,
  68. password: null,
  69. surePassword: null,
  70. countryId: []
  71. },
  72. loading: true,
  73. submitButtonStat: false,
  74. isEdit: false,
  75. roles: null,
  76. countries: []
  77. }
  78. },
  79. computed: {
  80. isAddOrEdit() {
  81. if (this.$route.name === 'admin_add' || this.$route.name === 'admin_edit') {
  82. return true
  83. }
  84. return false
  85. }
  86. },
  87. watch: {
  88. '$route'() {
  89. for (const i in this.form) {
  90. this.form[i] = null
  91. }
  92. }
  93. },
  94. mounted() {
  95. if (this.$route.name === 'admin_edit') {
  96. adminEdit(this.$route.params.id).then(response => {
  97. this.form = response.data.oneData
  98. this.roles = response.data.adminRoles
  99. this.loading = false
  100. this.isEdit = true
  101. }).catch(err => {
  102. console.log('err=============' + err)
  103. this.loading = false
  104. this.$message({
  105. message: err,
  106. type: 'error'
  107. })
  108. })
  109. } else if (this.$route.name === 'admin_add') {
  110. adminAdd().then(response => {
  111. this.roles = response.data.adminRoles
  112. this.loading = false
  113. }).catch(err => {
  114. console.log('err=============' + err)
  115. this.loading = false
  116. this.$message({
  117. message: err,
  118. type: 'error'
  119. })
  120. })
  121. } else {
  122. this.loading = false
  123. }
  124. this.getCountries()
  125. },
  126. methods: {
  127. onSubmit() {
  128. this.submitButtonStat = true
  129. let path = 'admin/add'
  130. if (this.$route.name === 'admin_edit') {
  131. path = 'admin/edit/' + this.$route.params.id
  132. } else if (this.$route.name === 'admin_change-password') {
  133. path = 'admin/change-password'
  134. }
  135. if (!(isArray(this.form.countryId) && this.form.countryId.length > 0)){
  136. this.$message({
  137. message: this.$t('Administrator.pleaseSelectCountry'),
  138. type: 'error'
  139. })
  140. this.submitButtonStat = false
  141. return false;
  142. }
  143. adminAddAndEditAndChangePassword(path, this.form).then(response => {
  144. this.submitButtonStat = false
  145. console.log(response)
  146. this.$message({
  147. message: response.data,
  148. type: 'success'
  149. })
  150. this.$router.go(-1)
  151. }).catch(err => {
  152. console.log('err=============' + err)
  153. this.submitButtonStat = false
  154. this.$message({
  155. message: err,
  156. type: 'error'
  157. })
  158. })
  159. },
  160. getCountries(){
  161. getCountries().then(response => {
  162. this.countries = response
  163. }).catch(err => {
  164. })
  165. },
  166. }
  167. }
  168. </script>
  169. <style scoped>
  170. .el-form-item{
  171. margin-top: 35px;
  172. }
  173. @media (min-width: 761px) {
  174. /deep/ .el-input__inner {
  175. width: 500px;
  176. }
  177. }
  178. @media (max-width:760px) {
  179. /deep/ .white-box {
  180. padding: 0px 0px;
  181. }
  182. /deep/ .el-form-item__content {
  183. margin-left:150px !important;
  184. }
  185. /deep/ .el-form-item__label {
  186. width:150px !important;
  187. }
  188. /deep/ .el-input__inner {
  189. width: 150px;
  190. }
  191. /* .el-input {
  192. width: 90%;
  193. } */
  194. }
  195. </style>