更新指定商品功能

This commit is contained in:
weipengfei 2023-10-24 15:44:39 +08:00
parent 09cb9a43df
commit b0b1d53f8e
4 changed files with 156 additions and 0 deletions

View File

@ -20,6 +20,7 @@ export function apiTaskDelete(params: any) {
export function apiTaskList(params: any) {
return request.get({ url: '/task_scheduling_plan.task_scheduling_plan/lists', params })
}
//任务日程-详情
export function apiTaskDetails(params: any) {
return request.get({ url: '/task_scheduling_plan.task_scheduling_plan/detail', params })

View File

@ -29,3 +29,8 @@ export function apiTaskTemplateDetail(params: any) {
export function apiTaskTypeList(params: any) {
return request.get({ url: '/setting.dict.dict_data/lists', params })
}
// 指定商品
export function apiGetProductList(params: any) {
return request.get({ url: '/task_template.task_template/getProductList', params })
}

View File

@ -0,0 +1,93 @@
<template>
<div>
<el-card class="!border-none" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="商品名称" prop="company_name">
<el-input
class="w-[280px]"
v-model="queryParams.keyword"
clearable
placeholder="请输入商品名称"
/>
</el-form-item>
<el-form-item label="商品编号" prop="company_type">
<el-input
class="w-[280px]"
v-model="queryParams.no"
clearable
placeholder="商品编号"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
<div class="mt-4">
<el-table :data="pager.lists" @cell-click="handleCurrentChange">
<el-table-column label="ID" property="product_id" />
<el-table-column label="图片" property="image">
<template #default="{ row }">
<el-image
:src="row.image"
style="width: 80px; height: 80px"
fit="cover"
></el-image>
</template>
</el-table-column>
<el-table-column label="商品名称" property="store_name" />
<el-table-column label="价格" property="price" />
</el-table>
</div>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" :pageSizes="[10]" />
</div>
</el-card>
</div>
</template>
<script lang="ts" setup name="companyLists">
import { usePaging } from "@/hooks/usePaging";
import { useDictData } from "@/hooks/useDictOptions";
import { apiGetProductList } from "@/api/task_template";
import { defineEmits } from "vue";
//
const props = defineProps({
type: {
type: Number,
default: 0,
},
companyTypeList: {
type: Array,
default: () => {
return [];
},
},
});
//
const queryParams = reactive({
keyword: "",
no: "",
});
//
const emits = defineEmits(["customEvent"]);
//
const handleCurrentChange = (value: any) => {
emits("customEvent", value);
};
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiGetProductList,
params: queryParams,
size: 10,
});
getLists();
</script>

View File

@ -76,6 +76,20 @@
</div>
</div>
</el-form-item>
<el-form-item
v-if="showCommodity"
label="商品"
prop="extend.product_id"
>
<el-input
readonly
:value="formData.extend.store_name"
clearable
placeholder="请选择商品"
@click="openCommodity"
>
</el-input>
</el-form-item>
<el-form-item v-if="showTarget" label="目标数" prop="extend.target">
<el-input
v-model="formData.extend.target"
@ -194,6 +208,12 @@
:company_id="formData.company_id"
></personnelPopup>
</el-dialog>
<el-dialog v-model="showDialogCommodity">
<dialogCommodity
:type="30"
@customEvent="customEventCommodity"
></dialogCommodity>
</el-dialog>
</popup>
</div>
</template>
@ -212,6 +232,7 @@ import type { PropType } from "vue";
import { dictDataLists } from "@/api/setting/dict";
import taskMap from "./map.vue";
import personnelPopup from "./dialog_index_personnel.vue";
import dialogCommodity from "./dialog_commodity.vue";
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -273,8 +294,11 @@ const formData = reactive({
extend: {
task_role: "", //
target: "", //
product_id: "", //id
store_name: "", //
},
});
if (route.query.id) {
formData.task_scheduling = route.query.id;
}
@ -283,6 +307,19 @@ if (route.query.id) {
// datalist.value = res.lists;
// });
//
const showCommodityTypeList = [
"town_task_type_marketing_director_9",
"town_task_type_marketing_director_8",
"town_task_type_marketing_director_5",
"town_task_type_marketing_director_4",
];
const showCommodity = computed(() => {
let flag = false;
if (showCommodityTypeList.includes(formData.type_value)) flag = true;
return flag;
});
//
const showTargetTypeList = [
"town_task_type_marketing_director_9",
@ -329,6 +366,19 @@ const showThree = computed(() => {
return flag;
});
//
const showDialogCommodity = ref(false);
const openCommodity = () => {
showDialogCommodity.value = true;
};
const customEventCommodity = (e: any) => {
formData.extend.product_id = e.product_id;
formData.extend.store_name = e.store_name;
formRef.value?.clearValidate("extend.product_id");
showDialogCommodity.value = false;
};
//
const formRules = reactive<any>({
title: [
@ -402,6 +452,13 @@ const formRules = reactive<any>({
trigger: ["blur"],
},
],
"extend.product_id": [
{
required: true,
message: "请选择商品",
trigger: ["blur"],
},
],
});
//