|
@@ -1,118 +1,60 @@
|
|
|
<script setup lang="ts">
|
|
|
-import { ref , watch, computed } from "vue"
|
|
|
+import { ref, shallowRef } from "vue"
|
|
|
+import { useRenderIcon } from "/@/components/ReIcon/src/hooks"
|
|
|
+import { httpAdd } from "/@/api/serviceParam/supplierCat";
|
|
|
+import { SupplierQuery } from "/@/components/BasicForm"
|
|
|
+import { rules } from "./config/_options"
|
|
|
import { useVModel } from "@vueuse/core"
|
|
|
-import { SupplierQuery, BrandQuey } from "/@/components/BasicForm"
|
|
|
-import { ImageSingleUpload } from "/@/components/ImageUpload"
|
|
|
-import { httpDetail, httpAdd, httpUpdate } from "/@/api/serviceParam/supplierBrand";
|
|
|
-import { useTask, useTasks } from "/@/hooks/core"
|
|
|
+import { useTask } from "/@/hooks/core"
|
|
|
+import { ElForm, ElMessage } from "element-plus"
|
|
|
|
|
|
-import { rules } from "./config/_options"
|
|
|
-import { ElForm } from "element-plus"
|
|
|
+import CategoryModal from "./category-modal.vue"
|
|
|
|
|
|
-const initialData = {
|
|
|
- gyscode: '',
|
|
|
- brand_id: '',
|
|
|
- long: 0,
|
|
|
- authTimeLongTerm: [],
|
|
|
- authTime: '',
|
|
|
- brand_book: '',
|
|
|
- remark: '',
|
|
|
- status: ''
|
|
|
-}
|
|
|
+const initialData = ():Record<string, any> => ({
|
|
|
+ supplierNo: '',
|
|
|
+ cat_id: []
|
|
|
+})
|
|
|
|
|
|
const emit = defineEmits(['refresh'])
|
|
|
const props = defineProps<{ visible: boolean; id: string, type: string }>()
|
|
|
|
|
|
+const formData = ref(initialData())
|
|
|
const formRef = ref<InstanceType<typeof ElForm> | null>(null)
|
|
|
-const formData = ref({ ...initialData })
|
|
|
|
|
|
-const supplierQueryRef = ref<InstanceType<typeof SupplierQuery> | null>(null)
|
|
|
-const brandQueyRef = ref<InstanceType<typeof BrandQuey> | null>(null)
|
|
|
const visible = useVModel(props, 'visible')
|
|
|
|
|
|
-const title = computed(() => {
|
|
|
- const map = {
|
|
|
- create : '创建',
|
|
|
- preview: '查看',
|
|
|
- update: '编辑'
|
|
|
- }
|
|
|
- return `${map[props.type]}支持品牌`
|
|
|
-})
|
|
|
-
|
|
|
-const supportDetailTask = useTask({ success (data){
|
|
|
- const { brand_book, brand_id, brand_name, endtime, starttime, long, gyscode, remark, gysname: name, status } = data
|
|
|
- formData.value = {
|
|
|
- authTimeLongTerm: long === 1 ? [starttime, endtime] : [],
|
|
|
- authTime: long === 0 ? starttime : '',
|
|
|
- brand_book,
|
|
|
- brand_id,
|
|
|
- gyscode,
|
|
|
- remark,
|
|
|
- status,
|
|
|
- long
|
|
|
- }
|
|
|
- supplierQueryRef.value.initialData({ name })
|
|
|
- brandQueyRef.value.initialData({ brand_name })
|
|
|
-}})
|
|
|
-
|
|
|
+const categoryVisible = shallowRef(false)
|
|
|
+const supportCreateTask = useTask({ success })
|
|
|
|
|
|
function success(){
|
|
|
visible.value = false
|
|
|
emit('refresh')
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-const supportCreateTask = useTask({ success })
|
|
|
-const supportUpdateTask = useTask({ success })
|
|
|
-const loading = useTasks(supportCreateTask, supportUpdateTask)
|
|
|
-
|
|
|
-watch(() => props.visible, (visible) => {
|
|
|
- if(!visible) { return }
|
|
|
- if(props.id){
|
|
|
- supportDetailTask.run(httpDetail({ id: props.id }))
|
|
|
- }else {
|
|
|
- formData.value = { ...initialData }
|
|
|
+function handleCategoryChange(values: Record<string, any>[]){
|
|
|
+ const ids = formData.value.cat_id.map(({id}) => id)
|
|
|
+ for(const value of values){
|
|
|
+ if(ids.includes(value.id)){ continue }
|
|
|
+ formData.value.cat_id.push({ ...value })
|
|
|
}
|
|
|
-}, {
|
|
|
- immediate: true
|
|
|
-})
|
|
|
-
|
|
|
+}
|
|
|
|
|
|
async function onSubmit(){
|
|
|
- try{
|
|
|
+ try {
|
|
|
+ console.log(1)
|
|
|
await formRef.value.validate()
|
|
|
- const { long, gyscode, brand_id, authTimeLongTerm, authTime, remark, status } = formData.value
|
|
|
- const isCreate = !props.id
|
|
|
-
|
|
|
- const parameters = {
|
|
|
- id: props.id,
|
|
|
- long,
|
|
|
- gyscode,
|
|
|
- brand_id,
|
|
|
- remark,
|
|
|
- status,
|
|
|
- starttime: '',
|
|
|
- endtime: '',
|
|
|
- brand_book: ''
|
|
|
- }
|
|
|
-
|
|
|
- if(long === 1){
|
|
|
- const [ starttime, endtime ] = authTimeLongTerm
|
|
|
- parameters.starttime = starttime + ' 00:00:00'
|
|
|
- parameters.endtime = endtime + ' 23:59:59'
|
|
|
- }else{
|
|
|
- parameters.starttime = authTime + ' 00:00:00'
|
|
|
- delete parameters['endtime']
|
|
|
- }
|
|
|
-
|
|
|
- if(isCreate) {
|
|
|
- delete parameters.id
|
|
|
- delete parameters.status
|
|
|
+ const { supplierNo, cat_id } = formData.value
|
|
|
+
|
|
|
+ if(cat_id.length === 0){
|
|
|
+ ElMessage.warning('至少添加一个分类')
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
- const task = isCreate ? supportCreateTask : supportUpdateTask
|
|
|
- const api = isCreate ? httpAdd : httpUpdate
|
|
|
- task.run(api(parameters))
|
|
|
+ supportCreateTask
|
|
|
+ .run(httpAdd({
|
|
|
+ supplierNo,
|
|
|
+ cat_id: cat_id.map(({id}) => id)
|
|
|
+ }))
|
|
|
}catch(err){
|
|
|
console.log(err)
|
|
|
}
|
|
@@ -120,58 +62,59 @@ async function onSubmit(){
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
- <ElDialog v-model="visible" :title="title" center>
|
|
|
- <ElForm v-model="formData" v-loading="supportDetailTask.loading" label-width="100px" :rules="rules" :disabled="type === 'preview'" ref="formRef">
|
|
|
- <ElFormItem label="供应商" prop="gyscode">
|
|
|
- <SupplierQuery v-model="formData.gyscode" placeholder="供应商" ref="supplierQueryRef" />
|
|
|
- </ElFormItem>
|
|
|
-
|
|
|
- <ElFormItem label="支持品牌" prop="brand_id">
|
|
|
- <BrandQuey v-model="formData.brand_id" placeholder="支持品牌" ref="brandQueyRef" />
|
|
|
- </ElFormItem>
|
|
|
-
|
|
|
- <ElFormItem label="授权类型" prop="long">
|
|
|
- <ElRadioGroup v-model="formData.long">
|
|
|
- <ElRadio
|
|
|
- v-for="(opt, index) in [{ value: 1, label: '非长期' }, { value: 0, label: '长期' }]" :key="index"
|
|
|
- :label="opt.value"
|
|
|
- >
|
|
|
- {{ opt.label }}
|
|
|
- </ElRadio>
|
|
|
- </ElRadioGroup>
|
|
|
- </ElFormItem>
|
|
|
-
|
|
|
- <ElFormItem label="授权时间" prop="authTimeLongTerm" v-if="formData.long === 1">
|
|
|
- <ElDatePicker
|
|
|
- type="daterange"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
- v-model="formData.authTimeLongTerm"
|
|
|
- start-placeholder="开始时间"
|
|
|
- end-placeholder="开始时间"
|
|
|
- />
|
|
|
- </ElFormItem>
|
|
|
-
|
|
|
- <ElFormItem label="授权时间" prop="authTime" v-else>
|
|
|
- <div class="flex">
|
|
|
- <ElDatePicker type="date" value-format="YYYY-MM-DD" v-model="formData.authTime" placeholder="开始时间" />
|
|
|
- <p class="mx-[10px]">-</p>
|
|
|
- <p>长期有效</p>
|
|
|
- </div>
|
|
|
+ <ElDialog v-model="visible" title="新建供应商支持分类" center>
|
|
|
+ <ElForm
|
|
|
+ label-width="100px"
|
|
|
+ :rules="rules"
|
|
|
+ :model="formData"
|
|
|
+ :disabled="type === 'preview'"
|
|
|
+ ref="formRef"
|
|
|
+ >
|
|
|
+ <ElFormItem label="供应商" prop="supplierNo">
|
|
|
+ <SupplierQuery v-model="formData.supplierNo" placeholder="供应商" />
|
|
|
</ElFormItem>
|
|
|
|
|
|
- <ElFormItem label="授权图片" prop="brand_book">
|
|
|
- <ImageSingleUpload v-model="formData.brand_book" placeholder="授权图片" />
|
|
|
+ <ElFormItem label="商品分类">
|
|
|
+ <ElTable border size="small" :data="formData.cat_id">
|
|
|
+ <ElTableColumn label="序号" width="80px" type="index" show-overflow-tooltip />
|
|
|
+ <ElTableColumn label="分类名称" prop="search" show-overflow-tooltip />
|
|
|
+ <ElTableColumn label="操作" width="80px" show-overflow-tooltip>
|
|
|
+ <template #header>
|
|
|
+ <div class="flex justify-between">
|
|
|
+ <span>操作</span>
|
|
|
+ <ElButton
|
|
|
+ link
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ :icon="useRenderIcon('add')"
|
|
|
+ @click="categoryVisible = true"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template #="{ $index }">
|
|
|
+ <ElButton
|
|
|
+ link
|
|
|
+ type="danger"
|
|
|
+ size="small"
|
|
|
+ :icon="useRenderIcon('delete')"
|
|
|
+ @click="formData.cat_id.splice($index, 1)"></ElButton>
|
|
|
+ </template>
|
|
|
+ </ElTableColumn>
|
|
|
+ </ElTable>
|
|
|
</ElFormItem>
|
|
|
|
|
|
- <ElFormItem label="备注" prop="remark">
|
|
|
- <ElInput type="textarea" v-model="formData.remark" placeholder="备注" />
|
|
|
- </ElFormItem>
|
|
|
|
|
|
<ElFormItem>
|
|
|
<div class="w-full flex justify-end">
|
|
|
- <ElButton type="primary" :loading="loading" @click="onSubmit">提交</ElButton>
|
|
|
+ <ElButton type="primary" :loading="supportCreateTask.loading" @click="onSubmit">提交</ElButton>
|
|
|
</div>
|
|
|
</ElFormItem>
|
|
|
</ElForm>
|
|
|
+
|
|
|
+ <CategoryModal
|
|
|
+ v-model:visible="categoryVisible"
|
|
|
+ @change="handleCategoryChange"
|
|
|
+ />
|
|
|
</ElDialog>
|
|
|
</template>
|