From ecdfa6841886c71f349d4d7dfa634dd4d7100e88 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期三, 09 十月 2024 19:55:52 +0800
Subject: [PATCH] add:评价列表

---
 pages/order/evaluation/index.vue      |  286 +++++++++++++++++++++++++++++++++++
 components/order/evaluation-table.vue |  145 ++++++++++++++++++
 2 files changed, 431 insertions(+), 0 deletions(-)

diff --git a/components/order/evaluation-table.vue b/components/order/evaluation-table.vue
new file mode 100644
index 0000000..c670ac6
--- /dev/null
+++ b/components/order/evaluation-table.vue
@@ -0,0 +1,145 @@
+<template>
+  <div class="after-sale-table">
+    <div class="table-header">
+      <div class="table-th" style="margin-left: 20px">商品名称</div>
+      <div class="table-th ">订单编号</div>
+      <div class="table-th">评价星级</div>
+      <div class="table-th">供应商信息</div>
+      <div class="table-th">评价内容</div>
+      <div class="table-th" style="margin-left: 20px">买家</div>
+      <div class="table-th">评价时间</div>
+      <div class="table-th" style="margin-left: 20px">操作</div>
+    </div>
+    <div v-for="item in list" :key="item.id" class="table-item">
+      <div class="table-body">
+        <div class="table-td">
+          <div class="flex">
+            <el-bus-image :src="item.flowerCover" class="w-60 h-60 mr-8" />
+            <div class="leading-20">
+              <div class="text-14 font-bold">
+                {{ item.flowerName }}
+              </div>
+              <div class="leading-20">
+                <span>规格:{{ item.flowerUnit }}</span>
+              </div>
+              <div class="leading-20">
+                <span>等级:{{ item.flowerLevel }}</span>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="table-td">
+          <div class="leading-20">{{ item.orderNo }}</div>
+        </div>
+        <div class="table-td">
+          <div class="leading-20">{{item.commentGrade }}星</div>
+        </div>
+        <div class="table-td">
+          <div class="leading-20">{{ item.supplierName }}[ID:{{ item.supplierId }}]</div>
+        </div>
+
+        <div class="table-td">
+          <div class="leading-20">{{ item.comment }}</div>
+        </div>
+
+        <div class="table-td">
+          <div class="leading-20">
+            <div class="leading-20">
+              <span>UID: {{ item.customerName }}</span>
+            </div>
+            <div class="leading-20">
+              <span>昵称: {{ item.customerName }}</span>
+            </div>
+
+          </div>
+        </div>
+
+        <div class="table-td">
+          <div class="leading-20">{{ item.createTime }}</div>
+        </div>
+
+        <div class="table-td !flex-none w-180 flex items-center">
+          <el-button type="text" @click="onDetail(item)">查看</el-button>
+          <el-button  v-if="item.showFlag == '1'" type="text" @click="onShow(item)" >显示</el-button>
+          <el-button  v-if="item.showFlag == '0'" type="text" @click="onHide(item)" >隐藏</el-button>
+          <el-button  type="text" @click="onHandle(item)" >回复</el-button>
+          <el-button  type="text" @click="onDelete(item)" >删除</el-button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    list: {
+      type: Array,
+      default: () => [],
+    },
+  },
+  methods: {
+    onDetail(item) {
+      this.$emit('detail', item)
+    },
+    onHandle(item) {
+      this.$emit('handle', item)
+    },
+    onDelete(item) {
+      this.$emit('delete', item)
+    },
+    onShow(item) {
+      this.$emit('show', item)
+    },
+    onHide(item) {
+      this.$emit('hide', item)
+    },
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+.after-sale-table {
+  .table-header {
+    display: flex;
+    align-items: center;
+    font-size: 14px;
+    color: $main-title-color;
+    background-color: #f4f4f5;
+    .table-th {
+      flex: 1;
+      height: 45px;
+      line-height: 45px;
+      font-weight: bold;
+    }
+  }
+  .table-item {
+    margin-top: 10px;
+    border-bottom: 1px solid #eee;
+    &__title {
+      height: 35px;
+      line-height: 35px;
+      background-color: #f4f4f5;
+      font-size: 14px;
+      color: $main-title-color;
+      padding: 0 10px;
+      & > span {
+        margin-right: 10px;
+      }
+    }
+    .table-body {
+      display: flex;
+      align-items: stretch;
+      font-size: 12px;
+      color: $main-title-color;
+      .table-td {
+        flex: 1;
+        padding: 15px 10px;
+        &:not(:last-child) {
+          border-right: 1px solid #eee;
+        }
+      }
+    }
+  }
+}
+</style>
diff --git a/pages/order/evaluation/index.vue b/pages/order/evaluation/index.vue
new file mode 100644
index 0000000..e03d133
--- /dev/null
+++ b/pages/order/evaluation/index.vue
@@ -0,0 +1,286 @@
+<template>
+  <el-bus-crud ref="crud" v-bind="tableConfig">
+    <template #table="{ list }">
+      <template v-if="list && list.length > 0">
+        <evaluation-table :list="list" @detail="onDetail" @handle="onHandle" @delete="onDelete" @show="onShow" @hide="onHide"/>
+      </template>
+      <el-bus-empty v-else />
+    </template>
+  </el-bus-crud>
+</template>
+
+<script>
+import EvaluationTable from '@/components/order/evaluation-table'
+export default {
+  components: {
+    EvaluationTable,
+  },
+  data() {
+    return {
+      tableConfig: {
+        evaluationId: null,
+        url: 'flower/api/v2/flower-comment/page',
+        hasNew: false,
+        hasEdit: false,
+        hasDelete: true,
+        operationAttrs: {
+          width: 150,
+          fixed: 'right',
+        },
+
+        searchForm: [
+          {
+            type: 'row',
+            items: [
+              { label: '订单编号', id: 'orderId', type: 'input' },
+              { label: '商品名称', id: 'flowerName', type: 'input' },
+              {
+                label: '评价星级',
+                id: 'commentGrade',
+                type: 'bus-select-dict',
+                el: {
+                  code: 'comment_grade',
+                  clearable: true,
+                  style: 'width:100%',
+                },
+              },
+              {
+                label: '申请日期',
+                component: 'el-bus-date-range',
+                id: 'createDateBeginStr',
+                commonFormat: true,
+                commonFormatProps: ['createDateBeginStr', 'createDateEndStr'],
+                customClass: 'in-bus-form',
+              },
+            ],
+          },
+        ],
+        form: [
+          // { label: '评价内容1', id: 'comment', type: 'input' },
+        ],
+        extraDialogs: [
+          {
+            title: '评价详情',
+            readonly: true,
+            dialogAttrs: {
+              width: '70%',
+            },
+            form: [
+              {
+                label: '订单编号:',
+                id: 'orderId',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '商品名称:',
+                id: 'flowerName',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '商品封面图:',
+                id: 'flowerCover',
+                type: 'bus-upload',
+                readonly: true,
+                el: {
+                  listType: 'picture-card',
+                  limitSize: 2,
+                },
+              },
+              {
+                label: '商品等级:',
+                id: 'flowerLevel',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '商品规格:',
+                id: 'flowerUnit',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '供应商信息:',
+                id: 'supplierName',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '用户信息:',
+                id: 'customerName',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '评价星级:',
+                id: 'commentGrade',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '评论显示状态:',
+                id: 'showFlag',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '评价内容:',
+                id: 'comment',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '回复内容:',
+                id: 'replayContent',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '评价时间:',
+                id: 'createTime',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '评价图片:',
+                id: 'commentImages',
+                type: 'image',
+                readonly: true,
+              },
+              ]
+          },
+          {
+            title: '回复评价',
+            form: [
+              {
+                label: '评价内容:',
+                id: 'comment',
+                type: 'input',
+                readonly: true,
+              },
+              {
+                label: '回复内容:',
+                id: 'replayContent',
+                type: 'input',
+                el: {
+                  rows: 6,
+                  type: 'textarea',
+                },
+                rules: {
+                  required: true,
+                  message: '请输入回复内容',
+                  trigger: 'blur',
+                },
+              },
+            ],
+            atConfirm: async (val) => {
+              const { code } = await this.$elBusHttp.request(
+                'flower/api/v2/flower-comment/replay/' + this.evaluationId + '',
+                {
+                  method: 'put',
+                  data: val,
+                }
+              )
+              if (code === 0) {
+                this.$message.success('回复成功')
+              }
+            },
+          },
+        ],
+      },
+    }
+  },
+  head() {
+    return {
+      title: '评价列表',
+    }
+  },
+  methods:{
+     onHandle(item) {
+        this.evaluationId = item.id
+        this.$refs.crud.$refs.extraDialog[1].show({
+          comment: item.comment,
+        })
+    },
+     async onDetail(item) {
+       const {code, data} = await this.$elBusHttp.request(
+         'flower/api/v2/flower-comment/list',
+         {params: {id: item.id}}
+       )
+       if (code === 0) {
+         console.log(data);
+         console.log(data[0].orderId);
+         this.$refs.crud.$refs.extraDialog[0].show(data[0])
+
+       }
+     },
+    async onDelete(item) {
+      try {
+        await this.$elBusUtil.confirm(
+          `确定要删除这个商品吗?`
+        )
+        const {code, data} = await this.$elBusHttp.request(
+          'flower/api/v2/flower-comment/' + item.id + '',
+          {
+            method: 'delete',
+          }
+        )
+        if (code === 0) {
+          this.$message.success(`删除成功`)
+          this.$refs.crud.getList()
+        } else {
+          return false
+        }
+      } catch (error) {
+        return false
+      }
+    },
+    async onShow(item) {
+      try {
+        await this.$elBusUtil.confirm(
+          `确定要显示这个评价吗?`
+        )
+        const {code} = await this.$elBusHttp.request(
+          'flower/api/v2/flower-comment/show/' + item.id + '',
+          {
+            method: 'put',
+            data: {showFalg: 0},
+          }
+        )
+        if (code === 0) {
+          this.$message.success(`显示成功`)
+          this.$refs.crud.getList()
+        }
+      } catch (e) {
+        return false
+      }
+    },
+
+    async onHide(item) {
+      try {
+        await this.$elBusUtil.confirm(
+          `确定要隐藏这个评价吗?`
+        )
+        const {code} = await this.$elBusHttp.request(
+          'flower/api/v2/flower-comment/show/' + item.id + '',
+          {
+            method: 'put',
+            data: {showFalg: 1},
+          }
+        )
+        if (code === 0) {
+          this.$message.success(`隐藏成功`)
+          this.$refs.crud.getList()
+        }
+      } catch (e) {
+        return false
+      }
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

--
Gitblit v1.9.3