1018653686@qq.com il y a 1 an
Parent
commit
eac6e38156

+ 199 - 0
src/views/XMHJC/topic/content/index.vue

@@ -0,0 +1,199 @@
+<template>
+  <div class="topicContent">
+    <!-- <Banner /> -->
+    <div class="content">
+      <byTable
+          :source="sourceList.data"
+          :pagination="sourceList.pagination"
+          :config="config"
+          :loading="loading"
+          highlight-current-row
+          :action-list="[]"
+          @get-list="getList">
+        <template #slotName="{ item }">
+          {{ item.createTime }}
+        </template>
+      </byTable>
+    </div>
+    <el-dialog title="回复列表" v-if="replyCommonModal" v-model="replyCommonModal" width="1000" class="replyCommonModal" v-loading="loading">
+      <replyList :data="formData"></replyList>
+      <template #footer>
+        <el-button @click="replyCommonModal = false" size="large">关闭</el-button>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+/* eslint-disable vue/no-unused-components */
+import { ElMessage, ElMessageBox } from "element-plus";
+import byTable from "@/components/byTable/index.vue";
+import byForm from "@/components/byForm/index.vue";
+import { computed, ref } from "vue";
+import {getDictOneByXmhjc} from "@/api/XMHJC/common";
+import useUserStore from "@/store/modules/user";
+const loading = ref(false);
+const sourceList = ref({
+  data: [],
+  pagination: {
+    total: 3,
+    pageNum: 1,
+    pageSize: 10,
+  },
+});
+const replyCommonModal = ref(false);
+const { proxy } = getCurrentInstance();
+const config = computed(() => {
+  return [
+    {
+        attrs: {
+            label: "序号",
+            prop: "id",
+        },
+    },
+    {
+      attrs: {
+        label: "主题",
+        prop: "title",
+      },
+    },
+    {
+      attrs: {
+        label: "作者",
+        prop: "authorName",
+      },
+    },
+    {
+      attrs: {
+        label: "发帖时间",
+        prop: "createTime",
+        align: "center",
+      },
+    },
+    {
+      attrs: {
+        label: "浏览量",
+        prop: "views",
+      }
+    },
+    {
+      attrs: {
+        label: "是否热门",
+        prop: "toping",
+      },
+      render(type) {
+        return type == "1" ? "是" : "否";
+      },
+    },
+    {
+      attrs: {
+        label: "操作",
+        width: "200",
+        align: "right",
+      },
+      // 渲染 el-button,一般用在最后一列。
+      renderHTML(row) {
+        return [
+          {
+            attrs: {
+              label: "查看回复",
+              type: "primary",
+              text: true,
+            },
+            el: "button",
+            click() {
+              openReplyModal(row);
+            },
+          },
+          {
+            attrs: {
+              label: "删除",
+              type: "danger",
+              text: true,
+            },
+            el: "button",
+            click() {
+              prefixDel(row);
+            },
+          },
+        ];
+      },
+    },
+  ];
+});
+
+let formData = reactive({
+  data: {},
+  treeData: [],
+  subCategoryList:[],
+});
+const formOption = reactive({
+  inline: true,
+  labelWidth: 100,
+  itemWidth: 100,
+  rules: [],
+});
+const byform = ref(null);
+const getList = async (req) => {
+  sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
+  loading.value = true;
+    proxy.post("/topicContent/page", sourceList.value.pagination).then((data) => {
+    sourceList.value.data = data.rows;
+    sourceList.value.pagination.total = data.total;
+    setTimeout(() => {
+      loading.value = false;
+    }, 200);
+  });
+};
+
+
+//打开回复列表弹窗
+const openReplyModal = (row) => {
+  formData.data = { ...row };
+  replyCommonModal.value = true;
+};
+
+//删除
+const prefixDel = (row) => {
+  ElMessageBox.confirm("你是否确认此主题?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(() => {
+    proxy.post("/topicContent/hasReply", { id: row.id }).then((res) => {
+      if(res){
+        ElMessageBox.confirm("此主题下有回复,删除后所有回复也将一并删除,是否确认删除?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }).then(() => {
+          del(row.id)
+        });
+      }else{
+        del(row.id)
+      }
+    });
+  });
+};
+
+const del = (id) => {
+  proxy.post("/topicContent/delete", { id: id }).then((res) => {
+    ElMessage({
+        message: "操作成功",
+        type: "success",
+    });
+    getList();
+  });
+
+}
+
+
+
+getList();
+</script>
+
+<style lang="scss" scoped>
+.tenant {
+  padding: 20px;
+}
+</style>

+ 252 - 0
src/views/XMHJC/topic/content/replyList.vue

@@ -0,0 +1,252 @@
+<template>
+  <div class="replyList">
+    <div class="content">
+      <byTable
+        :source="sourceList.data"
+        :pagination="sourceList.pagination"
+        :config="config"
+        :loading="loading"
+        highlight-current-row
+        :hideSearch="true"
+        @get-list="getList"
+      >
+        <template #slotName="{ item }">
+          {{ item.createTime }}
+        </template>
+      </byTable>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { ElMessage, ElMessageBox } from "element-plus";
+import byTable from "@/components/byTable/index";
+import byForm from "@/components/byForm/index";
+import { computed, ref, watch } from "vue";
+import useUserStore from "@/store/modules/user";
+
+const { proxy } = getCurrentInstance();
+const loading = ref(false);
+const submitLoading = ref(false);
+defineProps({
+  data: {
+    type: Object,
+    default: false,
+  },
+});
+watch(proxy.data, (newValue, oldValue) => {
+  getList();
+});
+const sourceList = ref({
+  data: [],
+  pagination: {
+    total: 3,
+    pageNum: 1,
+    pageSize: 10,
+  },
+});
+let dialogVisible = ref(false);
+let modalType = ref("add");
+let rules = ref({
+  dictKey: [{ required: true, message: "请输入key", trigger: "blur" }],
+  dictValue: [{ required: true, message: "请输入val", trigger: "blur" }],
+  sort: [{ required: true, message: "请输入排序", trigger: "blur" }],
+});
+const config = computed(() => {
+  return [
+    {
+      attrs: {
+        label: "键",
+        prop: "dictKey",
+      },
+    },
+    {
+      attrs: {
+        label: "值",
+        prop: "dictValue",
+      },
+    },
+    {
+      attrs: {
+        label: "排序",
+        prop: "sort",
+      },
+    },
+    {
+      attrs: {
+        label: "操作",
+        width: "200",
+        align: "right",
+      },
+      // 渲染 el-button,一般用在最后一列。
+      renderHTML(row) {
+        if (row.type == 2) {
+          return [
+            {
+              attrs: {
+                label: "修改",
+                type: "primary",
+                text: true,
+              },
+              el: "button",
+              click() {
+                getDtl(row);
+              },
+            },
+            {
+              attrs: {
+                label: "删除",
+                type: "primary",
+                text: true,
+              },
+              el: "button",
+              click() {
+                // 弹窗提示是否删除
+                ElMessageBox.confirm("此操作将删除该数据, 是否继续?", "提示", {
+                  confirmButtonText: "确定",
+                  cancelButtonText: "取消",
+                  type: "warning",
+                }).then(() => {
+                  // 删除
+                  proxy
+                    .post("/dictTenantData/delete", {
+                      id: row.id,
+                    })
+                    .then((res) => {
+                      ElMessage({
+                        message: "删除成功",
+                        type: "success",
+                      });
+                      getList();
+                    });
+                });
+              },
+            },
+          ];
+        }
+      },
+    },
+  ];
+});
+
+let formData = reactive({
+  data: {},
+  treeData: [],
+});
+const formOption = reactive({
+  inline: true,
+  labelWidth: 100,
+  itemWidth: 100,
+  rules: [],
+});
+const byform = ref(null);
+const formConfig = computed(() => {
+  return [
+    {
+      type: "input",
+      prop: "dictKey",
+      label: "键",
+      required: true,
+    },
+    {
+      type: "input",
+      prop: "dictValue",
+      label: "值",
+    },
+    {
+      label: "排序",
+      prop: "sort",
+      type: "input",
+      itemType: "number",
+    },
+  ];
+});
+const getList = async (req) => {
+  sourceList.value.pagination = {
+    ...sourceList.value.pagination,
+    ...req,
+    tipicId: proxy.data.data.id
+  };
+  loading.value = true;
+  proxy
+    .post("/topicReplies/page", sourceList.value.pagination)
+    .then((message) => {
+      sourceList.value.data = message.rows;
+      sourceList.value.pagination.total = message.total;
+      console.log(sourceList.value.data);
+      setTimeout(() => {
+        loading.value = false;
+      }, 200);
+    });
+};
+const openModal = () => {
+  dialogVisible.value = true;
+  modalType.value = "add";
+  formData.data = {};
+};
+
+const submitForm = () => {
+  console.log(byform.value);
+  byform.value.handleSubmit((valid) => {
+    submitLoading.value = true;
+    formData.data.dictCode = proxy.data.data.code;
+    formData.data.tenantId = useUserStore().user.tenantId;
+    proxy
+      .post("/dictTenantData/" + modalType.value, formData.data)
+      .then((res) => {
+        ElMessage({
+          message: modalType.value == "add" ? "添加成功" : "编辑成功",
+          type: "success",
+        });
+        dialogVisible.value = false;
+        submitLoading.value = false;
+        getList();
+      })
+      .catch((err) => {
+        submitLoading.value = false;
+      });
+  });
+};
+
+const getDtl = (row) => {
+  formData.data = { ...row };
+  modalType.value = "edit";
+  dialogVisible.value = true;
+};
+
+const changeStatus = (row) => {
+  modalType.value = "edit";
+  let status = row.status ? 0 : 1;
+  proxy.post("/tenantInfo/detail", { id: row.id }).then((res) => {
+    res.status = status;
+    formData.data = res;
+    ElMessageBox.confirm("你是否确认此操作?", "提示", {
+      confirmButtonText: "确定",
+      cancelButtonText: "取消",
+      type: "warning",
+    }).then(() => {
+      // 删除
+      proxy
+        .post("/tenantInfo/" + modalType.value, formData.data)
+        .then((res) => {
+          ElMessage({
+            message: "操作成功",
+            type: "success",
+          });
+          getList();
+        });
+    });
+  });
+};
+
+alert(123123123);
+getList();
+</script>
+
+<style lang="scss" scoped>
+.dictTenantDtl {
+}
+.tenant {
+  padding: 20px;
+}
+</style>