202505301629
This commit is contained in:
parent
7624d92bc6
commit
8d4e1b50cd
|
|
@ -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-item label="名称" prop="title">
|
||||
<el-input v-model="form.title" placeholder="请输入名称" />
|
||||
<el-form-item label="标题" prop="title" required>
|
||||
<el-input v-model="form.title" placeholder="请输入标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="位置" prop="type">
|
||||
<el-select v-model="form.type" placeholder="请选择位置">
|
||||
<el-option
|
||||
v-for="dict in dict.type.adv_img_type"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="parseInt(dict.value)"
|
||||
></el-option>
|
||||
</el-select>
|
||||
<el-form-item label="位置" prop="type" required>
|
||||
<el-radio-group v-model="form.type">
|
||||
<el-radio :label="0">首页团队</el-radio>
|
||||
<el-radio :label="1">首页宣传</el-radio>
|
||||
<el-radio :label="2">积分商城</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="图片" prop="image">
|
||||
<image-upload v-model="form.image"/>
|
||||
<el-form-item label="图片" prop="image" required>
|
||||
<div style="width:100%">
|
||||
<image-upload v-model="form.image" :limit="1" :isShowTip="false" style="width:100%"/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="链接" prop="link">
|
||||
<el-input v-model="form.link" placeholder="请输入链接" />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="form.sort" placeholder="请输入排序" />
|
||||
<el-form-item label="排序" prop="sort" required>
|
||||
<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 label="${comment}" prop="createdAt">
|
||||
<el-date-picker clearable
|
||||
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 label="状态" prop="status" required>
|
||||
<el-switch v-model="form.status" :active-value="1" :inactive-value="0" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
|
@ -225,21 +211,32 @@ export default {
|
|||
status: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
form: {
|
||||
id: null,
|
||||
title: null,
|
||||
type: null,
|
||||
image: null,
|
||||
link: null,
|
||||
sort: 10,
|
||||
status: 1
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
title: [
|
||||
{ required: true, message: "名称不能为空", trigger: "blur" }
|
||||
{ required: true, message: "标题不能为空", trigger: "blur" }
|
||||
],
|
||||
type: [
|
||||
{ required: true, message: "位置不能为空", trigger: "change" }
|
||||
],
|
||||
image: [
|
||||
{ required: true, message: "图片不能为空", trigger: "change" }
|
||||
],
|
||||
sort: [
|
||||
{ required: true, message: "排序不能为空", trigger: "blur" }
|
||||
{ required: true, message: "排序不能为空", trigger: "change" }
|
||||
],
|
||||
status: [
|
||||
{ required: true, message: "状态不能为空", trigger: "change" }
|
||||
],
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -269,10 +266,8 @@ export default {
|
|||
type: null,
|
||||
image: null,
|
||||
link: null,
|
||||
sort: null,
|
||||
status: null,
|
||||
createdAt: null,
|
||||
updatedAt: null
|
||||
sort: 10,
|
||||
status: 1
|
||||
}
|
||||
this.resetForm("form")
|
||||
},
|
||||
|
|
|
|||
|
|
@ -56,16 +56,6 @@
|
|||
v-hasPermi="['system:Area:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -87,16 +87,6 @@
|
|||
v-hasPermi="['system:Cooperate:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -177,6 +177,7 @@
|
|||
>删除</el-button>
|
||||
</el-col>
|
||||
|
||||
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -10,10 +10,33 @@
|
|||
ref="tree"
|
||||
:data="treeDataList"
|
||||
node-key="id"
|
||||
:expand-on-click-node="false"
|
||||
:default-expanded-keys="expandedKeys"
|
||||
:default-expand-all="true">
|
||||
<template #default="{ data }">
|
||||
<span>{{ data.id }} - {{ data.label }}</span>
|
||||
:default-expand-all="false"
|
||||
@node-click="handleNodeClick">
|
||||
<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>
|
||||
</el-tree>
|
||||
|
||||
|
|
@ -55,9 +78,7 @@
|
|||
<div class="dialog-footer custom-footer">
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -131,6 +152,10 @@ export default {
|
|||
amap: null,
|
||||
marker: null,
|
||||
geocoder: null,
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'label'
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
|
@ -184,7 +209,7 @@ export default {
|
|||
gettreeDataList(){
|
||||
getTreeDataList().then(response => {
|
||||
this.treeDataList=response.data
|
||||
// 默认全部收起
|
||||
// 初始化时不展开任何节点
|
||||
this.expandedKeys = []
|
||||
})
|
||||
},
|
||||
|
|
@ -257,22 +282,102 @@ export default {
|
|||
...this.queryParams
|
||||
}, `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() {
|
||||
// 展开所有一级节点
|
||||
this.expandedKeys = this.treeDataList.map(item => item.id)
|
||||
if (this.$refs.tree && this.$refs.tree.store) {
|
||||
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() {
|
||||
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() {
|
||||
this.gettreeDataList();
|
||||
},
|
||||
loadParentOptions() {
|
||||
// 这里假设用listDiyCity获取所有可选父级
|
||||
listDiyCity({parentId:0}).then(res => {
|
||||
this.parentOptions = res.rows || []
|
||||
})
|
||||
this.expandedKeys = []; // 清空展开状态
|
||||
if (this.$refs.tree && this.$refs.tree.store) {
|
||||
const store = this.$refs.tree.store;
|
||||
store._expandedKeys = {}; // 清空内部展开状态
|
||||
store.defaultExpandAll = false;
|
||||
}
|
||||
this.gettreeDataList(); // 重新获取数据
|
||||
},
|
||||
|
||||
decreaseOrder() {
|
||||
if (this.form.order > 0) {
|
||||
this.form.order--
|
||||
|
|
@ -283,78 +388,84 @@ export default {
|
|||
},
|
||||
resetForm() {
|
||||
if (this.$refs.form) {
|
||||
this.$refs.form.resetFields();
|
||||
this.$refs.form.resetFields()
|
||||
}
|
||||
},
|
||||
initMap() {
|
||||
// 销毁旧地图和事件,防止重复绑定
|
||||
if (this.map) {
|
||||
this.map.destroy();
|
||||
this.map = null;
|
||||
this.marker = null;
|
||||
this.geocoder = null;
|
||||
this.mapInited = false;
|
||||
this.map.destroy()
|
||||
this.map = null
|
||||
this.marker = null
|
||||
this.geocoder = null
|
||||
this.mapInited = false
|
||||
}
|
||||
this.map = new AMap.Map('map', {
|
||||
zoom: 16,
|
||||
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) {
|
||||
// this.setMapMarker([this.form.longitude, this.form.latitude]);
|
||||
// this.map.setCenter([this.form.longitude, this.form.latitude]);
|
||||
// }
|
||||
this.map.on('click', (e) => {
|
||||
const lnglat = [e.lnglat.lng, e.lnglat.lat];
|
||||
this.setMapMarker(lnglat);
|
||||
this.form.longitude = e.lnglat.lng;
|
||||
this.form.latitude = e.lnglat.lat;
|
||||
this.latlng = `${e.lnglat.lng},${e.lnglat.lat}`;
|
||||
const lnglat = [e.lnglat.lng, e.lnglat.lat]
|
||||
this.setMapMarker(lnglat)
|
||||
this.form.longitude = e.lnglat.lng
|
||||
this.form.latitude = e.lnglat.lat
|
||||
this.latlng = `${e.lnglat.lng},${e.lnglat.lat}`
|
||||
this.geocoder.getAddress(lnglat, (status, result) => {
|
||||
// if (status === 'complete' && result.regeocode) {
|
||||
// this.form.info = result.regeocode.formattedAddress;
|
||||
// }
|
||||
});
|
||||
});
|
||||
this.mapInited = true;
|
||||
})
|
||||
})
|
||||
this.mapInited = true
|
||||
},
|
||||
setMapMarker(lnglat) {
|
||||
if (this.marker) {
|
||||
this.marker.setMap(null);
|
||||
this.marker.setMap(null)
|
||||
}
|
||||
this.marker = new AMap.Marker({
|
||||
position: lnglat,
|
||||
map: this.map,
|
||||
});
|
||||
})
|
||||
},
|
||||
searchMapAddress() {
|
||||
if (!this.searchAddress) {
|
||||
this.$message.warning('请输入要搜索的地址');
|
||||
return;
|
||||
this.$message.warning('请输入要搜索的地址')
|
||||
return
|
||||
}
|
||||
if (!this.mapInited || !this.geocoder) {
|
||||
this.$message.warning('地图未初始化,请稍后再试');
|
||||
return;
|
||||
this.$message.warning('地图未初始化,请稍后再试')
|
||||
return
|
||||
}
|
||||
this.geocoder.getLocation(this.searchAddress, (status, result) => {
|
||||
if (status === 'complete' && result.geocodes.length) {
|
||||
const lnglat = result.geocodes[0].location;
|
||||
this.setMapMarker([lnglat.lng, lnglat.lat]);
|
||||
this.map.setCenter([lnglat.lng, lnglat.lat]);
|
||||
this.form.longitude = lnglat.lng;
|
||||
this.form.latitude = lnglat.lat;
|
||||
this.latlng = `${lnglat.lng},${lnglat.lat}`;
|
||||
const lnglat = result.geocodes[0].location
|
||||
this.setMapMarker([lnglat.lng, lnglat.lat])
|
||||
this.map.setCenter([lnglat.lng, lnglat.lat])
|
||||
this.form.longitude = lnglat.lng
|
||||
this.form.latitude = lnglat.lat
|
||||
this.latlng = `${lnglat.lng},${lnglat.lat}`
|
||||
// this.form.info = result.geocodes[0].formattedAddress;
|
||||
if ('addressName' in this.form) {
|
||||
this.form.addressName = result.geocodes[0].formattedAddress;
|
||||
this.form.addressName = result.geocodes[0].formattedAddress
|
||||
}
|
||||
if ('addressInfo' in this.form) {
|
||||
this.form.addressInfo = result.geocodes[0].formattedAddress;
|
||||
this.form.addressInfo = result.geocodes[0].formattedAddress
|
||||
}
|
||||
} 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;
|
||||
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>
|
||||
|
|
|
|||
|
|
@ -117,16 +117,7 @@
|
|||
v-hasPermi="['system:GoodsOrder:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -88,16 +88,6 @@
|
|||
v-hasPermi="['system:GoodsOrderCursor:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -95,16 +95,7 @@
|
|||
v-hasPermi="['system:ServiceGoods:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -49,16 +49,7 @@
|
|||
v-hasPermi="['system:IntegralCate:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -69,16 +69,6 @@
|
|||
v-hasPermi="['system:IntegralLog:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -147,17 +147,7 @@
|
|||
>删除</el-button
|
||||
>
|
||||
</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
|
||||
:showSearch.sync="showSearch"
|
||||
@queryTable="getList"
|
||||
|
|
|
|||
|
|
@ -138,16 +138,6 @@
|
|||
v-hasPermi="['system:NotifyOrder:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -163,16 +163,7 @@
|
|||
v-hasPermi="['system:Order:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -88,16 +88,6 @@
|
|||
v-hasPermi="['system:OrderCall:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -232,16 +232,6 @@
|
|||
v-hasPermi="['system:OrderLog:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -286,12 +286,6 @@ export default {
|
|||
this.$modal.msgSuccess("删除成功")
|
||||
}).catch(() => {})
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('system/OrderSound/export', {
|
||||
...this.queryParams
|
||||
}, `OrderSound_${new Date().getTime()}.xlsx`)
|
||||
},
|
||||
startAudio(row) {
|
||||
if (this.audioPlayer) {
|
||||
this.audioPlayer.pause();
|
||||
|
|
|
|||
|
|
@ -63,16 +63,7 @@
|
|||
v-hasPermi="['system:QuoteCraft:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -92,16 +92,6 @@
|
|||
v-hasPermi="['system:QuoteMaterial:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -71,16 +71,6 @@
|
|||
v-hasPermi="['system:QuoteMaterialType:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -69,16 +69,6 @@
|
|||
v-hasPermi="['system:QuoteType:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -51,16 +51,7 @@
|
|||
v-hasPermi="['system:ServiceCate:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -95,16 +95,7 @@
|
|||
v-hasPermi="['system:ServiceGoods:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -126,32 +126,19 @@
|
|||
@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-item label="名称" prop="title">
|
||||
<el-input v-model="form.title" placeholder="请输入名称" />
|
||||
<el-form-item label="名称" prop="title" required>
|
||||
<el-input v-model="form.title" placeholder="输入名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="编号" prop="code">
|
||||
<el-input v-model="form.code" placeholder="请输入编号" />
|
||||
<el-form-item label="编码" prop="code">
|
||||
<el-input v-model="form.code" placeholder="输入编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="form.sort" placeholder="请输入排序" />
|
||||
<el-form-item label="排序" prop="sort" required>
|
||||
<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 label="${comment}" prop="createdAt">
|
||||
<el-date-picker clearable
|
||||
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 label="状态" prop="status" required>
|
||||
<el-switch v-model="form.status" :active-value="1" :inactive-value="0" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
|
@ -199,21 +186,24 @@ export default {
|
|||
updatedAt: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
form: {
|
||||
id: null,
|
||||
title: null,
|
||||
code: null,
|
||||
sort: 5,
|
||||
status: 1
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
title: [
|
||||
{ required: true, message: "名称不能为空", trigger: "blur" }
|
||||
],
|
||||
code: [
|
||||
{ required: true, message: "编号不能为空", trigger: "blur" }
|
||||
],
|
||||
sort: [
|
||||
{ required: true, message: "排序不能为空", trigger: "blur" }
|
||||
{ required: true, message: "排序不能为空", trigger: "change" }
|
||||
],
|
||||
status: [
|
||||
{ required: true, message: "状态不能为空", trigger: "change" }
|
||||
],
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -241,10 +231,8 @@ export default {
|
|||
id: null,
|
||||
title: null,
|
||||
code: null,
|
||||
sort: null,
|
||||
status: null,
|
||||
createdAt: null,
|
||||
updatedAt: null
|
||||
sort: 5,
|
||||
status: 1
|
||||
}
|
||||
this.resetForm("form")
|
||||
},
|
||||
|
|
|
|||
|
|
@ -80,16 +80,7 @@
|
|||
v-hasPermi="['system:UserAddress:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -160,16 +160,6 @@
|
|||
v-hasPermi="['system:users:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -109,59 +109,62 @@
|
|||
/>
|
||||
|
||||
<!-- 添加或修改师傅等级配置对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="等级名称" prop="title">
|
||||
<el-input v-model="form.title" placeholder="请输入等级名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="等级" prop="level">
|
||||
<el-input v-model="form.level" placeholder="请输入等级" />
|
||||
</el-form-item>
|
||||
<el-form-item label="达成率" prop="ar">
|
||||
<el-input v-model="form.ar" placeholder="请输入达成率" />
|
||||
</el-form-item>
|
||||
<el-form-item label="服务总额" prop="totalPrice">
|
||||
<el-input v-model="form.totalPrice" placeholder="请输入服务总额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="佣金比例" prop="cr">
|
||||
<el-input v-model="form.cr" placeholder="请输入佣金比例" />
|
||||
</el-form-item>
|
||||
<el-form-item label="等级图标" prop="image">
|
||||
<image-upload v-model="form.image"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="背景图" prop="bgImage">
|
||||
<image-upload v-model="form.bgImage"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="色值" prop="color">
|
||||
<el-input v-model="form.color" placeholder="请输入色值" />
|
||||
</el-form-item>
|
||||
<el-form-item label="用户背景图" prop="userBgimg">
|
||||
<el-input v-model="form.userBgimg" placeholder="请输入用户背景图" />
|
||||
</el-form-item>
|
||||
<el-form-item label="${comment}" prop="createdAt">
|
||||
<el-date-picker clearable
|
||||
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 label="${comment}" prop="deletedAt">
|
||||
<el-date-picker clearable
|
||||
v-model="form.deletedAt"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择${comment}">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-dialog :title="title" :visible.sync="open" width="850px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||
<el-row :gutter="15">
|
||||
<el-col :span="13">
|
||||
<el-form-item label="等级名称" prop="title" required>
|
||||
<el-input v-model="form.title" placeholder="输入等级名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="等级" prop="level" required>
|
||||
<div class="input-with-select">
|
||||
<el-input-number v-model="form.level" :min="0" :max="9999" :step="1" controls-position="right" style="width:160px" />
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="达成率" prop="ar" required>
|
||||
<div class="input-with-select">
|
||||
<el-input-number v-model="form.ar" :min="0" :max="9999" :step="1" controls-position="right" style="width:160px" />
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务总额" prop="totalPrice" required>
|
||||
<div class="input-with-select">
|
||||
<el-input-number v-model="form.totalPrice" :min="0" :max="9999" :step="1" controls-position="right" style="width:160px" />
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="佣金比例" prop="cr" required>
|
||||
<div class="input-with-select">
|
||||
<el-input-number v-model="form.cr" :min="0" :max="9999" :step="1" controls-position="right" style="width:160px" />
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户名称色值" prop="color">
|
||||
<el-color-picker
|
||||
v-model="form.color"
|
||||
show-alpha
|
||||
:predefine="['#ff4500','#ff8c00','#ffd700','#90ee90','#00ced1','#1e90ff','#c71585']"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="11">
|
||||
<el-form-item label="等级图标" prop="image" required>
|
||||
<div class="upload-box">
|
||||
<image-upload v-model="form.image" :limit="1" :isShowTip="false"/>
|
||||
<div class="upload-tip">或将文件拖到这里</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="背景图" prop="bgImage" required>
|
||||
<div class="upload-box">
|
||||
<image-upload v-model="form.bgImage" :limit="1" :isShowTip="false"/>
|
||||
<div class="upload-tip">或将文件拖到这里</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户背景图" prop="userBgimg" required>
|
||||
<div class="upload-box">
|
||||
<image-upload v-model="form.userBgimg" :limit="1" :isShowTip="false"/>
|
||||
<div class="upload-tip">或将文件拖到这里</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
|
|
@ -214,24 +217,44 @@ export default {
|
|||
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: {
|
||||
title: [
|
||||
{ required: true, message: "等级名称不能为空", trigger: "blur" }
|
||||
],
|
||||
level: [
|
||||
{ required: true, message: "等级不能为空", trigger: "blur" }
|
||||
{ required: true, message: "等级不能为空", trigger: "change" }
|
||||
],
|
||||
ar: [
|
||||
{ required: true, message: "达成率不能为空", trigger: "blur" }
|
||||
{ required: true, message: "达成率不能为空", trigger: "change" }
|
||||
],
|
||||
totalPrice: [
|
||||
{ required: true, message: "服务总额不能为空", trigger: "blur" }
|
||||
{ required: true, message: "服务总额不能为空", trigger: "change" }
|
||||
],
|
||||
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 = {
|
||||
id: null,
|
||||
title: null,
|
||||
level: null,
|
||||
ar: null,
|
||||
totalPrice: null,
|
||||
cr: null,
|
||||
level: 0,
|
||||
ar: 0,
|
||||
totalPrice: 0,
|
||||
cr: 0,
|
||||
color: '#000000',
|
||||
image: null,
|
||||
bgImage: null,
|
||||
color: null,
|
||||
userBgimg: null,
|
||||
createdAt: null,
|
||||
updatedAt: null,
|
||||
deletedAt: null
|
||||
userBgimg: null
|
||||
}
|
||||
this.resetForm("form")
|
||||
},
|
||||
|
|
@ -343,3 +363,59 @@ export default {
|
|||
}
|
||||
}
|
||||
</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>
|
||||
|
|
|
|||
|
|
@ -68,16 +68,6 @@
|
|||
v-hasPermi="['system:dict:remove']"
|
||||
>删除</el-button>
|
||||
</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-button
|
||||
type="warning"
|
||||
|
|
|
|||
|
|
@ -66,16 +66,6 @@
|
|||
v-hasPermi="['system:post:remove']"
|
||||
>删除</el-button>
|
||||
</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>
|
||||
</el-row>
|
||||
|
||||
|
|
|
|||
|
|
@ -51,9 +51,6 @@
|
|||
<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-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>
|
||||
</el-row>
|
||||
|
||||
|
|
@ -519,12 +516,6 @@ export default {
|
|||
this.$modal.msgSuccess("删除成功")
|
||||
}).catch(() => {})
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('system/user/export', {
|
||||
...this.queryParams
|
||||
}, `user_${new Date().getTime()}.xlsx`)
|
||||
},
|
||||
/** 导入按钮操作 */
|
||||
handleImport() {
|
||||
this.upload.title = "用户导入"
|
||||
|
|
|
|||
Loading…
Reference in New Issue