Просмотр исходного кода

fix: 活动服务成员、入库保证金接口联调

lirenjie 4 месяцев назад
Родитель
Сommit
0ba8a4ab39

+ 12 - 0
src/api/market-manage/activity-manage/index.js

@@ -11,6 +11,18 @@ export function getPersonalOriganization(id){
 export function addMember(params){
     return postRequest('/supports/activity/member/create',params)
 }
+/* 获取人员信息 */
+export function getMember(id){
+    return getRequest(`/supports/activity/member/${id}`)
+}
+/* 编辑人员信息 */
+export function updateMember(params){
+    return postRequest('/supports/activity/member/update',params)
+}
+/* 删除人员信息 */
+export function deleteMember(id){
+    return getRequest(`/supports/activity/member/delete/${id}`)
+}
 /* 标段创建 */
 export function addSectionSreation(params){
     return postRequest('/supports/project/section/create',params)

+ 2 - 2
src/views/market-manage/activity-manage/activity-management/components/basic-info/index.vue

@@ -46,8 +46,8 @@ const activityInfoDescriptionItems = ref([
         extraProps: {},
     },
     {
-        label: '活动地址',
-        value: [...new Set(`${(basicInfo.data.countryRegion ?? '') + (basicInfo.data.provinceName ?? '') + (basicInfo.data.cityName ?? '') + (basicInfo.data.districtName ?? '')}`)][0] ?? '未填写',
+        label: '活动地址', 
+        value: [...new Set(`${(basicInfo.data.countryRegion ?? '') + (basicInfo.data.provinceName ?? '') + (basicInfo.data.cityName ?? '') + (basicInfo.data.districtName ?? '')}`)].join('') ?? '未填写',
         extraProps: {},
     },
     {

+ 2 - 2
src/views/market-manage/activity-manage/activity-management/components/retention-transformation/index.vue

@@ -9,9 +9,9 @@
                     </a-button>
                 </div>
             </template>
-            <template #toolbarLeft>
+            <template #toolbarLeft={}>
                 <a-space>
-                    <span>累计留资客户 283人</span>
+                    <span>累计留资客户 283 人</span>
                 </a-space>
             </template>
         </bs-table>

+ 72 - 20
src/views/market-manage/activity-manage/activity-management/components/service-member/components/member-modal.vue

@@ -2,8 +2,8 @@
   <bs-modal :visible="modalOptions.visible" :width="modalOptions.width" :title="modalOptions.title"
     :modal-extra-props="modalOptions.modalExtraProps" @cancel="handleCancel" @ok="handleOk">
     <a-form :rules="rules" :model="formData">
-      <a-form-item label="营销人" name="marketer">
-        <OrgUserSelector v-model:selected-data="formData.marketer" :multiple="SELECT_MULTIPLE.ONE" />
+      <a-form-item label="营销人" name="marker">
+        <OrgUserSelector v-model:selected-data="formData.marker" :multiple="SELECT_MULTIPLE.ONE" />
       </a-form-item>
       <a-form-item label="营销团队" name="team">
         <OrgUserSelector v-model:selected-data="formData.team" :multiple="SELECT_MULTIPLE.ONE"
@@ -17,23 +17,32 @@ import { ref, watch } from 'vue';
 import BsModal, { useBsModal } from '/@/components/BsUi/Modal/index.js';
 import OrgUserSelector from '/@/components/BsUi/OrgUserSelector/index.vue';
 import { SCENE_TYPE, SELECT_MULTIPLE } from '/@/components/BsUi/constant.js';
-import { addMember, getPersonalOriganization } from "/@/api/market-manage/activity-manage";
+import { addMember, getMember, getPersonalOriganization, updateMember } from "/@/api/market-manage/activity-manage";
 import { isEmpty } from 'lodash';
+import { message } from 'ant-design-vue';
 const emit = defineEmits(['fetchTableData'])
-const props = defineProps(['title'])
+const props = defineProps(['title', 'id'])
 const formData = ref({
   marketer: '',
-  marketingTeam: ''
+  marker: '',
+  team: '',
+  marketingTeam: '',
+  activityId: props.id
 })
+const edit = ref(false)
 const rules = {
-  marketer: [{ required: true, message: '请选择营销人' }],
-  marketingTeam: [{ required: true, message: '请选择团队' }]
+  marker: [{ required: true, message: '请选择营销人' }],
+  team: [{ required: true, message: '请选择团队' }]
 }
-watch(() => formData.value.marketer, (value) => {
-  getPersonalOriganization(value.id).then((res) => {
-    formData.value.marketingTeam = res
-  })
-  console.log(value,formData.value);
+watch(() => formData.value.marker, (value) => {
+  console.log(value);
+  if (value) {
+    getPersonalOriganization(value.id).then((res) => {
+      formData.value.team = res.data[0]
+    })
+  }
+
+  console.log(value, formData.value);
 })
 const {
   modalOptions,
@@ -41,7 +50,8 @@ const {
   setModalPropsValue: setMVal,
 } = useBsModal({
   modalOptions: {
-    width: '25%',
+    // width: '25%',
+    size: 'middle',
     title: '',
     visible: false,
     modalExtraProps: {
@@ -54,10 +64,25 @@ const {
 });
 
 const showModal = (title, rowData) => {
-  // setMVal("width", "100%")
+  /* 编辑 */
   if (!isEmpty(rowData)) {
-    formData.value = rowData
+    getMember(rowData.id).then((res) => {
+      formData.value = res.data
+      formData.value.marker = res.data.marketerDTOs[0]
+      formData.value.team = res.data.marketingTeamDTOs[0]
+    })
+    // formData.value = rowData
+    edit.value = true
     console.log(title, rowData);
+  } else {
+    formData.value = {
+      marketer: '',
+      marker: '',
+      team: '',
+      marketingTeam: '',
+      activityId: props.id
+    }
+    edit.value = false
   }
   setMVal('title', title);
   setMVal('visible', true);
@@ -69,11 +94,38 @@ const handleCancel = () => {
 
 const handleOk = ({ }) => {
   setMVal("modalExtraProps.okButtonProps.loading", true)
-  addMember(formData.value).then((res) => {
-    setMVal("modalExtraProps.okButtonProps.loading", false)
-    setMVal('visible', false);
-    emit('fetchTableData')
-  })
+  const params = formData.value
+  params.marketer = params.marker.name
+  params.marketingTeam = params.team.name
+  params.employeeId = params.marker.id
+  if (edit.value) {
+    if (params.createUserId) {
+      params.createUserId = params.createUserId.loginName
+    }
+    if (params.updateUserId) {
+      params.updateUserId = params.updateUserId.loginName
+    }
+    updateMember(params).then((res) => {
+      if (!res.ok) {
+        message.error(res.msg)
+        return
+      }
+      emit('fetchTableData')
+      message.success('新增成功')
+      setMVal('visible', false);
+    })
+  } else {
+    addMember(params).then((res) => {
+      if (!res.ok) {
+        message.error(res.msg)
+        return
+      }
+      emit('fetchTableData')
+      message.success('新增成功')
+      setMVal('visible', false);
+    })
+  }
+  setMVal("modalExtraProps.okButtonProps.loading", false)
 };
 
 defineExpose({

+ 17 - 4
src/views/market-manage/activity-manage/activity-management/components/service-member/index.vue

@@ -10,16 +10,17 @@
             </template>
         </bs-table>
     </div>
-    <memberModal :title="title" ref="memberModalRef" @fetchTableData="fetchTableData"/>
+    <memberModal :title="title" :id="id" ref="memberModalRef" @fetchTableData="fetchTableData" />
 </template>
 <script setup lang="jsx">
 import { ref, reactive } from "vue"
 import { useRouter } from "vue-router";
-import { Modal } from "ant-design-vue";
+import { message, Modal } from "ant-design-vue";
 
 import BsTable, { useBsTable } from '/@/components/BsUi/Table/index.js';
 import { DISPLAY_STATE } from '/@/components/BsUi/constant.js';
 import memberModal from "./components/member-modal.vue";
+import { deleteMember } from "/@/api/market-manage/activity-manage";
 const { id } = defineProps(['id'])
 const router = useRouter()
 const memberModalRef = ref(null)
@@ -63,6 +64,11 @@ const {
                 {
                     field: 'createUserId',
                     title: '操作人',
+                    slots: {
+                        default({ row, column }) {
+                            return row.createUserId?row.createUserId.loginName:'';
+                        },
+                    },
                 },
                 {
                     field: 'createTime',
@@ -99,9 +105,16 @@ const {
                                     onClick({ row }) {
                                         Modal.confirm({
                                             title: '提示',
-                                            content: `确定要删除${row.activityName}吗?`,
+                                            content: `确定要删除${row.marketer}人员信息吗?`,
                                             onOk: () => {
-                                                
+                                                deleteMember(row.id).then((res)=>{
+                                                    if(!res.ok){
+                                                        message.error(res.msg)
+                                                        return
+                                                    }
+                                                    message.success('删除成功')
+                                                    fetchTableData()
+                                                })
                                             },
                                         });
                                     },

+ 0 - 4
src/views/market-manage/service-provider-manage/service-provider-detail/components/basic-info/index.vue

@@ -2,10 +2,6 @@
     <div class="basic-info">
         <bs-contents-wrapper>
             <bs-descriptions :items="activityInfoDescriptionItems" title="服务商信息">
-                <!-- <template #name1_label_slot>
-              <span style="color: red">label插槽</span>
-            </template>
-<template #name1_value_slot> <span style="color: blue">value插槽</span></template> -->
             </bs-descriptions>
             <bs-descriptions :items="otherInfoDescriptionItems" title="其他信息">
                 <template #Attachment_value_slot>

+ 9 - 17
src/views/market-manage/service-provider-manage/service-provider-detail/components/guarantee-sum/components/storage-deposit.vue

@@ -17,13 +17,14 @@ import { message } from "ant-design-vue";
 import BsTable, { useBsTable } from '/@/components/BsUi/Table/index.js';
 import { DISPLAY_STATE } from '/@/components/BsUi/constant.js';
 import useBsDict from "/@/utils/dict.js";
+const {id} = defineProps(['id'])
 const {
     tableOptions,
     setTablePropsValue: setValue,
     getTablePropsValue: getValue,
 } = useBsTable({
     tableOptions: {
-        url: '',
+        url: '/supports/provider/margin/query',
         gridOptions: {
             loading: false,
             columns: [
@@ -32,36 +33,27 @@ const {
                     width: 80,
                 },
                 {
-                    field: 'storeStatus',
+                    field: 'marginName',
                     title: '名称',
-                    slots: {
-                        default: ({ row }) => {
-                            if (row.storeStatus === 0) {
-                                return <span style={{ color: '#ed8a94' }}> 已认证 </span>
-                            } else if (row.storeStatus === 1) {
-                                return <span style={{ color: '#dc861f' }}> 不合格 </span>
-                            }
-                        }
-                    }
                 },
                 {
-                    field: '',
+                    field: 'serialNumber',
                     title: '流水号',
                 },
                 {
-                    field: 'providerName',
+                    field: 'marginAmount',
                     title: '保证金金额(元)',
                 },
                 {
-                    field: 'id',
+                    field: 'initiatedTime',
                     title: '发起日期',
                 },
                 {
-                    field: 'address',
+                    field: 'businessCommissioner',
                     title: '商务专员',
                 },
                 {
-                    field: 'countryRegion',
+                    field: 'createTime',
                     title: '操作时间',
                 },
                 {
@@ -130,7 +122,7 @@ const {
         },
         tableSearchBeforeBiz() {
             const searchParams = getValue('searchConfig.data');
-            setValue('searchConfig.data', { ...searchParams, bizModel: 'STORE-1' });
+            setValue('searchConfig.data', { ...searchParams, providerId: id });
         },
     },
 });

+ 2 - 2
src/views/market-manage/service-provider-manage/service-provider-detail/components/guarantee-sum/index.vue

@@ -2,14 +2,14 @@
     <div class="">
         <a-tabs v-model:activeKey="activeKey">
             <a-tab-pane :key="item.key" :tab="item.title" v-for="item in tabOptions" force-render>
-                <component :is="item.component"></component>
+                <component :is="item.component" :id='id'></component>
             </a-tab-pane>
         </a-tabs>
     </div>
 </template>
 <script setup lang="jsx">
 import { defineAsyncComponent } from 'vue';
-
+const {id} = defineProps(['id'])
 const tabOptions = [
     {
         key: '1',