190 lines
5.3 KiB
Vue
Raw Normal View History

2024-05-16 17:19:58 +08:00
<template>
<div>
<div>
<el-radio-group
v-model="queryParams.is_adopt"
size="small"
@change="changeType"
>
<el-radio-button label="全部" value="" />
<el-radio-button label="未采纳" value="0" />
<el-radio-button label="已采纳" value="1" />
</el-radio-group>
</div>
<el-table :data="pager.lists" border style="width: 100%; margin-top: 10px">
<el-table-column prop="id" label="ID" width="120" />
<!-- <el-table-column prop="order_id" label="采购订单id" width="120" /> -->
<el-table-column
label="商品名称"
prop="goods_name"
show-overflow-tooltip
width="220"
/>
<el-table-column
label="需求数量"
prop="need_num"
show-overflow-tooltip
width="100"
/>
<el-table-column
label="单位"
prop="unit_name"
width="80"
show-overflow-tooltip
/>
<el-table-column
label="供应商"
prop="supplier_name"
show-overflow-tooltip
width="160"
/>
<el-table-column
label="提供数量"
prop="nums"
show-overflow-tooltip
width="100"
/>
<el-table-column label="报价" prop="price" show-overflow-tooltip />
<el-table-column label="是否采纳报价" prop="is_adopt" width="120">
<template #default="{ row }">
<el-tag v-if="row.is_adopt === 1" type="success">已采纳</el-tag>
<el-tag v-else type="info">未采纳</el-tag>
</template>
</el-table-column>
<el-table-column
label="更新时间"
prop="update_time"
show-overflow-tooltip
width="160"
/>
<el-table-column label="操作" fixed="right">
<template #default="{ row }">
<el-button
type="primary"
v-if="row.is_adopt === 0 && row.price > 0"
size="small"
@click="offerGood(row, 0)"
>采纳</el-button
>
<span v-if="row.is_storage">已入库</span>
<el-button
type="success"
v-else-if="row.is_adopt === 1 && row.price > 0"
size="small"
@click="offerGood(row, 1)"
>入库</el-button
>
<span
v-if="row.is_adopt === 0 && row.price == 0"
style="color: #e6a23c"
>等待供应商报价</span
>
</template>
</el-table-column>
</el-table>
<div class="flex mt-4 justify-end">
2024-05-17 18:24:03 +08:00
<pagination v-if="pager.lists" v-model="pager" @change="getLists" />
2024-05-16 17:19:58 +08:00
</div>
<el-dialog v-model="dialogVisible" title="入库" width="600">
<el-descriptions class="margin-top" :column="1" border>
<el-descriptions-item label="供应商名称">
{{ updateInfo.supplier_name }}
</el-descriptions-item>
<el-descriptions-item label="商品名称">
{{ updateInfo.goods_name }}
</el-descriptions-item>
<el-descriptions-item label="商品报价">
¥ {{ updateInfo.price }} / {{ updateInfo.unit_name }}
</el-descriptions-item>
<el-descriptions-item label="应入库数量">
{{ updateInfo.q_nums }}
</el-descriptions-item>
<el-descriptions-item label="实际入库数量">
<el-input-number v-model="updateInfo.nums" :step="1" :min="1" />
</el-descriptions-item>
<el-descriptions-item label="备注">
<el-input v-model="updateInfo.notes" type="textarea" placeholder="请输入备注"></el-input>
</el-descriptions-item>
</el-descriptions>
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="goodsOfferUpdate">
确认
</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script lang="ts" setup name="subOrder">
import { usePaging } from "@/hooks/usePaging";
import {
apiOpurchaseclassGoodsOfferList,
apiOpurchaseclassGoodsOfferUpdate,
} from "@/api/opurchaseclass";
import { useRoute } from "vue-router";
const route = useRoute();
const queryParams = reactive({
id: route.query.id,
is_adopt: "",
2024-05-17 18:24:03 +08:00
is_mer: 2
2024-05-16 17:19:58 +08:00
});
// 分页相关
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiOpurchaseclassGoodsOfferList,
params: queryParams,
});
defineExpose({
getLists,
});
const changeType = (e: any) => {
queryParams.is_adopt = e;
getLists();
};
const dialogVisible = ref(false);
const updateInfo = ref({
id: "",
type: 0,
notes: "", //备注
nums: 0,//实际数量
q_nums: 0, //应到数量
});
const offerGood = (row: any, type: number) => {
//type:0 采纳1 入库
updateInfo.value = Object.assign(
{
id: "",
type: type,
notes: "", //备注
nums: 0,
},
row
);
if(type==0) return goodsOfferUpdate(); // 采纳时直接成功, 入库弹窗显示数量
updateInfo.value.q_nums = row.nums;
dialogVisible.value = true;
};
const goodsOfferUpdate = () => {
apiOpurchaseclassGoodsOfferUpdate({
id: updateInfo.value.id,
type: updateInfo.value.type,
notes: updateInfo.value.notes, //备注
nums: updateInfo.value.nums,
}).then((res) => {
getLists();
dialogVisible.value = false;
});
};
</script>