202505301629

This commit is contained in:
张潘 2025-05-30 16:29:26 +08:00
parent 7624d92bc6
commit 8d4e1b50cd
29 changed files with 410 additions and 426 deletions

View File

@ -138,45 +138,31 @@
/> />
<!-- 添加或修改广告配置对话框 --> <!-- 添加或修改广告配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="名称" prop="title"> <el-form-item label="标题" prop="title" required>
<el-input v-model="form.title" placeholder="请输入名称" /> <el-input v-model="form.title" placeholder="请输入标题" />
</el-form-item> </el-form-item>
<el-form-item label="位置" prop="type"> <el-form-item label="位置" prop="type" required>
<el-select v-model="form.type" placeholder="请选择位置"> <el-radio-group v-model="form.type">
<el-option <el-radio :label="0">首页团队</el-radio>
v-for="dict in dict.type.adv_img_type" <el-radio :label="1">首页宣传</el-radio>
:key="dict.value" <el-radio :label="2">积分商城</el-radio>
:label="dict.label" </el-radio-group>
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="图片" prop="image"> <el-form-item label="图片" prop="image" required>
<image-upload v-model="form.image"/> <div style="width:100%">
<image-upload v-model="form.image" :limit="1" :isShowTip="false" style="width:100%"/>
</div>
</el-form-item> </el-form-item>
<el-form-item label="链接" prop="link"> <el-form-item label="链接" prop="link">
<el-input v-model="form.link" placeholder="请输入链接" /> <el-input v-model="form.link" placeholder="请输入链接" />
</el-form-item> </el-form-item>
<el-form-item label="排序" prop="sort"> <el-form-item label="排序" prop="sort" required>
<el-input v-model="form.sort" placeholder="请输入排序" /> <el-input-number v-model="form.sort" :min="1" :max="9999" :step="1" controls-position="both" style="width:120px" />
</el-form-item> </el-form-item>
<el-form-item label="${comment}" prop="createdAt"> <el-form-item label="状态" prop="status" required>
<el-date-picker clearable <el-switch v-model="form.status" :active-value="1" :inactive-value="0" />
v-model="form.createdAt"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择${comment}">
</el-date-picker>
</el-form-item>
<el-form-item label="${comment}" prop="updatedAt">
<el-date-picker clearable
v-model="form.updatedAt"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择${comment}">
</el-date-picker>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -225,21 +211,32 @@ export default {
status: null, status: null,
}, },
// //
form: {}, form: {
id: null,
title: null,
type: null,
image: null,
link: null,
sort: 10,
status: 1
},
// //
rules: { rules: {
title: [ title: [
{ required: true, message: "名称不能为空", trigger: "blur" } { required: true, message: "标题不能为空", trigger: "blur" }
], ],
type: [ type: [
{ required: true, message: "位置不能为空", trigger: "change" } { required: true, message: "位置不能为空", trigger: "change" }
], ],
image: [
{ required: true, message: "图片不能为空", trigger: "change" }
],
sort: [ sort: [
{ required: true, message: "排序不能为空", trigger: "blur" } { required: true, message: "排序不能为空", trigger: "change" }
], ],
status: [ status: [
{ required: true, message: "状态不能为空", trigger: "change" } { required: true, message: "状态不能为空", trigger: "change" }
], ]
} }
} }
}, },
@ -269,10 +266,8 @@ export default {
type: null, type: null,
image: null, image: null,
link: null, link: null,
sort: null, sort: 10,
status: null, status: 1
createdAt: null,
updatedAt: null
} }
this.resetForm("form") this.resetForm("form")
}, },

View File

@ -56,16 +56,6 @@
v-hasPermi="['system:Area:remove']" v-hasPermi="['system:Area:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:Area:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -87,16 +87,6 @@
v-hasPermi="['system:Cooperate:remove']" v-hasPermi="['system:Cooperate:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:Cooperate:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -177,6 +177,7 @@
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -10,10 +10,33 @@
ref="tree" ref="tree"
:data="treeDataList" :data="treeDataList"
node-key="id" node-key="id"
:expand-on-click-node="false"
:default-expanded-keys="expandedKeys" :default-expanded-keys="expandedKeys"
:default-expand-all="true"> :default-expand-all="false"
<template #default="{ data }"> @node-click="handleNodeClick">
<span>{{ data.id }} - {{ data.label }}</span> <template #default="{ node, data }">
<div class="custom-tree-node">
<span class="node-label" @click.stop="toggleNode(node, data)">
<i :class="node.expanded ? 'el-icon-caret-bottom' : 'el-icon-caret-right'" v-if="hasChildren(data)"></i>
{{ data.id }} - {{ data.label }}
</span>
<span class="node-actions">
<el-button
type="text"
size="mini"
icon="el-icon-edit"
@click.stop="handleUpdate(data)"
v-hasPermi="['system:DiyCity:edit']"
>修改</el-button>
<el-button
type="text"
size="mini"
icon="el-icon-delete"
@click.stop="handleDelete(data)"
v-hasPermi="['system:DiyCity:remove']"
>删除</el-button>
</span>
</div>
</template> </template>
</el-tree> </el-tree>
@ -55,9 +78,7 @@
<div class="dialog-footer custom-footer"> <div class="dialog-footer custom-footer">
<el-button @click="resetForm">重置</el-button> <el-button @click="resetForm">重置</el-button>
<div class="footer-right"> <div class="footer-right">
<el-checkbox v-model="continueEdit">继续编辑</el-checkbox>
<el-checkbox v-model="continueCreate">继续创建</el-checkbox>
<el-checkbox v-model="viewAfter">查看</el-checkbox>
<el-button type="primary" @click="submitForm">提交</el-button> <el-button type="primary" @click="submitForm">提交</el-button>
</div> </div>
</div> </div>
@ -106,7 +127,7 @@ export default {
lng: null, lng: null,
provinceId: null, provinceId: null,
cityId: null, cityId: null,
districtId: null, districtId: null,
createdAt: null, createdAt: null,
updatedAt: null updatedAt: null
@ -131,6 +152,10 @@ export default {
amap: null, amap: null,
marker: null, marker: null,
geocoder: null, geocoder: null,
defaultProps: {
children: 'children',
label: 'label'
}
} }
}, },
created() { created() {
@ -184,7 +209,7 @@ export default {
gettreeDataList(){ gettreeDataList(){
getTreeDataList().then(response => { getTreeDataList().then(response => {
this.treeDataList=response.data this.treeDataList=response.data
// //
this.expandedKeys = [] this.expandedKeys = []
}) })
}, },
@ -203,8 +228,8 @@ export default {
this.$nextTick(()=>{ this.$nextTick(()=>{
this.initMap() this.initMap()
}) })
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
@ -257,22 +282,102 @@ export default {
...this.queryParams ...this.queryParams
}, `DiyCity_${new Date().getTime()}.xlsx`) }, `DiyCity_${new Date().getTime()}.xlsx`)
}, },
/** 判断节点是否有子节点 */
hasChildren(data) {
return data.children && data.children.length > 0
},
/** 切换节点展开/收起状态 */
toggleNode(node, data) {
if (this.hasChildren(data)) {
if (node.expanded) {
// 使 store
node.expanded = false;
} else {
node.expanded = true;
}
//
this.$nextTick(() => {
this.$forceUpdate();
});
}
},
/** 展开所有节点 */
expandAll() { expandAll() {
// if (this.$refs.tree && this.$refs.tree.store) {
this.expandedKeys = this.treeDataList.map(item => item.id) const store = this.$refs.tree.store;
//
const processNode = (node) => {
if (node) {
//
node.expanded = true;
//
if (node.childNodes && node.childNodes.length) {
node.childNodes.forEach(child => processNode(child));
}
}
};
//
store.root.childNodes.forEach(node => processNode(node));
//
this.$nextTick(() => {
this.$forceUpdate();
});
}
}, },
/** 收起所有节点 */
collapseAll() { collapseAll() {
this.expandedKeys = [] //
this.expandedKeys = [];
// 使 store
if (this.$refs.tree && this.$refs.tree.store) {
const store = this.$refs.tree.store;
//
const processNode = (node) => {
if (node) {
//
if (node.expanded) {
node.expanded = false;
}
//
if (node.childNodes && node.childNodes.length) {
node.childNodes.forEach(child => processNode(child));
}
}
};
//
store.root.childNodes.forEach(node => processNode(node));
//
store._expandedKeys = {};
store.defaultExpandAll = false;
//
this.$nextTick(() => {
this.$forceUpdate();
});
}
}, },
/** 刷新树 */
refreshTree() { refreshTree() {
this.gettreeDataList(); this.expandedKeys = []; //
}, if (this.$refs.tree && this.$refs.tree.store) {
loadParentOptions() { const store = this.$refs.tree.store;
// listDiyCity store._expandedKeys = {}; //
listDiyCity({parentId:0}).then(res => { store.defaultExpandAll = false;
this.parentOptions = res.rows || [] }
}) this.gettreeDataList(); //
}, },
decreaseOrder() { decreaseOrder() {
if (this.form.order > 0) { if (this.form.order > 0) {
this.form.order-- this.form.order--
@ -283,78 +388,84 @@ export default {
}, },
resetForm() { resetForm() {
if (this.$refs.form) { if (this.$refs.form) {
this.$refs.form.resetFields(); this.$refs.form.resetFields()
} }
}, },
initMap() { initMap() {
// //
if (this.map) { if (this.map) {
this.map.destroy(); this.map.destroy()
this.map = null; this.map = null
this.marker = null; this.marker = null
this.geocoder = null; this.geocoder = null
this.mapInited = false; this.mapInited = false
} }
this.map = new AMap.Map('map', { this.map = new AMap.Map('map', {
zoom: 16, zoom: 16,
center: [this.form.longitude || 108.94141, this.form.latitude || 34.209883], center: [this.form.longitude || 108.94141, this.form.latitude || 34.209883],
}); })
this.geocoder = new AMap.Geocoder(); this.geocoder = new AMap.Geocoder()
// if (this.form.longitude && this.form.latitude) { // if (this.form.longitude && this.form.latitude) {
// this.setMapMarker([this.form.longitude, this.form.latitude]); // this.setMapMarker([this.form.longitude, this.form.latitude]);
// this.map.setCenter([this.form.longitude, this.form.latitude]); // this.map.setCenter([this.form.longitude, this.form.latitude]);
// } // }
this.map.on('click', (e) => { this.map.on('click', (e) => {
const lnglat = [e.lnglat.lng, e.lnglat.lat]; const lnglat = [e.lnglat.lng, e.lnglat.lat]
this.setMapMarker(lnglat); this.setMapMarker(lnglat)
this.form.longitude = e.lnglat.lng; this.form.longitude = e.lnglat.lng
this.form.latitude = e.lnglat.lat; this.form.latitude = e.lnglat.lat
this.latlng = `${e.lnglat.lng},${e.lnglat.lat}`; this.latlng = `${e.lnglat.lng},${e.lnglat.lat}`
this.geocoder.getAddress(lnglat, (status, result) => { this.geocoder.getAddress(lnglat, (status, result) => {
// if (status === 'complete' && result.regeocode) { // if (status === 'complete' && result.regeocode) {
// this.form.info = result.regeocode.formattedAddress; // this.form.info = result.regeocode.formattedAddress;
// } // }
}); })
}); })
this.mapInited = true; this.mapInited = true
}, },
setMapMarker(lnglat) { setMapMarker(lnglat) {
if (this.marker) { if (this.marker) {
this.marker.setMap(null); this.marker.setMap(null)
} }
this.marker = new AMap.Marker({ this.marker = new AMap.Marker({
position: lnglat, position: lnglat,
map: this.map, map: this.map,
}); })
}, },
searchMapAddress() { searchMapAddress() {
if (!this.searchAddress) { if (!this.searchAddress) {
this.$message.warning('请输入要搜索的地址'); this.$message.warning('请输入要搜索的地址')
return; return
} }
if (!this.mapInited || !this.geocoder) { if (!this.mapInited || !this.geocoder) {
this.$message.warning('地图未初始化,请稍后再试'); this.$message.warning('地图未初始化,请稍后再试')
return; return
} }
this.geocoder.getLocation(this.searchAddress, (status, result) => { this.geocoder.getLocation(this.searchAddress, (status, result) => {
if (status === 'complete' && result.geocodes.length) { if (status === 'complete' && result.geocodes.length) {
const lnglat = result.geocodes[0].location; const lnglat = result.geocodes[0].location
this.setMapMarker([lnglat.lng, lnglat.lat]); this.setMapMarker([lnglat.lng, lnglat.lat])
this.map.setCenter([lnglat.lng, lnglat.lat]); this.map.setCenter([lnglat.lng, lnglat.lat])
this.form.longitude = lnglat.lng; this.form.longitude = lnglat.lng
this.form.latitude = lnglat.lat; this.form.latitude = lnglat.lat
this.latlng = `${lnglat.lng},${lnglat.lat}`; this.latlng = `${lnglat.lng},${lnglat.lat}`
// this.form.info = result.geocodes[0].formattedAddress; // this.form.info = result.geocodes[0].formattedAddress;
if ('addressName' in this.form) { if ('addressName' in this.form) {
this.form.addressName = result.geocodes[0].formattedAddress; this.form.addressName = result.geocodes[0].formattedAddress
} }
if ('addressInfo' in this.form) { if ('addressInfo' in this.form) {
this.form.addressInfo = result.geocodes[0].formattedAddress; this.form.addressInfo = result.geocodes[0].formattedAddress
} }
} else { } else {
this.$message.warning('未找到该地址,请输入更详细的地址'); this.$message.warning('未找到该地址,请输入更详细的地址')
} }
}); })
},
loadParentOptions() {
// listDiyCity
listDiyCity({parentId:0}).then(res => {
this.parentOptions = res.rows || []
})
}, },
} }
} }
@ -390,4 +501,44 @@ export default {
align-items: center; align-items: center;
gap: 12px; gap: 12px;
} }
.custom-tree-node {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 14px;
padding-right: 8px;
width: 100%;
}
.node-label {
display: flex;
align-items: center;
cursor: pointer;
}
.node-label i {
margin-right: 4px;
font-size: 16px;
transition: transform 0.3s ease;
cursor: pointer;
}
.node-label i.el-icon-caret-bottom {
transform: rotate(0deg);
}
.node-label i.el-icon-caret-right {
transform: rotate(0deg);
}
.node-actions {
display: none;
align-items: center;
}
.custom-tree-node:hover .node-actions {
display: flex;
}
.node-actions .el-button {
padding: 2px 5px;
margin-left: 8px;
}
.node-actions .el-button [class^="el-icon-"] {
margin-right: 3px;
}
</style> </style>

View File

@ -117,16 +117,7 @@
v-hasPermi="['system:GoodsOrder:remove']" v-hasPermi="['system:GoodsOrder:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:GoodsOrder:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -88,16 +88,6 @@
v-hasPermi="['system:GoodsOrderCursor:remove']" v-hasPermi="['system:GoodsOrderCursor:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:GoodsOrderCursor:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -95,16 +95,7 @@
v-hasPermi="['system:ServiceGoods:remove']" v-hasPermi="['system:ServiceGoods:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:ServiceGoods:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -49,16 +49,7 @@
v-hasPermi="['system:IntegralCate:remove']" v-hasPermi="['system:IntegralCate:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:IntegralCate:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -69,16 +69,6 @@
v-hasPermi="['system:IntegralLog:remove']" v-hasPermi="['system:IntegralLog:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:IntegralLog:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -147,17 +147,7 @@
>删除</el-button >删除</el-button
> >
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:IntegralProduct:export']"
>导出</el-button
>
</el-col>
<right-toolbar <right-toolbar
:showSearch.sync="showSearch" :showSearch.sync="showSearch"
@queryTable="getList" @queryTable="getList"

View File

@ -138,16 +138,6 @@
v-hasPermi="['system:NotifyOrder:remove']" v-hasPermi="['system:NotifyOrder:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:NotifyOrder:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -163,16 +163,7 @@
v-hasPermi="['system:Order:remove']" v-hasPermi="['system:Order:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:Order:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -88,16 +88,6 @@
v-hasPermi="['system:OrderCall:remove']" v-hasPermi="['system:OrderCall:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:OrderCall:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -232,16 +232,6 @@
v-hasPermi="['system:OrderLog:remove']" v-hasPermi="['system:OrderLog:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:OrderLog:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -286,12 +286,6 @@ export default {
this.$modal.msgSuccess("删除成功") this.$modal.msgSuccess("删除成功")
}).catch(() => {}) }).catch(() => {})
}, },
/** 导出按钮操作 */
handleExport() {
this.download('system/OrderSound/export', {
...this.queryParams
}, `OrderSound_${new Date().getTime()}.xlsx`)
},
startAudio(row) { startAudio(row) {
if (this.audioPlayer) { if (this.audioPlayer) {
this.audioPlayer.pause(); this.audioPlayer.pause();

View File

@ -63,16 +63,7 @@
v-hasPermi="['system:QuoteCraft:remove']" v-hasPermi="['system:QuoteCraft:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:QuoteCraft:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -92,16 +92,6 @@
v-hasPermi="['system:QuoteMaterial:remove']" v-hasPermi="['system:QuoteMaterial:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:QuoteMaterial:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -71,16 +71,6 @@
v-hasPermi="['system:QuoteMaterialType:remove']" v-hasPermi="['system:QuoteMaterialType:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:QuoteMaterialType:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -69,16 +69,6 @@
v-hasPermi="['system:QuoteType:remove']" v-hasPermi="['system:QuoteType:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:QuoteType:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -51,16 +51,7 @@
v-hasPermi="['system:ServiceCate:remove']" v-hasPermi="['system:ServiceCate:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:ServiceCate:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -95,16 +95,7 @@
v-hasPermi="['system:ServiceGoods:remove']" v-hasPermi="['system:ServiceGoods:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:ServiceGoods:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -126,32 +126,19 @@
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改快递公司对话框 --> <!-- 添加或修改快递公司对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="名称" prop="title"> <el-form-item label="名称" prop="title" required>
<el-input v-model="form.title" placeholder="输入名称" /> <el-input v-model="form.title" placeholder="输入名称" />
</el-form-item> </el-form-item>
<el-form-item label="编" prop="code"> <el-form-item label="编" prop="code">
<el-input v-model="form.code" placeholder="请输入编号" /> <el-input v-model="form.code" placeholder="输入编码" />
</el-form-item> </el-form-item>
<el-form-item label="排序" prop="sort"> <el-form-item label="排序" prop="sort" required>
<el-input v-model="form.sort" placeholder="请输入排序" /> <el-input-number v-model="form.sort" :min="1" :max="9999" :step="1" controls-position="both" style="width:120px" />
</el-form-item> </el-form-item>
<el-form-item label="${comment}" prop="createdAt"> <el-form-item label="状态" prop="status" required>
<el-date-picker clearable <el-switch v-model="form.status" :active-value="1" :inactive-value="0" />
v-model="form.createdAt"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择${comment}">
</el-date-picker>
</el-form-item>
<el-form-item label="${comment}" prop="updatedAt">
<el-date-picker clearable
v-model="form.updatedAt"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择${comment}">
</el-date-picker>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -199,21 +186,24 @@ export default {
updatedAt: null updatedAt: null
}, },
// //
form: {}, form: {
id: null,
title: null,
code: null,
sort: 5,
status: 1
},
// //
rules: { rules: {
title: [ title: [
{ required: true, message: "名称不能为空", trigger: "blur" } { required: true, message: "名称不能为空", trigger: "blur" }
], ],
code: [
{ required: true, message: "编号不能为空", trigger: "blur" }
],
sort: [ sort: [
{ required: true, message: "排序不能为空", trigger: "blur" } { required: true, message: "排序不能为空", trigger: "change" }
], ],
status: [ status: [
{ required: true, message: "状态不能为空", trigger: "change" } { required: true, message: "状态不能为空", trigger: "change" }
], ]
} }
} }
}, },
@ -241,10 +231,8 @@ export default {
id: null, id: null,
title: null, title: null,
code: null, code: null,
sort: null, sort: 5,
status: null, status: 1
createdAt: null,
updatedAt: null
} }
this.resetForm("form") this.resetForm("form")
}, },

View File

@ -80,16 +80,7 @@
v-hasPermi="['system:UserAddress:remove']" v-hasPermi="['system:UserAddress:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:UserAddress:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -160,16 +160,6 @@
v-hasPermi="['system:users:remove']" v-hasPermi="['system:users:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:users:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -109,59 +109,62 @@
/> />
<!-- 添加或修改师傅等级配置对话框 --> <!-- 添加或修改师傅等级配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="850px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="等级名称" prop="title"> <el-row :gutter="15">
<el-input v-model="form.title" placeholder="请输入等级名称" /> <el-col :span="13">
</el-form-item> <el-form-item label="等级名称" prop="title" required>
<el-form-item label="等级" prop="level"> <el-input v-model="form.title" placeholder="输入等级名称" />
<el-input v-model="form.level" placeholder="请输入等级" /> </el-form-item>
</el-form-item> <el-form-item label="等级" prop="level" required>
<el-form-item label="达成率" prop="ar"> <div class="input-with-select">
<el-input v-model="form.ar" placeholder="请输入达成率" /> <el-input-number v-model="form.level" :min="0" :max="9999" :step="1" controls-position="right" style="width:160px" />
</el-form-item> </div>
<el-form-item label="服务总额" prop="totalPrice"> </el-form-item>
<el-input v-model="form.totalPrice" placeholder="请输入服务总额" /> <el-form-item label="达成率" prop="ar" required>
</el-form-item> <div class="input-with-select">
<el-form-item label="佣金比例" prop="cr"> <el-input-number v-model="form.ar" :min="0" :max="9999" :step="1" controls-position="right" style="width:160px" />
<el-input v-model="form.cr" placeholder="请输入佣金比例" /> </div>
</el-form-item> </el-form-item>
<el-form-item label="等级图标" prop="image"> <el-form-item label="服务总额" prop="totalPrice" required>
<image-upload v-model="form.image"/> <div class="input-with-select">
</el-form-item> <el-input-number v-model="form.totalPrice" :min="0" :max="9999" :step="1" controls-position="right" style="width:160px" />
<el-form-item label="背景图" prop="bgImage"> </div>
<image-upload v-model="form.bgImage"/> </el-form-item>
</el-form-item> <el-form-item label="佣金比例" prop="cr" required>
<el-form-item label="色值" prop="color"> <div class="input-with-select">
<el-input v-model="form.color" placeholder="请输入色值" /> <el-input-number v-model="form.cr" :min="0" :max="9999" :step="1" controls-position="right" style="width:160px" />
</el-form-item> </div>
<el-form-item label="用户背景图" prop="userBgimg"> </el-form-item>
<el-input v-model="form.userBgimg" placeholder="请输入用户背景图" /> <el-form-item label="用户名称色值" prop="color">
</el-form-item> <el-color-picker
<el-form-item label="${comment}" prop="createdAt"> v-model="form.color"
<el-date-picker clearable show-alpha
v-model="form.createdAt" :predefine="['#ff4500','#ff8c00','#ffd700','#90ee90','#00ced1','#1e90ff','#c71585']"
type="date" />
value-format="yyyy-MM-dd" </el-form-item>
placeholder="请选择${comment}"> </el-col>
</el-date-picker> <el-col :span="11">
</el-form-item> <el-form-item label="等级图标" prop="image" required>
<el-form-item label="${comment}" prop="updatedAt"> <div class="upload-box">
<el-date-picker clearable <image-upload v-model="form.image" :limit="1" :isShowTip="false"/>
v-model="form.updatedAt" <div class="upload-tip">或将文件拖到这里</div>
type="date" </div>
value-format="yyyy-MM-dd" </el-form-item>
placeholder="请选择${comment}"> <el-form-item label="背景图" prop="bgImage" required>
</el-date-picker> <div class="upload-box">
</el-form-item> <image-upload v-model="form.bgImage" :limit="1" :isShowTip="false"/>
<el-form-item label="${comment}" prop="deletedAt"> <div class="upload-tip">或将文件拖到这里</div>
<el-date-picker clearable </div>
v-model="form.deletedAt" </el-form-item>
type="date" <el-form-item label="用户背景图" prop="userBgimg" required>
value-format="yyyy-MM-dd" <div class="upload-box">
placeholder="请选择${comment}"> <image-upload v-model="form.userBgimg" :limit="1" :isShowTip="false"/>
</el-date-picker> <div class="upload-tip">或将文件拖到这里</div>
</el-form-item> </div>
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
@ -214,24 +217,44 @@ export default {
deletedAt: null deletedAt: null
}, },
// //
form: {}, form: {
id: null,
title: null,
level: 0,
ar: 0,
totalPrice: 0,
cr: 0,
color: '#000000',
image: null,
bgImage: null,
userBgimg: null
},
// //
rules: { rules: {
title: [ title: [
{ required: true, message: "等级名称不能为空", trigger: "blur" } { required: true, message: "等级名称不能为空", trigger: "blur" }
], ],
level: [ level: [
{ required: true, message: "等级不能为空", trigger: "blur" } { required: true, message: "等级不能为空", trigger: "change" }
], ],
ar: [ ar: [
{ required: true, message: "达成率不能为空", trigger: "blur" } { required: true, message: "达成率不能为空", trigger: "change" }
], ],
totalPrice: [ totalPrice: [
{ required: true, message: "服务总额不能为空", trigger: "blur" } { required: true, message: "服务总额不能为空", trigger: "change" }
], ],
cr: [ cr: [
{ required: true, message: "佣金比例不能为空", trigger: "blur" } { required: true, message: "佣金比例不能为空", trigger: "change" }
], ],
image: [
{ required: true, message: "等级图标不能为空", trigger: "change" }
],
bgImage: [
{ required: true, message: "背景图不能为空", trigger: "change" }
],
userBgimg: [
{ required: true, message: "用户背景图不能为空", trigger: "change" }
]
} }
} }
}, },
@ -258,17 +281,14 @@ export default {
this.form = { this.form = {
id: null, id: null,
title: null, title: null,
level: null, level: 0,
ar: null, ar: 0,
totalPrice: null, totalPrice: 0,
cr: null, cr: 0,
color: '#000000',
image: null, image: null,
bgImage: null, bgImage: null,
color: null, userBgimg: null
userBgimg: null,
createdAt: null,
updatedAt: null,
deletedAt: null
} }
this.resetForm("form") this.resetForm("form")
}, },
@ -343,3 +363,59 @@ export default {
} }
} }
</script> </script>
<style scoped>
.upload-box {
border: 1px dashed #d9d9d9;
border-radius: 4px;
padding: 8px;
text-align: center;
background-color: #fafafa;
height: 120px;
display: flex;
flex-direction: column;
justify-content: center;
margin-bottom: 15px;
cursor: pointer;
transition: all 0.3s;
}
.upload-box:hover {
border-color: #409EFF;
}
.upload-tip {
color: #999;
font-size: 12px;
margin-top: 6px;
}
.input-with-select {
display: flex;
align-items: center;
}
.input-with-select .el-input-number {
flex: 1;
}
.el-form-item {
margin-bottom: 15px;
}
::v-deep .el-upload--picture-card {
width: 100px;
height: 100px;
line-height: 100px;
}
::v-deep .el-upload-list--picture-card .el-upload-list__item {
width: 100px;
height: 100px;
}
::v-deep .el-upload-list--picture-card {
display: flex;
justify-content: center;
}
</style>

View File

@ -68,16 +68,6 @@
v-hasPermi="['system:dict:remove']" v-hasPermi="['system:dict:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:dict:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="warning" type="warning"

View File

@ -66,16 +66,6 @@
v-hasPermi="['system:post:remove']" v-hasPermi="['system:post:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:post:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>

View File

@ -51,9 +51,6 @@
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['system:user:import']">导入</el-button> <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['system:user:import']">导入</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['system:user:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row> </el-row>
@ -519,12 +516,6 @@ export default {
this.$modal.msgSuccess("删除成功") this.$modal.msgSuccess("删除成功")
}).catch(() => {}) }).catch(() => {})
}, },
/** 导出按钮操作 */
handleExport() {
this.download('system/user/export', {
...this.queryParams
}, `user_${new Date().getTime()}.xlsx`)
},
/** 导入按钮操作 */ /** 导入按钮操作 */
handleImport() { handleImport() {
this.upload.title = "用户导入" this.upload.title = "用户导入"