Browse Source

添加联系记录等

lipenghui 5 months ago
parent
commit
4fd5c8319e

+ 2 - 2
src/views/supplier/base/form/SupplierInfoForm.vue

@@ -161,10 +161,10 @@
     </el-form>
     <el-form>
       <el-form-item style="float: right">
-        <el-button v-if="!isDetail" :loading="formLoading" type="primary" @click="submitForm">
+        <el-button v-if="!isDetail" :loading="formLoading" type="warning"  @click="submitForm">
           保存
         </el-button>
-        <el-button @click="close">返回</el-button>
+        <el-button @click="close" type="primary">返回</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>

+ 31 - 25
src/views/supplier/base/form/index.vue

@@ -11,7 +11,7 @@
           @sendParam="handleParamTransfer"
         />
       </el-tab-pane>
-      <el-tab-pane label="证件信息" name="sku">
+      <el-tab-pane label="证件信息" name="cert">
         <CertList
           ref="certRef"
           v-model:activeName="activeName"
@@ -20,30 +20,33 @@
           :receivedParam="sharedParam"
         />
       </el-tab-pane>
-      <!--      <el-tab-pane label="联系人" name="delivery">-->
-      <!--        <DeliveryForm-->
-      <!--          ref="deliveryRef"-->
-      <!--          v-model:activeName="activeName"-->
-      <!--          :is-detail="isDetail"-->
-      <!--          :propFormData="formData"-->
-      <!--        />-->
-      <!--      </el-tab-pane>-->
-      <!--      <el-tab-pane label="核心产品" name="description">-->
-      <!--        <DescriptionForm-->
-      <!--          ref="descriptionRef"-->
-      <!--          v-model:activeName="activeName"-->
-      <!--          :is-detail="isDetail"-->
-      <!--          :propFormData="formData"-->
-      <!--        />-->
-      <!--      </el-tab-pane>-->
-      <!--      <el-tab-pane label="联系记录" name="other">-->
-      <!--        <OtherForm-->
-      <!--          ref="otherRef"-->
-      <!--          v-model:activeName="activeName"-->
-      <!--          :is-detail="isDetail"-->
-      <!--          :propFormData="formData"-->
-      <!--        />-->
-      <!--      </el-tab-pane>-->
+      <el-tab-pane label="联系人信息" name="contact">
+        <ContactList
+          ref="contactRef"
+          v-model:activeName="activeName"
+          :is-detail="isDetail"
+          :propFormData="formData"
+          :receivedParam="sharedParam"
+        />
+      </el-tab-pane>
+            <el-tab-pane label="核心产品" name="core">
+              <CoreList
+                ref="coreRef"
+                v-model:activeName="activeName"
+                :is-detail="isDetail"
+                :propFormData="formData"
+                :receivedParam="sharedParam"
+              />
+            </el-tab-pane>
+            <el-tab-pane label="联系记录" name="connect">
+              <ConnectList
+                ref="connectRef"
+                v-model:activeName="activeName"
+                :is-detail="isDetail"
+                :propFormData="formData"
+                :receivedParam="sharedParam"
+              />
+            </el-tab-pane>
     </el-tabs>
     <!--    <el-form>-->
     <!--      <el-form-item style="float: right">-->
@@ -59,6 +62,9 @@
 import * as ProductSpuApi from '@/api/mall/product/spu'
 import SupplierInfoForm from '@/views/supplier/base/form/SupplierInfoForm.vue'
 import CertList from '@/views/supplier/certificate/index.vue'
+import ContactList from '@/views/supplier/contact/index.vue'
+import CoreList from '@/views/supplier/coreproduct/index.vue'
+import ConnectList from '@/views/supplier/connect/index.vue'
 import { Api, SupplierVO } from '@/api/supplier/base'
 
 defineOptions({ name: 'ProductSpuAdd' })

+ 0 - 10
src/views/supplier/certificate/CertificateForm.vue

@@ -7,16 +7,6 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <!--      <el-form-item label="供应商" prop="supplierId">-->
-      <!--        <el-select v-model="formData.supplierId" filterable placeholder="请选择">-->
-      <!--          <el-option-->
-      <!--            v-for="dict in supplierList"-->
-      <!--            :key="dict.id"-->
-      <!--            :label="dict.name"-->
-      <!--            :value="dict.id"-->
-      <!--          />-->
-      <!--        </el-select>-->
-      <!--      </el-form-item>-->
       <el-form-item label="证件类型" prop="type">
         <el-select v-model="formData.type" placeholder="请选择">
           <el-option

+ 1 - 2
src/views/supplier/certificate/index.vue

@@ -105,7 +105,7 @@
   <CertificateForm ref="formRef" :supplierId="{ receivedParam }" @success="getList" />
   <el-form>
     <el-form-item style="float: right">
-      <el-button @click="close">返回</el-button>
+      <el-button @click="close" type="primary">返回</el-button>
     </el-form-item>
   </el-form>
 </template>
@@ -152,7 +152,6 @@ const getList = async () => {
   supplierList.value = await SupplierBaseApi.Api.getAll()
   loading.value = true
   try {
-    debugger
     queryParams.supplierId = props.receivedParam === null?'0000000000':props.receivedParam
     const data = await CertificateApi.getCertificatePage(queryParams)
     list.value = data.list

+ 18 - 13
src/views/supplier/connect/ConnectRecordForm.vue

@@ -7,16 +7,16 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="供应商" prop="supplierId">
-        <el-select v-model="formData.supplierId" filterable placeholder="请选择">
-          <el-option
-            v-for="dict in supplierList"
-            :key="dict.id"
-            :label="dict.name"
-            :value="dict.id"
-          />
-        </el-select>
-      </el-form-item>
+<!--      <el-form-item label="供应商" prop="supplierId">-->
+<!--        <el-select v-model="formData.supplierId" filterable placeholder="请选择">-->
+<!--          <el-option-->
+<!--            v-for="dict in supplierList"-->
+<!--            :key="dict.id"-->
+<!--            :label="dict.name"-->
+<!--            :value="dict.id"-->
+<!--          />-->
+<!--        </el-select>-->
+<!--      </el-form-item>-->
       <!--      <el-form-item label="我方联系人" prop="username">-->
       <!--        <el-input v-model="formData.username" placeholder="请输入我方联系人姓名" />-->
       <!--      </el-form-item>-->
@@ -71,6 +71,9 @@ const formData = ref({
 })
 
 const formRef = ref() // 表单 Ref
+const props = defineProps({
+  supplierId: { type: Number, default: () => null }
+})
 const formRules = reactive<FormRules>({
   supplierId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
   contactName: [{ required: true, message: '供应商联系人不能为空', trigger: 'blur' }],
@@ -103,9 +106,11 @@ const submitForm = async () => {
   formLoading.value = true
   try {
     const data = formData.value as unknown as ConnectRecordVO
-    // const supplier = data.supplierId
-    // data.supplierId = supplier.id
-    // data.supplierName = supplier.name
+    if (!props.supplierId.receivedParam){
+      message.error("请先保存供应商");
+      return
+    }
+    data.supplierId = props.supplierId.receivedParam
     if (formType.value === 'create') {
       await ConnectRecordApi.createConnectRecord(data)
       message.success(t('common.createSuccess'))

+ 29 - 6
src/views/supplier/connect/index.vue

@@ -39,6 +39,7 @@
         <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
         <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
         <el-button
+          v-if="!isDetail"
           type="primary"
           plain
           @click="openForm('create')"
@@ -47,6 +48,7 @@
           <Icon icon="ep:plus" class="mr-5px" /> 新增
         </el-button>
         <el-button
+          v-if="!isDetail"
           type="success"
           plain
           @click="handleExport"
@@ -78,7 +80,7 @@
         :formatter="dateFormatter"
         width="180px"
       />
-      <el-table-column label="操作" align="center" min-width="120px">
+      <el-table-column label="操作" v-if="!isDetail" align="center" min-width="120px">
         <template #default="scope">
           <el-button
             link
@@ -107,7 +109,12 @@
   </ContentWrap>
 
   <!-- 表单弹窗:添加/修改 -->
-  <ConnectRecordForm ref="formRef" @success="getList" />
+  <ConnectRecordForm ref="formRef" :supplierId="{ receivedParam }" @success="getList" />
+  <el-form>
+    <el-form-item style="float: right">
+      <el-button type="primary" @click="close">返回</el-button>
+    </el-form-item>
+  </el-form>
 </template>
 
 <script setup lang="ts">
@@ -117,13 +124,19 @@ import { ConnectRecordApi, ConnectRecordVO } from '@/api/supplier/connect/index'
 import ConnectRecordForm from './ConnectRecordForm.vue'
 import {SupplierVO} from "@/api/supplier/base";
 import * as SupplierBaseApi from "@/api/supplier/base";
-
+import { propTypes } from '@/utils/propTypes'
+import {useTagsViewStore} from "@/store/modules/tagsView";
+const { delView } = useTagsViewStore() // 视图操作
+const { push, currentRoute } = useRouter() // 路由
 /** 供应商联系记录 列表 */
 defineOptions({ name: 'ConnectRecord' })
 
 const message = useMessage() // 消息弹窗
 const { t } = useI18n() // 国际化
-
+const props = defineProps({
+  isDetail: propTypes.bool.def(false), // 是否作为详情组件
+  receivedParam: { type: undefined, default: () => null }
+})
 const loading = ref(true) // 列表的加载中
 const list = ref<ConnectRecordVO[]>([]) // 列表的数据
 const total = ref(0) // 列表的总页数
@@ -146,20 +159,24 @@ const exportLoading = ref(false) // 导出的加载中
 
 /** 查询列表 */
 const getList = async () => {
+  supplierList.value = await SupplierBaseApi.Api.getAll()
   loading.value = true
   try {
+    queryParams.supplierId = props.receivedParam === null?'0000000000':props.receivedParam
     const data = await ConnectRecordApi.getConnectRecordPage(queryParams)
     list.value = data.list
     total.value = data.total
+    queryParams.supplierId = undefined
   } finally {
     loading.value = false
   }
 }
 
 /** 搜索按钮操作 */
-const handleQuery = () => {
+const handleQuery = async () => {
   queryParams.pageNo = 1
-  getList()
+  await getList()
+  supplierList.value = await SupplierBaseApi.Api.getAll()
 }
 
 /** 重置按钮操作 */
@@ -207,4 +224,10 @@ onMounted(async () => {
   await getList()
   supplierList.value = await SupplierBaseApi.Api.getAll()
 })
+const close = () => {
+  delView(unref(currentRoute))
+  push({ name: 'Suppliers',query: {
+      date: new Date().getTime(),
+    } })
+}
 </script>

+ 11 - 21
src/views/supplier/contact/ContactForm.vue

@@ -7,33 +7,19 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="供应商" prop="supplierId">
-        <el-select v-model="formData.supplierId" filterable placeholder="请选择">
-          <el-option
-            v-for="dict in supplierList"
-            :key="dict.id"
-            :label="dict.name"
-            :value="dict.id"
-          />
-        </el-select>
-      </el-form-item>
       <el-form-item label="姓名" prop="name">
         <el-input v-model="formData.name" placeholder="请输入姓名" />
       </el-form-item>
-      <el-form-item label="职务" prop="position">
-        <el-input v-model="formData.position" placeholder="请输入职务" />
-      </el-form-item>
       <el-form-item label="电话" prop="telephone">
         <el-input v-model="formData.telephone" placeholder="请输入电话" />
       </el-form-item>
+      <el-form-item label="职务" prop="position">
+        <el-input v-model="formData.position" placeholder="请输入职务" />
+      </el-form-item>
       <el-form-item label="邮箱" prop="email">
         <el-input v-model="formData.email" placeholder="请输入邮箱" />
       </el-form-item>
-      <!--      <el-form-item label="产品/业务模块" prop="productIds">-->
-      <!--        <el-input v-model="formData.productIds" placeholder="请输入联系人负责的产品/业务模块" />-->
-      <!--      </el-form-item>-->
       <el-form-item label="产品业务模块" prop="productIds">
-<!--        <el-input v-model="formData.productIds" placeholder="请输入联系人负责的产品/业务模块" />-->
         <el-select v-model="formData.productIds" filterable placeholder="请选择">
           <el-option
             v-for="dict in productList"
@@ -103,7 +89,9 @@ const formRules = reactive<FormRules>({
   ]
 })
 const formRef = ref() // 表单 Ref
-
+const props = defineProps({
+  supplierId: { type: Number, default: () => null }
+})
 /** 打开弹窗 */
 const open = async (type: string, id?: number) => {
   dialogVisible.value = true
@@ -133,9 +121,11 @@ const submitForm = async () => {
   formLoading.value = true
   try {
     const data = formData.value as unknown as ContactVO
-    // const supplier = data.supplierId;
-    // data.supplierId = supplier.id
-    // data.supplierName = supplier.name
+    if (!props.supplierId.receivedParam){
+      message.error("请先保存供应商");
+      return
+    }
+    data.supplierId = props.supplierId.receivedParam
     if (formType.value === 'create') {
       await ContactApi.createContact(data)
       message.success(t('common.createSuccess'))

+ 30 - 9
src/views/supplier/contact/index.vue

@@ -38,14 +38,14 @@
       <el-form-item>
         <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
         <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
-        <el-button
+        <el-button v-if="!isDetail"
           type="primary"
           plain
           @click="openForm('create')"
         >
           <Icon icon="ep:plus" class="mr-5px" /> 新增
         </el-button>
-        <el-button
+        <el-button v-if="!isDetail"
           type="success"
           plain
           @click="handleExport"
@@ -69,7 +69,7 @@
       <el-table-column label="职务" align="center" prop="position" />
       <el-table-column label="电话" align="center" prop="telephone" />
       <el-table-column label="邮箱" align="center" prop="email" />
-      <el-table-column label="联系人负责的产品/业务模块" align="center" prop="productIds" >
+      <el-table-column label="负责的产品/业务模块" align="center" prop="productIds" >
         <template #default="scope">
           <span>{{ productList.find((item) => item.id === scope.row.productIds)?.name }}</span>
         </template>
@@ -83,7 +83,7 @@
         :formatter="dateFormatter"
         width="180px"
       />
-      <el-table-column label="操作" align="center" min-width="120px">
+      <el-table-column label="操作" v-if="!isDetail" align="center" min-width="120px">
         <template #default="scope">
           <el-button
             link
@@ -114,7 +114,12 @@
   </ContentWrap>
 
   <!-- 表单弹窗:添加/修改 -->
-  <ContactForm ref="formRef" @success="getList" />
+  <ContactForm ref="formRef" :supplierId="{ receivedParam }" @success="getList" />
+  <el-form>
+    <el-form-item style="float: right">
+      <el-button @click="close" type="primary">返回</el-button>
+    </el-form-item>
+  </el-form>
 </template>
 
 <script setup lang="ts">
@@ -125,10 +130,16 @@ import ContactForm from './ContactForm.vue'
 import {SupplierVO} from "@/api/supplier/base";
 import * as SupplierBaseApi from "@/api/supplier/base";
 import * as SupplierDetailApi from "@/api/supplier/product/supplierdetail";
-
+import { propTypes } from '@/utils/propTypes'
+import {useTagsViewStore} from "@/store/modules/tagsView";
+const { delView } = useTagsViewStore() // 视图操作
+const { push, currentRoute } = useRouter() // 路由
 /** 供应商联系人 列表 */
 defineOptions({ name: 'SupplierContact' })
-
+const props = defineProps({
+  isDetail: propTypes.bool.def(false), // 是否作为详情组件
+  receivedParam: { type: undefined, default: () => null }
+})
 const message = useMessage() // 消息弹窗
 const { t } = useI18n() // 国际化
 const supplierList = ref([] as SupplierVO[])
@@ -156,19 +167,23 @@ const exportLoading = ref(false) // 导出的加载中
 /** 查询列表 */
 const getList = async () => {
   loading.value = true
+  supplierList.value = await SupplierBaseApi.Api.getAll()
   try {
+    queryParams.supplierId = props.receivedParam === null?'0000000000':props.receivedParam
     const data = await ContactApi.getContactPage(queryParams)
     list.value = data.list
     total.value = data.total
+    queryParams.supplierId = undefined
   } finally {
     loading.value = false
   }
 }
 
 /** 搜索按钮操作 */
-const handleQuery = () => {
+const handleQuery = async () => {
   queryParams.pageNo = 1
-  getList()
+  await getList()
+  supplierList.value = await SupplierBaseApi.Api.getAll()
 }
 
 /** 重置按钮操作 */
@@ -217,4 +232,10 @@ onMounted(async () => {
   supplierList.value = await SupplierBaseApi.Api.getAll()
   productList.value = await SupplierDetailApi.getAll()
 })
+const close = () => {
+  delView(unref(currentRoute))
+  push({ name: 'Suppliers',query: {
+      date: new Date().getTime(),
+    } })
+}
 </script>

+ 20 - 16
src/views/supplier/coreproduct/CoreProductForm.vue

@@ -7,19 +7,19 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="供应商" prop="supplierId">
-        <el-select v-model="formData.supplierId" filterable placeholder="请选择">
-          <el-option
-            v-for="dict in supplierList"
-            :key="dict.id"
-            :label="dict.name"
-            :value="dict.id"
-          />
-        </el-select>
-      </el-form-item>
-<!--      <el-form-item label="产品" prop="productId">-->
-<!--        <el-input v-model="formData.productId" placeholder="请输入产品" />-->
+<!--      <el-form-item label="供应商" prop="supplierId">-->
+<!--        <el-select v-model="formData.supplierId" filterable placeholder="请选择">-->
+<!--          <el-option-->
+<!--            v-for="dict in supplierList"-->
+<!--            :key="dict.id"-->
+<!--            :label="dict.name"-->
+<!--            :value="dict.id"-->
+<!--          />-->
+<!--        </el-select>-->
 <!--      </el-form-item>-->
+      <el-form-item label="产品" prop="productId">
+        <el-input v-model="formData.productId" placeholder="请输入产品" />
+      </el-form-item>
       <el-form-item label="产品名称" prop="productId">
         <!--        <el-input v-model="formData.productIds" placeholder="请输入联系人负责的产品/业务模块" />-->
         <el-select v-model="formData.productId" filterable placeholder="请选择">
@@ -72,7 +72,9 @@ const formRules = reactive<FormRules>({
   productId: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }],
 })
 const formRef = ref() // 表单 Ref
-
+const props = defineProps({
+  supplierId: { type: Number, default: () => null }
+})
 /** 打开弹窗 */
 const open = async (type: string, id?: number) => {
   dialogVisible.value = true
@@ -102,9 +104,11 @@ const submitForm = async () => {
   formLoading.value = true
   try {
     const data = formData.value as unknown as CoreProductVO
-    // const supplier = data.supplierId;
-    // data.supplierId = supplier.id
-    // data.supplierName = supplier.name
+    if (!props.supplierId.receivedParam){
+      message.error("请先保存供应商");
+      return
+    }
+    data.supplierId = props.supplierId.receivedParam
     if (formType.value === 'create') {
       await CoreProductApi.createCoreProduct(data)
       message.success(t('common.createSuccess'))

+ 29 - 6
src/views/supplier/coreproduct/index.vue

@@ -32,6 +32,7 @@
         <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
         <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
         <el-button
+          v-if="!isDetail"
           type="primary"
           plain
           @click="openForm('create')"
@@ -39,6 +40,7 @@
           <Icon icon="ep:plus" class="mr-5px" /> 新增
         </el-button>
         <el-button
+          v-if="!isDetail"
           type="success"
           plain
           @click="handleExport"
@@ -71,7 +73,7 @@
         :formatter="dateFormatter"
         width="180px"
       />
-      <el-table-column label="操作" align="center" min-width="120px">
+      <el-table-column label="操作" v-if="!isDetail" align="center" min-width="120px">
         <template #default="scope">
           <el-button
             link
@@ -102,7 +104,12 @@
   </ContentWrap>
 
   <!-- 表单弹窗:添加/修改 -->
-  <CoreProductForm ref="formRef" @success="getList" />
+  <CoreProductForm ref="formRef" :supplierId="{ receivedParam }" @success="getList" />
+  <el-form>
+    <el-form-item style="float: right">
+      <el-button type="primary" @click="close">返回</el-button>
+    </el-form-item>
+  </el-form>
 </template>
 
 <script setup lang="ts">
@@ -113,13 +120,19 @@ import CoreProductForm from './CoreProductForm.vue'
 import * as SupplierBaseApi from "@/api/supplier/base";
 import {SupplierVO} from "@/api/supplier/base";
 import * as SupplierDetailApi from "@/api/supplier/product/supplierdetail";
-
+import { propTypes } from '@/utils/propTypes'
+import {useTagsViewStore} from "@/store/modules/tagsView";
+const { delView } = useTagsViewStore() // 视图操作
+const { push, currentRoute } = useRouter() // 路由
 /** 供应商核心产品 列表 */
 defineOptions({ name: 'CoreProduct' })
 
 const message = useMessage() // 消息弹窗
 const { t } = useI18n() // 国际化
-
+const props = defineProps({
+  isDetail: propTypes.bool.def(false), // 是否作为详情组件
+  receivedParam: { type: undefined, default: () => null }
+})
 const loading = ref(true) // 列表的加载中
 const list = ref<CoreProductVO[]>([]) // 列表的数据
 const supplierList = ref([] as SupplierVO[])
@@ -139,20 +152,24 @@ const exportLoading = ref(false) // 导出的加载中
 
 /** 查询列表 */
 const getList = async () => {
+  supplierList.value = await SupplierBaseApi.Api.getAll()
   loading.value = true
   try {
+    queryParams.supplierId = props.receivedParam === null?'0000000000':props.receivedParam
     const data = await CoreProductApi.getCoreProductPage(queryParams)
     list.value = data.list
     total.value = data.total
+    queryParams.supplierId = undefined
   } finally {
     loading.value = false
   }
 }
 
 /** 搜索按钮操作 */
-const handleQuery = () => {
+const handleQuery = async () => {
   queryParams.pageNo = 1
-  getList()
+  await getList()
+  supplierList.value = await SupplierBaseApi.Api.getAll()
 }
 
 /** 重置按钮操作 */
@@ -201,4 +218,10 @@ onMounted(async () => {
   supplierList.value = await SupplierBaseApi.Api.getAll()
   productList.value = await SupplierDetailApi.getAll()
 })
+const close = () => {
+  delView(unref(currentRoute))
+  push({ name: 'Suppliers',query: {
+      date: new Date().getTime(),
+    } })
+}
 </script>