Initial commit: 小众厨房项目代码

Co-authored-by: Cursor <cursoragent@cursor.com>
这个提交包含在:
可乐加冰
2026-09-23 17:04:10 +08:00
当前提交 f7d3d7d1bd
共有 1761 个文件被更改,包括 453668 次插入 和 0 次删除

查看文件

@@ -0,0 +1,92 @@
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/common.css">
<style>
#linkDetail {
color: #444;
background: #fff;
padding: 0 20px 20px;
}
.category-image {
width: 90px;
height: 100px;
border: 1px solid #E6E6E6;
border-radius: 4px;
margin-right: 20px;
overflow: hidden;
position: relative;
}
.el-popover {
padding: 0;
}
.image-selected {
border-color: #7438D5;
}
.category-style-title {
padding-right: 20px;
}
.dialog-cancel-btn {
color: #FF5959
}
img {
width: 100%;
/* height: 100%; */
}
.category-style-title-container {
position: relative;
}
.category-style-tip {
color: #DDDDDD;
position: absolute;
right: -20px;
top: 13px;
}
.popover-img {
width: 180px;
height: 319px;
border-radius: 1px;
}
.popover-img img {
height: 100%;
}
.selected-image-show {
position: absolute;
right: -2px;
bottom: -2px;
width: 20px;
height: 20px;
}
[v-cloak] {
display: none
}
</style>
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
<div id="linkDetail" v-cloak>
<el-form :model="detailForm" :rules="rulesForm" ref="detailForm" label-width="108px" class="detail-form">
<el-form-item label="名称:" prop="name">
<el-input type="input" v-model="detailForm.name" placeholder="请输入名称"></el-input>
</el-form-item>
<el-form-item label="路径:" prop="path">
<el-input type="input" v-model="detailForm.path" placeholder="请输入路径"></el-input>
</el-form-item>
<el-form-item label="所属分组:">
<el-input type="input" maxlength="5" v-model="detailForm.group" placeholder="请输入所属分组"></el-input>
</el-form-item>
</el-form>
<div class="dialog-footer display-flex">
<div @click="submitForm('detailForm')" class="dialog-define-btn display-flex-c cursor-pointer">确定</div>
</div>
</div>

查看文件

@@ -0,0 +1,92 @@
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/common.css">
<style>
#linkDetail {
color: #444;
background: #fff;
padding: 0 20px 20px;
}
.category-image {
width: 90px;
height: 100px;
border: 1px solid #E6E6E6;
border-radius: 4px;
margin-right: 20px;
overflow: hidden;
position: relative;
}
.el-popover {
padding: 0;
}
.image-selected {
border-color: #7438D5;
}
.category-style-title {
padding-right: 20px;
}
.dialog-cancel-btn {
color: #FF5959
}
img {
width: 100%;
/* height: 100%; */
}
.category-style-title-container {
position: relative;
}
.category-style-tip {
color: #DDDDDD;
position: absolute;
right: -20px;
top: 13px;
}
.popover-img {
width: 180px;
height: 319px;
border-radius: 1px;
}
.popover-img img {
height: 100%;
}
.selected-image-show {
position: absolute;
right: -2px;
bottom: -2px;
width: 20px;
height: 20px;
}
[v-cloak] {
display: none
}
</style>
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
<div id="linkDetail" v-cloak>
<el-form :model="detailForm" :rules="rulesForm" ref="detailForm" label-width="108px" class="detail-form">
<el-form-item label="名称:" prop="name">
<el-input type="input" v-model="detailForm.name" placeholder="请输入名称"></el-input>
</el-form-item>
<el-form-item label="路径:" prop="path">
<el-input type="input" v-model="detailForm.path" placeholder="请输入路径"></el-input>
</el-form-item>
<el-form-item label="所属分组:">
<el-input type="input" maxlength="5" v-model="detailForm.group" placeholder="请输入所属分组"></el-input>
</el-form-item>
</el-form>
<div class="dialog-footer display-flex">
<div @click="submitForm('detailForm')" class="dialog-define-btn display-flex-c cursor-pointer">确定</div>
</div>
</div>

查看文件

@@ -0,0 +1,173 @@
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/common.css">
<style>
#linkIndex {
padding: 16px 20px 30px;
background: #fff;
border-radius: 10px 10px 0px 0px;
color: #444;
font-weight: 500;
}
.el-tabs__item {
padding: 0;
text-align: center;
width: 90px;
height: 48px;
line-height: 44px;
padding-right: 10px;
color: #666;
}
.table-item {
margin-bottom: 10px;
border: 1px solid #E6E6E6;
}
.table-item-header {
height: 40px;
background: #F9F9F9;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 30px 0 14px;
/* border: 1px solid #E6E6E6;
border-bottom: none; */
}
.express-width {
width: 100px;
text-align: center;
}
.header-btn {
margin-left: 24px;
}
.group-item-operation {
flex: 1;
}
.delete-button,
.edit-button {
cursor: pointer;
margin-right: 14px;
}
.edit-button {
color: #7438D5;
}
.delete-button {
color: #FF5959;
}
[v-cloak] {
display: none
}
</style>
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
<div id="linkIndex" v-cloak>
<div class="tabs-custom">
<el-tabs v-model="activeName" @tab-click="tabClick">
<el-tab-pane v-for="(group,gindex) in linkData" :label="group.group?group.group:'其它'"
:name="group.group?group.group:'其它'">
<div class="custom-table-header display-flex-b">
<div class="display-flex">
<div class="custom-refresh display-flex-c" @click="getData">
<i class="el-icon-refresh"></i>
</div>
<div class="create-btn display-flex-c" @click="operation('add',null)">
<i class="el-icon-plus"></i>
<span>新建</span>
</div>
</div>
{if condition = "$auth->check('shopro/link/recyclebin')"}
<div class="recycle-btn display-flex-c" @click="operation('recyclebin')">
<i class="fa fa-recycle"></i>
回收站
</div>
{/if}
</div>
<div class="group-container">
<el-table ref="multipleTable" :data="linkData[activeIndex].children" tooltip-effect="dark"
style="width: 100%" border :row-class-name="tableRowClassName" :cell-class-name="tableCellClassName" :header-cell-class-name="tableCellClassName" >
<el-table-column label="ID" min-width="60" prop="id">
</el-table-column>
<el-table-column label="名称" min-width="120">
<template slot-scope="scope">
<div class="ellipsis-item">
{{scope.row.name}}
</div>
</template>
</el-table-column>
<el-table-column label="路径" min-width="300">
<template slot-scope="scope">
<div class="ellipsis-item">
{{scope.row.path}}
</div>
</template>
</el-table-column>
<el-table-column label="所属分组" min-width="100" prop="group">
<template slot-scope="scope">
<div class="ellipsis-item">
{{scope.row.group?scope.row.group:'其它'}}
</div>
</template>
</el-table-column>
<el-table-column prop="createtime" label="添加时间" width="160">
<template slot-scope="scope">
<div class="ellipsis-item">
{{moment(scope.row.createtime*1000).format('YYYY-MM-DD HH:mm:ss')}}
</div>
</template>
</el-table-column>
<el-table-column prop="usenum" label="更新时间" width="160">
<template slot-scope="scope">
<div class="group-item-time">
{{moment(scope.row.updatetime*1000).format('YYYY-MM-DD HH:mm:ss')}}</div>
</template>
</el-table-column>
<el-table-column label="操作" min-width="110">
<template slot-scope="scope">
<div class="group-item-operation display-flex">
<div class="edit-button" @click="operation('edit',scope.row.id)">编辑</div>
<div class="delete-button" @click="operation('delete',scope.row.id)">删除</div>
</div>
</template>
</el-table-column>
</el-table>
<!-- <div class="group-item display-flex">
<div class="group-item-id">ID</div>
<div class="group-item-name">名称</div>
<div class="group-item-path">路径</div>
<div class="group-item-group">所属分组</div>
<div class="group-item-time">添加时间</div>
<div class="group-item-time">更新时间</div>
<div class="group-item-operation display-flex">
操作
</div>
</div>
<div class="group-item display-flex" v-for="item in linkData[activeIndex].children">
<div class="group-item-id">{{item.id}}</div>
<div class="group-item-name">{{item.name}}</div>
<div class="group-item-path">{{item.path}}</div>
<div class="group-item-group">{{item.group?item.group:'其他'}}</div>
<div class="group-item-time">{{moment(item.createtime*1000).format('YYYY-MM-DD HH:mm:ss')}}</div>
<div class="group-item-time">{{moment(item.updatetime*1000).format('YYYY-MM-DD HH:mm:ss')}}</div>
<div class="group-item-operation display-flex">
<div class="edit-button" @click="operation('edit',item.id)">编辑</div>
<div class="delete-button" @click="operation('delete',item.id)">删除</div>
</div>
</div> -->
</div>
</el-tab-pane>
</el-tabs>
</div>
<div v-if="isData" class="display-flex-c" style="height: 200px;">
暂无数据
</div>
</div>

查看文件

@@ -0,0 +1,25 @@
<div class="panel panel-default panel-intro">
{:build_heading()}
<div class="panel-body">
<div id="myTabContent" class="tab-content">
<div class="tab-pane fade active in" id="one">
<div class="widget-body no-padding">
<div id="toolbar" class="toolbar">
{:build_toolbar('refresh')}
<a class="btn btn-info btn-multi btn-disabled disabled {:$auth->check('shopro/link/restore')?'':'hide'}" href="javascript:;" data-url="shopro/link/restore" data-action="restore"><i class="fa fa-rotate-left"></i> {:__('Restore')}</a>
<a class="btn btn-danger btn-multi btn-disabled disabled {:$auth->check('shopro/link/destroy')?'':'hide'}" href="javascript:;" data-url="shopro/link/destroy" data-action="destroy"><i class="fa fa-times"></i> {:__('Destroy')}</a>
<a class="btn btn-success btn-restoreall {:$auth->check('shopro/link/restore')?'':'hide'}" href="javascript:;" data-url="shopro/link/restore" title="{:__('Restore all')}"><i class="fa fa-rotate-left"></i> {:__('Restore all')}</a>
<a class="btn btn-danger btn-destroyall {:$auth->check('shopro/link/destroy')?'':'hide'}" href="javascript:;" data-url="shopro/link/destroy" title="{:__('Destroy all')}"><i class="fa fa-times"></i> {:__('Destroy all')}</a>
</div>
<table id="table" class="table table-striped table-bordered table-hover"
data-operate-restore="{:$auth->check('shopro/link/restore')}"
data-operate-destroy="{:$auth->check('shopro/link/destroy')}"
width="100%">
</table>
</div>
</div>
</div>
</div>
</div>

查看文件

@@ -0,0 +1,199 @@
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/common.css">
<style>
#linkSelect {
background: #fff;
overflow: auto;
color: #444;
margin: -15px;
}
a,
a:focus,
a:hover {
color: #444;
display: block;
}
.el-menu-level {
margin: 0 20px;
border: none;
}
.el-menu-level .el-menu-item,
.el-submenu__title,
.el-menu-item-group__title {
height: 32px;
line-height: 32px;
min-width: 100px !important;
padding: 0 0 0 20px !important;
font-size: 12px;
}
.el-menu-item.is-active {
color: #7536D0;
background: rgba(116, 56, 213, 0.14);
border-radius: 4px;
}
.dialog-left {
width: 140px;
border-right: 1px solid #e6e6e6;
height: 100vh;
padding-top: 9px;
overflow: auto;
}
.dialog-right {
height: 100vh;
flex: 1;
}
.dialog-search {
padding: 9px 20px;
}
.dialog-search .el-input {
width: 240px;
}
.dialog-search .el-input__inner {
background: #F9F9F9;
border: none;
}
.dialog-right-body {
padding: 0 20px 20px;
height: calc(100vh - 112px);
overflow: auto;
}
.dialog-footer {
padding: 15px 20px;
justify-content: flex-end;
}
.operation-button {
width: 60px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 4px;
font-size: 12px;
margin-left: 10px;
cursor: pointer;
}
.cancel-button {
border: 1px solid #E6E6E6;
color: #C4C4C4;
}
.define-button {
background: #6E3DC8;
color: #fff;
}
.dialog-right-body-title {
height: 50px;
justify-content: space-between;
font-size: 12px;
margin-bottom: 10px;
}
.dialog-right-body-title .el-icon-tickets {
font-size: 13px;
color: #7438D5;
margin-right: 10px;
}
.select-container {
flex-wrap: wrap;
}
.select-item {
/* width: 70px; */
padding: 0 16px;
height: 32px;
border: 1px solid #E6E6E6;
border-radius: 4px;
color: #444;
cursor: pointer;
margin-right: 14px;
margin-bottom: 14px;
}
.custom-select-active,
.custom-select-active:focus {
border-color: #7438D5 !important;
color: #7438D5;
}
.dialog-left::-webkit-scrollbar,.dialog-right-body::-webkit-scrollbar {
width: 6px;
}
.dialog-left::-webkit-scrollbar-thumb,.dialog-right-body::-webkit-scrollbar-thumb {
width: 6px;
background: #ccc;
height: 20px;
border-radius: 3px;
}
[v-cloak] {
display: none
}
</style>
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
<div id="linkSelect" v-cloak>
<div class="dialog-body display-flex">
<div class="dialog-left">
<el-menu :default-active="activeIndex" class="el-menu-level" :collapse="false" @select="selected">
<el-menu-item :index="index" v-for="(item,index) in linkData">
<span slot="title">
<a :href="'#'+index"></a>
{{item.group==''?'其它':item.group}}</span>
</el-menu-item>
</el-menu>
</div>
<div class="dialog-right">
<div class="dialog-search display-flex">
<div>
<span v-if="!isAll && multiple=='true'" class="theme-color cursor-pointer"
@click="checkedAll(true)">全选</span>
<span v-if="isAll && multiple=='true'" class="cursor-pointer" @click="checkedAll(false)">全不选</span>
</div>
</div>
<div class="dialog-right-body">
<a class="scroll-item" v-for="(group,index) in linkData" :name="index">
<div class="dialog-right-body-title display-flex">
<div>
<i class="el-icon-tickets"></i>
<span>{{group.group==''?'其它':group.group}}</span>
</div>
</div>
<div class="select-container display-flex">
<div v-for="(item,idx) in group.children" class="select-item display-flex-c"
:class="item.selected?'custom-select-active':''"
@click="operation('select',item,index,idx)">
{{item.name}}</div>
</div>
</a>
</div>
<div class="dialog-footer display-flex">
<div @click="operation('define')" class="operation-button define-button">确定</div>
</div>
</div>
</div>
<el-dialog title="类型" :visible.sync="dialogVisible" width="30%" :show-close="false">
<div class="display-flex" style="justify-content: space-between;">
<div style="width: 40%;border: 1px solid #e6e6e6;display: flex;align-items: center;justify-content: center;height: 40px;cursor: pointer;"
@click="posterUser">个人海报</div>
<div style="width: 40%;border: 1px solid #e6e6e6;display: flex;align-items: center;justify-content: center;height: 40px;cursor: pointer;"
@click="posterGood">商品海报</div>
</div>
</el-dialog>
</div>