form.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <template>
  2. <el-dialog :title="titleMap[mode]" v-model="visible" :width="600" :close-on-click-modal="false" destroy-on-close @closed="$emit('closed')">
  3. <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
  4. <el-row :gutter="15">
  5. <el-col :span="24">
  6. <el-form-item label="帐号类型" prop="type">
  7. <el-radio-group v-model="formData.type">
  8. <el-radio-button border :label="3">客服账号</el-radio-button>
  9. </el-radio-group>
  10. </el-form-item>
  11. </el-col>
  12. <el-col :span="24" v-if="formData.type>1">
  13. <el-form-item label="所属店铺" prop="store_name">
  14. <el-input v-model="formData.store_name" placeholder="所属店铺" clearable readonly :style="{ width: '100%' }" @click="selectUser">
  15. <template #append>
  16. <el-tooltip
  17. effect="dark"
  18. content="点这里,清除选择"
  19. placement="top-start"
  20. >
  21. <div class="remove-a" @click="clearUser">清除</div>
  22. </el-tooltip>
  23. </template>
  24. </el-input>
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="24">
  28. <el-form-item label="用户昵称" prop="truename">
  29. <el-input v-model="formData.truename" clearable placeholder="请输入"></el-input>
  30. <div class="el-form-item-msg"></div>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="24">
  34. <el-form-item label="登录用户账号" prop="username">
  35. <el-input v-model="formData.username" clearable placeholder="请输入"></el-input>
  36. <div class="el-form-item-msg"></div>
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="12">
  40. <el-form-item label="新的登录密码" prop="password">
  41. <el-input v-model="formData.password" show-password clearable placeholder="请输入"></el-input>
  42. <div class="el-form-item-msg"></div>
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="12">
  46. <el-form-item label="重复登录密码" prop="password2">
  47. <el-input v-model="formData.password2" show-password clearable placeholder="请输入"></el-input>
  48. <div class="el-form-item-msg"></div>
  49. </el-form-item>
  50. </el-col>
  51. </el-row>
  52. </el-form>
  53. <template #footer>
  54. <el-button @click="visible=false" >取 消</el-button>
  55. <el-button type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
  56. </template>
  57. </el-dialog>
  58. <agentData ref="agentData" :multiple="false" @success="handleSuccess"></agentData>
  59. </template>
  60. <script>
  61. import agentData from "@/views/manage/components/agent";
  62. export default {
  63. components: {
  64. agentData
  65. },
  66. data(){
  67. return {
  68. loading: false,
  69. isSaveing: false,
  70. mode:"add",
  71. titleMap:{
  72. add:"新增帐号",
  73. edit:"编辑帐号"
  74. },
  75. visible:false,
  76. formData:{
  77. type:3
  78. },
  79. rules:{
  80. type: [
  81. {required: true, message: '请选择'}
  82. ],
  83. username: [
  84. {required: true, message: '请输入'}
  85. ],
  86. password: [
  87. {required: true, message: '请输入登录密码'}
  88. ],
  89. password2: [
  90. {required: true, message: '请再次输入密码'},
  91. {validator: (rule, value, callback) => {
  92. if (value !== this.formData.password) {
  93. callback(new Error('两次输入密码不一致!'));
  94. }else{
  95. callback();
  96. }
  97. }}
  98. ],
  99. store_name: [
  100. {required: true, message: '请选择'}
  101. ],
  102. }
  103. }
  104. },
  105. methods:{
  106. handleSuccess(data){
  107. this.formData.store_id = data.poi_id;
  108. this.formData.store_name = data.poi_name;
  109. },
  110. clearUser(){
  111. this.formData.store_id = "";
  112. this.formData.store_name = "";
  113. },
  114. selectUser(){
  115. this.$nextTick(() => {
  116. this.$refs.agentData.open()
  117. })
  118. },
  119. open(mode = 'add'){
  120. this.mode = mode;
  121. this.visible = true;
  122. return this
  123. },
  124. //表单注入数据
  125. setData(data){
  126. this.formData = JSON.parse(JSON.stringify(data));
  127. },
  128. async submit(){
  129. var validate = await this.$refs.dialogForm.validate().catch(()=>{});
  130. if(!validate){ return false }
  131. this.isSaveing = true;
  132. let submitData = JSON.parse(JSON.stringify(this.formData));
  133. submitData.password = this.$TOOL.crypto.MD5(this.formData.password);
  134. submitData.password2 = this.$TOOL.crypto.MD5(this.formData.password2);
  135. var resp = await this.$API.user.save.post(submitData);
  136. this.isSaveing = false;
  137. if (resp.code == 0) {
  138. return this.$message.error(resp.msg);
  139. }
  140. this.$message.success(resp.msg);
  141. this.visible = false;
  142. this.formData = {
  143. type:2
  144. };
  145. this.$emit("success");
  146. }
  147. }
  148. }
  149. </script>