perf: 组件名

feature/task1.0.0__0514__ch
向文可 3 years ago
parent 02eabb7b2a
commit 3007f5fdf2

@ -1,6 +1,6 @@
<template> <template>
<div class="list-container"> <div class="list-container">
<TableList <table-list
v-loading="loading" v-loading="loading"
:code="code" :code="code"
:config="config" :config="config"
@ -22,7 +22,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
</TableList> </table-list>
<el-dialog v-model="formState.formVisible" :title="formState.form.id ? '编辑' : '添加' + '活动'" width="480px"> <el-dialog v-model="formState.formVisible" :title="formState.form.id ? '编辑' : '添加' + '活动'" width="480px">
<el-form ref="refsForm" label-width="100px" :model="formState.form" :rules="formState.rules"> <el-form ref="refsForm" label-width="100px" :model="formState.form" :rules="formState.rules">
<el-form-item label="活动名称" prop="name"> <el-form-item label="活动名称" prop="name">

@ -10,7 +10,7 @@
</el-button> </el-button>
</li> </li>
</ul> </ul>
<TableList <table-list
v-loading="loading" v-loading="loading"
:code="code" :code="code"
:config="config" :config="config"
@ -43,7 +43,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
</TableList> </table-list>
<ProductPicker ref="refsPicker" @pick="handlePick" /> <ProductPicker ref="refsPicker" @pick="handlePick" />
<ProductSku ref="refsSku" @save="handleSkuSave" /> <ProductSku ref="refsSku" @save="handleSkuSave" />
</div> </div>

@ -1,6 +1,6 @@
<template> <template>
<el-dialog v-model="visible" title="编辑SKU" width="max-content"> <el-dialog v-model="visible" title="编辑SKU" width="max-content">
<TableList <table-list
v-loading="loading" v-loading="loading"
:code="code" :code="code"
:config="config" :config="config"
@ -13,7 +13,7 @@
<el-button type="primary" @click="handleSave"></el-button> <el-button type="primary" @click="handleSave"></el-button>
<h3 style="margin-left: 10px">{{ activityProduct?.productName }}</h3> <h3 style="margin-left: 10px">{{ activityProduct?.productName }}</h3>
</template> </template>
</TableList> </table-list>
</el-dialog> </el-dialog>
</template> </template>

@ -1,6 +1,6 @@
<template> <template>
<div class="list-container"> <div class="list-container">
<TableList <table-list
v-loading="loading" v-loading="loading"
:code="code" :code="code"
:config="config" :config="config"
@ -15,7 +15,7 @@
<template #operation> <template #operation>
<el-button type="success" @click="handleProduct"></el-button> <el-button type="success" @click="handleProduct"></el-button>
</template> </template>
</TableList> </table-list>
</div> </div>
</template> </template>

@ -1,6 +1,6 @@
<template> <template>
<div class="list-container"> <div class="list-container">
<TableList <table-list
v-loading="loading" v-loading="loading"
:code="code" :code="code"
:config="config" :config="config"
@ -22,7 +22,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
</TableList> </table-list>
<ProductPicker ref="refsPicker" @pick="handlePick" /> <ProductPicker ref="refsPicker" @pick="handlePick" />
</div> </div>
</template> </template>

@ -0,0 +1,254 @@
<template>
<div class="list-container">
<table-list
ref="refsTable"
v-loading="loading"
:code="code"
:config="config"
:data="list"
:operation="['create']"
sortable
title="分类"
:total="total"
@create="handleCreate()"
@row-click="handleExpand"
@row-sort="handleSort"
/>
<el-dialog v-model="formState.formVisible" title="转移商品" width="360px">
<el-form ref="refsForm" label-width="100px" :model="formState.form" :rules="formState.rules">
<el-form-item label="源分类" prop="sourceId">
<el-cascader
v-model="formState.form.sourceId"
:options="list"
:props="{
checkStrictly: true,
expandTrigger: 'hover',
label: 'name',
value: 'id',
children: 'childList',
emitPath: false,
}"
/>
</el-form-item>
<el-form-item label="目标分类" prop="targetId">
<el-cascader
v-model="formState.form.targetId"
:options="list"
:props="{
checkStrictly: true,
expandTrigger: 'hover',
label: 'name',
value: 'id',
children: 'childList',
emitPath: false,
}"
/>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="formState.formVisible = false">取消</el-button>
<el-button :loading="formState.submitting" type="primary" @click="handleSave"></el-button>
</template>
</el-dialog>
</div>
</template>
<script setup lang="jsx">
import ElButton from '@/components/extra/ElButton.vue';
import ElImage from '@/components/extra/ElImage.vue';
import ElSwitch from '@/components/extra/ElSwitch.vue';
import TableList from '@/components/TableList.vue';
const router = useRouter();
const store = useStore();
const { proxy } = getCurrentInstance();
const loading = ref(false);
const refsTable = ref(null);
const code = computed(() => store.state.category.code);
const list = computed(() => _.cloneDeep(store.state.category.list));
const total = computed(() => store.state.category.total);
const opts = computed(() => store.state.category.opts);
if (!unref(opts).init) {
store.dispatch('category/load');
}
/* 查询订单 */
const state = reactive({
condition: {},
});
watch(
() => state.condition,
(value) => {
store.commit('category/setCondition', _.cloneDeep(value));
},
{ immediate: true, deep: true }
);
const handleSearch = async () => {
loading.value = true;
await store.dispatch('category/search');
loading.value = false;
};
onActivated(handleSearch);
const handleCreate = (row) => {
router.push({ name: 'CreateCategory', query: { pid: row?.id } });
};
const handleUpdate = (row) => {
router.push({ name: 'UpdateCategory', params: { id: row.id } });
};
const handleVisible = async (row) => {
loading.value = true;
await store.dispatch('category/save', row);
loading.value = false;
};
const handleRemove = async (rows) => {
await store.dispatch(
'category/remove',
rows.map((item) => item.id)
);
};
const handleSort = async (newSort, oldSort, e, arr) => {
arr = arr || unref(list);
let direction = (oldSort - newSort) / Math.abs(oldSort - newSort);
let currentSort = arr[newSort].sort;
oldSort = arr[newSort + direction].sort;
loading.value = true;
await store.dispatch('category/sort', { id: arr[newSort].id, currentSort, oldSort });
loading.value = false;
};
const handleExpand = (row) => {
unref(list).forEach((item) => {
unref(refsTable).toggleRowExpansion(item, false);
});
unref(refsTable).toggleRowExpansion(row);
};
/* 表单 */
const refsForm = ref(null);
const formState = reactive({
formVisible: false,
submitting: false,
form: {
sourceId: null,
targetId: false,
},
rules: {
sourceId: [{ required: true, message: '源分类不能为空' }],
targetId: [{ required: true, message: '目标分类不能为空' }],
},
});
//
const handleTransform = (row) => {
formState.form = {
sourceId: row.id,
targetId: null,
};
formState.formVisible = true;
};
const handleSave = async () => {
formState.submitting = true;
try {
await proxy.$validate(refsForm);
let data = _.cloneDeep(formState.form);
await store.dispatch('category/transform', data);
formState.formVisible = false;
} catch (e) {
console.info('取消保存', e);
}
formState.submitting = false;
};
/* 列表配置 */
const handleConfig = (parent) => {
let res = reactive({
setting: !parent,
page: false,
columns: [
{
label: '分类名称',
prop: 'name',
minWidth: 300,
},
{
label: '图片',
minWidth: 300,
slots: {
default: ({ row }) => <ElImage src={row.picture} alt={row.name} height="64px" />,
},
},
{
label: '是否显示',
width: 120,
slots: {
default: ({ row }) => (
<ElSwitch v-model={row.isEnable} onChange={(visible) => handleVisible(row, visible)} />
),
},
},
{
label: '操作',
width: 300,
slots: {
default: ({ row }) => (
<div>
{!parent ? (
<ElButton type="text" onClick={() => handleCreate(row)}>
新增下级
</ElButton>
) : (
''
)}
<ElButton type="text" onClick={() => handleTransform(row)}>
转移商品
</ElButton>
<ElButton type="text" onClick={() => handleUpdate(row)}>
编辑
</ElButton>
<ElButton type="text" onClick={() => handleRemove([row])}>
删除
</ElButton>
</div>
),
},
},
],
});
if (!parent) {
res.columns.unshift({
type: 'expand',
width: 60,
slots: {
default: ({ row }) => (
<TableList
code={Date.now() + ''}
config={handleConfig(row)}
data={row.childList || []}
operation={[]}
sortable
onRowSort={(newSort, oldSort, e) => handleSort(newSort, oldSort, e, row.childList)}
/>
),
},
});
} else {
res.columns.unshift({
type: 'index',
width: 60,
});
}
return res;
};
const config = handleConfig(null);
</script>
<style lang="less" scoped>
:deep(.el-table__expanded-cell) {
.common-list {
width: 100%;
min-height: 300px;
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
}
</style>

@ -1,6 +1,6 @@
<template> <template>
<div class="list-container"> <div class="list-container">
<TableList <table-list
ref="refsTable" ref="refsTable"
v-loading="loading" v-loading="loading"
:code="code" :code="code"

@ -128,11 +128,11 @@
</el-table> </el-table>
</el-scrollbar> </el-scrollbar>
</div> </div>
<CloseOrder ref="refsCloseOrder" @close="handleLoad" /> <close-order ref="refsCloseOrder" @close="handleLoad" />
<CancelOrder ref="refsCancelOrder" @close="handleLoad" /> <cancel-order ref="refsCancelOrder" @close="handleLoad" />
<UpdateAddress ref="refsUpdateAddress" @close="handleLoad" /> <update-address ref="refsUpdateAddress" @close="handleLoad" />
<UpdateFees ref="refsUpdateFees" @close="handleLoad" /> <update-fees ref="refsUpdateFees" @close="handleLoad" />
<OrderTrack ref="refsOrderTrack" /> <order-track ref="refsOrderTrack" />
</div> </div>
</template> </template>

@ -15,7 +15,7 @@
</el-button> </el-button>
</li> </li>
</ul> </ul>
<TableList <table-list
v-loading="loading" v-loading="loading"
:code="code" :code="code"
:config="config" :config="config"
@ -51,10 +51,10 @@
<template #operation="{ selection }"> <template #operation="{ selection }">
<el-button type="primary" @click="handleSend(selection)"></el-button> <el-button type="primary" @click="handleSend(selection)"></el-button>
</template> </template>
</TableList> </table-list>
<CloseOrder ref="refsCloseOrder" /> <close-order ref="refsCloseOrder" />
<OrderTrack ref="refsOrderTrack" /> <order-track ref="refsOrderTrack" />
<OrderShip ref="refsOrderShip" @save="handleSearch" /> <order-ship ref="refsOrderShip" @save="handleSearch" />
</div> </div>
</template> </template>

@ -1,6 +1,6 @@
<template> <template>
<el-dialog v-model="visible" height="500px" title="批量发货" width="800px"> <el-dialog v-model="visible" height="500px" title="批量发货" width="800px">
<TableList v-loading="loading" :code="code" :config="config" :data="list" :operation="[]" /> <table-list v-loading="loading" :code="code" :config="config" :data="list" :operation="[]" />
<template #footer> <template #footer>
<el-button type="danger" @click="handleClose"></el-button> <el-button type="danger" @click="handleClose"></el-button>
<el-button :loading="loading" type="primary" @click="handleSave"></el-button> <el-button :loading="loading" type="primary" @click="handleSave"></el-button>

@ -1,6 +1,6 @@
<template> <template>
<div class="list-container"> <div class="list-container">
<TableList <table-list
v-loading="loading" v-loading="loading"
:code="code" :code="code"
:config="config" :config="config"
@ -33,7 +33,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
</TableList> </table-list>
</div> </div>
</template> </template>

@ -1,6 +1,6 @@
<template> <template>
<el-dialog v-model="visible" title="选择商品"> <el-dialog v-model="visible" title="选择商品">
<TableList <table-list
ref="refsTable" ref="refsTable"
v-loading="loading" v-loading="loading"
:code="code" :code="code"
@ -32,7 +32,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
</TableList> </table-list>
<template #footer> <template #footer>
<el-button @click="handleClose"></el-button> <el-button @click="handleClose"></el-button>
<el-button type="primary" @click="handlePick"></el-button> <el-button type="primary" @click="handlePick"></el-button>

@ -260,7 +260,7 @@
</template> </template>
</el-scrollbar> </el-scrollbar>
</div> </div>
<OrderTrack ref="refsOrderTrack" service /> <order-track ref="refsOrderTrack" service />
</div> </div>
</template> </template>

@ -15,7 +15,7 @@
</el-button> </el-button>
</li> </li>
</ul> </ul>
<TableList <table-list
v-loading="loading" v-loading="loading"
:code="code" :code="code"
:config="config" :config="config"
@ -51,7 +51,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
</TableList> </table-list>
</div> </div>
</template> </template>

@ -1,5 +1,5 @@
<template> <template>
<TableList <table-list
v-loading="loading" v-loading="loading"
:code="code" :code="code"
:config="config" :config="config"
@ -28,7 +28,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
</TableList> </table-list>
</template> </template>
<script setup lang="jsx"> <script setup lang="jsx">

@ -1,5 +1,5 @@
<template> <template>
<TableList <table-list
v-loading="loading" v-loading="loading"
:code="code" :code="code"
:config="config" :config="config"
@ -19,7 +19,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
</TableList> </table-list>
</template> </template>
<script setup lang="jsx"> <script setup lang="jsx">

@ -1,6 +1,6 @@
<template> <template>
<div class="list-container"> <div class="list-container">
<TableList <table-list
v-loading="loading" v-loading="loading"
:code="code" :code="code"
:config="config" :config="config"
@ -23,7 +23,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
</TableList> </table-list>
<el-dialog v-model="formState.formVisible" :title="formState.form.id ? '查看' : '添加' + '通知'"> <el-dialog v-model="formState.formVisible" :title="formState.form.id ? '查看' : '添加' + '通知'">
<el-form <el-form
ref="refsForm" ref="refsForm"

@ -21,10 +21,10 @@ export default (configEnv) => {
proxy: { proxy: {
'/api': { '/api': {
// target: 'http://192.168.10.109:8090/', // 显雨 // target: 'http://192.168.10.109:8090/', // 显雨
// target: 'http://192.168.10.251:8090', // 高玉 target: 'http://192.168.10.5:4500', // 高玉
// target: 'http://192.168.10.67:8090', // 罗战 // target: 'http://192.168.10.67:8090', // 罗战
// target: 'http://192.168.10.93:8090', // 周渺 // target: 'http://192.168.10.93:8090', // 周渺
target: 'https://k8s-horse-gateway.mashibing.cn/', // 测试地址 // target: 'https://k8s-horse-gateway.mashibing.cn/', // 测试地址
// target: 'https://you-gateway.mashibing.com', // 生产环境 // target: 'https://you-gateway.mashibing.com', // 生产环境
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''), rewrite: (path) => path.replace(/^\/api/, ''),

Loading…
Cancel
Save