首页推荐

This commit is contained in:
xk_chenlianjie
2024-01-15 14:10:59 +08:00
parent 93cc41f557
commit c48da8d53b
17 changed files with 1031 additions and 996 deletions

View File

@@ -1,109 +1,105 @@
<template>
<div class="divBox">
<el-card class="box-card">
<div style="width :100%;height:45px;line-height: 45px;background: #f3f3f3; padding-left:20px">
<!-- <el-card class="box-card"> -->
<!-- <div style="width :100%;height:45px;line-height: 45px;background: #f3f3f3; padding-left:20px">
添加广告
</div>
<el-form :rules="rules" ref="form" :model="advertisement" class="formValidate mt20 " label-width="100px">
<el-row>
<el-col :span="13">
<el-form-item label="广告名称" prop="storeName">
<el-input v-model="advertisement.storeName" maxlength="249" placeholder="请输入商品名称" />
</el-form-item>
</el-col>
</div> -->
<el-form :rules="rules" ref="form" :model="advertisement" class="formValidate " label-width="100px">
<el-row>
<el-col :span="15">
<el-form-item label="广告名称" prop="advertiseName">
<el-input v-model="advertisement.advertiseName" maxlength="249" placeholder="请输入商品名称" />
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="开始时间" prop="startTime">
<el-date-picker style="width:100%" v-model="advertisement.startTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="结束时间" prop="endTime">
<el-date-picker style="width:100%" v-model="advertisement.endTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="15">
<el-form-item label="开始时间" prop="startTime">
<el-date-picker style="width:100%" v-model="advertisement.startTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="15">
<el-form-item label="结束时间" prop="endTime">
<el-date-picker style="width:100%" v-model="advertisement.endTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="上线/下线" prop="specType">
<el-radio-group v-model="advertisement.specType" @change="onChangeSpec(advertisement.specType)">
<el-radio :label="false">上线</el-radio>
<el-radio :label="true">下线</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="上线/下线" prop="isDownline">
<el-radio-group v-model="advertisement.isDownline">
<el-radio :label="1">上线</el-radio>
<el-radio :label="0">下线</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="广告图片" prop="picture">
<el-upload
:action="updateFileUrl"
:data="$store.state.global.headOss"
:before-upload="imgCompress"
:on-remove="headPhotoRemove"
:on-success="headPhotoSuccess"
:headers="headers"
:limit="1"
:on-exceed="handleExceed"
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件且不超过50kb</div>
</el-upload>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="广告图片" prop="positionImage">
<div class="upLoadPicBox">
<upload :photo="advertisement.positionImage" @success="uploadSuccess" tip="只能上传jpg/png格式文件文件不能超过50kb"></upload>
</div>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="广告链接" prop="link">
<el-input v-model="advertisement.link" placeholder="请输入广告链接" />
</el-form-item>
</el-col>
</el-row>
<el-col :span="15">
<el-form-item label="广告链接" prop="advertiseUrl">
<el-input v-model="advertisement.advertiseUrl" type='url' placeholder="请输入广告链接" />
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<el-button type="primary" class="submission" @click="handleSubmit">提交</el-button>
</el-form-item>
</el-form>
</el-card>
<el-form-item>
<el-button type="primary" class="submission" @click="handleSubmit">提交</el-button>
<el-button :size="$store.getters.size" @click="close">取消</el-button>
</el-form-item>
</el-form>
<!-- </el-card> -->
</div>
</template>
<script>
import { imgCompress } from '@/utils'
import { getToken } from '@/utils/auth'
import utils from '@/utils/encode'
const JSESSIONID = utils.uuid()
import marketingApi from '@/api/finance/marketing.js'
import { loadingFn } from '@/utils/validate'
import upload from '@/components/Upload/index'
export default {
components: { upload },
data() {
return {
advertisement: { specType: false },
imgCompress,
updateFileUrl: process.env.VUE_APP_UPLOAD_URL,
headers: {
dataSources: 'WEB',
Authorization: getToken(),
JSESSIONID: JSESSIONID,
token: utils.bcrypt(JSESSIONID)
},
advertisement: { isDownline: '1' },
rules: {
storeName: [{ required: true, message: '请输入广告名称', trigger: 'blur' }],
advertiseName: [{ required: true, message: '请输入广告名称', trigger: 'blur' }],
startTime: [{ required: true, message: '请选择开始时间', trigger: 'change' }],
endTime: [{ required: true, message: '请选择结束时间', trigger: 'change' }],
picture: [{ required: true, message: '请上传广告图片', trigger: 'change' }],
link: [{ required: true, message: '请输入广告链接', trigger: 'blur' }]
positionImage: [{ required: true, message: '请上传广告图片', trigger: 'change' }],
advertiseUrl: [{ required: true, message: '请输入广告链接', trigger: 'blur' }]
}
}
},
methods: {
onChangeSpec(num) {},
headPhotoRemove(file, fileList) {
// 删除
this.advertisement.businessLienceImg = undefined
handleSubmit() {
this.$refs['form'].validate(valid => {
if (valid) {
this.save()
}
})
},
headPhotoSuccess(res) {
// 头像上传成功
this.advertisement.businessLienceImg = res.data.publicUrl
save() {
loadingFn.call(
this,
'loading',
marketingApi.save(this.advertisement).then(res => {
if ((res.code = 20000)) this.$message.success(res.msg)
this.$emit('closeDialog')
this.$emit('getList')
})
)
},
uploadSuccess(e, res) {
console.log(res)
if (res.code == 20000) {
this.advertisement.positionImage = res.data.publicUrl
}
},
handleSubmit() {
this.$refs['form'].validate(valid => {
@@ -111,10 +107,11 @@ export default {
this.save(this.advertisement)
}
})
},
close() {
this.$emit('closeDialog')
}
}
}
</script>
<style scoped lang="stylus">
</style>
<style scoped lang="stylus"></style>

View File

@@ -2,18 +2,18 @@
<div class="article-manager">
<el-card :bordered="false" shadow="never" class="ivu-mt-16">
<div>
<el-form ref="artFrom" :model="artFrom" label-width="80px" label-position="right" inline @submit.native.prevent>
<el-form-item label="广告名称:" label-for="pid">
<el-input clearable placeholder="广告名称" v-model="artFrom.name" class="form_content_width" />
<el-form :model="page" label-width="80px" label-position="right" inline @submit.native.prevent>
<el-form-item label="广告名称:">
<el-input clearable placeholder="广告名称" v-model="page.params.advertiseName" class="form_content_width" />
</el-form-item>
<el-form-item label="是否上线:" label-for="store_name">
<el-select v-model="artFrom.type" placeholder="状态" clearable @keyup.enter.native="getByPage">
<el-form-item label="是否上线:">
<el-select v-model="page.params.isDownline" placeholder="状态" clearable @keyup.enter.native="getByPage">
<el-option label="是" value="0" />
<el-option label="否" value="1" />
</el-select>
</el-form-item>
<el-form-item label="到期时间:" label-for="store_name">
<el-date-picker v-model="artFrom.createTime" type="date" placeholder="选择日期"> </el-date-picker>
<el-form-item label="到期时间:">
<el-date-picker v-model="page.params.endTime" type="date" placeholder="选择日期"> </el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="userSearchs">查询</el-button>
@@ -22,29 +22,44 @@
</div>
<el-button type="primary" class="bnt" @click="addClass()">添加广告</el-button>
<el-dropdown class="bnt mr14" @command="batchSelect">
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="1">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
<el-table-column prop="categoryNum" label="编号"></el-table-column>
<el-table-column prop="categoryName" label="广告名称"></el-table-column>
<el-table-column prop="categoryName" label="广告位置"></el-table-column>
<el-table-column prop="icon" label="广告图片" min-width="80">
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column prop="id" label="编号" min-width="120"></el-table-column>
<el-table-column prop="advertiseName" label="广告名称"></el-table-column>
<el-table-column prop="advertisePosition" label="广告位置"></el-table-column>
<el-table-column prop="positionImage" label="广告图片" min-width="80">
<template slot-scope="scope">
<el-image style="width: 50px; height: 50px" :src="scope.row.icon" :preview-src-list="[scope.row.icon]"> </el-image>
<el-image style="width: 50px; height: 50px" :src="scope.row.positionImage"> </el-image>
</template>
</el-table-column>
<el-table-column label="时间" min-width="150">
<template slot-scope="scope">
<span>开始时间{{ scope.row.createTime }}</span>
<span>开始时间{{ scope.row.startTime }}</span>
<br />
<span>到期时间{{ scope.row.updateTime }}</span>
<span>到期时间{{ scope.row.endTime }}</span>
</template>
</el-table-column>
<el-table-column prop="showFlag" label="上线/下线">
<el-table-column prop="isDownline" label="上线/下线">
<template slot-scope="scope">
<el-switch active-value="1" inactive-value="0" v-model="scope.row.showFlag" active-color="#13ce66" inactive-color="#ff4949"> </el-switch>
<el-switch
:active-value="1"
:inactive-value="0"
@change="onchangeIsShow(scope.row)"
v-model="scope.row.isDownline"
active-color="#13ce66"
inactive-color="#ff4949"
>
</el-switch>
</template>
</el-table-column>
<el-table-column prop="sort" label="排序" min-width="100" tooltip="true"></el-table-column>
<el-table-column prop="sortNumber" label="排序" min-width="50" tooltip="true"></el-table-column>
<el-table-column prop="date" label="操作" width="120" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="edit(scope.row)">编辑</el-button>
@@ -66,32 +81,35 @@
/>
</div>
<!-- 添加 编辑表单-->
<edit-from ref="edits" :FromData="FromData" @submitFail="userSearchs"></edit-from>
<el-dialog title="添加分类" :visible.sync="editDialogConfig.visible" destroy-on-close :close-on-click-modal="false">
<edit ref="edit" :parentOptions="tableData" />
<el-dialog title="添加广告" :visible.sync="addDialog" v-el-drag-dialog width="45%">
<advertisementAdd @getByPage="getByPage" @closeDialog="closeDialog" v-if="addDialog" />
</el-dialog>
<el-dialog title="修改广告" :visible.sync="updateDialog" v-el-drag-dialog width="45%">
<advertisementUpdate @getByPage="getByPage" @closeDialog="closeDialog" v-if="updateDialog" :advertisement="advertisement" />
</el-dialog>
</div>
</template>
<script>
import edit from '@/components/Category/edit'
import editFrom from '../../../components/from/from'
import productApi from '@/api/product/productAttr.js'
import advertisementAdd from './advertisementAdd'
import advertisementUpdate from './advertisementUpdate'
import marketingApi from '@/api/finance/marketing.js'
import { loadingFn } from '@/utils/validate'
export default {
name: 'product_productClassify',
components: {
editFrom,
edit
// editFrom,
advertisementAdd,
advertisementUpdate
},
data() {
return {
editDialogConfig: {
visible: false
},
addDialog: false, // 添加弹窗
updateDialog: false, // 修改弹窗
treeSelect: [],
FromData: null,
advertisement: {},
grid: {
xl: 7,
lg: 7,
@@ -100,10 +118,7 @@ export default {
xs: 24
},
loading: false,
artFrom: {
page: 1,
limit: 15
},
page: {
currentPage: 1,
pageSize: 10,
@@ -127,77 +142,60 @@ export default {
this.page.currentPage = val
this.getList()
},
// 商品分类;
goodsCategory() {},
// 列表
getList() {
loadingFn.call(
this,
'loading',
productApi.classifyGetByPage(this.page).then(res => {
marketingApi.getByPage(this.page).then(res => {
if ((res.code = 20000)) ({ list: this.tableData = [], totalCount: this.page.totalCount = 0 } = res.data)
})
)
},
pageChange(index) {
this.artFrom.page = index
this.page.currentPage = index
this.getList()
},
// 添加
addClass(parent = null) {
this.editDialogConfig.visible = true
this.$refs.edit.model = 'classifySave'
// this.$nextTick(()=>{
// this.$refs.edit.parent = parent;
// });
if (parent) {
let { categoryName, id } = parent
this.$nextTick(() => {
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { parentCategoryName: categoryName, parentId: id, level: 2 })
})
}
addClass() {
this.addDialog = true
},
// 编辑
edit(row) {
this.editDialogConfig.visible = true
this.$nextTick(() => {
let { level, icon, showFlag, categoryName, sort, parentId, id } = row
console.log(this.tableData.find(item => item == parentId), 'categoryName')
if (row.level == 1) {
this.$refs.edit.model = 'classifyUpdate'
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { level, icon, showFlag, categoryName, sort, parentId, id })
} else {
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, {
level,
icon,
showFlag,
parentCategoryName: this.tableData.find(item => item == parentId).categoryName,
categoryName,
sort,
parentId,
id
})
}
// 跳转到更新
marketingApi.get(row.id).then(res => {
this.advertisement = res.data
this.updateDialog = true
})
},
closeDialog() {
this.addDialog = false
this.updateDialog = false
},
// 修改状态
onchangeIsShow(row) {
console.log(row)
let data = {
id: row.id,
is_show: row.is_show
isDownline: row.isDownline
}
setShowApi(data)
marketingApi
.goOnlineAndGoOffline(data)
.then(async res => {
this.$message.success(res.msg)
this.getList()
})
.catch(res => {
this.$message.error(res.msg)
this.getList()
})
},
// 删除
del(row, scope) {
console.log(scope)
console.log(row)
this.$alert('请确定删除!', '提示', {
confirmButtonText: '确定',
callback: action => {
@@ -205,7 +203,7 @@ export default {
loadingFn.call(
this,
'loading',
productApi.classifyDelete(row).then(res => {
marketingApi.delete(row).then(res => {
if ((res.code = 20000)) {
this.$message.success('操作成功!')
this.handleCurrentChange()
@@ -218,7 +216,7 @@ export default {
},
// 表格搜索
userSearchs() {
this.artFrom.page = 1
this.page.currentPage = 1
this.getList()
}
}
@@ -239,8 +237,8 @@ export default {
img {
width: 100%;
height: 100%;
}
}
</style>

View File

@@ -0,0 +1,115 @@
<template>
<div class="divBox">
<!-- <el-card class="box-card">
<div style="width :100%;height:45px;line-height: 45px;background: #f3f3f3; padding-left:20px">
添加广告
</div> -->
<el-form :rules="rules" ref="form" :model="advertisement" class="formValidate" label-width="100px">
<el-row>
<el-col :span="13">
<el-form-item label="广告名称" prop="advertiseName">
<el-input v-model="advertisement.advertiseName" maxlength="249" placeholder="请输入商品名称" />
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="开始时间" prop="startTime">
<el-date-picker style="width:100%" v-model="advertisement.startTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="结束时间" prop="endTime">
<el-date-picker style="width:100%" v-model="advertisement.endTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="上线/下线" prop="isDownline">
<el-radio-group v-model="advertisement.isDownline">
<el-radio :label="1">上线</el-radio>
<el-radio :label="0">下线</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="广告图片" prop="positionImage">
<div class="upLoadPicBox">
<upload :photo="advertisement.positionImage" @success="uploadSuccess" tip="只能上传jpg/png格式文件文件不能超过50kb"></upload>
</div>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="广告链接" prop="advertiseUrl">
<el-input v-model="advertisement.advertiseUrl" type="url" placeholder="请输入广告链接" />
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<el-button type="primary" class="submission" @click="handleSubmit">提交</el-button>
<el-button :size="$store.getters.size" @click="close">取消</el-button>
</el-form-item>
</el-form>
<!-- </el-card> -->
</div>
</template>
<script>
import marketingApi from '@/api/finance/marketing.js'
import upload from '@/components/Upload/index'
export default {
components: { upload },
props: {
advertisement: {
type: Object,
default() {}
}
},
data() {
return {
advertisement: { isDownline: '1' },
rules: {
advertiseName: [{ required: true, message: '请输入广告名称', trigger: 'blur' }],
startTime: [{ required: true, message: '请选择开始时间', trigger: 'change' }],
endTime: [{ required: true, message: '请选择结束时间', trigger: 'change' }],
picture: [{ required: true, message: '请上传广告图片', trigger: 'change' }],
advertiseUrl: [{ required: true, message: '请输入广告链接', trigger: 'blur' }]
}
}
},
methods: {
handleSubmit() {
this.$refs['form'].validate(valid => {
if (valid) {
this.update()
}
})
},
update() {
loadingFn.call(
this,
'loading',
marketingApi.update(this.advertisement).then(res => {
if ((res.code = 20000)) this.$message.success(res.msg)
this.$emit('closeDialog')
this.$emit('getList')
})
)
},
uploadSuccess(e, res) {
console.log(res)
if (res.code == 20000) {
this.advertisement.positionImage = res.data.publicUrl
}
},
close() {
this.$emit('closeDialog')
}
}
}
</script>
<style scoped lang="stylus"></style>

View File

@@ -2,12 +2,12 @@
<div class="article-manager">
<el-card :bordered="false" shadow="never" class="ivu-mt-16">
<div>
<el-form ref="artFrom" :model="artFrom" label-width="80px" label-position="right" inline @submit.native.prevent>
<el-form-item label="商品名称:" label-for="pid">
<el-input clearable placeholder="商品名称" v-model="artFrom.name" class="form_content_width" />
<el-form :model="page" label-width="80px" label-position="right" inline @submit.native.prevent>
<el-form-item label="商品名称:">
<el-input clearable placeholder="商品名称" v-model="page.params.productName" class="form_content_width" />
</el-form-item>
<el-form-item label="推荐状态:" label-for="store_name">
<el-select v-model="artFrom.type" placeholder="状态" clearable @keyup.enter.native="getByPage">
<el-form-item label="推荐状态:">
<el-select v-model="page.params.isRecommended" placeholder="状态" clearable @keyup.enter.native="getByPage">
<el-option label="是" value="0" />
<el-option label="否" value="1" />
</el-select>
@@ -20,18 +20,35 @@
</div>
<el-button type="primary" class="bnt" @click="addClass()">选择商品</el-button>
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
<el-table-column prop="categoryNum" label="编号"></el-table-column>
<el-table-column prop="categoryName" label="商品名称"></el-table-column>
<el-table-column prop="showFlag" label="是否推荐">
<el-dropdown class="bnt mr14" @command="batchSelect">
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="1">取消推荐</el-dropdown-item>
<el-dropdown-item :command="2">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column prop="productId" label="编号"></el-table-column>
<el-table-column prop="productName" label="商品名称"></el-table-column>
<el-table-column prop="isRecommended" label="是否推荐">
<template slot-scope="scope">
<el-switch active-value="1" inactive-value="0" v-model="scope.row.showFlag" active-color="#13ce66" inactive-color="#ff4949"> </el-switch>
<el-switch
:active-value="0"
:inactive-value="1"
@change="onchangeIsShow(scope.row)"
v-model="scope.row.isRecommended"
active-color="#13ce66"
inactive-color="#ff4949"
>
</el-switch>
</template>
</el-table-column>
<el-table-column prop="date" label="操作" width="120" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="edit(scope.row)">置顶</el-button>
<el-button type="text" @click="topOne(scope.row)">置顶</el-button>
<el-button @click="del(scope.row, scope)" type="text">删除</el-button>
</template>
@@ -49,26 +66,15 @@
:total="page.totalCount"
/>
</div>
<!-- 添加 编辑表单-->
<edit-from ref="edits" :FromData="FromData" @submitFail="userSearchs"></edit-from>
<el-dialog title="添加分类" :visible.sync="editDialogConfig.visible" destroy-on-close :close-on-click-modal="false">
<edit ref="edit" :parentOptions="tableData" />
</el-dialog>
</div>
</template>
<script>
import edit from '@/components/Category/edit'
import editFrom from '../../../components/from/from'
import productApi from '@/api/product/productAttr.js'
import marketingApi from '@/api/finance/marketing.js'
import { loadingFn } from '@/utils/validate'
export default {
name: 'product_productClassify',
components: {
editFrom,
edit
},
components: {},
data() {
return {
editDialogConfig: {
@@ -84,14 +90,13 @@ export default {
xs: 24
},
loading: false,
artFrom: {
page: 1,
limit: 15
},
page: {
currentPage: 1,
pageSize: 10,
params: {},
params: {
type: '1'
},
totalCount: 0
},
total: 0,
@@ -118,67 +123,56 @@ export default {
loadingFn.call(
this,
'loading',
productApi.classifyGetByPage(this.page).then(res => {
marketingApi.getHomeByPage(this.page).then(res => {
if ((res.code = 20000)) ({ list: this.tableData = [], totalCount: this.page.totalCount = 0 } = res.data)
})
)
},
pageChange(index) {
this.artFrom.page = index
this.page.currentPage = index
this.getList()
},
// 添加
addClass(parent = null) {
this.editDialogConfig.visible = true
this.$refs.edit.model = 'classifySave'
// this.$nextTick(()=>{
// this.$refs.edit.parent = parent;
// });
if (parent) {
let { categoryName, id } = parent
this.$nextTick(() => {
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { parentCategoryName: categoryName, parentId: id, level: 2 })
})
}
},
// 编辑
edit(row) {
this.editDialogConfig.visible = true
this.$nextTick(() => {
let { level, icon, showFlag, categoryName, sort, parentId, id } = row
console.log(this.tableData.find(item => item == parentId), 'categoryName')
if (row.level == 1) {
this.$refs.edit.model = 'classifyUpdate'
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { level, icon, showFlag, categoryName, sort, parentId, id })
} else {
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, {
level,
icon,
showFlag,
parentCategoryName: this.tableData.find(item => item == parentId).categoryName,
categoryName,
sort,
parentId,
id
})
}
})
},
// 修改状态
onchangeIsShow(row) {
console.log(row)
let data = {
id: row.id,
is_show: row.is_show
isRecommended: row.isRecommended
}
setShowApi(data)
marketingApi
.whetherToRecommend(data)
.then(async res => {
this.$message.success(res.msg)
this.getList()
})
.catch(res => {
this.$message.error(res.msg)
this.getList()
})
},
// 置顶
topOne(row, scope) {
console.log(row)
this.$alert('请确定将改商品置顶!', '提示', {
confirmButtonText: '确定',
callback: action => {
if (action == 'confirm') {
loadingFn.call(
this,
'loading',
marketingApi.topOne(row.id).then(res => {
if ((res.code = 20000)) {
this.$message.success('操作成功!')
this.handleCurrentChange()
}
})
)
}
}
})
},
// 删除
del(row, scope) {
console.log(scope)
@@ -189,7 +183,7 @@ export default {
loadingFn.call(
this,
'loading',
productApi.classifyDelete(row).then(res => {
marketingApi.homeDelete(row).then(res => {
if ((res.code = 20000)) {
this.$message.success('操作成功!')
this.handleCurrentChange()
@@ -202,7 +196,7 @@ export default {
},
// 表格搜索
userSearchs() {
this.artFrom.page = 1
this.page.currentPage = 1
this.getList()
}
}

View File

@@ -2,12 +2,12 @@
<div class="article-manager">
<el-card :bordered="false" shadow="never" class="ivu-mt-16">
<div>
<el-form ref="artFrom" :model="artFrom" label-width="80px" label-position="right" inline @submit.native.prevent>
<el-form-item label="商品名称:" label-for="pid">
<el-input clearable placeholder="商品名称" v-model="artFrom.name" class="form_content_width" />
<el-form :model="page" label-width="80px" label-position="right" inline @submit.native.prevent>
<el-form-item label="商品名称:">
<el-input clearable placeholder="商品名称" v-model="page.params.productName" class="form_content_width" />
</el-form-item>
<el-form-item label="推荐状态:" label-for="store_name">
<el-select v-model="artFrom.type" placeholder="状态" clearable @keyup.enter.native="getByPage">
<el-form-item label="推荐状态:">
<el-select v-model="page.params.isRecommended" placeholder="状态" clearable @keyup.enter.native="getByPage">
<el-option label="是" value="0" />
<el-option label="否" value="1" />
</el-select>
@@ -20,18 +20,35 @@
</div>
<el-button type="primary" class="bnt" @click="addClass()">选择商品</el-button>
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
<el-table-column prop="categoryNum" label="编号"></el-table-column>
<el-table-column prop="categoryName" label="商品名称"></el-table-column>
<el-table-column prop="showFlag" label="是否推荐">
<el-dropdown class="bnt mr14" @command="batchSelect">
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="1">取消推荐</el-dropdown-item>
<el-dropdown-item :command="2">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column prop="productId" label="编号"></el-table-column>
<el-table-column prop="productName" label="商品名称"></el-table-column>
<el-table-column prop="isRecommended" label="是否推荐">
<template slot-scope="scope">
<el-switch active-value="1" inactive-value="0" v-model="scope.row.showFlag" active-color="#13ce66" inactive-color="#ff4949"> </el-switch>
<el-switch
:active-value="0"
:inactive-value="1"
@change="onchangeIsShow(scope.row)"
v-model="scope.row.isRecommended"
active-color="#13ce66"
inactive-color="#ff4949"
>
</el-switch>
</template>
</el-table-column>
<el-table-column prop="date" label="操作" width="120" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="edit(scope.row)">置顶</el-button>
<el-button type="text" @click="topOne(scope.row)">置顶</el-button>
<el-button @click="del(scope.row, scope)" type="text">删除</el-button>
</template>
@@ -49,26 +66,15 @@
:total="page.totalCount"
/>
</div>
<!-- 添加 编辑表单-->
<edit-from ref="edits" :FromData="FromData" @submitFail="userSearchs"></edit-from>
<el-dialog title="添加分类" :visible.sync="editDialogConfig.visible" destroy-on-close :close-on-click-modal="false">
<edit ref="edit" :parentOptions="tableData" />
</el-dialog>
</div>
</template>
<script>
import edit from '@/components/Category/edit'
import editFrom from '../../../components/from/from'
import productApi from '@/api/product/productAttr.js'
import marketingApi from '@/api/finance/marketing.js'
import { loadingFn } from '@/utils/validate'
export default {
name: 'product_productClassify',
components: {
editFrom,
edit
},
components: {},
data() {
return {
editDialogConfig: {
@@ -84,14 +90,13 @@ export default {
xs: 24
},
loading: false,
artFrom: {
page: 1,
limit: 15
},
page: {
currentPage: 1,
pageSize: 10,
params: {},
params: {
type: '3'
},
totalCount: 0
},
total: 0,
@@ -118,67 +123,55 @@ export default {
loadingFn.call(
this,
'loading',
productApi.classifyGetByPage(this.page).then(res => {
marketingApi.getHomeByPage(this.page).then(res => {
if ((res.code = 20000)) ({ list: this.tableData = [], totalCount: this.page.totalCount = 0 } = res.data)
})
)
},
pageChange(index) {
this.artFrom.page = index
this.page.currentPage = index
this.getList()
},
// 添加
addClass(parent = null) {
this.editDialogConfig.visible = true
this.$refs.edit.model = 'classifySave'
// this.$nextTick(()=>{
// this.$refs.edit.parent = parent;
// });
if (parent) {
let { categoryName, id } = parent
this.$nextTick(() => {
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { parentCategoryName: categoryName, parentId: id, level: 2 })
})
}
},
// 编辑
edit(row) {
this.editDialogConfig.visible = true
this.$nextTick(() => {
let { level, icon, showFlag, categoryName, sort, parentId, id } = row
console.log(this.tableData.find(item => item == parentId), 'categoryName')
if (row.level == 1) {
this.$refs.edit.model = 'classifyUpdate'
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { level, icon, showFlag, categoryName, sort, parentId, id })
} else {
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, {
level,
icon,
showFlag,
parentCategoryName: this.tableData.find(item => item == parentId).categoryName,
categoryName,
sort,
parentId,
id
})
}
})
},
// 修改状态
onchangeIsShow(row) {
console.log(row)
let data = {
id: row.id,
is_show: row.is_show
isRecommended: row.isRecommended
}
setShowApi(data)
marketingApi
.whetherToRecommend(data)
.then(async res => {
this.$message.success(res.msg)
this.getList()
})
.catch(res => {
this.$message.error(res.msg)
this.getList()
})
},
// 置顶
topOne(row, scope) {
console.log(row)
this.$alert('请确定将改商品置顶!', '提示', {
confirmButtonText: '确定',
callback: action => {
if (action == 'confirm') {
loadingFn.call(
this,
'loading',
marketingApi.topOne(row.id).then(res => {
if ((res.code = 20000)) {
this.$message.success('操作成功!')
this.handleCurrentChange()
}
})
)
}
}
})
},
// 删除
del(row, scope) {
console.log(scope)
@@ -189,7 +182,7 @@ export default {
loadingFn.call(
this,
'loading',
productApi.classifyDelete(row).then(res => {
marketingApi.homeDelete(row).then(res => {
if ((res.code = 20000)) {
this.$message.success('操作成功!')
this.handleCurrentChange()
@@ -202,7 +195,7 @@ export default {
},
// 表格搜索
userSearchs() {
this.artFrom.page = 1
this.page.currentPage = 1
this.getList()
}
}

View File

@@ -2,12 +2,12 @@
<div class="article-manager">
<el-card :bordered="false" shadow="never" class="ivu-mt-16">
<div>
<el-form ref="artFrom" :model="artFrom" label-width="80px" label-position="right" inline @submit.native.prevent>
<el-form-item label="商品名称:" label-for="pid">
<el-input clearable placeholder="商品名称" v-model="artFrom.name" class="form_content_width" />
<el-form :model="page" label-width="80px" label-position="right" inline @submit.native.prevent>
<el-form-item label="商品名称:">
<el-input clearable placeholder="商品名称" v-model="page.params.productName" class="form_content_width" />
</el-form-item>
<el-form-item label="推荐状态:" label-for="store_name">
<el-select v-model="artFrom.type" placeholder="状态" clearable @keyup.enter.native="getByPage">
<el-form-item label="推荐状态:">
<el-select v-model="page.params.isRecommended" placeholder="状态" clearable @keyup.enter.native="getByPage">
<el-option label="是" value="0" />
<el-option label="否" value="1" />
</el-select>
@@ -20,18 +20,35 @@
</div>
<el-button type="primary" class="bnt" @click="addClass()">选择商品</el-button>
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
<el-table-column prop="categoryNum" label="编号"></el-table-column>
<el-table-column prop="categoryName" label="商品名称"></el-table-column>
<el-table-column prop="showFlag" label="是否推荐">
<el-dropdown class="bnt mr14" @command="batchSelect">
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="1">取消推荐</el-dropdown-item>
<el-dropdown-item :command="2">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column prop="productId" label="编号"></el-table-column>
<el-table-column prop="productName" label="商品名称"></el-table-column>
<el-table-column prop="isRecommended" label="是否推荐">
<template slot-scope="scope">
<el-switch active-value="1" inactive-value="0" v-model="scope.row.showFlag" active-color="#13ce66" inactive-color="#ff4949"> </el-switch>
<el-switch
:active-value="0"
:inactive-value="1"
@change="onchangeIsShow(scope.row)"
v-model="scope.row.isRecommended"
active-color="#13ce66"
inactive-color="#ff4949"
>
</el-switch>
</template>
</el-table-column>
<el-table-column prop="date" label="操作" width="120" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="edit(scope.row)">置顶</el-button>
<el-button type="text" @click="topOne(scope.row)">置顶</el-button>
<el-button @click="del(scope.row, scope)" type="text">删除</el-button>
</template>
@@ -49,26 +66,15 @@
:total="page.totalCount"
/>
</div>
<!-- 添加 编辑表单-->
<edit-from ref="edits" :FromData="FromData" @submitFail="userSearchs"></edit-from>
<el-dialog title="添加分类" :visible.sync="editDialogConfig.visible" destroy-on-close :close-on-click-modal="false">
<edit ref="edit" :parentOptions="tableData" />
</el-dialog>
</div>
</template>
<script>
import edit from '@/components/Category/edit'
import editFrom from '../../../components/from/from'
import productApi from '@/api/product/productAttr.js'
import marketingApi from '@/api/finance/marketing.js'
import { loadingFn } from '@/utils/validate'
export default {
name: 'product_productClassify',
components: {
editFrom,
edit
},
components: {},
data() {
return {
editDialogConfig: {
@@ -84,14 +90,13 @@ export default {
xs: 24
},
loading: false,
artFrom: {
page: 1,
limit: 15
},
page: {
currentPage: 1,
pageSize: 10,
params: {},
params: {
type: '2'
},
totalCount: 0
},
total: 0,
@@ -118,67 +123,55 @@ export default {
loadingFn.call(
this,
'loading',
productApi.classifyGetByPage(this.page).then(res => {
marketingApi.getHomeByPage(this.page).then(res => {
if ((res.code = 20000)) ({ list: this.tableData = [], totalCount: this.page.totalCount = 0 } = res.data)
})
)
},
pageChange(index) {
this.artFrom.page = index
this.page.currentPage = index
this.getList()
},
// 添加
addClass(parent = null) {
this.editDialogConfig.visible = true
this.$refs.edit.model = 'classifySave'
// this.$nextTick(()=>{
// this.$refs.edit.parent = parent;
// });
if (parent) {
let { categoryName, id } = parent
this.$nextTick(() => {
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { parentCategoryName: categoryName, parentId: id, level: 2 })
})
}
},
// 编辑
edit(row) {
this.editDialogConfig.visible = true
this.$nextTick(() => {
let { level, icon, showFlag, categoryName, sort, parentId, id } = row
console.log(this.tableData.find(item => item == parentId), 'categoryName')
if (row.level == 1) {
this.$refs.edit.model = 'classifyUpdate'
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { level, icon, showFlag, categoryName, sort, parentId, id })
} else {
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, {
level,
icon,
showFlag,
parentCategoryName: this.tableData.find(item => item == parentId).categoryName,
categoryName,
sort,
parentId,
id
})
}
})
},
// 修改状态
onchangeIsShow(row) {
console.log(row)
let data = {
id: row.id,
is_show: row.is_show
isRecommended: row.isRecommended
}
setShowApi(data)
marketingApi
.whetherToRecommend(data)
.then(async res => {
this.$message.success(res.msg)
this.getList()
})
.catch(res => {
this.$message.error(res.msg)
this.getList()
})
},
// 置顶
topOne(row, scope) {
console.log(row)
this.$alert('请确定将改商品置顶!', '提示', {
confirmButtonText: '确定',
callback: action => {
if (action == 'confirm') {
loadingFn.call(
this,
'loading',
marketingApi.topOne(row.id).then(res => {
if ((res.code = 20000)) {
this.$message.success('操作成功!')
this.handleCurrentChange()
}
})
)
}
}
})
},
// 删除
del(row, scope) {
console.log(scope)
@@ -189,7 +182,7 @@ export default {
loadingFn.call(
this,
'loading',
productApi.classifyDelete(row).then(res => {
marketingApi.homeDelete(row).then(res => {
if ((res.code = 20000)) {
this.$message.success('操作成功!')
this.handleCurrentChange()
@@ -202,7 +195,7 @@ export default {
},
// 表格搜索
userSearchs() {
this.artFrom.page = 1
this.page.currentPage = 1
this.getList()
}
}

View File

@@ -0,0 +1,8 @@
<template>
<div>
<router-view />
</div>
</template>
<script>
export default {}
</script>

View File

@@ -0,0 +1,433 @@
<template>
<div class="article-manager">
<el-card :bordered="false" shadow="never" class="ivu-mt mt16" :body-style="{ padding: '0 20px 20px' }">
<el-tabs v-model="artFrom.type" @tab-click="onClickTab">
<el-tab-pane :label="item.name + '(' + item.count + ')'" :name="item.type.toString()" v-for="(item, index) in headeNum" :key="index" />
</el-tabs>
<div>
<el-form ref="artFrom" :model="artFrom" label-width="80px" label-position="right" inline @submit.native.prevent>
<el-form-item label="商品分类:" label-for="pid">
<el-cascader
v-model="artFrom.cate_id"
size="small"
:options="treeSelect"
:props="{ multiple: false, emitPath: false, checkStrictly: true }"
clearable
class="form_content_width"
></el-cascader>
</el-form-item>
<el-form-item label="商品搜索:" label-for="store_name">
<el-input clearable placeholder="请输入商品名称/关键字/ID" v-model="artFrom.store_name" class="form_content_width" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="userSearchs">查询</el-button>
</el-form-item>
</el-form>
</div>
<div class="Button">
<el-button type="primary" class="mr14">添加商品</el-button>
<el-button type="success" class="mr14" @click="onCopy">商品采集</el-button>
<el-dropdown class="bnt mr14" @command="batchSelect">
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="1">商品分类</el-dropdown-item>
<el-dropdown-item :command="2">物流设置</el-dropdown-item>
<el-dropdown-item :command="3">购买送积分</el-dropdown-item>
<el-dropdown-item :command="4">购买送优惠券</el-dropdown-item>
<el-dropdown-item :command="5">关联用户标签</el-dropdown-item>
<el-dropdown-item :command="6">活动推荐</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-button @click="onDismount" v-show="artFrom.type === '1'">批量下架</el-button>
<el-button @click="onShelves" v-show="artFrom.type === '2'">批量上架</el-button>
<el-button class="export" @click="exports">导出</el-button>
</div>
<el-table
ref="table"
:data="tableList"
class="ivu-mt mt14"
v-loading="loading"
highlight-current-row
:row-key="getRowKey"
@selection-change="handleSelectRow"
empty-text="暂无数据"
>
<el-table-column type="expand" width="50" v-if="['1', '2'].includes(artFrom.type)">
<template slot-scope="scope">
<expandRow :row="scope.row"></expandRow>
</template>
</el-table-column>
<el-table-column type="selection" width="60" :reserve-selection="true"> </el-table-column>
<el-table-column label="商品ID" width="80">
<template slot-scope="scope">
<span>{{ scope.row.id }}</span>
</template>
</el-table-column>
<el-table-column label="商品图" min-width="90">
<template slot-scope="scope">
<div class="tabBox_img" v-viewer>
<img v-lazy="scope.row.image" />
</div>
</template>
</el-table-column>
<el-table-column label="商品名称" min-width="250">
<template slot-scope="scope">
<span>{{ scope.row.store_name }}</span>
</template>
</el-table-column>
<el-table-column label="商品类型" min-width="100">
<template slot-scope="scope">
<span>{{ scope.row.product_type }}</span>
</template>
</el-table-column>
<el-table-column label="商品售价" min-width="100">
<template slot-scope="scope">
<span>{{ scope.row.price }}</span>
</template>
</el-table-column>
<el-table-column label="销量" min-width="100">
<template slot-scope="scope">
<span>{{ scope.row.sales }}</span>
</template>
</el-table-column>
<el-table-column label="库存" min-width="100">
<template slot-scope="scope">
<span>{{ scope.row.stock }}</span>
</template>
</el-table-column>
<el-table-column label="排序" min-width="100">
<template slot-scope="scope">
<span>{{ scope.row.sort }}</span>
</template>
</el-table-column>
<el-table-column label="状态" min-width="100">
<template slot-scope="scope">
<el-switch
class="defineSwitch"
:active-value="1"
:inactive-value="0"
v-model="scope.row.is_show"
:value="scope.row.is_show"
:disabled="scope.row.stop_status ? true : false"
@change="changeSwitch(scope.row)"
size="large"
active-text="上架"
inactive-text="下架"
>
</el-switch>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" minWidth="100">
<template slot-scope="scope">
<el-button type="text" @click="edit(scope.row)">查看订单</el-button>
<el-button @click="del(scope.row, scope)" type="text">取消订单</el-button>
</template>
</el-table-column>
</el-table>
<div class="acea-row row-right page">
<pagination v-if="total" :total="total" :page.sync="artFrom.page" :limit.sync="artFrom.limit" @pagination="getDataList" />
</div>
</el-card>
</div>
</template>
<script>
export default {
name: 'product_productList',
// components: { expandRow, attribute, taoBao, goodsDetail, userLabel, couponList },
data() {
return {
template: false,
modals: false,
batchModal: false,
labelShow: false,
batchType: 1, // 批量设置类型
batchFormData: {
cate_id: [],
logistics: [],
freight: 2,
postage: 0,
temp_id: null,
give_integral: 0,
label_id: [],
coupon_ids: [],
recommend: []
},
ruleBatch: {},
couponName: [], // 优惠券
dataLabel: [], // 标签
templateList: [], // 运费模版
grid: {
xl: 6,
lg: 8,
md: 12,
sm: 24,
xs: 24
},
artFrom: {
page: 1,
limit: 15,
cate_id: '',
type: '1',
store_name: ''
},
list: [],
tableList: [],
headeNum: [
{
count: 2,
name: '出售中商品',
type: 1
},
{
count: 40,
name: '仓库中商品',
type: 2
},
{
count: 5,
name: '已经售馨商品',
type: 3
},
{
count: 10,
name: '警戒库存',
type: 4
},
{
count: 1,
name: '商品回收站',
type: 5
}
],
loading: false,
data: [],
total: 0,
attrTemplate: false,
ids: [],
goodsId: '',
isProductBox: false,
treeSelect: [],
multipleSelection: []
}
},
created() {},
activated() {},
methods: {
// 标签弹窗关闭
labelClose() {},
look(row) {
this.goodsId = row.id
this.isProductBox = true
},
// 物流方式
logisticsBtn(e) {
this.batchFormData.logistics = e
},
// 关联用户标签
openLabel() {
this.labelShow = true
},
closeLabel(label) {
let index = this.dataLabel.indexOf(this.dataLabel.filter(d => d.id == label.id)[0])
this.dataLabel.splice(index, 1)
},
getPath() {},
// 导出
async exports() {
let [th, filekey, data, fileName] = [[], [], [], '']
let excelData = JSON.parse(JSON.stringify(this.artFrom))
excelData.page = 1
excelData.limit = 50
excelData.ids = this.ids
for (let i = 0; i < excelData.page + 1; i++) {
let lebData = await this.getExcelData(excelData)
if (!fileName) fileName = lebData.filename
if (!filekey.length) {
filekey = lebData.fileKey
}
if (!th.length) th = lebData.header
if (lebData.export.length) {
data = data.concat(lebData.export)
excelData.page++
} else {
this.$exportExcel(th, filekey, fileName, data)
return
}
}
},
getExcelData(excelData) {},
freight() {},
// 批量上架
onShelves() {},
// 批量下架
onDismount() {},
getRowKey(row) {
return row.id
},
// 选中某一行
handleSelectRow(selection) {
const uniqueArr = []
const ids = []
for (let i = 0; i < selection.length; i++) {
const item = selection[i]
if (!ids.includes(item.id)) {
uniqueArr.push(item)
ids.push(item.id)
}
}
this.ids = ids
this.multipleSelection = uniqueArr
},
// tab选择
onClickTab() {
this.artFrom.page = 1
this.multipleSelection = []
this.$refs.table.clearSelection()
this.getDataList()
},
// 获取商品表单头数量
goodHeade() {},
// 商品分类;
goodsCategory() {},
// 商品列表;
getDataList() {},
showSelectData() {},
// 表格搜索
userSearchs() {
this.artFrom.page = 1
},
// 上下架
changeSwitch(row) {},
// 数据导出;
exportData: function() {},
// 属性弹出;
attrTap() {
this.attrTemplate = true
},
changeTemplate(msg) {
this.attrTemplate = msg
},
// 编辑
edit(row) {
// this.$router.push({ path: this.$routeProStr + '/product/add_product/' + row.id });
},
// 确认
del(row, tit, num) {}
}
}
</script>
<style scoped lang="scss">
::v-deep .el-tabs__item {
height: 54px !important;
line-height: 54px !important;
}
::v-deep .ivu-modal-mask {
z-index: 999 !important;
}
::v-deep .ivu-modal-wrap {
z-index: 999 !important;
}
.Box {
::v-deep .ivu-modal-body {
height: 700px;
overflow: auto;
}
}
.batch-box {
::v-deep .ivu-modal-body {
overflow: auto;
min-height: 350px;
}
}
.tabBox_img {
width: 36px;
height: 36px;
border-radius: 4px;
cursor: pointer;
img {
width: 100%;
height: 100%;
}
}
.bg {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
z-index: 11;
}
::v-deep .happy-scroll-content {
width: 100%;
.demo-spin-icon-load {
animation: ani-demo-spin 1s linear infinite;
}
@keyframes ani-demo-spin {
from {
transform: rotate(0deg);
}
50% {
transform: rotate(180deg);
}
to {
transform: rotate(360deg);
}
}
.demo-spin-col {
height: 100px;
position: relative;
border: 1px solid #eee;
}
}
.labelInput {
border: 1px solid #dcdee2;
width: 100%;
padding: 0 15px;
border-radius: 5px;
min-height: 30px;
cursor: pointer;
font-size: 12px;
.span {
color: #c5c8ce;
}
.iconxiayi {
font-size: 12px;
}
}
.el-dropdown-link {
cursor: pointer;
color: var(--prev-color-primary);
font-size: 12px;
}
.el-icon-arrow-down {
font-size: 12px;
}
.el-dropdown-menu__item {
a {
color: #606266;
}
}
.label_width {
width: 400px;
}
</style>