aboutUs-detail.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <template>
  2. <el-dialog
  3. :visible.sync="showDialog"
  4. :title="title"
  5. :modal-append-to-body="false"
  6. style="text-align: left;"
  7. @close="closeDialog"
  8. :close-on-click-modal="false"
  9. width="900px"
  10. >
  11. <div class="user-panel" v-loading="loading">
  12. <el-form
  13. ref="form"
  14. :model="formModel"
  15. :rules="ruleValidate"
  16. :label-width="'100px'"
  17. >
  18. <el-form-item label="标题" prop="title">
  19. <el-input v-model="formModel.title" placeholder="请输入客服电话" style="width: 300px"></el-input>
  20. </el-form-item>
  21. <el-form-item label="用户协议" prop="content">
  22. <mce-editor
  23. ref="editor"
  24. uploadName="upfile"
  25. v-model="formModel.content"
  26. :url="uploadUrl1"
  27. :config="editorConfig"
  28. style="width: 90%"
  29. ></mce-editor>
  30. </el-form-item>
  31. </el-form>
  32. </div>
  33. <span slot="footer" class="dialog-footer">
  34. <el-button @click="closeDialog">取 消</el-button>
  35. <el-button type="primary" @click="handleSubmit" :loading="submitting"
  36. >确 定</el-button
  37. >
  38. </span>
  39. </el-dialog>
  40. </template>
  41. <script>
  42. import Constant from "@/constant";
  43. import { getToken } from "@/utils/auth"; // get token from cookie
  44. import aboutUsApi from "@/api/base/aboutUs";
  45. import MceEditor from "@/components/Tinymce";
  46. export default {
  47. props: ["businessKey", "title"],
  48. data() {
  49. return {
  50. showPwd: true,
  51. ruleValidate: {
  52. name: [
  53. { required: true, message: "姓名不能为空", trigger: "blur" },
  54. ],
  55. phone: [
  56. { required: true, message: "联系电话不能为空", trigger: "blur" },
  57. ],
  58. idCard: [
  59. { required: true, message: "身份证号不能为空", trigger: "blur" },
  60. ],
  61. },
  62. roleList: [],
  63. formModel: {},
  64. showDialog: true,
  65. loading: false,
  66. submitting: false,
  67. enterpriseList:[],
  68. //上传地址
  69. uploadUrl: Constant.serverUrl + "/uploadPicture",
  70. uploadData: {
  71. subFolder: "water-tank",
  72. },
  73. fileUrl: "",
  74. headers: {
  75. Authorization: getToken(),
  76. },
  77. uploadUrl1: Constant.serverUrl + "/tinymce/upload?token=" + getToken(),
  78. editorConfig: {
  79. height: 300,
  80. width: 660,
  81. },
  82. };
  83. },
  84. created() {
  85. },
  86. methods: {
  87. closeDialog() {
  88. this.$emit("close", false);
  89. },
  90. handleSubmit() {
  91. var self = this;
  92. this.$refs["form"].validate((valid) => {
  93. if (valid) {
  94. (function () {
  95. var id = self.formModel.id;
  96. if (id == null || id.length == 0) {
  97. return aboutUsApi.add(self.formModel);
  98. } else {
  99. return aboutUsApi.update(self.formModel);
  100. }
  101. })().then(function (response) {
  102. var jsonData = response.data;
  103. if (jsonData.result) {
  104. self.$message({
  105. message: "保存成功!",
  106. type: "success",
  107. });
  108. self.$emit("close", true);
  109. } else {
  110. self.$message({
  111. message: jsonData.message + "",
  112. type: "warning",
  113. });
  114. self.$emit("close", false);
  115. }
  116. });
  117. }
  118. });
  119. },
  120. handleAvatarSuccess(res, file) {
  121. var self = this;
  122. self.formModel.image = res.data;
  123. self.fileUrl =
  124. res.data + "?x-oss-process=image/resize,m_lfit,h_300,w_300";
  125. },
  126. beforeAvatarUpload(file) {
  127. const isLt2M = file.size / 1024 / 1024 < 2;
  128. if (!isLt2M) {
  129. this.$message.error('上传头像图片大小不能超过 2MB!');
  130. }
  131. return isLt2M;
  132. }
  133. },
  134. async mounted() {
  135. var self = this;
  136. self.loading = true;
  137. (function () {
  138. if (self.businessKey != null && self.businessKey.length > 0) {
  139. return aboutUsApi.edit(self.businessKey);
  140. } else {
  141. return aboutUsApi.create();
  142. }
  143. })()
  144. .then((response) => {
  145. self.loading = false;
  146. var jsonData = response.data;
  147. if (jsonData.result) {
  148. self.formModel = jsonData.data;
  149. if (self.formModel.content != null) {
  150. self.$refs.editor.setContent(self.formModel.content);
  151. }
  152. } else {
  153. self.$message.error(jsonData.message + "");
  154. }
  155. })
  156. .catch((error) => {
  157. self.$message.error(error + "");
  158. self.loading = false;
  159. });
  160. },
  161. components: {
  162. "mce-editor": MceEditor,
  163. },
  164. };
  165. </script>
  166. <style scoped>
  167. .user-panel {
  168. margin: 10px auto;
  169. }
  170. .avatar-uploader .el-upload {
  171. border: 1px dashed #d9d9d9;
  172. border-radius: 6px;
  173. cursor: pointer;
  174. position: relative;
  175. overflow: hidden;
  176. }
  177. .avatar-uploader .el-upload:hover {
  178. border-color: #409EFF;
  179. }
  180. .avatar-uploader-icon {
  181. font-size: 28px;
  182. color: #8c939d;
  183. width: 178px;
  184. height: 178px;
  185. line-height: 178px;
  186. text-align: center;
  187. }
  188. .avatar {
  189. width: 178px;
  190. height: 178px;
  191. display: block;
  192. }
  193. </style>