dynamic_comment.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. <template>
  2. <div>
  3. <el-row :gutter="15">
  4. <el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px">
  5. <el-col :span="8">
  6. <el-form-item label="状态" prop="status">
  7. <el-select v-model="formData.status" placeholder="请选择状态" :style="{width: '100%'}">
  8. <el-option v-for="(item, index) in statusOptions" :key="index" :label="item.label" :value="item.value" :disabled="item.disabled"></el-option>
  9. </el-select>
  10. </el-form-item>
  11. </el-col>
  12. <el-col :span="8">
  13. <el-form-item size="large">
  14. <el-button type="primary" @click="submitForm">提交</el-button>
  15. <el-button @click="resetForm">重置</el-button>
  16. </el-form-item>
  17. </el-col>
  18. </el-form>
  19. </el-row>
  20. <el-table v-loading="loading" :border="true" :data="table" style="width: 100%">
  21. <el-table-column prop="type_text" label="动态id+名称" width="190">
  22. <template slot-scope="scope">
  23. <div>动态id:{{scope.row.dynamicId}}</div>
  24. <!-- <div>名称:{{scope.row.content}}</div> -->
  25. </template>
  26. </el-table-column>
  27. <el-table-column label="评论用户" width="200">
  28. <template slot-scope="scope">
  29. <el-avatar :src="scope.row.user_info.icon_url">
  30. </el-avatar>
  31. <span>{{scope.row.user_info.nickname}}</span>
  32. </template>
  33. </el-table-column>
  34. <el-table-column prop="content" label="标题" width="300">
  35. </el-table-column>
  36. <el-table-column prop="addtime" label="发布时间" width="190">
  37. </el-table-column>
  38. <el-table-column prop="status_text" label="状态" width="190">
  39. </el-table-column>
  40. <el-table-column label="操作" fixed="right">
  41. <template slot-scope="scope">
  42. <template v-if="scope.row.status == 1">
  43. <el-button type="success" size="mini" @click="setDynamicPass(scope.row.comId)">通过</el-button>
  44. <el-button type="warning" size="mini" @click="callDynamicReject(scope.row.comId)">拒绝</el-button>
  45. </template>
  46. <template v-if="scope.row.status == 2">
  47. <!-- <el-button type="primary" size="mini" @click="setDynamicRecommend(scope.row.comId)">神评</el-button> -->
  48. <el-button type="warning" size="mini" @click="callDynamicReject(scope.row.comId,scope.row)">拒绝</el-button>
  49. </template>
  50. <template v-if="scope.row.status == 3">
  51. <el-button type="success" size="mini" @click="setDynamicPass(scope.row.comId)">通过</el-button>
  52. </template>
  53. <el-button type="danger" size="mini" @click="delDynamic(scope.row.comId)">删除</el-button>
  54. </template>
  55. </el-table-column>
  56. </el-table>
  57. <el-row :gutter="24">
  58. <el-col :span="23" :offset="1">
  59. <div class="mt-20 mb-20">
  60. <el-pagination :page-size="page_size" :current-page="page" @current-change="pageChange" @size-change="handleSizeChange" background :page-sizes="[10, 30, 50]" layout="total,sizes,prev, pager, next,jumper" :total="total">
  61. </el-pagination>
  62. </div>
  63. </el-col>
  64. </el-row>
  65. <el-dialog :visible="visible" v-bind="$attrs" v-on="$listeners" @open="onOpen" @close="onClose" title="请填写拒绝原因">
  66. <el-form ref="modalForm" :model="modalFormData" :rules="modalFormDataRules" size="medium" label-width="100px">
  67. <el-form-item label="评论id">
  68. <el-input v-model="rejectDynamicId" :disabled="true" placeholder="请输入拒绝原因" clearable :style="{width: '100%'}">
  69. </el-input>
  70. </el-form-item>
  71. <el-form-item label="内容">
  72. <el-input v-model="rejectTypeText" :disabled="true" placeholder="请输入拒绝原因" clearable :style="{width: '100%'}">
  73. </el-input>
  74. </el-form-item>
  75. <el-form-item label="拒绝原因" prop="memo">
  76. <el-input v-model="modalFormData.memo" placeholder="请输入拒绝原因" clearable :style="{width: '100%'}">
  77. </el-input>
  78. </el-form-item>
  79. </el-form>
  80. <div slot="footer">
  81. <el-button @click="close">取消</el-button>
  82. <el-button type="primary" @click="handelConfirm">确定</el-button>
  83. </div>
  84. </el-dialog>
  85. </div>
  86. </template>
  87. <script>
  88. export default {
  89. inheritAttrs: false,
  90. components: {},
  91. props: [],
  92. data() {
  93. return {
  94. formData: {
  95. status: 0
  96. },
  97. rules: {
  98. status: [],
  99. },
  100. statusOptions: [{
  101. "label": "全部",
  102. "value": 0
  103. }, {
  104. "label": "未审核",
  105. "value": 1
  106. }, {
  107. "label": "审核通过",
  108. "value": 2
  109. }, {
  110. "label": "审核拒绝",
  111. "value": 3
  112. }],
  113. table: [],
  114. page: 1,
  115. page_size: 10,
  116. total: 0,
  117. loading: false,
  118. // 模态表单
  119. visible: false,
  120. rejectTypeText: '',
  121. rejectDynamicId: "",
  122. modalFormData: {
  123. memo: "",
  124. },
  125. modalFormDataRules: {
  126. memo: [{
  127. required: true,
  128. message: '请输入拒绝原因',
  129. trigger: 'blur'
  130. }],
  131. },
  132. }
  133. },
  134. computed: {},
  135. watch: {},
  136. created() {
  137. },
  138. mounted() {
  139. this.fetchData()
  140. },
  141. methods: {
  142. submitForm() {
  143. this.$refs['elForm'].validate(valid => {
  144. if (!valid) return
  145. // 重置页数
  146. this.page = 1
  147. this.fetchData()
  148. // TODO 提交表单
  149. })
  150. },
  151. resetForm() {
  152. this.$refs['elForm'].resetFields()
  153. },
  154. pageChange(val) {
  155. this.page = val
  156. this.fetchData()
  157. },
  158. handleSizeChange(e) {
  159. this.page_size = e;
  160. this.fetchData()
  161. },
  162. async fetchData() {
  163. this.loading = true;
  164. let res = await this.$post("/uapi/v1/m/dynamic/get_admin_dynamic_comment_list", {
  165. status: this.formData.status + "",
  166. page: this.page,
  167. page_size: this.page_size
  168. });
  169. this.loading = false;
  170. if (res && res.status === 1) {
  171. this.table = [...res.data.list]
  172. this.total = res.data.total
  173. }
  174. },
  175. // 设置通过
  176. async setDynamicPass(comId) {
  177. this.$post("/uapi/v1/m/dynamic/set_user_dynamic_comment_status", {
  178. status: 2,
  179. comId
  180. }).then((res) => {
  181. if (res.status == 1) {
  182. this.$message({
  183. type: "success",
  184. message: "操作成功!"
  185. });
  186. this.fetchData()
  187. }
  188. }).catch(() => {
  189. this.$message({
  190. type: "info",
  191. message: "操作失败"
  192. });
  193. });
  194. },
  195. // 设置拒绝
  196. async setDynamicReject(comId, memo) {
  197. this.$post("/uapi/v1/m/dynamic/set_user_dynamic_comment_status", {
  198. status: 3,
  199. comId,
  200. memo: memo
  201. }).then((res) => {
  202. if (res.status == 1) {
  203. this.$message({
  204. type: "success",
  205. message: "操作成功!"
  206. });
  207. this.close()
  208. this.fetchData()
  209. }
  210. }).catch(() => {
  211. this.$message({
  212. type: "info",
  213. message: "操作失败"
  214. });
  215. });
  216. },
  217. async delDynamic(comId){
  218. this.$post("/uapi/dynamic/del_dynamic_comment", {
  219. comId
  220. }).then((res) => {
  221. if (res.status == 1) {
  222. this.$message({
  223. type: "success",
  224. message: "操作成功!"
  225. });
  226. this.close()
  227. this.fetchData()
  228. }
  229. }).catch(() => {
  230. this.$message({
  231. type: "info",
  232. message: "操作失败"
  233. });
  234. });
  235. },
  236. // 设置推荐
  237. async setDynamicRecommend(dynamicId) {
  238. this.$post("/uapi/v1/m/dynamic/set_user_dynamic_is_hot", {
  239. is_hot: 1,
  240. dynamicId
  241. }).then((res) => {
  242. if (res.status == 1) {
  243. this.$message({
  244. type: "success",
  245. message: "操作成功!"
  246. });
  247. this.fetchData()
  248. }
  249. }).catch(() => {
  250. this.$message({
  251. type: "info",
  252. message: "操作失败"
  253. });
  254. });
  255. },
  256. callDynamicReject(comId, item) {
  257. this.rejectDynamicId = comId
  258. this.rejectTypeText = item.content
  259. this.visible = true
  260. },
  261. // 弹出表单
  262. onOpen() {},
  263. onClose() {
  264. this.$refs['modalForm'].resetFields()
  265. this.rejectDynamicId = ""
  266. this.rejectTypeText = ""
  267. this.visible = false
  268. },
  269. close() {
  270. this.$emit('update:visible', false)
  271. this.rejectDynamicId = ""
  272. this.rejectTypeText = ""
  273. this.visible = false
  274. },
  275. handelConfirm() {
  276. this.$refs['modalForm'].validate(valid => {
  277. if (!valid) return
  278. let memo = this.modalFormData.memo
  279. this.setDynamicReject(this.rejectDynamicId, memo)
  280. // this.close()
  281. })
  282. },
  283. }
  284. }
  285. </script>