social.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <template>
  2. <div class="info">
  3. <header>
  4. <h5>专业社区影响力</h5>
  5. </header>
  6. <div class="edit">
  7. <el-form ref="form" :rules="rules" :model="social" label-width="130px">
  8. <div class="line">
  9. <img
  10. class="prefix-icon"
  11. src="~@/assets/img/sign/github.png"
  12. srcset="~@/assets/img/sign/github@2x.png"
  13. alt="github"
  14. />
  15. <el-form-item label="Github" prop="github">
  16. <el-input placeholder="请输入需绑定账号用户名" v-model="social.github"></el-input>
  17. </el-form-item>
  18. <span class="opts">
  19. <!-- <el-button type="info" @click="handleCancel('github')">取消</el-button> -->
  20. <el-button type="primary" @click="onSubmit('github')">确认</el-button>
  21. </span>
  22. </div>
  23. <div class="line">
  24. <img
  25. class="prefix-icon"
  26. src="~@/assets/img/sign/zhihu.png"
  27. srcset="~@/assets/img/sign/zhihu@2x.png"
  28. alt="zhihu"
  29. />
  30. <el-form-item label="知乎" prop="zhihu">
  31. <el-input placeholder="请输入需绑定账号用户名" v-model="social.zhihu"></el-input>
  32. </el-form-item>
  33. <span class="opts">
  34. <!-- <el-button type="info" @click="handleCancel('zhihu')">取消</el-button> -->
  35. <el-button type="primary" @click="onSubmit('zhihu')">确认</el-button>
  36. </span>
  37. </div>
  38. <div class="line">
  39. <img
  40. class="prefix-icon"
  41. src="~@/assets/img/sign/stackoverflow.png"
  42. srcset="~@/assets/img/sign/stackoverflow@2x.png"
  43. alt="stackoverflow"
  44. />
  45. <el-form-item label="StackOverflow" prop="stackoverflow">
  46. <el-input placeholder="请输入需绑定账号用户名" v-model="social.stackoverflow"></el-input>
  47. </el-form-item>
  48. <span class="opts">
  49. <!-- <el-button type="info" @click="handleCancel('stackoverflow')">取消</el-button> -->
  50. <el-button type="primary" @click="onSubmit('stackoverflow')">确认</el-button>
  51. </span>
  52. </div>
  53. <div class="line">
  54. <img
  55. class="prefix-icon"
  56. src="~@/assets/img/sign/dribbble.png"
  57. srcset="~@/assets/img/sign/dribbble@2x.png"
  58. alt="dribbble"
  59. />
  60. <el-form-item label="Dribbble" prop="dribbble">
  61. <el-input placeholder="请输入需绑定账号用户名" v-model="social.dribbble"></el-input>
  62. </el-form-item>
  63. <span class="opts">
  64. <!-- <el-button type="info" @click="handleCancel('dribbble')">取消</el-button> -->
  65. <el-button type="primary" @click="onSubmit('dribbble')">确认</el-button>
  66. </span>
  67. </div>
  68. </el-form>
  69. </div>
  70. </div>
  71. </template>
  72. <script>
  73. import uploader from "@/components/uploader";
  74. export default {
  75. data() {
  76. return {
  77. // editing: true,
  78. editingItem: [],
  79. rules: {
  80. name: ""
  81. },
  82. social: {
  83. github: "",
  84. zhihu: "",
  85. stackoverflow: "",
  86. dribbble: ""
  87. },
  88. origin: {}
  89. };
  90. },
  91. components: {
  92. uploader
  93. },
  94. computed: {},
  95. watch: {},
  96. async mounted() {
  97. this.getData();
  98. },
  99. methods: {
  100. // github, zhihu, stackoverflow, dribbble
  101. async onSubmit(type) {
  102. console.log("submit!", this.social);
  103. const value = this.social[type];
  104. if (!value) {
  105. this.$message.error("请检查输入!");
  106. return;
  107. }
  108. const data = Object.assign({}, this.origin);
  109. data[`${type}`] = value;
  110. const postData = {};
  111. for (let key in data) {
  112. postData[`${key}_user`] = data[key];
  113. }
  114. const res = await this.$axios.$post(
  115. `/api/social_network/update`,
  116. postData
  117. );
  118. if (res.status === 1) {
  119. this.$message.success("保存成功!");
  120. } else {
  121. // this.$message.error(res.info);
  122. }
  123. },
  124. async getData() {
  125. const res = await this.$axios.$post("/api/social_network/get_fill_info");
  126. const data = res.data || {};
  127. this.social = data;
  128. this.origin = Object.assign({}, data);
  129. }
  130. }
  131. };
  132. </script>
  133. <style lang="scss">
  134. .info {
  135. header .el-icon-plus {
  136. font-size: 18px;
  137. }
  138. .edit {
  139. padding: 20px;
  140. > form {
  141. .header {
  142. display: flex;
  143. justify-content: space-between;
  144. align-items: center;
  145. margin-bottom: 10px;
  146. }
  147. .opts {
  148. display: flex;
  149. align-items: center;
  150. .el-button {
  151. margin-left: 5px;
  152. }
  153. }
  154. .to {
  155. margin-right: 10px;
  156. }
  157. .line {
  158. position: relative;
  159. display: flex;
  160. justify-content: space-between;
  161. align-items: center;
  162. height: 80px;
  163. border-bottom: 1px solid #ebeef5;
  164. .el-form-item {
  165. margin-bottom: 0;
  166. }
  167. .el-input {
  168. width: 586px;
  169. }
  170. .prefix-icon {
  171. position: absolute;
  172. left: 0;
  173. top: 50%;
  174. transform: translateY(-50%);
  175. width: 26px;
  176. height: 26px;
  177. z-index: 10;
  178. }
  179. }
  180. .el-form-item__label {
  181. text-align: left;
  182. padding-left: 30px;
  183. }
  184. }
  185. }
  186. }
  187. </style>