Compare commits

...

10 Commits

Author SHA1 Message Date
tangzh
c7ce2d2eff . 2025-03-16 15:13:50 +08:00
tangzh
edb73664ea 推送 2025-03-04 22:47:56 +08:00
闵宪瑞
ca73ba85bc 隐藏视频内容 2025-01-03 14:17:48 +08:00
闵宪瑞
eed7744d30 更新茶树认领 2025-01-03 14:11:26 +08:00
闵宪瑞
10c5e16375 Merge remote-tracking branch 'origin/main' 2025-01-03 14:08:44 +08:00
闵宪瑞
0af6c362b2 修改图片和视频接口 2025-01-03 14:08:22 +08:00
cosarty
59a10c0c9e fix bug 2024-12-13 21:15:51 +08:00
cosarty
28b7beece6 添加预约记录删除 2024-12-13 11:45:54 +08:00
cosarty
59566ffc61 fix bug 2024-12-13 01:13:44 +08:00
cosarty
f5d5f41788 添加筛选和删除 2024-12-11 20:20:21 +08:00
30 changed files with 899 additions and 345 deletions

View File

@ -2,9 +2,7 @@
ENV = 'development'
# base api
VUE_APP_BASE_API = 'https://syy.xunyingcloud.cn'
#VUE_APP_BASE_API = 'http://localhost:20010/'
VUE_APP_BASE_API = 'http://127.0.0.1:20010'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
# It only does one thing by converting all import() to require().

View File

@ -2,5 +2,5 @@
ENV = 'production'
# base api
VUE_APP_BASE_API = 'https://syy.xunyingcloud.cn'
VUE_APP_BASE_API = 'https://0511syy.cn'

1
.node-version Normal file
View File

@ -0,0 +1 @@
v14.21.3

View File

@ -169,7 +169,7 @@ utils 自定义工具js 独立命名,一般不用新建文件夹
│ │ └──SvgIcon # svg图标
│ │ └──Tinymce # 富文本编辑器
│ │ └──ThemePicker # 右侧设置按钮,设置组题颜色
│ │ └──templatesFrom # 运费模板
│ │ └──templatesFrom # 配送模板
│ │ └──uploadPicture # 上传图片组件
│ │ └──Upload # 上传文件组件
│ │ └──UploadExcel # 下载Excel
@ -211,7 +211,7 @@ utils 自定义工具js 独立命名,一般不用新建文件夹
│ │ └──cityList # 城市数据
│ │ └──companyList # 物流公司
│ │ └──config # 物流配置
│ │ └──shippingTemplates # 运费模板
│ │ └──shippingTemplates # 配送模板
│ │ └──setting # 系统设置
│ │ └──systemStore # 提货点设置
│ │ └──appSetting # 应用 小程序 公众号设置

View File

@ -1,11 +1,11 @@
{
"name": "crmeb-java-webpc-admin",
"version": "4.2.1",
"description": "水月雨后台",
"description": "食材",
"author": "CRMEB",
"license": "MIT",
"scripts": {
"dev": "vue-cli-service serve --open",
"dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",

View File

@ -104,3 +104,27 @@ export function userActivityPlaceListApi(data) {
data
})
}
/**
* ebactivity删除
* @param data
*/
export function placeDeleteApi(data) {
return request({
url: `/admin/place/records/delete`,
method: 'get',
params:data
})
}
/**
* ebactivity删除预约记录
* @param data
*/
export function activityRecordDeleteApi(data) {
return request({
url: `/admin/activity/records/delete`,
method: 'get',
params:data
})
}

View File

@ -99,7 +99,7 @@ export function expressDelete(data) {
})
}
// 物流运费模板列表
// 物流配送模板列表
export function shippingTemplatesList(data) {
return request({
url: '/admin/express/shipping/templates/list',
@ -108,7 +108,7 @@ export function shippingTemplatesList(data) {
})
}
// 物流运费模板详情
// 物流配送模板详情
export function templateDetailApi(data) {
return request({
url: '/admin/express/shipping/templates/info',
@ -117,7 +117,7 @@ export function templateDetailApi(data) {
})
}
// 物流运费模板包邮
// 物流配送模板包邮
export function shippingFree(data) {
return request({
url: '/admin/express/shipping/free/list',
@ -126,7 +126,7 @@ export function shippingFree(data) {
})
}
// 物流运费模板不包邮
// 物流配送模板不包邮
export function shippingRegion(data) {
return request({
url: 'admin/express/shipping/region/list',
@ -135,7 +135,7 @@ export function shippingRegion(data) {
})
}
// 物流运费模板新增
// 物流配送模板新增
export function shippingSave(data) {
return request({
url: 'admin/express/shipping/templates/save',
@ -144,7 +144,7 @@ export function shippingSave(data) {
})
}
// 物流运费模板更新
// 物流配送模板更新
export function shippingUpdate(data, id) {
return request({
url: 'admin/express/shipping/templates/update',
@ -154,7 +154,7 @@ export function shippingUpdate(data, id) {
})
}
// 物流运费模板删除
// 物流配送模板删除
export function shippingDetete(data) {
return request({
url: 'admin/express/shipping/templates/delete',

View File

@ -18,9 +18,9 @@ export function EbTeaPlantOrderCreateApi(data) {
* ebteaplantorder更新
* @param pram
*/
export function ebteaplantorderUpdateApi(data) {
export function plantorderUpdateApi(data) {
return request({
url: 'autogencode/ebteaplantorder/update',
url: `admin/teaPlant/updateOrderItem?itemId=${data.itemId}`,
method: 'POST',
data
})
@ -30,9 +30,9 @@ export function ebteaplantorderUpdateApi(data) {
* ebteaplantorder详情
* @param pram
*/
export function ebteaplantorderDetailApi(id) {
export function plantorderDetailApi(id) {
return request({
url: `autogencode/ebteaplantorder/info/${id}`,
url: `admin/plantorder/info/${id}`,
method: 'GET'
})
}
@ -41,10 +41,11 @@ export function ebteaplantorderDetailApi(id) {
* ebteaplantorder删除
* @param pram
*/
export function ebteaplantorderDeleteApi(id) {
export function plantorderDeleteApi(data) {
return request({
url: `autogencode/ebteaplantorder/delete/${id}`,
method: 'get'
url: `admin/teaPlant/delete`,
method: 'get',
params: data,
})
}

View File

@ -326,7 +326,7 @@ export function productGetRuleApi() {
}
/**
* @description 商品 -- 获取运费模板
* @description 商品 -- 获取配送模板
*/
export function productGetTemplateApi() {
return request({

View File

@ -1,4 +1,4 @@
<template>
<template>
<div>
<el-row :gutter="30">
<el-col v-bind="grid">
@ -34,12 +34,12 @@
<span
class="custom-tree-node-label"
:title="node.label"
>{{ node.label }}</span
>{{ node.label }}</span
>
<span
v-if="data.space_property_name"
style="font-size: 11px; color: #3889b1"
>{{ data.name }}</span
>{{ data.name }}</span
>
</div>
<span class="el-ic">
@ -51,7 +51,7 @@
<el-dropdown-item
@click.native="onAdd(data.id)"
v-if="checkPermi(['admin:category:save'])"
>添加分类</el-dropdown-item
>添加分类</el-dropdown-item
>
<el-dropdown-item
v-if="
@ -59,7 +59,7 @@
checkPermi(['admin:category:update'])
"
@click.native="onEdit(data.id)"
>编辑分类</el-dropdown-item
>编辑分类</el-dropdown-item
>
<el-dropdown-item
v-if="
@ -67,7 +67,7 @@
checkPermi(['admin:category:delete'])
"
@click.native="handleDelete(data.id)"
>删除分类</el-dropdown-item
>删除分类</el-dropdown-item
>
</el-dropdown-menu>
</el-dropdown>
@ -88,7 +88,8 @@
type="primary"
class="mr15 mb20"
@click="checkPics"
>使用选中图片</el-button
>使用选中图片
</el-button
>
<div class="mb20">
<el-tooltip
@ -140,9 +141,7 @@
:show-file-list="false"
multiple
>
<el-button class="mr10" type="primary" v-if="pictureType"
>上传图片</el-button
>
<el-button class="mr10" type="primary" v-if="pictureType">上传{{typeDate =='pic'?'图片':'视频'}}</el-button>
</el-upload>
<div>
<el-button
@ -150,7 +149,8 @@
type="danger"
@click.stop="editPicList('图片')"
v-if="pictureType"
>删除图片</el-button
>删除{{typeDate =='pic'?'图片':'视频'}}
</el-button
>
</div>
<el-select
@ -179,9 +179,9 @@
</el-option>
</el-select>
<div class="abs_video">
<el-radio-group v-model="typeDate" @change="radioChange" size="small">
<el-radio-button label="pic">图片</el-radio-button>
<el-radio-button label="video">视频</el-radio-button>
<el-radio-group v-model="typeDate" @change="radioChange" size="small">
<el-radio-button label="pic">图片</el-radio-button>
<el-radio-button label="video">视频</el-radio-button>
</el-radio-group>
</div>
</div>
@ -202,7 +202,7 @@
:key="index"
class="gridPic"
>
<span class="num_badge" v-if="item.num > 0">{{item.num}}</span>
<span class="num_badge" v-if="item.num > 0">{{ item.num }}</span>
<img
style="object-fit: contain;"
v-lazy="item.sattDir ? item.sattDir : localImg"
@ -278,14 +278,15 @@
},
]"
>
<el-input v-model="editPram.name" placeholder="分类名称" />
<el-input v-model="editPram.name" placeholder="分类名称"/>
</el-form-item>
<el-form-item label="排序">
<el-input-number v-model="editPram.sort" />
<el-input-number v-model="editPram.sort"/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handlerSubmit('editPram')"
>确定</el-button
>确定
</el-button
>
</el-form-item>
</el-form>
@ -306,10 +307,10 @@ import {
fileImageApi,
fileListApi,
fileDeleteApi,
attachmentMoveApi,
attachmentMoveApi, fileFileApi,
} from "@/api/systemSetting";
import { getToken } from "@/utils/auth";
import { checkPermi } from "@/utils/permission"; //
import {getToken} from "@/utils/auth";
import {checkPermi} from "@/utils/permission"; //
export default {
name: "Upload",
props: {
@ -388,7 +389,7 @@ export default {
attType: "jpg,jpeg,gif,png,bmp,PNG,JPG",
},
classifyId: 0,
myHeaders: { "X-Token": getToken() },
myHeaders: {"X-Token": getToken()},
treeFrom: {
status: -1,
type: 2,
@ -410,7 +411,7 @@ export default {
},
localImg: "",
videoStatus: false,
typeDate:"pic",
typeDate: "pic",
};
},
watch: {
@ -460,15 +461,15 @@ export default {
if (this.editPram.pid == 10000) this.editPram.pid = 0;
this.bizTitle === "添加分类"
? addCategroy(this.editPram).then((data) => {
this.$message.success("创建成功");
this.visible = false;
this.getList();
})
this.$message.success("创建成功");
this.visible = false;
this.getList();
})
: updateCategroy(this.editPram).then((data) => {
this.$message.success("编辑成功");
this.visible = false;
this.getList();
});
this.$message.success("编辑成功");
this.visible = false;
this.getList();
});
} else {
return false;
}
@ -524,7 +525,7 @@ export default {
if (id === 10000) id = 0;
this.bizTitle = "编辑分类";
this.loading = true;
infoCategroy({ id: id }).then((res) => {
infoCategroy({id: id}).then((res) => {
this.editPram = res;
this.loading = false;
});
@ -534,7 +535,7 @@ export default {
handleDelete(id) {
if (id === 10000) id = 0;
this.$modalSure().then(() => {
deleteCategroy({ id: id }).then(() => {
deleteCategroy({id: id}).then(() => {
this.$message.success("删除成功");
this.getList();
});
@ -559,16 +560,28 @@ export default {
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
fileImageApi(formData, data)
.then((res) => {
loading.close();
this.$message.success("上传成功");
this.tableData.page = 1;
this.getFileList();
})
.catch((res) => {
if (this.typeDate =='pic'){
fileImageApi(formData, data)
.then((res) => {
loading.close();
this.$message.success("上传成功");
this.tableData.page = 1;
this.getFileList();
}).catch((res) => {
loading.close();
});
}else {
fileFileApi(formData, data)
.then((res) => {
loading.close();
this.$message.success("上传成功");
this.tableData.page = 1;
this.getFileList();
}).catch((res) => {
loading.close();
});
}
},
//
getFileList() {
@ -707,10 +720,10 @@ export default {
this.getFileList();
}
},
radioChange(val){
if(val === 'video'){
radioChange(val) {
if (val === 'video') {
this.videoChange(true)
}else{
} else {
this.videoChange(false)
}
}
@ -729,26 +742,32 @@ export default {
overflow-x: hidden;
overflow-y: auto;
}
.temp {
height: 0;
margin-bottom: 0;
border: none;
padding: 0;
}
.selectTreeClass {
background: #d5e8fc;
}
.treeBox {
width: 100%;
height: 100%;
}
.upload-demo {
display: inline-block !important;
float: left;
}
.tree_w {
padding: 20px 30px;
}
.custom-tree-node {
flex: 1;
display: flex;
@ -758,6 +777,7 @@ export default {
padding-right: 8px;
color: #4386c6;
}
.custom-tree-node-label {
display: block;
width: 125px;
@ -765,97 +785,119 @@ export default {
white-space: nowrap;
text-overflow: ellipsis;
}
.el-ic {
display: none;
i,
span {
/*padding: 0 14px;*/
font-size: 18px;
font-weight: 600;
}
.svg-icon {
color: #4386c6;
}
}
.el-tree-node__content {
height: 38px;
}
.el-tree-node__expand-icon {
color: #428bca;
/*padding: 10px 10px 0px 10px !important;*/
}
.el-tree-node__content:hover .el-ic {
color: #428bca !important;
display: inline-block;
}
.el-tree-node__content:hover {
font-weight: bold;
}
.el-tree--highlight-current
.el-tree-node.is-current
> .el-tree-node__content
:hover {
.el-tree-node.is-current
> .el-tree-node__content
:hover {
.el-tree-node__expand-icon.is-leaf {
color: transparent;
cursor: default;
}
/*background-color: #3998d9;*/
.custom-tree-node {
font-weight: bold;
}
.el-tree-node__expand-icon {
font-weight: bold;
}
}
.el-dialog__body {
.upload-container .image-preview .image-preview-wrapper img {
height: 100px;
}
.el-dialog .el-collapse-item__wrap {
padding-top: 0px;
}
.spatial_img {
.el-collapse-item__wrap {
margin-bottom: 0;
padding-top: 0px;
}
}
.upload-container .image-preview .image-preview-wrapper {
width: 120px;
}
.upload-container .image-preview .image-preview-action {
line-height: 100px;
height: 100px;
}
}
.trees-coadd {
width: 100%;
border-radius: 4px;
overflow: hidden;
position: relative;
.scollhide {
overflow-x: hidden;
overflow-y: scroll;
padding: 10px 0 10px 0;
box-sizing: border-box;
.trees {
width: 100%;
}
}
.scollhide::-webkit-scrollbar {
display: none;
}
}
.conters {
display: flex;
flex-wrap: wrap;
/*max-height: 296px;*/
overflow: auto;
}
.conters:after {
content: "";
width: 410px !important;
}
.gridPic {
margin-right: 15px;
margin-bottom: 10px;
@ -863,16 +905,19 @@ export default {
height: 110px;
position: relative;
cursor: pointer;
img {
width: 100%;
height: 100%;
display: block;
}
video {
width: 100%;
height: 100%;
display: block;
}
.num_badge {
position: absolute;
bottom: 6px;
@ -888,31 +933,38 @@ export default {
line-height: 20px;
}
}
.conter {
width: 99%;
height: 100%;
.bnt {
width: 100%;
padding: 0 13px 10px 7px;
box-sizing: border-box;
display: flex;
}
.pictrueList {
/*padding-left: 15px;*/
width: 100%;
el-image {
width: 100%;
border: 2px solid #fff;
}
.on {
border: 2px solid #1890FF;
}
}
.el-image {
width: 110px;
height: 110px;
cursor: pointer;
}
.imagesNo {
width: 100%;
display: flex;
@ -920,6 +972,7 @@ export default {
flex-direction: column;
align-items: center;
margin: 65px 0;
.imagesNo_sp {
font-size: 13px;
color: #dbdbdb;
@ -927,10 +980,12 @@ export default {
}
}
}
.relative{
.relative {
position: relative;
}
.abs_video{
.abs_video {
position: absolute;
right: 20px;
top: 0;

View File

@ -146,7 +146,7 @@ const operationRouter = {
path: 'freightSet',
component: () => import('@/views/systemSetting/deliverGoods/freightSet'),
name: 'freightSet',
meta: { title: '运费模板', noCache: true }
meta: { title: '配送模板', noCache: true }
},
]
},

View File

@ -32,10 +32,9 @@
<el-form-item label="视频简介" prop="synopsis">
<el-input v-model="dataForm.synopsis" placeholder="视频简介"></el-input>
</el-form-item>
<el-form-item label="详细内容" prop="content">
<Tinymce v-model="dataForm.content"></Tinymce>
</el-form-item>
<!-- <el-form-item label="详细内容" prop="content">-->
<!-- <Tinymce v-model="dataForm.content"></Tinymce>-->
<!-- </el-form-item>-->
<el-form-item label="关联商品" prop="productId">
<div class="acea-row">
<template v-if="checked.length">

View File

@ -8,7 +8,9 @@
<el-radio-group v-model="tableFrom.dateLimit" type="button" class="mr20" size="small" @change="selectChange(tableFrom.dateLimit)">
<el-radio-button v-for="(item,i) in fromList.fromTxt" :key="i" :label="item.val">{{ item.text }}</el-radio-button>
</el-radio-group>
<el-date-picker v-model="timeVal" value-format="yyyy-MM-dd" format="yyyy-MM-dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 250px;" @change="onchangeTime" />
<el-date-picker
v-model="timeVal"
value-format="yyyy-MM-dd" format="yyyy-MM-dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 250px;" @change="onchangeTime" />
</el-form-item>
<el-form-item label="提现状态:">
<el-radio-group v-model="tableFrom.status" type="button" size="small" @change="getList(1)" clearable>

View File

@ -1,7 +1,7 @@
<template>
<el-dialog
v-if="dialogVisible"
title="运费模板"
title="配送模板"
:visible.sync="dialogVisible"
width="1000px"
:before-close="handleClose"
@ -15,9 +15,10 @@
<el-radio :label="1">按件数</el-radio>
<el-radio :label="2">按重量</el-radio>
<el-radio :label="3">按体积</el-radio>
<el-radio :label="4">按距离</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="配送区域及费" prop="region">
<el-form-item label="配送区域及" prop="region">
<el-table v-loading="listLoading" :data="ruleForm.region" border fit highlight-current-row style="width: 100%" size="mini" class="tempBox">
<el-table-column align="center" label="可配送区域" min-width="260">
<template slot-scope="scope">
@ -42,7 +43,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="120px" align="center" label="费(元)" prop="firstPrice">
<el-table-column min-width="120px" align="center" label="(元)" prop="firstPrice">
<template slot-scope="scope">
<el-form-item :rules="rules.firstPrice" :prop="'region.'+scope.$index+'.firstPrice'">
<el-input-number v-model="scope.row.firstPrice" controls-position="right" />
@ -186,6 +187,7 @@ const defaultRole = {
}
const kg = '重量kg'
const m = '体积'
const km = '公里km'
const statusMap = [
{
title: '首件',
@ -201,6 +203,11 @@ const statusMap = [
title: `首件${m}`,
title2: `续件${m}`,
title3: `包邮${m}`
},
{
title: `${km}`,
title2: `${km}`,
title3: `免费${km}`
}
]
export default {
@ -239,7 +246,7 @@ export default {
{ required: true, message: '请输入', trigger: 'blur' }
],
firstPrice: [
{ required: true, message: '请输入费', trigger: 'blur' }
{ required: true, message: '请输入', trigger: 'blur' }
],
renewalPrice: [
{ required: true, message: '请输入续费', trigger: 'blur' }
@ -422,7 +429,7 @@ export default {
name: this.ruleForm.name,
sort: this.ruleForm.sort,
type: this.ruleForm.type,
//
//
// shippingTemplatesRegionRequestList: [],
// //
// shippingTemplatesFreeRequestList: []

View File

@ -11,7 +11,7 @@
</el-form-item>
</el-form>
</div>
<el-button type="primary" size="mini" @click="handleSubmit()" v-hasPermi="['admin:shipping:templates:save']">添加运费模板</el-button>
<el-button type="primary" size="mini" @click="handleSubmit()" v-hasPermi="['admin:shipping:templates:save']">添加配送模板</el-button>
</div>
<el-table
v-loading="loading"
@ -103,7 +103,8 @@ export default {
const statusMap = {
1: '按件数',
2: '按重量',
3: '按体积'
3: '按体积',
4: '按距离'
}
return statusMap[status]
}

View File

@ -1,11 +1,25 @@
<template>
<div class="divBox">
<el-form :model="tableFrom" @keyup.enter.native="getDataList()" label-width="90px">
<el-form
:model="tableFrom"
@keyup.enter.native="getDataList()"
label-width="90px"
>
<el-form-item label="活动名称:">
<el-input @input="getDataList()" style="width: 275px" v-model="tableFrom.keywords" placeholder="查询活动" clearable></el-input>
<el-input
@input="getDataList()"
style="width: 275px"
v-model="tableFrom.keywords"
placeholder="查询活动"
clearable
></el-input>
</el-form-item>
<el-form-item label="活动类型:">
<el-radio-group v-model="tableFrom.cid" size="medium" @input="getDataList()">
<el-radio-group
v-model="tableFrom.cid"
size="medium"
@input="getDataList()"
>
<el-radio-button label="">全部</el-radio-button>
<el-radio-button label="746">活动预约</el-radio-button>
<el-radio-button label="752">采茶预约</el-radio-button>
@ -13,30 +27,34 @@
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button v-hasPermi="['admin:activity:save']" type="primary" @click="addOrUpdateHandle()">新增活动</el-button>
<el-button
v-hasPermi="['admin:activity:save']"
type="primary"
@click="addOrUpdateHandle()"
>新增活动</el-button
>
<!-- <el-button v-hasPermi="['autogencode:ebactivity:delete']" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>-->
</el-form-item>
</el-form>
<el-table
:data="dataList"
v-loading="dataListLoading"
style="width: 100%;">
<el-table :data="dataList" v-loading="dataListLoading" style="width: 100%;">
<el-table-column
width="60"
prop="id"
header-align="center"
align="center"
label="活动编号">
label="活动编号"
>
</el-table-column>
<el-table-column
prop="cid"
header-align="center"
align="center"
label="活动类型">
label="活动类型"
>
<template slot-scope="scope">
<div class="demo-image__preview">
<span v-if="scope.row.cid == 746">活动预约</span>
<span v-else-if="scope.row.cid ==752">采茶预约</span>
<span v-else-if="scope.row.cid == 752">采茶预约</span>
<span v-else-if="scope.row.cid == 753">其他预约</span>
<span v-else>类型错误</span>
</div>
@ -47,14 +65,16 @@
prop="title"
header-align="center"
align="center"
label="标题">
label="标题"
>
</el-table-column>
<el-table-column
prop="imageInput"
header-align="center"
align="center"
label="图片">
label="图片"
>
<template slot-scope="scope">
<div class="demo-image__preview">
<el-image
@ -69,19 +89,22 @@
prop="activityAddr"
header-align="center"
align="center"
label="地址">
label="地址"
>
</el-table-column>
<el-table-column
prop="activityNum"
header-align="center"
align="center"
label="活动人数">
label="活动人数"
>
</el-table-column>
<el-table-column
prop="activityPrice"
header-align="center"
align="center"
label="费用">
label="费用"
>
</el-table-column>
<!-- <el-table-column-->
<!-- prop="content"-->
@ -94,23 +117,21 @@
prop="beginTime"
header-align="center"
align="center"
label="开始时间 - 结束时间">
label="开始时间 - 结束时间"
>
<template slot-scope="scope">
{{ scope.row.beginTime }} - {{ scope.row.endTime }}
</template>
</el-table-column>
<el-table-column
header-align="center"
align="center"
label="是否热门">
<el-table-column header-align="center" align="center" label="是否热门">
<template slot-scope="scope">
<el-switch
@change='changeStatus($event,scope.row,"hot")'
@change="changeStatus($event, scope.row, 'hot')"
v-model="scope.row.isHot"
active-color="#13ce66"
inactive-color="#ff4949">
inactive-color="#ff4949"
>
</el-switch>
</template>
</el-table-column>
<!-- <el-table-column-->
@ -130,21 +151,36 @@
prop="sort"
header-align="center"
align="center"
label="排序">
label="排序"
>
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="150"
label="操作">
label="操作"
>
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
<el-button v-hasPermi="['admin:activity:update']" type="text" size="small"
@click="activityLog(scope.row.id)">预约记录
<el-button
type="text"
size="small"
@click="addOrUpdateHandle(scope.row.id)"
>修改</el-button
>
<el-button
v-hasPermi="['admin:activity:update']"
type="text"
size="small"
@click="activityLog(scope.row.id)"
>预约记录
</el-button>
<el-button v-hasPermi="['admin:activity:delete']" type="text" size="small"
@click="deleteHandle(scope.row.id)">删除
<el-button
v-hasPermi="['admin:activity:delete']"
type="text"
size="small"
@click="deleteHandle(scope.row.id)"
>删除
</el-button>
</template>
</el-table-column>
@ -156,38 +192,93 @@
:page-sizes="[10, 20, 50, 100]"
:page-size="tableFrom.limit"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
layout="total, sizes, prev, pager, next, jumper"
>
</el-pagination>
<!-- 表单弹窗, 新增数据和修改数据-->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<add-or-update
v-if="addOrUpdateVisible"
ref="addOrUpdate"
@refreshDataList="getDataList"
></add-or-update>
<el-dialog
@close="closeLog"
title="活动预约记录"
:close-on-click-modal="false"
:visible.sync="logVisible"
width="80%"
>
<el-table
:data="logList"
style="width: 100%;">
<el-form :inline="true" size="small" label-width="100px">
<el-form-item label="手机号:" >
<el-input
v-model="logParams.cellPhone"
placeholder="请输入手机号码"
class="selWidth"
size="small"
clearable
@clear="activityLog(logParams.activityId)"
>
<el-button
slot="append"
icon="el-icon-search"
size="small"
@click="activityLog(logParams.activityId)"
/>
</el-input>
</el-form-item>
<el-form-item label="姓名:" >
<el-input
v-model="logParams.userName"
placeholder="请输入联系人姓名"
class="selWidth"
size="small"
clearable
@clear="activityLog(logParams.activityId)"
>
<el-button
slot="append"
icon="el-icon-search"
size="small"
@click="activityLog(logParams.activityId)"
/>
</el-input>
</el-form-item>
<el-form-item label="预约日期:" >
<el-date-picker
v-model="date"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
@change="activityLog(logParams.activityId)"
>
</el-date-picker>
</el-form-item>
</el-form>
<el-table :data="logList" style="width: 100%;">
<el-table-column
width="100"
prop="id"
header-align="center"
align="center"
label="预约编号">
label="预约编号"
>
</el-table-column>
<el-table-column
width="100"
prop="userName"
header-align="center"
align="center"
label="预约人">
label="预约人"
>
</el-table-column>
<el-table-column
prop="cellPhone"
header-align="center"
align="center"
label="预约手机号">
label="预约手机号"
>
</el-table-column>
<!-- <el-table-column-->
<!-- width="120"-->
@ -201,25 +292,32 @@
prop="registerDate"
header-align="center"
align="center"
label="预约指定日期">
label="预约指定日期"
>
</el-table-column>
<el-table-column
prop="remark"
header-align="center"
align="center"
label="备注">
label="备注"
>
</el-table-column>
<el-table-column
prop="registerStatus"
header-align="center"
align="center"
label="预约状态">
label="预约状态"
>
<template slot-scope="scope">
<div class="demo-image__preview">
<el-tag v-if="scope.row.registerStatus == 0">待确认</el-tag>
<el-tag v-else-if="scope.row.registerStatus == 1">报名成功</el-tag>
<el-tag v-else-if="scope.row.registerStatus == 1"
>报名成功</el-tag
>
<el-tag v-else-if="scope.row.registerStatus == 2">已拒绝</el-tag>
<el-tag type="warning" v-else-if="scope.row.registerStatus ==4">已取消</el-tag>
<el-tag type="warning" v-else-if="scope.row.registerStatus == 4"
>已取消</el-tag
>
<el-tag v-else>未知类型</el-tag>
</div>
</template>
@ -228,10 +326,11 @@
prop="cancelData"
header-align="center"
align="center"
label="取消时间">
label="取消时间"
>
<template slot-scope="scope">
<div class="demo-image__preview">
<span v-if="scope.row.cancelData === null"> - </span>
<span v-if="scope.row.cancelData === null"> - </span>
<span v-else>{{ scope.row.cancelData }}</span>
</div>
</template>
@ -240,7 +339,8 @@
prop="cancelReason"
header-align="center"
align="center"
label="取消原因">
label="取消原因"
>
<template slot-scope="scope">
<div class="demo-image__preview">
<span v-if="scope.row.cancelReason === null"> - </span>
@ -254,15 +354,32 @@
header-align="center"
align="center"
width="150"
label="操作">
label="操作"
>
<template slot-scope="scope">
<el-popconfirm v-hasPermi="['admin:activity:update']" @onConfirm="update(scope.row)" v-if="scope.row.registerStatus == 0"
title="请在和客户确认之后再点击哦!">
<el-popconfirm
v-hasPermi="['admin:activity:update']"
@onConfirm="update(scope.row)"
v-if="scope.row.registerStatus == 0"
title="请在和客户确认之后再点击哦!"
>
<!-- //todo -->
<template #reference>
<el-button type="text" size="small">同意预约</el-button>
</template>
</el-popconfirm>
<el-popconfirm
v-hasPermi="['admin:activity:update']"
@onConfirm="rejectRecord(scope.row)"
v-if="scope.row.registerStatus == 0"
title="确定要拒绝吗?"
>
<!-- //todo -->
<template #reference>
<el-button type="text" size="small">拒绝</el-button>
</template>
</el-popconfirm>
<el-button v-if="scope.row.registerStatus >=2" type="text" size="small" @click="deleteRecordHandle(scope.row)">删除</el-button>
<!-- <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>-->
<!-- <el-button v-hasPermi="['admin:activity:update']" type="text" size="small"-->
<!-- @click="activityLog(scope.row.id)">预约记录-->
@ -277,27 +394,26 @@
background
layout="prev, pager, next"
@current-change="handleCurrentChange"
:total="this.logParams.total">
:total="logParams.total"
>
</el-pagination>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="logVisibles = false"> </el-button>
</span>
<!-- <el-button type="primary" @click="logVisibles = false"> </el-button> -->
</span>
</el-dialog>
</div>
</template>
<script>
import {
activityDeleteApi,
activityListApi,
activityLogListApi,
ebactivityUpdateApi,
userActivityPlaceListApi
} from "@/api/activity"
import AddOrUpdate from "@/views/marketing/activity/activityList/activity-add-and-update"
userActivityPlaceListApi,
activityRecordDeleteApi
} from "@/api/activity";
import AddOrUpdate from "@/views/marketing/activity/activityList/activity-add-and-update";
export default {
data() {
@ -306,91 +422,141 @@ export default {
logVisible: false,
dataList: [],
logList: [],
date: [],
logParams: {
activityId: "",
limit: 10,
page: 1,
total: 1,
cellPhone: "",
userName: ""
},
tableFrom: {
page: 1,
limit: 20,
name: '',
keywords: '',
cid: "",
name: "",
keywords: "",
cid: ""
},
totalPage: 0,
addOrUpdateVisible: false
}
};
},
components: {
AddOrUpdate
},
mounted() {
this.getDataList()
this.getDataList();
},
methods: {
update(row) {
console.log("确定了")
console.log(row)
userActivityPlaceListApi({id:row.id,status:0}).then(res =>{
this.$message.success("修改成功!");
this.activityLog(this.logParams.activityId)
deleteRecordHandle(row) {
this.$confirm('确定删除当前数据?').then(() => {
activityRecordDeleteApi({ id: row.id }).then(res => {
this.$message.success("删除成功");
this.activityLog(this.logParams.activityId);
});
}).catch(() => {
})
},
closeLog() {
this.logParams = {
activityId: "",
limit: 10,
page: 1,
total: 1,
cellPhone: "",
userName: ""
};
this.date = [];
},
update(row) {
console.log("确定了");
console.log(row);
userActivityPlaceListApi({ id: row.id, registerStatus: 1 }).then(res => {
this.$message.success("修改成功!");
this.activityLog(this.logParams.activityId);
});
},
rejectRecord(row) {
userActivityPlaceListApi({ id: row.id, registerStatus: 2 }).then(res => {
this.$message.success("拒绝成功!");
this.activityLog(this.logParams.activityId);
});
},
//
activityLog(id) {
this.logParams.activityId = id
this.logVisible = true
activityLogListApi(this.logParams).then(res => {
this.logParams.limit = res.limit
this.logParams.page = res.page
this.logParams.total = res.total
this.logList = res.list
})
this.logParams.activityId = id;
this.logVisible = true;
this.logParams.page = 1;
activityLogListApi(
Object.assign(
{ ...this.logParams },
this.date && this.date.length > 0
? {
beginDate: this.date[0] + " 01:00:00" || "",
endDate: this.date[1] + " 23:59:59" || ""
}
: {}
)
).then(res => {
this.logParams.limit = res.limit;
this.logParams.page = res.page;
this.logParams.total = res.total;
this.logList = res.list;
});
},
handleCurrentChange(val) {
this.logParams.page = val
activityLogListApi(this.logParams).then(res => {
this.logParams.limit = res.limit
this.logParams.page = res.page
this.logParams.total = res.total
this.logList = res.list
})
this.logParams.page = val;
activityLogListApi(
Object.assign(
{ ...this.logParams },
this.date && this.date.length > 0
? {
beginDate: this.date[0] + " 01:00:00" || "",
endDate: this.date[1] + " 23:59:59" || ""
}
: {}
)
).then(res => {
this.logParams.limit = res.limit;
this.logParams.page = res.page;
this.logParams.total = res.total;
this.logList = res.list;
});
},
changeStatus($event, val, type) {
if (type === 'banner') {
val.isBanner = $event
if (type === "banner") {
val.isBanner = $event;
}
if (type === 'hot') {
val.isHot = $event
if (type === "hot") {
val.isHot = $event;
}
ebactivityUpdateApi(val).then(res => {
this.$message.success("修改成功!");
this.getDataList()
})
this.getDataList();
});
},
addOrUpdateHandle(id) {
this.addOrUpdateVisible = true
this.addOrUpdateVisible = true;
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
this.$refs.addOrUpdate.init(id);
});
},
deleteHandle(id) {
this.$confirm('确定删除当前数据?').then(() => {
activityDeleteApi({id: id}).then(data => {
this.$message.success('删除成功')
this.getDataList()
})
})
this.$confirm("确定删除当前数据?").then(() => {
activityDeleteApi({ id: id }).then(data => {
this.$message.success("删除成功");
this.getDataList();
});
});
},
sizeChangeHandle(val) {
this.tableFrom.limit = val
this.getDataList()
this.tableFrom.limit = val;
this.getDataList();
},
currentChangeHandle(page) {
this.tableFrom.page = page
this.getDataList()
this.tableFrom.page = page;
this.getDataList();
},
//
selectionChangeHandle(val) {
@ -398,23 +564,19 @@ export default {
},
//
getDataList() {
this.dataListLoading = true
this.dataListLoading = true;
activityListApi(this.tableFrom).then(res => {
// TODO
this.dataList = res.list
this.totalPage = res.total
this.tableFrom.limit = res.total
this.tableFrom.page = res.page
this.dataList = res.list;
this.totalPage = res.total;
this.tableFrom.limit = res.limit;
this.tableFrom.page = res.page;
this.dataListLoading = false
})
this.dataListLoading = false;
});
}
}
}
};
</script>
<style lang="sass" scoped>
</style>
<style lang="sass" scoped></style>

View File

@ -3,26 +3,38 @@
<el-card class="box-card">
<div class="clearfix">
<div class="container">
<el-form size="small" label-width="100px" >
<!-- <el-form-item label="预约状态:">-->
<!-- <el-radio-group v-model="tableFrom.status" type="button" @change="seachList">-->
<!-- <el-radio-button label="all">全部</el-radio-button>-->
<!-- <el-radio-button label="unPaid">待确认 </el-radio-button>-->
<!-- <el-radio-button label="unPaid">预约成功 </el-radio-button>-->
<!-- <el-radio-button label="unPaid">预约取消 </el-radio-button>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<el-form-item label="预约人:" class="width100">
<el-form size="small" label-width="120px" >
<el-form-item label="预约状态:">
<el-radio-group v-model="tableFrom.status" type="button" @change="seachList">
<el-radio-button :label="''">全部</el-radio-button>
<el-radio-button label="0">待确认 </el-radio-button>
<el-radio-button label="1">预约成功 </el-radio-button>
<el-radio-button label="2">预约取消 </el-radio-button>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="预约人:" class="width100">
<el-input v-model="tableFrom.keywords" placeholder="请输入预约人" class="selWidth" size="small" clearable>
<el-button slot="append" icon="el-icon-search" size="small" @click="seachList" />
</el-input>
</el-form-item>
</el-form-item> -->
<el-form-item label="手机号:" class="width100">
<el-input v-model="tableFrom.keywords" placeholder="请输入订单号" class="selWidth" size="small" clearable>
<el-form-item label="预约人/手机号:" class="width100">
<el-input v-model="tableFrom.keywords" placeholder="请输入预约人姓名/手机号" class="selWidth" size="small" clearable @clear="seachList">
<el-button slot="append" icon="el-icon-search" size="small" @click="seachList" />
</el-input>
</el-form-item>
<el-form-item label="预约日期:" class="width100">
<el-date-picker
v-model="date"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
@change="seachList"
>
</el-date-picker>
</el-form-item>
</el-form>
</div>
@ -131,6 +143,7 @@
label="操作">
<template slot-scope="scope">
<el-button v-if="scope.row.status == 0" type="text" size="small" @click="mobile(scope.row)">审核预约</el-button>
<el-button v-if="scope.row.status == 2" type="text" size="small" @click="deleteHandle(scope.row)">删除</el-button>
<!-- <el-button v-if="scope.row.status == 1" type="text" size="small" @click="innerVisible = true">后台取消</el-button>-->
<!-- <el-button v-hasPermi="['admin:activity:update']" type="text" size="small"-->
@ -226,7 +239,8 @@ import {
activityListApi,
activityLogListApi,
activityPlaceListApi, activityPlaceUpdateApi,
ebactivityUpdateApi
ebactivityUpdateApi,
placeDeleteApi
} from "@/api/activity"
import AddOrUpdate from "@/views/marketing/activity/activityList/activity-add-and-update"
@ -239,10 +253,13 @@ export default {
mobileVisible: false,
dataList:[],
mobileFrom:{},
date:[],
totalPage:0,
tableFrom:{
page: 1,
limit: 20,
keywords: '',
status: ''
}
}
},
@ -256,6 +273,15 @@ export default {
methods: {
deleteHandle(row){
this.$confirm('确定删除当前数据?').then(() => {
placeDeleteApi({id:row.id}).then(data => {
this.$message.success('删除成功')
this.getDataList()
})
}).catch(() => {
})
},
seachList() {
this.tableFrom.page = 1
this.getDataList()
@ -285,11 +311,10 @@ export default {
getDataList(){
this.dataListLoading = true
activityPlaceListApi(this.tableFrom).then(res =>{
console.log(res)
activityPlaceListApi(Object.assign({...this.tableFrom},this.date&&this.date.length > 0 ? {beginDate:this.date[0] + ' 01:00:00'|| '',endDate:this.date[1] + ' 23:59:59' || ''} : {})).then(res =>{
this.dataList = res.list
this.totalPage = res.total
this.tableFrom.limit = res.total
this.tableFrom.limit = res.limit
this.tableFrom.page = res.page

View File

@ -121,7 +121,7 @@
</el-form-item>
</el-col>
<el-col v-bind="grid2">
<el-form-item label="运费模板:" prop="tempId">
<el-form-item label="配送模板:" prop="tempId">
<div class="acea-row">
<el-select v-model="formValidate.tempId" placeholder="请选择" class="selWidthd">
<el-option
@ -131,7 +131,7 @@
:value="item.id"
/>
</el-select>
<!--<el-button class="mr15" @click="addTem">添加运费模板</el-button>-->
<!--<el-button class="mr15" @click="addTem">添加配送模板</el-button>-->
</div>
</el-form-item>
</el-col>
@ -362,7 +362,7 @@
loading: false,
fullscreenLoading: false,
merCateList: [], //
shippingList: [], //
shippingList: [], //
seckillTime: [],
ruleValidate: {
productId: [
@ -384,7 +384,7 @@
{ required: true, message: '请输入砍价商品简介', trigger: 'blur' }
],
tempId: [
{ required: true, message: '请选择运费模板', trigger: 'change' }
{ required: true, message: '请选择配送模板', trigger: 'change' }
],
timeId: [
{ required: true, message: '请选择活动时间', trigger: 'change' }
@ -523,13 +523,13 @@
return item
})
},
//
//
getShippingList() {
shippingTemplatesList(this.tempData).then(res => {
this.shippingList = res.list
})
},
//
//
addTem() {
this.$refs.addTemplates.dialogVisible = true
this.$refs.addTemplates.getCityList()

View File

@ -133,7 +133,7 @@
</el-form-item>
</el-col>
<el-col v-bind="grid2">
<el-form-item label="运费模板:" prop="tempId">
<el-form-item label="配送模板:" prop="tempId">
<div class="acea-row">
<el-select v-model="formValidate.tempId" placeholder="请选择" class="selWidthd">
<el-option
@ -143,7 +143,7 @@
:value="item.id"
/>
</el-select>
<!--<el-button class="mr15" @click="addTem">添加运费模板</el-button>-->
<!--<el-button class="mr15" @click="addTem">添加配送模板</el-button>-->
</div>
</el-form-item>
</el-col>
@ -369,7 +369,7 @@
loading: false,
fullscreenLoading: false,
merCateList: [], //
shippingList: [], //
shippingList: [], //
seckillTime: [],
ruleValidate: {
productId: [
@ -391,7 +391,7 @@
{ required: true, message: '请输入拼团商品简介', trigger: 'blur' }
],
tempId: [
{ required: true, message: '请选择运费模板', trigger: 'change' }
{ required: true, message: '请选择配送模板', trigger: 'change' }
],
image: [
{ required: true, message: '请上传商品图', trigger: 'change' }
@ -532,13 +532,13 @@
return item
})
},
//
//
getShippingList() {
shippingTemplatesList(this.tempData).then(res => {
this.shippingList = res.list
})
},
//
//
addTem() {
this.$refs.addTemplates.dialogVisible = true
this.$refs.addTemplates.getCityList()

View File

@ -86,7 +86,7 @@
</el-form-item>
</el-col>
<el-col v-bind="grid2">
<el-form-item label="运费模板:" prop="tempId">
<el-form-item label="配送模板:" prop="tempId">
<div class="acea-row">
<el-select v-model="formValidate.tempId" placeholder="请选择" class="selWidth">
<el-option
@ -96,7 +96,7 @@
:value="item.id"
/>
</el-select>
<!--<el-button class="mr15" @click="addTem">添加运费模板</el-button>-->
<!--<el-button class="mr15" @click="addTem">添加配送模板</el-button>-->
</div>
</el-form-item>
</el-col>
@ -345,7 +345,7 @@
loading: false,
fullscreenLoading: false,
merCateList: [], //
shippingList: [], //
shippingList: [], //
seckillTime: [],
ruleValidate: {
productId: [
@ -367,7 +367,7 @@
{ required: true, message: '请输入秒杀商品简介', trigger: 'blur' }
],
tempId: [
{ required: true, message: '请选择运费模板', trigger: 'change' }
{ required: true, message: '请选择配送模板', trigger: 'change' }
],
timeId: [
{ required: true, message: '请选择活动时间', trigger: 'change' }
@ -496,13 +496,13 @@
return item
})
},
//
//
getShippingList() {
shippingTemplatesList(this.tempData).then(res => {
this.shippingList = res.list
})
},
//
//
addTem() {
this.$refs.addTemplates.dialogVisible = true
this.$refs.addTemplates.getCityList()

View File

@ -49,6 +49,21 @@
</div>
</template>
</el-table-column>
<el-table-column
prop="viceImage"
header-align="center"
align="center"
label="背景图">
<template slot-scope="scope">
<div class="demo-image__preview">
<el-image
style="width: 36px; height: 36px"
:src="scope.row.viceImage"
:preview-src-list="[scope.row.viceImage]"
/>
</div>
</template>
</el-table-column>
<el-table-column
prop="productPrice"

View File

@ -21,6 +21,8 @@
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="茶树图" prop="productImage">
@ -33,6 +35,17 @@
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="背景图" prop="viceImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi7')">
<div v-if="dataForm.viceImage" class="pictrue">
<img :src="dataForm.viceImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="小苗阶段图" prop="smallImage">
@ -123,14 +136,14 @@
</el-form-item>
<el-form-item label="热门新品图" prop="hotImage">
<!-- <el-form-item label="热门新品图" prop="hotImage">
<el-switch v-model="dataForm.hotImage" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
<el-form-item label="认领状态" prop="status">
</el-form-item> -->
<!-- <el-form-item label="认领状态" prop="status">
<el-switch v-model="dataForm.status" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
</el-form-item> -->
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button>
@ -171,7 +184,8 @@ export default {
createTime: '',
updateTime: '',
status: 1,
limitNum: ''
limitNum: '',
viceImage:'',
},
dataRule: {
title: [
@ -180,6 +194,9 @@ export default {
productImage: [
{required: true, message: '茶树图 为必填项', trigger: 'blur'}
],
viceImage: [
{required: true, message: '背景图 为必填项', trigger: 'blur'}
],
productName: [
{required: true, message: '茶树名称 为必填项', trigger: 'blur'}
],
@ -247,8 +264,11 @@ export default {
case 'pi6':
_this.dataForm.image = img[0].sattDir;
break;
case 'pi5':
_this.dataForm.productImage = img[0].sattDir;
case 'pi5':
_this.dataForm.productImage = img[0].sattDir;
break;
case 'pi7':
_this.dataForm.viceImage = img[0].sattDir;
break;
}
}
@ -273,15 +293,19 @@ export default {
if (!this.dataForm.id){
plantCreateApi(this.dataForm).then(res => {
this.$message.success('添加成功')
setTimeout(() => {
this.$router.go(0);
}, 1000);
});
}else {
plantUpdateApi(this.dataForm).then(res => {
this.$message.success('更新成功')
setTimeout(() => {
this.$router.go(0);
}, 1000);
});
}
this.$router.go(0);
}
})
}

View File

@ -10,12 +10,11 @@
<el-radio-group v-model="tableFrom.itemStatus" size="medium" @input="getDataList()">
<el-radio-button label="">全部</el-radio-button>
<el-radio-button label=0>待确认</el-radio-button>
<el-radio-button label="1">成长</el-radio-button>
<el-radio-button label="1">认领</el-radio-button>
<el-radio-button label="2">已成熟</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">查询</el-button>
<!-- <el-button v-hasPermi="['autogencode:ebteaplantorderitem:save']" type="primary" @click="addOrUpdateHandle()">新增数据</el-button>-->
<!-- <el-button v-hasPermi="['autogencode:ebteaplantorderitem:delete']" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>-->
</el-form-item>
@ -31,12 +30,12 @@
align="center"
label="认领凭证">
</el-table-column>
<el-table-column
prop="account"
header-align="center"
align="center"
label="手机号">
</el-table-column>
<!-- <el-table-column-->
<!-- prop="account"-->
<!-- header-align="center"-->
<!-- align="center"-->
<!-- label="手机号">-->
<!-- </el-table-column>-->
<el-table-column
prop="productImage"
header-align="center"
@ -58,12 +57,7 @@
align="center"
label="商品名称">
</el-table-column>
<el-table-column
prop="account"
header-align="center"
align="center"
label="商品名称">
</el-table-column>
<el-table-column
prop="productPrice"
header-align="center"
@ -89,33 +83,41 @@
label="结束时间">
</el-table-column>
<el-table-column
prop="status"
header-align="center"
align="center"
label="认领状态">
<template slot-scope="scope">
<span v-if="scope.row.status == 0" style="color: red"> 待确认</span>
<span v-if="scope.row.status == 1" style="color: blue"> 成长</span>
<span v-else style="color: green"> 已成熟</span>
<span v-if="scope.row.itemStatus == 0" style="color: #f87d3f;font-weight: 700;font-size: 16px"> 待确认</span>
<span v-if="scope.row.itemStatus == 1" style="color: blue"> 认领</span>
<span v-if="scope.row.itemStatus == 2" style="color: green"> 已成熟</span>
</template>
</el-table-column>
<el-table-column
prop="createTime"
header-align="center"
align="center"
width="180"
label="创建时间">
</el-table-column>
<el-table-column
header-align="center"
align="center"
label="支付状态">
label="剩余天数">
<template slot-scope="scope">
<span v-if="scope.row.payStatus == 0" style="color: red"> 待支付</span>
<span v-if="scope.row.payStatus == 1" > 已支付</span>
<span v-else style="color: #be64a1"> 未知状态</span>
<span>{{calculateRemainingDays(scope.row.beginTime,scope.row.endTime)}} </span>
</template>
</el-table-column>
<!-- <el-table-column-->
<!-- prop="createTime"-->
<!-- header-align="center"-->
<!-- align="center"-->
<!-- width="180"-->
<!-- label="创建时间">-->
<!-- </el-table-column>-->
<!-- <el-table-column-->
<!-- header-align="center"-->
<!-- align="center"-->
<!-- label="支付状态">-->
<!-- <template slot-scope="scope">-->
<!-- <span v-if="scope.row.payStatus == 0" style="color: red"> 待支付</span>-->
<!-- <span v-if="scope.row.payStatus == 1" > 已支付</span>-->
<!-- <span v-else style="color: #be64a1"> 未知状态</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
fixed="right"
header-align="center"
@ -123,8 +125,17 @@
width="150"
label="操作">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
<el-button v-if="scope.row.itemStatus == 0" type="text" size="small" @click="sureOrUpdateHandle(scope.row)" v-hasPermi="['admin:teaPlant:update']">确认订单</el-button>
<!-- <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row)">修改</el-button>-->
<el-dropdown trigger="click">
<span class="el-dropdown-link">
更多<i class="el-icon-arrow-down el-icon--right" />
</span>
<el-dropdown-menu slot="dropdown">
<el-button type="text" size="small" @click="deleteHandle(scope.row.itemId)" >认领详情</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row.itemId)" >删除认领茶树</el-button>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
@ -139,13 +150,15 @@
</el-pagination>
<!-- 表单弹窗, 新增数据和修改数据 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<sure-update v-if="sureOrUpdateVisible" ref="sureUpdate" @refreshDataList="getDataList"></sure-update>
</div>
</template>
<script>
import AddOrUpdate from '@/views/marketing/tree/order/orde-add-and-update'
import * as api from '@/api/plantorder'
import {plantOrderListApi} from "@/api/plantorder";
import SureUpdate from '@/views/marketing/tree/order/orde-add-sure.vue'
import {plantorderDeleteApi, plantOrderListApi} from "@/api/plantorder";
import {plantDeleteApi} from "@/api/plant";
export default {
data () {
return {
@ -161,19 +174,33 @@ import {plantOrderListApi} from "@/api/plantorder";
totalPage: 0,
dataListLoading: false,
dataListSelections: [],
addOrUpdateVisible: false
addOrUpdateVisible: false,
sureOrUpdateVisible: false
}
},
components: {
AddOrUpdate
AddOrUpdate,
SureUpdate
},
created () {
this.getDataList()
},
methods: {
calculateRemainingDays(startDate, endDate) {
// Date
const start = new Date(startDate);
const end = new Date(endDate);
//
const timeDifference = end - start;
//
const remainingDays = Math.ceil(timeDifference / (1000 * 60 * 60 * 24));
return remainingDays;
},
//
getDataList () {
this.dataListLoading = true
this.tableFrom.limit= 20
plantOrderListApi(this.tableFrom).then(res => {
this.dataList = res.list
this.totalPage = res.total
@ -204,22 +231,87 @@ import {plantOrderListApi} from "@/api/plantorder";
this.$refs.addOrUpdate.init(id)
})
},
//
sureOrUpdateHandle (id) {
this.sureOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.sureUpdate.init(id)
})
},
//
deleteHandle (id) {
// var ids = id ? [id] : this.dataListSelections.map(item => {
// return item.id
// })
// this.$confirm(`[id=${ids.join(',')}][${id ? '' : ''}]?`, '', {
// confirmButtonText: '',
// cancelButtonText: '',
// type: 'warning'
// }).then(() => {
// api.ebteaplantorderitemDeleteApi(id).then(res => {
// // TODO
// })
// })
// })
console.log(id)
this.$confirm(`您确定对[id=id] 删除操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
plantorderDeleteApi({id: id}).then(res => {
// TODO
this.getDataList()
this.$message.success('删除成功!')
})
})
}
}
}
</script>
<style lang="scss" scoped>
.el-table__body {
width: 100%;
table-layout: fixed !important;
}
.demo-table-expand{
::v-deeplabel{
width: 83px !important;
}
}
.refunding{
span{
display: block;
}
}
.selWidth{
width: 300px;
}
.el-dropdown-link {
cursor: pointer;
color: #409EFF;
font-size: 12px;
}
.el-icon-arrow-down {
font-size: 12px;
}
.tabBox_tit {
font-size: 12px !important;
/*margin: 0 2px 0 10px;*/
letter-spacing: 1px;
/*padding: 5px 0;*/
box-sizing: border-box;
}
.text_overflow{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 400px;
}
.pup_card{
width: 200px;
border-radius: 5px;
padding: 5px;
box-sizing: border-box;
font-size: 12px;
line-height: 16px;
}
.flex-column{
display: flex;
flex-direction: column;
}
.mt20{
margin-top:20px
}
.relative{
position: relative;
}
</style>

View File

@ -0,0 +1,126 @@
<template>
<!-- 基于 Element UI 新增和修改弹窗 -->
<el-dialog
title="确定订单"
:close-on-click-modal="false"
:visible.sync="visible">
<!-- 新增和创建表单表单 -->
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="120px">
<el-form-item label="唯一凭证" prop="code">
<el-input disabled v-model="dataForm.code" placeholder="茶树唯一凭证"></el-input>
</el-form-item>
<el-form-item label="认领开始时间" prop="beginTime">
<el-date-picker
v-model="dataForm.beginTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="认领开始时间"
>
</el-date-picker>
<!-- <el-input v-model="dataForm.beginTime" placeholder="树成熟开始时间"></el-input>-->
</el-form-item>
<el-form-item label="认领结束时间" prop="endTime">
<el-date-picker
v-model="dataForm.endTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
@change="dateSubmit()"
placeholder="认领结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="最终领养时间">
<span style="color: red;font-size: 18px">{{ time }}</span>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataSubmit()">确定</el-button>
</span>
</el-dialog>
</template>
<script>
import * as api from '@/api/plantorder'
import {plantorderDetailApi, plantorderUpdateApi} from "@/api/plantorder";
import {Message} from "element-ui";
export default {
data() {
return {
time: 0,
visible: false,
beginTime: '',
endTime: '',
dataForm: {},
dataRule: {
plantOrderId: [
{required: true, message: '订单编号 为必填项', trigger: 'blur'}
],
code: [
{required: true, message: '茶树唯一凭证 为必填项', trigger: 'blur'}
],
beginTime: [
{required: true, message: '认领开始时间 为必填项', trigger: 'blur'}
],
endTime: [
{required: true, message: '认领结束时间 为必填项', trigger: 'blur'}
],
}
}
},
methods: {
init(data) {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
this.dataForm = data;
})
},
dateSubmit() {
if (this.isStartDateAfterEndDate(this.dataForm.beginTime, this.dataForm.endTime)) {
console.log("开始日期超出结束日期!");
Message.error('开始日期超出结束日期!');
return
} else {
this.time = this.calculateRemainingDays(this.dataForm.beginTime, this.dataForm.endTime);
}
},
calculateRemainingDays(startDate, endDate) {
// Date
const start = new Date(startDate);
const end = new Date(endDate);
//
const timeDifference = end - start;
//
const remainingDays = Math.ceil(timeDifference / (1000 * 60 * 60 * 24));
return remainingDays;
},
isStartDateAfterEndDate(startDate, endDate) {
// Date
const start = new Date(startDate);
const end = new Date(endDate);
//
if (isNaN(start) || isNaN(end)) {
Message.error('日期格式不正确');
return false;
}
return start > end;
}
,
//
dataSubmit() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.dataForm.status = 1
plantorderUpdateApi(this.dataForm).then(res => {
Message.success('确定成功!');
this.$emit('refreshDataList');
});
}
})
}
}
}
</script>

View File

@ -72,8 +72,8 @@
</el-form-item>
</el-col>
<el-col :xs="18" :sm="18" :md="18" :lg="12" :xl="12">
<el-form-item label="运费模板:" prop="tempId">
<el-select v-model="formValidate.tempId" placeholder="请选择" class="mr20" :disabled="isDisabled" style="width:100%;">
<el-form-item label="配送模板:" prop="tempId">
<el-select v-model="formValidate.tempId" placeholder="请选择" class="mr20" style="width:100%;">
<el-option
v-for="item in shippingList"
:key="item.id"
@ -84,7 +84,7 @@
</el-form-item>
</el-col>
<el-col :xs="6" :sm="6" :md="6" :lg="12" :xl="12">
<el-button v-show="!isDisabled" class="mr15" @click="addTem">运费模板</el-button>
<el-button v-show="!isDisabled" class="mr15" @click="addTem">配送模板</el-button>
</el-col>
<el-col :span="24">
<el-form-item label="商品规格:" props="specType">
@ -93,9 +93,9 @@
<el-radio :label="true">多规格</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="佣金设置:" props="isSub">
<el-form-item label="基础设置:" props="isSub">
<el-radio-group v-model="formValidate.isSub" @change="onChangetype(formValidate.isSub)" :disabled="isDisabled">
<el-radio :label="true" class="radio">单独设置</el-radio>
<!-- <el-radio :label="true" class="radio">单独设置</el-radio>-->
<el-radio :label="false">默认设置</el-radio>
</el-radio-group>
</el-form-item>
@ -422,8 +422,8 @@
otPrice: 0,
stock: 0,
barCode: '',
weight: 0,
volume: 0
// weight: 0,
// volume: 0
}],
attr: [],
selectRule: '',
@ -433,7 +433,7 @@
id: 0,
couponIds: [],
coupons: [],
activity: ['默认','秒杀','砍价','拼团']
activity: ['默认','秒杀']
}
const objTitle = {
price: {
@ -451,12 +451,12 @@
barCode: {
title: '商品编号'
},
weight: {
title: '重量KG'
},
volume: {
title: '体积(m³)'
}
// weight: {
// title: 'KG'
// },
// volume: {
// title: '(m³)'
// }
}
export default {
name: 'ProductProductAdd',
@ -464,7 +464,7 @@
data() {
return {
isDisabled: this.$route.params.isDisabled==='1'?true:false,
activity: { '默认': 'red', '秒杀': 'blue', '砍价': 'green', '拼团': 'yellow' },
activity: { '默认': 'red', '秒杀': 'blue' },
props2: {
children: 'child',
label: 'name',
@ -482,7 +482,7 @@
ManyAttrValue: [Object.assign({}, defaultObj.attrValue[0])], //
ruleList: [],
merCateList: [], //
shippingList: [], //
shippingList: [], //
formThead: Object.assign({}, objTitle),
formValidate: Object.assign({}, defaultObj),
formDynamics: {
@ -535,7 +535,7 @@
{ required: true, message: '请输入商品简介', trigger: 'blur' }
],
tempId: [
{ required: true, message: '请选择运费模板', trigger: 'change' }
{ required: true, message: '请选择配送模板', trigger: 'change' }
],
image: [
{ required: true, message: '请上传商品图', trigger: 'change' }
@ -706,8 +706,8 @@
otPrice: 0,
stock: 0,
barCode: '',
weight: 0,
volume: 0,
// weight: 0,
// volume: 0,
brokerage: 0,
brokerage_two: 0
}
@ -737,8 +737,8 @@
otPrice: 0,
stock: 0,
barCode: '',
weight: 0,
volume: 0,
// weight: 0,
// volume: 0,
brokerage: 0,
brokerage_two: 0,
attrValue: { [v['attrName']]: vv }
@ -756,7 +756,7 @@
return res
}
},
//
//
addTem() {
this.$refs.addTemplates.dialogVisible = true
this.$refs.addTemplates.getCityList()
@ -823,7 +823,7 @@
this.ruleList = list
})
},
//
//
getShippingList() {
shippingTemplatesList(this.tempData).then(res => {
this.shippingList = res.list
@ -870,8 +870,8 @@
this.$set(val, 'otPrice', this.oneFormBatch[0].otPrice)
this.$set(val, 'stock', this.oneFormBatch[0].stock)
this.$set(val, 'barCode', this.oneFormBatch[0].barCode)
this.$set(val, 'weight', this.oneFormBatch[0].weight)
this.$set(val, 'volume', this.oneFormBatch[0].volume)
// this.$set(val, 'weight', this.oneFormBatch[0].weight)
// this.$set(val, 'volume', this.oneFormBatch[0].volume)
this.$set(val, 'brokerage', this.oneFormBatch[0].brokerage)
this.$set(val, 'brokerageTwo', this.oneFormBatch[0].brokerageTwo)
}
@ -984,7 +984,7 @@
ficti: info.ficti,
coupons: info.coupons,
couponIds: info.couponIds,
activity: info.activityStr ? info.activityStr.split(',') : ['默认','秒杀','砍价','拼团']
activity: info.activityStr ? info.activityStr.split(',') : ['默认','秒杀']
}
marketingSendApi({type:3}).then(res=>{
if(this.formValidate.couponIds !== null){

View File

@ -62,7 +62,7 @@
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="运费模板:" prop="tempId">
<el-form-item label="配送模板:" prop="tempId">
<el-select v-model="formValidate.tempId" placeholder="请选择" class="selWidth">
<el-option
v-for="item in shippingList"
@ -319,7 +319,7 @@
{required: true, message: '请输入单位', trigger: 'blur'}
],
tempId: [
{required: true, message: '请选择运费模板', trigger: 'change', type: 'number'}
{required: true, message: '请选择配送模板', trigger: 'change', type: 'number'}
],
keyword: [
{required: true, message: '请输入商品关键字', trigger: 'blur'}
@ -485,7 +485,7 @@
return res
}
},
//
//
productGetTemplate() {
shippingTemplatesList(this.tempData).then(res => {
this.shippingList = res.list

View File

@ -1,7 +1,7 @@
<template>
<el-dialog
v-if="dialogVisible"
title="运费模板"
title="配送模板"
:visible.sync="dialogVisible"
width="1000px"
:before-close="handleClose"
@ -15,9 +15,10 @@
<el-radio :label="1">按件数</el-radio>
<el-radio :label="2">按重量</el-radio>
<el-radio :label="3">按体积</el-radio>
<el-radio :label="4">按距离</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="配送区域及费" prop="region">
<el-form-item label="配送区域及" prop="region">
<el-table v-loading="listLoading" :data="ruleForm.region" border fit highlight-current-row style="width: 100%" size="mini" class="tempBox">
<el-table-column align="center" label="可配送区域" min-width="260">
<template slot-scope="scope">
@ -42,7 +43,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="120px" align="center" label="费(元)" prop="firstPrice">
<el-table-column min-width="120px" align="center" label="(元)" prop="firstPrice">
<template slot-scope="scope">
<el-form-item :rules="rules.firstPrice" :prop="'region.'+scope.$index+'.firstPrice'">
<el-input-number v-model="scope.row.firstPrice" controls-position="right" :min="0" />
@ -107,7 +108,7 @@
<el-input-number v-model="row.number" controls-position="right" :step-strictly="ruleForm.type===1?true:false" :min="ruleForm.type===1?1:0.1"/>
</template>
</el-table-column>
<el-table-column min-width="120px" align="center" label="包邮金额(元)">
<el-table-column min-width="120px" align="center" label="包邮金额(元)" v-if="isShowPrice">
<template slot-scope="{row}">
<el-input-number v-model="row.price" controls-position="right" />
</template>
@ -187,6 +188,7 @@ const defaultRole = {
}
const kg = '重量kg'
const m = '体积'
const km = '公里km'
const statusMap = [
{
title: '首件',
@ -202,6 +204,11 @@ const statusMap = [
title: `首件${m}`,
title2: `续件${m}`,
title3: `包邮${m}`
},
{
title: `${km}`,
title2: `${km}`,
title3: `免费${km}`
}
]
export default {
@ -240,7 +247,7 @@ export default {
{ required: true, message: '请输入', trigger: 'blur' }
],
firstPrice: [
{ required: true, message: '请输入费', trigger: 'blur' }
{ required: true, message: '请输入', trigger: 'blur' }
],
renewalPrice: [
{ required: true, message: '请输入续费', trigger: 'blur' }
@ -262,6 +269,7 @@ export default {
title2: '续件',
title3: '包邮件数'
},
isShowPrice: true,
tempId: 0,
type: 0 // 0 1
}
@ -310,6 +318,11 @@ export default {
},
changeRadio(num) {
this.columns = Object.assign({}, statusMap[num - 1])
if (num === 4) {
this.isShowPrice = false;
} else {
this.isShowPrice = true;
}
},
//
addRegion(region) {
@ -423,7 +436,7 @@ export default {
name: this.ruleForm.name,
sort: this.ruleForm.sort,
type: this.ruleForm.type,
//
//
// shippingTemplatesRegionRequestList: [],
// //
// shippingTemplatesFreeRequestList: []

View File

@ -11,7 +11,7 @@
</el-form-item>
</el-form>
</div>
<el-button type="primary" size="mini" @click="handleSubmit()" v-hasPermi="['admin:shipping:templates:save']">添加运费模板</el-button>
<el-button type="primary" size="mini" @click="handleSubmit()" v-hasPermi="['admin:shipping:templates:save']">添加配送模板</el-button>
</div>
<el-table
v-loading="loading"
@ -108,7 +108,8 @@ export default {
const statusMap = {
1: '按件数',
2: '按重量',
3: '按体积'
3: '按体积',
4: '按距离'
}
return statusMap[status]
}

View File

@ -1,7 +1,7 @@
<template>
<el-dialog
v-if="dialogVisible"
title="运费模板"
title="配送模板"
:visible.sync="dialogVisible"
width="1000px"
:before-close="handleClose"
@ -15,9 +15,10 @@
<el-radio :label="1">按件数</el-radio>
<el-radio :label="2">按重量</el-radio>
<el-radio :label="3">按体积</el-radio>
<el-radio :label="4">按距离</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="配送区域及费" prop="region">
<el-form-item label="配送区域及" prop="region">
<el-table v-loading="listLoading" :data="ruleForm.region" border fit highlight-current-row style="width: 100%" size="mini" class="tempBox">
<el-table-column align="center" label="可配送区域" min-width="260">
<template slot-scope="scope">
@ -186,6 +187,7 @@ const defaultRole = {
}
const kg = '重量kg'
const m = '体积'
const km = '公里km'
const statusMap = [
{
title: '首件',
@ -201,6 +203,11 @@ const statusMap = [
title: `首件${m}`,
title2: `续件${m}`,
title3: `包邮${m}`
},
{
title: `${km}`,
title2: `${km}`,
title3: `免费${km}`
}
]
export default {

View File

@ -11,7 +11,7 @@
</el-form-item>
</el-form>
</div>
<el-button type="primary" size="mini" @click="handleSubmit()">添加运费模板</el-button>
<el-button type="primary" size="mini" @click="handleSubmit()">添加配送模板</el-button>
</div>
<el-table
v-loading="loading"
@ -107,7 +107,8 @@ export default {
const statusMap = {
1: '按件数',
2: '按重量',
3: '按体积'
3: '按体积',
4: '按距离'
}
return statusMap[status]
}