nanshan %!s(int64=2) %!d(string=hai) anos
pai
achega
943cbfd661

+ 0 - 0
src/api/sets/index.js


BIN=BIN
src/assets/images/邮票6.png


BIN=BIN
src/assets/images/邮票6详情.png


+ 32 - 4
src/router/index.js

@@ -119,7 +119,7 @@ export const constantRoutes = [
     path: '/messageList',
     component: Layout,
     // redirect: '消息管理',
-    meta: { title: '消息管理', icon : "message" },
+    meta: { title: '消息管理', icon: "message" },
     children: [
       {
         path: 'messageList',
@@ -134,10 +134,10 @@ export const constantRoutes = [
         meta: { title: '创建消息', icon: 'build' }
       },
       {
-        path:'messageDetails',
-        component:() => import('@/views/message/messageDetails'),
+        path: 'messageDetails',
+        component: () => import('@/views/message/messageDetails'),
         name: 'messageDetails',
-        meta: { title:'公告详情', icon:'user'},
+        meta: { title: '公告详情', icon: 'user' },
         hidden: true
       }
       // messageDetails
@@ -164,6 +164,34 @@ export const constantRoutes = [
     ]
   } ,
  
+  {
+    path: '/Sets',
+    component: Layout,
+    // redirect: '套系管理',
+    meta: { title: '藏品管理', icon: "slider" },
+    children: [
+      {
+        path: 'setList',
+        component: () => import('@/views/sets/setList'),
+        name: 'setList',
+        meta: { title: '套系列表', icon: 'nested' }
+      },
+      {
+        path: 'addSet',
+        component: () => import('@/views/sets/addSet'),
+        name: 'addSet',
+        meta: { title: '创建套系', icon: 'nested' }
+      },
+      {
+        path: 'collectionDetails',
+        component: () => import('@/views/sets/collectionDetails'),
+        name: 'collectionDetails',
+        meta: { title: '藏品详情', icon: 'list' },
+        hidden: true
+      }
+    ]
+  }
+
 ]
 
 // 动态路由,基于用户权限动态去加载

+ 6 - 9
src/views/notice/noticeList.vue

@@ -24,13 +24,9 @@
             <el-col :span="8">
               <el-form label-width="80px">
                 <el-form-item label="发布时间:">
-                  <el-col :span="11">
-                    <el-time-picker placeholder="开始日期"></el-time-picker>
-                  </el-col>
-                  <el-col class="line" :span="1">——</el-col>
-                  <el-col :span="11">
-                    <el-time-picker placeholder="结束日期"></el-time-picker>
-                  </el-col>
+                  <el-date-picker v-model="dataput" type="datetimerange" class="up-input-right" range-separator="至"
+                    start-placeholder="开始日期" end-placeholder="结束日期" align="right">
+                  </el-date-picker>
                 </el-form-item>
               </el-form>
             </el-col>
@@ -62,7 +58,7 @@
         <!-- <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
           :current-page="queryInfo.pagenum" :page-sizes="[1, 2, 5, 10]" :page-size="queryInfo.pagesize"
           layout="total, sizes, prev, pager, next, jumper" :total="10"></el-pagination> -->
-        </div>
+      </div>
     </el-container>
   </div>
 </template>
@@ -84,7 +80,8 @@ export default {
         page: 1,
         limit: 10
       },
-      total: 1
+      total: 1,
+      dataput: ''
     }
   },
 

+ 166 - 0
src/views/sets/addSet.vue

@@ -0,0 +1,166 @@
+<template>
+    <div class="collection-add">
+
+        <!-- <el-page-header @back="goBack" content="创建消息"></el-page-header> -->
+        <div class="collection-add-box">
+            <el-form :model="collection" :rules="rules" ref="form" label-width="100px">
+                <el-form-item label="藏品名称(套):" prop="collectionTitle" label-width="120px">
+                    <el-input v-model="collection.collectionTitle" maxlength="20" show-word-limit></el-input>
+                </el-form-item>
+                <el-form-item label="藏品头图:" prop="collectionImg" label-width="120px">
+                    <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/"
+                        :show-file-list="true" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
+                        <img v-if="collection.imageUrl" :src="collection.imageUrl" class="avatar">
+                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                    </el-upload>
+                    <span style="color: red;">请按照规范上传尺寸为750px * 750px的照片</span>
+                </el-form-item>
+                <el-form-item label="设置套系时间:" prop="collectionTime" label-width="120px">
+                    <el-date-picker v-model="collection.dataput" type="datetimerange" class="up-input-right"
+                        range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" align="right">
+                    </el-date-picker>
+                </el-form-item>
+                <el-form-item label="线下礼品兑换:" prop="giftRedemption" label-width="120px">
+                    <el-radio-group v-model="collection.resource">
+                        <el-radio label="可兑换"></el-radio>
+                        <el-radio label="不可兑换"></el-radio>
+                    </el-radio-group>
+                </el-form-item>
+                <el-form-item label-width="120px">
+                    <el-button type="primary" @click="subSet()">提交</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+    </div>
+</template>
+
+<script>
+
+export default {
+    data() {
+        return {
+            collection: {
+                collectionTitle: '',
+                collectionTime: '',
+                resource: '',
+                imageUrl: '',
+                dataput: ''
+            },
+            rules: {
+                collectionTitle: [
+                    { required: true, collection: '请输入藏品名称', trigger: 'blur' }
+                ],
+
+                collectionImg: [
+                    { required: true, collection: '请设置头图', trigger: 'blur' }
+                ],
+                collectionTime: [
+                    { required: true, collection: '请设置时间', trigger: 'blur' }
+                ],
+                giftRedemption: [
+                    { required: true, collection: '请设置是否可兑换', trigger: 'blur' }
+                ],
+            },
+
+
+        }
+    },
+    methods: {
+        handleAvatarSuccess(res, file) {
+            this.collection.imageUrl = URL.createObjectURL(file.raw);
+        },
+        //限制图片大小
+        beforeAvatarUpload(file) {
+            const isJPG = file.type === "image/jpeg" || file.type === "image/png";
+            if (!isJPG) {
+                this.$message.error("上传头像图片只能是 JPG和PNG 格式!");
+            }
+            //调用[限制图片尺寸]函数
+            this.limitFileWH(750, 750, file).then((res) => {
+                file.isFlag = res
+            })
+            return isJPG && file.isFlag;
+        },
+        //限制图片尺寸
+        limitFileWH(E_width, E_height, file) {
+            let _this = this;
+            let imgWidth = "";
+            let imgHight = "";
+            const isSize = new Promise(function (resolve, reject) {
+                let width = E_width;
+                let height = E_height;
+                let _URL = window.URL || window.webkitURL;
+                let img = new Image();
+                img.onload = function () {
+                    imgWidth = img.width;
+                    imgHight = img.height;
+                    let valid = img.width == width && img.height == height;
+                    valid ? resolve() : reject();
+                }
+                img.src = _URL.createObjectURL(file);
+            }).then(() => {
+                return true;
+            }, () => {
+                _this.$message.warning({
+                    message: '上传文件的图片大小不合符标准,宽需要为' + E_width + 'px,高需要为' + E_height + 'px。当前上传图片的宽高分别为:' + imgWidth + 'px和' +
+                        imgHight + 'px',
+                    btn: false
+                })
+                return false;
+            });
+            return isSize
+        },
+        //
+        subSet() {
+            console.log("提交")
+        }
+    }
+}
+
+
+</script>
+
+<style>
+.collection-add {
+    width: 700px;
+    height: 100%;
+    position: absolute;
+    top: 30px;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    margin: auto;
+    border: 1px solid #ccc;
+}
+
+.collection-add-box {
+    padding: 40px;
+}
+
+.avatar-uploader .el-upload {
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+}
+
+.avatar-uploader .el-upload:hover {
+    border-color: #409EFF;
+}
+
+.avatar-uploader-icon {
+    font-size: 28px;
+    color: #8c939d;
+    width: 447px;
+    height: 447px;
+    line-height: 447px;
+    text-align: center;
+}
+
+.avatar {
+    width: 178px;
+    height: 178px;
+    display: block;
+}
+</style>

+ 143 - 0
src/views/sets/collectionDetails.vue

@@ -0,0 +1,143 @@
+<template>
+    <div class="container">
+        <h3 class="title">藏品详情</h3>
+        <div class="content">
+            <el-row>
+                <el-col :span="24">
+                    <div class="grid-content-title bg-title">藏品图片</div>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="24">
+                    <div class="grid-content-content bg-img">
+                        <img src="../../assets/images/邮票6.png" alt="">
+                    </div>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="10">
+                    <div class="grid-content-title bg-title">藏品名称</div>
+                </el-col>
+                <el-col :span="7">
+                    <div class="grid-content-title bg-title">藏品价格</div>
+                </el-col>
+                <el-col :span="7">
+                    <div class="grid-content-title bg-title">藏品数量</div>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="10">
+                    <div class="grid-content-title bg-content">可邮寄藏品</div>
+                </el-col>
+                <el-col :span="7">
+                    <div class="grid-content-title bg-content">0.01元</div>
+                </el-col>
+                <el-col :span="7">
+                    <div class="grid-content-title bg-content">16份</div>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="10">
+                    <div class="grid-content-title bg-title">发行方</div>
+                </el-col>
+                <el-col :span="14">
+                    <div class="grid-content-title bg-title">售卖时间</div>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="10">
+                    <div class="grid-content-title bg-content">北京原创三色广告有限公司</div>
+                </el-col>
+                <el-col :span="14">
+                    <div class="grid-content-title bg-content">2023-02-15 10:10:10 - 2023-02-17 00:00:00</div>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="10">
+                    <div class="grid-content-title bg-title">实体邮品邮寄</div>
+                </el-col>
+                <el-col :span="7">
+                    <div class="grid-content-title bg-title">积分返佣</div>
+                </el-col>
+                <el-col :span="7">
+                    <div class="grid-content-title bg-title">返利百分比</div>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="10">
+                    <div class="grid-content-title bg-content">邮寄</div>
+                </el-col>
+                <el-col :span="7">
+                    <div class="grid-content-title bg-content">返佣</div>
+                </el-col>
+                <el-col :span="7">
+                    <div class="grid-content-title bg-content">100%</div>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="24">
+                    <div class="grid-content-title bg-title">作品故事</div>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="24">
+                    <div class="grid-content-content bg-img2">
+                        <img src="../../assets/images/邮票6详情.png" alt="">
+                    </div>
+                </el-col>
+            </el-row>
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    methods: {
+
+    }
+}
+</script>
+
+<style scoped>
+.container {
+    width: 1220px;
+    height: 660px;
+    border: 2px solid #FAFAFA;
+    border-radius: 2px;
+    margin: 20px auto;
+    padding: 0 24px;
+}
+
+.grid-content-title {
+    height: 38px;
+    border: 1px solid #EBEEF5;
+}
+.grid-content-content {
+    min-height: 126px;
+    padding: 20px 60px;
+}
+.grid-content-content img {
+    height: 86px;
+}
+
+.content {
+    height: 580px;
+    border: 2px solid #FAFAFA;
+}
+
+.bg-title {
+    background-color: #FAFAFA;
+    color: #909399;
+    font-size: 14px;
+    line-height: 38px;
+    padding-left: 10px;
+}
+.bg-content {
+    font-size: 13px;
+    line-height: 38px;
+    padding-left: 10px;
+}
+.bg-img2 {
+    margin-left: 32px;
+}
+</style>

+ 356 - 0
src/views/sets/setList.vue

@@ -0,0 +1,356 @@
+<template>
+    <div>
+        <el-card>
+            <el-page-header @back="goback" content="套系列表"></el-page-header>
+        </el-card>
+        <el-container>
+            <el-header style="height: 120px;">
+                <div id="header-one">
+                    <h3 class="el-icon-search" style="margin-left: 10px;">筛选搜索</h3>
+                    <div id="header-one-btu">
+                        <el-button @click="empty">重置</el-button>
+                        <el-button type="primary" @click="check">搜索</el-button>
+                    </div>
+                </div>
+                <div id="header-two">
+                    <el-row>
+                        <el-col :span="5" id="header-two-left">
+                            <el-form ref="anFormRef" :model="anForm" label-width="80px">
+                                <el-form-item label="藏品名称(套):" label-width="102px">
+                                    <el-input v-model="anForm.anName" class="anInput" placeholder="筛选藏品标题"
+                                        center></el-input>
+                                </el-form-item>
+                            </el-form>
+                        </el-col>
+                        <el-col :span="8">
+                            <el-form label-width="80px">
+                                <el-form-item label="创建时间:">
+                                    <el-date-picker v-model="dataput" type="datetimerange" class="up-input-right"
+                                        range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" align="right">
+                                    </el-date-picker>
+                                </el-form-item>
+                            </el-form>
+                        </el-col>
+                    </el-row>
+                </div>
+            </el-header>
+            <el-main style="height: 110px;">
+                <h3 class="el-icon-tickets">套系列表 共有{{ total }}条数据</h3>
+                <el-button id="main-btu" @click="addSet()">添加</el-button>
+            </el-main>
+            <div class="footer">
+                <!-- 这破玩意帮点击为啥不好使...... -->
+                <!-- <el-radio-group v-model="tabPosition">
+                                                                                             <el-radio-button label="onSale" tab-click="onSale1">在售</el-radio-button>
+                                                                                            <el-radio-button label="preSale" @click="preSale()">预售</el-radio-button>
+                                                                                                 <el-radio-button label="expired" @click="expired()">已过期</el-radio-button>
+                                                                                               </el-radio-group> -->
+                <el-row>
+                    <!-- 这块样式需要index没有只能先这么写 -->
+                    <el-button size="small" @click="onSale1()" :class="btnact">在售</el-button>
+                    <el-button size="small" @click="preSale()" :class="btnact1">预售</el-button>
+                    <el-button size="small" @click="expired()" :class="btnact2">已过期</el-button>
+                </el-row>
+                <!-- 非响应式??‘’‘不是非响应式上面帮点击时间不好使 -->
+                <el-table :data="tableData" border style="width: 100%">
+                    <el-table-column prop="id" label="id" width="110" align="center">
+                    </el-table-column>
+                    <el-table-column prop="name" label="藏品名称(套)" width="280" align="center">
+                    </el-table-column>
+                    <el-table-column prop="time" label="创建时间" width="280" align="center">
+                    </el-table-column>
+                    <el-table-column prop="time2" label="展示时间" width="280" align="center">
+                    </el-table-column>
+                    <el-table-column prop="number" label="藏品数量" width="280" align="center">
+                    </el-table-column>
+                    <el-table-column prop="tai" label="状态" width="280" align="center">
+                    </el-table-column>
+                    <el-table-column prop="edit" label="操作" width="280" align="center">
+                        <el-button type="text" @click="sList()">藏品列表</el-button>
+                        <el-row>
+                            <el-button type="text" @click="upJia()">上架</el-button>
+                            <el-button type="text" @click="editTime()">修改时间</el-button>
+                        </el-row>
+                    </el-table-column>
+                </el-table>
+            </div>
+        </el-container>
+    </div>
+</template>
+<script>
+import { getSet, searchSet } from "@/api/sets/index"
+export default {
+    data() {
+        return {
+            anForm: {
+                anName: '',
+            },
+            total: 1,
+            dataput: '',
+            activeName: 'first',
+            //列表
+            tabPosition: 'onSale',
+            //
+            btnact: 'th',
+            btnact1: 'th1',
+            btnact2: 'th2',
+            tableData: [{
+                id: '17',
+                name: 'wangxiu',
+                time: '20230218',
+                time2: '20230218',
+                number: '7',
+                tai: '已上线',
+                edit: 'caozuo'
+            }],
+        }
+    },
+    watch: {
+        activeName(newVal, oldVal) {
+            console.log(newVal, "\n", oldVal)
+        }
+    },
+    created() {
+
+    },
+    methods: {
+        goback() {
+            window.history.go(-1)
+        },
+        //点击标签切换修改后
+        onSale1() {
+            console.log("11")
+            if (this.btnact == 'activeBack') {
+                this.btnact = 'th'
+                this.btnact1 = 'activeBack1'
+                this.btnact2 = 'activeBack2'
+            }
+            else {
+                this.btnact = 'activeBack'
+                this.btnact1 = 'th1'
+                this.btnact2 = 'th2'
+            }
+            this.tableData = [{
+                id: '17',
+                name: 'wangxiu',
+                time: '20230218',
+                time2: '20230218',
+                number: '7',
+                tai: '已上线',
+                edit: 'caozuo'
+            }]
+
+
+
+        },
+        preSale() {
+            console.log('222')
+            if (this.btnact1 == 'activeBack1') {
+                this.btnact1 = 'th1'
+                this.btnact = 'activeBack'
+                this.btnact2 = 'activeBack2'
+            }
+            else {
+                this.btnact1 = 'activeBack1'
+                this.btnact = 'th'
+                this.btnact2 = 'th2'
+            }
+            this.tableData = [{
+                id: '17',
+                name: 'wangxiu 预售',
+                time: '20230218',
+                time2: '20230218',
+                number: '7',
+                tai: '已上线',
+                edit: 'caozuo'
+            }]
+        },
+        expired() {
+            console.log('333')
+            if (this.btnact2 == 'activeBack2') {
+                this.btnact2 = 'th2'
+                this.btnact = 'activeBack'
+                this.btnact1 = 'activeBack1'
+            }
+            else {
+                this.btnact2 = 'activeBack'
+                this.btnact = 'th'
+                this.btnact1 = 'th1'
+            }
+            this.tableData = [{
+                id: '17',
+                name: 'wangxiu77777',
+                time: '20230218',
+                time2: '20230218',
+                number: '7',
+                tai: '已上线',
+                edit: 'caozuo'
+            }]
+        },
+        //重置
+        empty() {
+            this.anForm.anName = "";
+            this.dataput = "";
+        },
+        //搜索
+        check() {
+            if (this.anForm.anName) {
+            let con = {
+            name: this.anForm.anName
+        }
+            searchNotice(con).then((data) => {
+             this.tableData = data.list;
+             this.total = data.count;
+        })
+      } else {
+        this.getnotice();
+      }
+        },
+        //添加
+        addSet() {
+            this.$router.push('./addSet')
+        },
+        //藏品列表
+        sList() {
+            this.$router.push('./collectionDetails')
+        },
+        //上架
+        upJia() {
+            this.$confirm('是否要上架商品?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+        }).then(() => {
+            this.$message({
+            type: 'success',
+            message: '上架成功!'
+        });
+        }).catch(() => {
+            this.$message({
+            type: 'info',
+             message: '已取消'
+        });
+        });
+
+        },
+        //修改时间
+        editTime() {
+            console.log("修改时间")
+        }
+
+
+    }
+};
+
+</script>
+<style scoped>
+.el-main {
+    color: #333;
+    border: 1px solid #d3d7d4;
+    border-radius: 5px;
+    margin-left: 30px;
+    margin-right: 30px;
+}
+
+.el-header {
+    color: #333;
+    border: 1px solid #d3d7d4;
+    border-radius: 5px;
+    margin: 30px;
+}
+
+/* .el-footer {} */
+
+#footer-t {
+    color: #333;
+    border: 1px solid #d3d7d4;
+    border-radius: 5px;
+    margin-left: 10px;
+    margin-top: 30px;
+}
+
+/* #header-one {} */
+
+#header-two {
+    /* background-color: aqua; */
+    margin-left: 90px;
+}
+
+#header-one-btu {
+    margin: 20px 20px 0px 0px;
+    float: right;
+}
+
+#header-two-left {
+    margin-right: 150px;
+}
+
+#main-btu {
+    float: right;
+    margin-top: 10px;
+}
+
+#page {
+    float: right;
+    margin-top: 15px;
+}
+
+.footer {
+    margin: 20px auto;
+    width: 97%;
+}
+
+.th {
+    /* margin: 0;
+    padding: 0; */
+    margin-right: -10.75px;
+    font-size: 16px;
+    font-weight: 800;
+    background-color: #FFFFFF;
+    color: #606266;
+}
+
+.activeBack {
+    margin-right: -10.75px;
+    font-size: 16px;
+    font-weight: 800;
+    background-color: #409EFF;
+    color: white;
+}
+
+.th1 {
+    /* margin: 0;
+    padding: 0; */
+    margin-right: -10.75px;
+    font-size: 16px;
+    font-weight: 800;
+    background-color: #FFFFFF;
+    color: #606266;
+}
+
+.activeBack1 {
+    margin-right: -10.75px;
+    font-size: 16px;
+    font-weight: 800;
+    background-color: #409EFF;
+    color: white;
+}
+
+.th2 {
+    /* margin: 0;
+    padding: 0; */
+    margin-right: -10.75px;
+    font-size: 16px;
+    font-weight: 800;
+    background-color: #FFFFFF;
+    color: #606266;
+}
+
+.activeBack2 {
+    margin-right: -10.75px;
+    font-size: 16px;
+    font-weight: 800;
+    background-color: #409EFF;
+    color: white;
+}
+</style>