2 Commits

3 changed files with 126 additions and 31 deletions

View File

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

View File

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

View File

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