分类/品牌

salary
qsh 5 months ago
parent 1ec084debe
commit 0dcc807b34
  1. 2
      src/views/Basic/GeneralSet/Comp/BSSalerComission.vue
  2. 95
      src/views/MiniMall/MallSet/Comp/BrandSet.vue
  3. 105
      src/views/MiniMall/MallSet/Comp/CategorySet.vue
  4. 103
      src/views/MiniMall/MallSet/Comp/DialogBrand.vue
  5. 111
      src/views/MiniMall/MallSet/Comp/DialogCategory.vue
  6. 8
      src/views/MiniMall/MallSet/index.vue

@ -6,7 +6,7 @@
<el-radio :label="0"> </el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="关联规则">
<el-form-item label="关联规则" v-if="form.withSuccess">
<div>
<el-button @click="form.rules.push({})">新增规则</el-button>
<div

@ -0,0 +1,95 @@
<template>
<div>
<el-form ref="queryForm" :model="searchForm" label-width="0" inline>
<el-form-item>
<el-input
v-model="searchForm.name"
placeholder="请输入名称"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">搜索</el-button>
<el-button @click="resetQuery">重置</el-button>
<el-button type="primary" @click="openForm('create', null)">新增</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="tableList">
<el-table-column prop="brandName" label="品牌名称" />
<el-table-column prop="orderNum" label="排序" width="100px" />
<el-table-column prop="remark" label="备注" />
<el-table-column label="创建时间" prop="createTime" width="180px" />
<el-table-column label="创建人" prop="createUser" width="150px" />
<el-table-column label="操作">
<template #default="scope">
<el-button type="primary" text @click="openForm('update', scope.row)">修改</el-button>
<el-button type="danger" text @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<Pagination
v-model:limit="searchForm.pageSize"
v-model:page="searchForm.pageNum"
:total="total"
@pagination="handleQuery"
/>
<DialogBrand ref="brandDialog" @success="handleQuery" />
</div>
</template>
<script setup name="BrandSet">
import DialogBrand from './DialogBrand.vue'
const searchForm = ref({
pageNum: 1,
pageSize: 20
})
const total = ref(0)
const brandDialog = ref()
const tableList = ref([])
const loading = ref(false)
function handleQuery() {
searchForm.value.pageNum = 1
getList()
}
function resetQuery() {
searchForm.value = {
name: '',
pageSize: 20,
pageNum: 1
}
getList()
}
function getList() {
tableList.value = [
{
brandId: 1,
brandName: '测试'
}
]
}
function openForm(type, info) {
brandDialog.value.open(type, info)
}
async function handleDelete(row) {
try {
console.log(row)
//
await message.delConfirm()
//
// await UserApi.deleteUser(row.id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
</script>
<style lang="scss" scoped></style>

@ -0,0 +1,105 @@
<template>
<div>
<el-form ref="queryForm" :model="searchForm" label-width="0" inline>
<el-form-item>
<el-input
v-model="searchForm.name"
placeholder="请输入名称"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">搜索</el-button>
<el-button @click="resetQuery">重置</el-button>
<el-button type="primary" @click="openForm('create', null)">新增</el-button>
</el-form-item>
</el-form>
<el-table
v-loading="loading"
:data="tableList"
row-key="categoryId"
:tree-props="{ children: 'children' }"
>
<el-table-column prop="categoryName" label="分类名称" />
<el-table-column prop="orderNum" label="排序" width="100px" />
<el-table-column prop="remark" label="备注" />
<el-table-column label="创建时间" prop="createTime" width="180px" />
<el-table-column label="创建人" prop="createUser" width="150px" />
<el-table-column label="操作">
<template #default="scope">
<el-button type="primary" text @click="openForm('update', scope.row)">修改</el-button>
<el-button type="primary" text @click="openForm('createChildren', scope.row)"
>新增</el-button
>
<el-button type="danger" text @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<Pagination
v-model:limit="searchForm.pageSize"
v-model:page="searchForm.pageNum"
:total="total"
@pagination="handleQuery"
/>
<DialogCategory ref="categoryDialog" @success="handleQuery" />
</div>
</template>
<script setup name="CategorySet">
import DialogCategory from './DialogCategory.vue'
const searchForm = ref({
pageNum: 1,
pageSize: 20
})
const total = ref(0)
const categoryDialog = ref()
const tableList = ref([])
const loading = ref(false)
function handleQuery() {
searchForm.value.pageNum = 1
getList()
}
function resetQuery() {
searchForm.value = {
name: '',
pageSize: 20,
pageNum: 1
}
getList()
}
function getList() {
tableList.value = [
{
categoryId: 1,
categoryName: '测试',
level: 1,
children: [{ categoryId: 1001, categoryName: '二级分类', level: 2, parentCategory: '测试' }]
}
]
}
function openForm(type, info) {
categoryDialog.value.open(type, info)
}
async function handleDelete(row) {
try {
console.log(row)
//
await message.delConfirm()
//
// await UserApi.deleteUser(row.id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
</script>
<style lang="scss" scoped></style>

@ -0,0 +1,103 @@
<template>
<el-dialog :title="dialogTitle" v-model="dialogVisible" width="800px">
<el-form
ref="formRef"
v-loading="formLoading"
:model="formData"
:rules="formRules"
label-width="80px"
>
<el-form-item label="品牌名称" prop="brandName">
<el-input v-model="formData.brandName" placeholder="请输入品牌名称" />
</el-form-item>
<el-form-item label="排序" prop="orderNum">
<el-input v-model="formData.orderNum" placeholder="请输入排序" type="number" :min="0" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
type="textarea"
v-model="formData.remark"
placeholder="请输入备注"
:autosize="{ minRows: 4, maxRows: 8 }"
/>
</el-form-item>
</el-form>
<template #footer>
<el-button :disabled="formLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</el-dialog>
</template>
<script name="DialogBrand" setup>
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
brandName: '',
orderNum: 1,
remark: ''
})
const formRules = reactive({
brandName: [{ required: true, message: '名称不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type, info) => {
dialogVisible.value = true
dialogTitle.value = type == 'update' ? '修改品牌' : '新增品牌'
formType.value = type
resetForm()
//
if (info.brandId) {
formLoading.value = true
try {
formData.value = { ...info }
// formData.value = await UserApi.getUser(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
if (!formRef.value) return
const valid = await formRef.value.validate()
if (!valid) return
//
formLoading.value = true
try {
// const data = formData.value as unknown as UserApi.UserVO
if (formType.value === 'create') {
// await UserApi.createUser(data)
message.success(t('common.createSuccess'))
} else {
// await UserApi.updateUser(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
brandName: '',
orderNum: 1,
remark: ''
}
formRef.value?.resetFields()
}
</script>

@ -0,0 +1,111 @@
<template>
<el-dialog :title="dialogTitle" v-model="dialogVisible" width="800px">
<el-form
ref="formRef"
v-loading="formLoading"
:model="formData"
:rules="formRules"
label-width="80px"
>
<el-form-item v-if="formData.level > 1" label="上级分类">
<el-input v-model="formData.parentCategory" disabled />
</el-form-item>
<el-form-item label="分类名称" prop="categoryName">
<el-input v-model="formData.categoryName" placeholder="请输入分类名称" />
</el-form-item>
<el-form-item label="排序" prop="orderNum">
<el-input v-model="formData.orderNum" placeholder="请输入排序" type="number" :min="0" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
type="textarea"
v-model="formData.remark"
placeholder="请输入备注"
:autosize="{ minRows: 4, maxRows: 8 }"
/>
</el-form-item>
</el-form>
<template #footer>
<el-button :disabled="formLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</el-dialog>
</template>
<script name="DialogCategory" setup>
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
categoryName: '',
orderNum: 1,
remark: ''
})
const formRules = reactive({
categoryName: [{ required: true, message: '名称不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type, info) => {
dialogVisible.value = true
dialogTitle.value = type == 'update' ? '修改分类' : '新增分类'
formType.value = type
resetForm()
//
if (info.categoryId) {
formLoading.value = true
try {
if (type == 'update') {
formData.value = { ...info }
} else {
formData.value.level = info.level + 1
formData.value.parentCategory = info.categoryName
}
// formData.value = await UserApi.getUser(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
if (!formRef.value) return
const valid = await formRef.value.validate()
if (!valid) return
//
formLoading.value = true
try {
// const data = formData.value as unknown as UserApi.UserVO
if (formType.value === 'create') {
// await UserApi.createUser(data)
message.success(t('common.createSuccess'))
} else {
// await UserApi.updateUser(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
categoryName: '',
orderNum: 1,
remark: ''
}
formRef.value?.resetFields()
}
</script>

@ -3,6 +3,12 @@
<el-tab-pane label="产品属性" :name="0">
<FieldProduct />
</el-tab-pane>
<el-tab-pane label="分类设置" :name="1">
<CategorySet />
</el-tab-pane>
<el-tab-pane label="品牌设置" :name="2">
<BrandSet />
</el-tab-pane>
<el-tab-pane label="消息通知" :name="9">
<MsgSend />
</el-tab-pane>
@ -12,6 +18,8 @@
<script setup>
import FieldProduct from './Comp/FieldProduct.vue'
import MsgSend from './Comp/MsgSend.vue'
import CategorySet from './Comp/CategorySet.vue'
import BrandSet from './Comp/BrandSet.vue'
const tabIndex = ref(0)
</script>

Loading…
Cancel
Save