2 Commits

3 changed files with 126 additions and 31 deletions

View File

@@ -72,7 +72,7 @@ const AuthAPI = {
}); });
}, },
// 耗材列表 // 耗材列表分页
productcons(params: any) { productcons(params: any) {
return request<any, Responseres>({ return request<any, Responseres>({
url: `/product/admin/product/cons/page`, url: `/product/admin/product/cons/page`,
@@ -80,7 +80,14 @@ const AuthAPI = {
params params
}); });
}, },
// 耗材列表
productconsList(params: any) {
return request<any, Responseres>({
url: `/product/admin/product/cons/list`,
method: "get",
params
});
},
// 上下架 // 上下架
onOff(data: any) { onOff(data: any) {
return request<any, Responseres>({ return request<any, Responseres>({

View File

@@ -2,14 +2,26 @@
<div class="app-container"> <div class="app-container">
<!-- 列表 --> <!-- 列表 -->
<!-- 搜索 --> <!-- 搜索 -->
<page-search ref="searchRef" :search-config="searchConfig" @query-click="newHandleQueryClick" <page-search
@reset-click="handleResetClick2" /> ref="searchRef"
:search-config="searchConfig"
@query-click="newHandleQueryClick"
@reset-click="handleResetClick2"
/>
<!-- 顶部数据 --> <!-- 顶部数据 -->
<Statistics :data="gongjiData"></Statistics> <Statistics :data="gongjiData"></Statistics>
<!-- 列表 --> <!-- 列表 -->
<page-content ref="contentRef" :content-config="contentConfig" @add-click="handleAddClick" <page-content
@edit-click="handleEditClick" @export-click="handleExportClick" @search-click="handleSearchClick" ref="contentRef"
@toolbar-click="handleToolbarClick" @operat-click="handleOperatClick" @filter-change="handleFilterChange"> :content-config="contentConfig"
@add-click="handleAddClick"
@edit-click="handleEditClick"
@export-click="handleExportClick"
@search-click="handleSearchClick"
@toolbar-click="handleToolbarClick"
@operat-click="handleOperatClick"
@filter-change="handleFilterChange"
>
<!-- <template #status="scope"> <!-- <template #status="scope">
<el-tag :type="scope.row[scope.prop] == 1 ? 'success' : 'info'"> <el-tag :type="scope.row[scope.prop] == 1 ? 'success' : 'info'">
{{ scope.row[scope.prop] == 1 ? "启用" : "禁用" }} {{ scope.row[scope.prop] == 1 ? "启用" : "禁用" }}
@@ -25,11 +37,22 @@
<DictLabel v-model="scope.row[scope.prop]" code="gender" /> <DictLabel v-model="scope.row[scope.prop]" code="gender" />
</template> </template>
<template #shangjia="scope"> <template #shangjia="scope">
<el-switch v-model="scope.row[scope.prop]" :active-value="1" :inactive-value="0" <el-switch
@click="handleSwitchChange(scope.row)"></el-switch> v-model="scope.row[scope.prop]"
:active-value="1"
:inactive-value="0"
@click="handleSwitchChange(scope.row)"
></el-switch>
</template> </template>
<template #isStock="scope"> <template #isStock="scope">
<el-switch disabled v-model="scope.row[scope.prop]" :active-value="1" :inactive-value="0"></el-switch> <el-switch
v-if="!scope.row.productId"
v-model="scope.row[scope.prop]"
:active-value="1"
:inactive-value="0"
:disabled="!scope.row.type"
@click="isStockChange(scope.row)"
></el-switch>
</template> </template>
<template #kucunedit="scope"> <template #kucunedit="scope">
@@ -42,16 +65,29 @@
</template> </template>
<template #tuikuantuihui="scope"> <template #tuikuantuihui="scope">
<el-switch v-if="!scope.row.productId" v-model="scope.row[scope.prop]" :active-value="1" :inactive-value="0" <el-switch
@click="handleSwitchhaocai(scope.row)"></el-switch> v-if="!scope.row.productId"
v-model="scope.row[scope.prop]"
:active-value="1"
:inactive-value="0"
@click="handleSwitchhaocai(scope.row)"
></el-switch>
</template> </template>
<template #sellOut="scope"> <template #sellOut="scope">
<el-switch v-model="scope.row[scope.prop]" :active-value="1" :inactive-value="0" <el-switch
@click="handleSwitchChangeTwo(scope.row)"></el-switch> v-model="scope.row[scope.prop]"
:active-value="1"
:inactive-value="0"
@click="handleSwitchChangeTwo(scope.row)"
></el-switch>
</template> </template>
<template #mobile="scope"> <template #mobile="scope">
<el-text>{{ scope.row[scope.prop] }}</el-text> <el-text>{{ scope.row[scope.prop] }}</el-text>
<copy-button v-if="scope.row[scope.prop]" :text="scope.row[scope.prop]" style="margin-left: 2px" /> <copy-button
v-if="scope.row[scope.prop]"
:text="scope.row[scope.prop]"
style="margin-left: 2px"
/>
</template> </template>
<template #consumables="scope"> <template #consumables="scope">
<template v-if="scope.row.type != null"> <template v-if="scope.row.type != null">
@@ -74,7 +110,11 @@
</page-modal> </page-modal>
<!-- 编辑 --> <!-- 编辑 -->
<page-modal ref="editModalRef" :modal-config="editModalConfig" @submit-click="handleSubmitClick"> <page-modal
ref="editModalRef"
:modal-config="editModalConfig"
@submit-click="handleSubmitClick"
>
<template #gender="scope"> <template #gender="scope">
<Dict v-model="scope.formData[scope.prop]" code="gender" v-bind="scope.attrs" /> <Dict v-model="scope.formData[scope.prop]" code="gender" v-bind="scope.attrs" />
</template> </template>
@@ -121,16 +161,31 @@
<el-table-column label="序号" type="index" width="60"></el-table-column> <el-table-column label="序号" type="index" width="60"></el-table-column>
<el-table-column label="耗材名称" prop="consInfoId"> <el-table-column label="耗材名称" prop="consInfoId">
<template v-slot="scope"> <template v-slot="scope">
<el-select v-model="scope.row.consInfoId" reserve-keyword placeholder="请输入关键词" <el-select
@change="selectionChange($event, scope.row)"> filterable
<el-option v-for="item in options" :key="item.id" :label="item.conName" :value="item.id"></el-option> v-model="scope.row.consInfoId"
reserve-keyword
placeholder="请输入关键词"
@change="selectionChange($event, scope.row)"
>
<el-option
v-for="item in options"
:key="item.id * 1"
:label="item.conName"
:value="item.id * 1"
></el-option>
</el-select> </el-select>
<!-- <div class="tips" v-if="scope.row.stockNumber">库存{{ scope.row.stockNumber }}</div> --> <!-- <div class="tips" v-if="scope.row.stockNumber">库存{{ scope.row.stockNumber }}</div> -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单位" prop="conUnit"> <el-table-column label="单位" prop="conUnit">
<template v-slot="scope"> <template v-slot="scope">
<el-input v-model="scope.row.conUnit" readonly disabled placeholder="请选择耗材"></el-input> <el-input
v-model="scope.row.conUnit"
readonly
disabled
placeholder="请选择耗材"
></el-input>
<!-- <el-select v-model="scope.row.conUnit" reserve-keyword placeholder="请输入关键词"> <!-- <el-select v-model="scope.row.conUnit" reserve-keyword placeholder="请输入关键词">
<el-option <el-option
v-for="item in returnConUnits(scope.row.consInfoId)" v-for="item in returnConUnits(scope.row.consInfoId)"
@@ -149,13 +204,20 @@
<el-table-column label="操作" width="100"> <el-table-column label="操作" width="100">
<template v-slot="scope"> <template v-slot="scope">
<div class="table_btn_wrap"> <div class="table_btn_wrap">
<div class="btn sub" v-if="haocaiData.consList.length > 1" <div
@click="haocaiData.consList.splice(scope.$index, 1)"> class="btn sub"
v-if="haocaiData.consList.length > 1"
@click="haocaiData.consList.splice(scope.$index, 1)"
>
<el-icon> <el-icon>
<RemoveFilled /> <RemoveFilled />
</el-icon> </el-icon>
</div> </div>
<div class="btn add" v-if="scope.$index == haocaiData.consList.length - 1" @click="createItem(scope.row)"> <div
class="btn add"
v-if="scope.$index == haocaiData.consList.length - 1"
@click="createItem(scope.row)"
>
<el-icon> <el-icon>
<CirclePlusFilled /> <CirclePlusFilled />
</el-icon> </el-icon>
@@ -255,8 +317,8 @@ onMounted(async () => {
// 获取耗材列表 // 获取耗材列表
gethaocaiList(); gethaocaiList();
const res = await UserAPI.getPage() const res = await UserAPI.getPage();
form.warnLine = res.warnLine || '' form.warnLine = res.warnLine || "";
// console.log('contentRef.value===', res); // console.log('contentRef.value===', res);
}); });
@@ -310,7 +372,7 @@ function getTongji(params: IObject | undefined) {
// 显示批量导入 // 显示批量导入
function handleUploadClick() { function handleUploadClick() {
importDataRef.value.show() importDataRef.value.show();
} }
// 导出商品 // 导出商品
@@ -342,13 +404,25 @@ function createItem(val: IObject) {
haocaiData.value.consList.push(item); haocaiData.value.consList.push(item);
} }
// 上架 // 上架
function handleSwitchChange(data: any) { async function handleSwitchChange(data: any) {
console.log(data);
let obj = { let obj = {
type: data.productId ? "sku" : "product", type: data.productId ? "sku" : "product",
id: data.id, id: data.id,
isSale: data.isSale, isSale: data.isSale,
}; };
UserAPI.onOff(obj); await UserAPI.onOff(obj);
ElMessage.success("修改成功!");
if (data.productId) {
//sku
contentRef.value?.fetchPageData();
} else {
//product
data.skuList.map((v) => {
v.isSale = data.isSale;
});
}
} }
// 售罄 // 售罄
function handleSwitchChangeTwo(data: any) { function handleSwitchChangeTwo(data: any) {
@@ -358,6 +432,7 @@ function handleSwitchChangeTwo(data: any) {
isSoldOut: data.isSoldStock, isSoldOut: data.isSoldStock,
}; };
UserAPI.markIsSoldOut(obj); UserAPI.markIsSoldOut(obj);
ElMessage.success("修改成功!");
} }
function handleSwitchChangethree(data: any) { function handleSwitchChangethree(data: any) {
let obj = { let obj = {
@@ -368,6 +443,18 @@ function handleSwitchChangethree(data: any) {
UserAPI.markIsSoldOut(obj); UserAPI.markIsSoldOut(obj);
} }
async function isStockChange(data: any) {
console.log(data);
let obj = {
type: "product",
id: data.id,
isSale: data.isStock,
optType: "stock ",
};
await UserAPI.onOff(obj);
ElMessage.success("修改成功!");
return;
}
// 退款退回 // 退款退回
async function handleSwitchhaocai(row: IObject) { async function handleSwitchhaocai(row: IObject) {
let res = await UserAPI.refundToStock({ isReturn: row.isRefundStock, id: row.id }); let res = await UserAPI.refundToStock({ isReturn: row.isRefundStock, id: row.id });
@@ -398,7 +485,7 @@ async function handleToolbarClick(name: string) {
ElMessage.success("操作成功,数据正在后台同步中..."); ElMessage.success("操作成功,数据正在后台同步中...");
} }
if (name === "upload") { if (name === "upload") {
importDataRef.value.show() importDataRef.value.show();
} }
} }
async function confirm() { async function confirm() {
@@ -451,8 +538,8 @@ async function handleOperatClick(data: IOperatData) {
} }
async function gethaocaiList() { async function gethaocaiList() {
let res = await UserAPI.productcons({ id: route.query.id }); let res = await UserAPI.productconsList({ id: route.query.id });
options.value = res.records; options.value = res || [];
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">

View File

@@ -9,6 +9,7 @@ const contentConfig: IContentConfig<UserPageQuery> = {
table: { table: {
border: true, border: true,
highlightCurrentRow: true, highlightCurrentRow: true,
expandRowKeys: [],
rowKey: 'id', rowKey: 'id',
treeProps: { treeProps: {
children: 'skuList' // 指定子节点存储的字段为 customChildren children: 'skuList' // 指定子节点存储的字段为 customChildren