Quellcode durchsuchen

fix: 完善活动管理详情页、服务商管理联调接口

lirenjie vor 4 Monaten
Ursprung
Commit
e71ef3ef37

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

@@ -0,0 +1,5 @@
+import { getRequest, postRequest } from '/src/lib/axios';
+/* 获取活动详情 */
+export function getActivityDetail(id){
+    return getRequest(`/supports/activity/query/${id}`)
+}

+ 131 - 0
src/views/market-manage/activity-manage/activity-management/components/activity-info/index.vue

@@ -0,0 +1,131 @@
+<template>
+    <div class="activity-info">
+        <bs-table v-bind="tableOptions">
+            <template #toolbarTop>
+                <div class="toolbarTop">
+                    <a-button type="primary">
+                        <span>上传附件</span>
+                    </a-button>
+                </div>
+            </template>
+        </bs-table>
+    </div>
+</template>
+<script setup lang="jsx">
+import { ref, reactive } from "vue"
+import { useRouter } from "vue-router";
+import { Modal } from "ant-design-vue";
+import BsTable, { useBsTable } from '/@/components/BsUi/Table/index.js';
+import { DISPLAY_STATE } from '/@/components/BsUi/constant.js';
+const { id } = defineProps(['id'])
+const router = useRouter()
+const {
+    tableOptions,
+    setTablePropsValue: setValue,
+    getTablePropsValue: getValue,
+} = useBsTable({
+    tableOptions: {
+        url: '/supports/activity/attachment/queryPage',
+        gridOptions: {
+            loading: false,
+            columns: [
+                {
+                    type: 'seq',
+                    width: 80,
+                },
+                {
+                    field: 'activityName',
+                    title: '附件名称',
+                },
+                {
+                    field: 'activityCode',
+                    title: '附件大小',
+
+                },
+                {
+                    field: 'activityType',
+                    title: '操作人',
+                },
+                {
+                    field: 'address',
+                    title: '操作时间',
+                },
+                {
+                    // fixed: 'right',
+                    cellRender: {
+                        name: 'CellOption',
+                        extraProps: {
+                            buttons: [
+                                {
+                                    title: '预览',
+                                    code: 'view',
+                                    display: ({ row }) => {
+                                        return DISPLAY_STATE.VISIBLE;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) {
+                                        // router.push('/market-manage/activity-manage/activity-management/detail')
+                                    },
+                                    extraProps: {},
+                                },
+                                {
+                                    title: '编辑',
+                                    code: 'edit',
+                                    display: ({ row }) => {
+                                        return DISPLAY_STATE.VISIBLE;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) { },
+                                    extraProps: {},
+                                }, {
+                                    title: '删除',
+                                    code: 'delete',
+                                    display: ({ row }) => {
+                                        return DISPLAY_STATE.VISIBLE;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) {
+                                        Modal.confirm({
+                                            title: '提示',
+                                            content: `确定要删除${row.activityName}吗?`,
+                                            onOk: () => {
+
+                                            },
+                                        });
+                                    },
+                                    extraProps: {
+                                        danger: true,
+                                    },
+                                },
+                            ],
+                        },
+                    },
+                },
+            ],
+        },
+        pagerConfig: {
+            enabled: true,
+            pageSize: 10,
+            pageNum: 1,
+            total: 0,
+            isFixed: false
+        },
+        toolbarConfig: {
+        },
+        tableSearchBeforeBiz() {
+            const searchParams = getValue('searchConfig.data');
+            setValue('searchConfig.data', { ...searchParams, id: id, type: 'INFOR' });
+        },
+    },
+});
+function fetchTableData() {
+
+}
+</script>
+<style lang="scss" scoped></style>

+ 125 - 0
src/views/market-manage/activity-manage/activity-management/components/activity-summary/index.vue

@@ -0,0 +1,125 @@
+<template>
+    <div class="activity-summary">
+        <bs-table v-bind="tableOptions">
+            <template #toolbarTop>
+                <div class="toolbarTop">
+                    <a-button type="primary">
+                        <span>上传活动总结</span>
+                    </a-button>
+                </div>
+            </template>
+        </bs-table>
+    </div>
+</template>
+<script setup lang="jsx">
+import { ref, reactive } from "vue"
+import BsTable, { useBsTable } from '/@/components/BsUi/Table/index.js';
+import { DISPLAY_STATE } from '/@/components/BsUi/constant.js';
+import { useRouter } from "vue-router";
+const { id } = defineProps(['id'])
+const router = useRouter()
+const {
+    tableOptions,
+    setTablePropsValue: setValue,
+    getTablePropsValue: getValue,
+} = useBsTable({
+    tableOptions: {
+        url: '/supports/activity/attachment/queryPage',
+        gridOptions: {
+            loading: false,
+            columns: [
+                {
+                    type: 'seq',
+                    width: 80,
+                },
+                {
+                    field: 'activityName',
+                    title: '附件名称',
+                },
+                {
+                    field: 'activityCode',
+                    title: '附件大小',
+
+                },
+                {
+                    field: 'activityType',
+                    title: '操作人',
+                },
+                {
+                    field: 'address',
+                    title: '操作时间',
+                },
+                {
+                    // fixed: 'right',
+                    cellRender: {
+                        name: 'CellOption',
+                        extraProps: {
+                            buttons: [
+                                {
+                                    title: '预览',
+                                    code: 'view',
+                                    display: ({ row }) => {
+                                        return DISPLAY_STATE.VISIBLE;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) {
+                                        // router.push('/market-manage/activity-manage/activity-management/detail')
+                                    },
+                                    extraProps: {},
+                                },
+                                {
+                                    title: '编辑',
+                                    code: 'edit',
+                                    display: ({ row }) => {
+                                        return DISPLAY_STATE.VISIBLE;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) { },
+                                    extraProps: {},
+                                }, {
+                                    title: '删除',
+                                    code: 'delete',
+                                    display: ({ row }) => {
+                                        return DISPLAY_STATE.VISIBLE;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) { },
+                                    extraProps: {
+                                        danger: true,
+                                    },
+                                },
+                            ],
+                        },
+                    },
+                },
+            ],
+        },
+        pagerConfig: {
+            enabled: true,
+            pageSize: 10,
+            pageNum: 1,
+            total: 0,
+            isFixed: false
+        },
+        toolbarConfig: {
+
+        },
+         tableSearchBeforeBiz() {
+            const searchParams = getValue('searchConfig.data');
+            setValue('searchConfig.data', { ...searchParams, id: id ,type:'SUM'});
+        },
+    },
+});
+function fetchTableData() {
+
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

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

@@ -0,0 +1,92 @@
+<template>
+    <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>
+
+                </template>
+            </bs-descriptions>
+        </bs-contents-wrapper>
+    </div>
+</template>
+<script setup lang="ts">
+import { ref, reactive } from "vue"
+import { BsDescriptions, BsContentsWrapper } from '/@/components/BsUi/index.js';
+import useBsDict from "/@/utils/dict.js";
+const basicInfo = defineProps(['data'])
+console.log(basicInfo);
+
+const activityInfoDescriptionItems = ref([
+    {
+        label: '活动名称',
+        value: basicInfo.data['activityName'],
+        extraProps: {
+            span: 2
+        },
+    },
+    {
+        label: '类型',
+        value: basicInfo.data['activityType'][0].valueName,
+        extraProps: {},
+    },
+    {
+        label: '活动负责人',
+        value: basicInfo.data['activityHead'],
+        extraProps: {},
+    },
+    {
+        label: '活动地址',
+        value: basicInfo.data['countryRegion']+basicInfo.data['provinceName'] + basicInfo.data['cityName'] + basicInfo.data['districtName'],
+        extraProps: {},
+    },
+    {
+        label: '详细地址',
+        value: basicInfo.data['address'],
+        extraProps: {},
+    },
+    {
+        label: '活动周期',
+        value: basicInfo.data['activityDate'],
+        extraProps: {},
+    },
+    {
+        label: '活动天数',
+        value: basicInfo.data['activityDay'],
+        extraProps: {},
+    },
+    {
+        label: '活动预算',
+        value: basicInfo.data['activityBudget'],
+        extraProps: {},
+    },
+    {
+        label: '活动说明',
+        value: basicInfo.data['activityDescription'],
+        extraProps: {},
+    },
+    {
+        label: '活动目标',
+        value: basicInfo.data['activityTarget'],
+        // labelSlot: 'name1_label_slot',
+        // valueSlot: 'name1_value_slot',
+        extraProps: {},
+    },
+]);
+const otherInfoDescriptionItems = ref([
+    {
+        label: '附件',
+        field: 'name1',
+        value: '韩晓辉1',
+        // labelSlot: 'Attachment_label_slot',
+        valueSlot: 'Attachment_value_slot',
+        extraProps: {},
+    },
+])
+</script>
+<style lang="scss" scoped></style>

+ 0 - 96
src/views/market-manage/activity-manage/activity-management/components/detail.vue

@@ -1,96 +0,0 @@
-<template>
-  <div class="page-detail">
-    <page-detail-layout :tabs="tabs" v-model:tab-active-key="tabActiveKey">
-      <template #tab1>
-        <bs-contents-wrapper>
-          <bs-descriptions :items="bsDescriptionItems" title="表头1">
-            <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="bsDescriptionItems" title="表头2">
-            <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="bsDescriptionItems" title="表头3">
-            <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 title="表头4" >
-            内容4
-          </bs-descriptions>
-        </bs-contents-wrapper>
-      </template>
-      <template #tab2>tab2</template>
-      <template #tab3>tab3</template>
-    </page-detail-layout>
-  </div>
-</template>
-
-<script setup>
-  import { ref } from 'vue';
-  import PageDetailLayout from '/@/components/business/page-detail-layout/index.vue';
-  import { BsDescriptions, BsContentsWrapper } from '/@/components/BsUi/index.js';
-
-  import selectedIcon from '/@/assets/images/page-detail-layout/selectedIcon.png';
-  import unSelectedIcon from '/@/assets/images/page-detail-layout/unSelectedIcon.png';
-  const tabActiveKey = ref('tab1');
-
-  const tabs = ref([
-    {
-      title: '基本信息',
-      key: '0',
-      slotName: 'tab1',
-      selectedIcon: selectedIcon,
-      unSelectedIcon: unSelectedIcon,
-    },
-    {
-      title: 'tab2',
-      key: 'tab2',
-      slotName: 'tab2',
-      selectedIcon: selectedIcon,
-      unSelectedIcon: unSelectedIcon,
-    },
-    {
-      title: 'tab3',
-      key: 'tab3',
-      slotName: 'tab3',
-      selectedIcon: selectedIcon,
-      unSelectedIcon: unSelectedIcon,
-    },
-  ]);
-
-  const bsDescriptionItems = ref([
-    {
-      label: '姓名',
-      field: 'name',
-      value: '韩晓辉',
-      extraProps: {},
-    },
-    {
-      label: '姓名1',
-      field: 'name1',
-      value: '韩晓辉1',
-      labelSlot: 'name1_label_slot',
-      valueSlot: 'name1_value_slot',
-      extraProps: {},
-    },
-    {
-      label: '姓名1',
-      field: 'name1',
-      value: '韩晓辉1',
-      extraProps: {},
-    },
-  ]);
-</script>
-
-<style lang="scss" scoped>
-  .page-detail {
-    width: 100%;
-  }
-</style>

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

@@ -0,0 +1,159 @@
+<template>
+    <div class="retention-transformation">
+        <bs-table v-bind="tableOptions">
+            <template #toolbarTop>
+                <div class="toolbarTop">
+                    <div></div>
+                    <a-button type="primary">
+                        <span>下载活动码</span>
+                    </a-button>
+                </div>
+            </template>
+            <template #toolbarLeft>
+                <a-space>
+                    <span>累计留资客户 283人</span>
+                </a-space>
+            </template>
+        </bs-table>
+    </div>
+</template>
+<script setup lang="jsx">
+import { ref, reactive } from "vue"
+import BsTable, { useBsTable } from '/@/components/BsUi/Table/index.js';
+import { DISPLAY_STATE } from '/@/components/BsUi/constant.js';
+import { useRouter } from "vue-router";
+const { id } = defineProps(['id'])
+const router = useRouter()
+const {
+    tableOptions,
+    setTablePropsValue: setValue,
+    getTablePropsValue: getValue,
+} = useBsTable({
+    tableOptions: {
+        url: '/supports/retention/activity/queryPage',
+        gridOptions: {
+            loading: false,
+            columns: [
+                {
+                    type: 'seq',
+                    width: 80,
+                },
+                {
+                    field: 'knowRunyang',
+                    title: '是否了解润扬',
+                },
+                {
+                    field: 'companyName',
+                    title: '公司名称',
+
+                },
+                {
+                    field: 'address',
+                    title: '公司地址',
+                },
+                {
+                    field: 'contact',
+                    title: '联系人',
+                },
+                {
+                    field: 'contactPhone',
+                    title: '联系电话',
+                },
+                {
+                    field: 'post',
+                    title: '职务',
+                },
+                {
+                    field: 'needDescription',
+                    title: '需求说明',
+                },
+                {
+                    field: 'communicativeProject',
+                    title: '是否沟通项目',
+                },
+                {
+                    field: 'projectDescription',
+                    title: '项目基本描述',
+                },
+                {
+                    field: 'follow',
+                    title: '是否跟进',
+                },
+                {
+                    field: 'followLog',
+                    title: '跟进记录',
+                },
+                {
+                    field: 'createTime',
+                    title: '提交时间',
+                },
+                {
+                    // fixed: 'right',
+                    cellRender: {
+                        name: 'CellOption',
+                        extraProps: {
+                            buttons: [
+                                {
+                                    title: '发起跟进',
+                                    code: 'add',
+                                    display: ({ row }) => {
+                                        return row.name !== 'hanxiaohui0' ? DISPLAY_STATE.VISIBLE : DISPLAY_STATE.HIDDEN;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) {
+                                        console.log("row", row);
+                                        // message.success(row.name)
+                                    },
+                                    extraProps: {},
+                                },
+                                {
+                                    title: '查看详情',
+                                    code: 'view',
+                                    display: ({ row }) => {
+                                        return DISPLAY_STATE.VISIBLE;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) {
+                                        // router.push('/market-manage/activity-manage/activity-management/detail')
+                                    },
+                                    extraProps: {},
+                                },
+                            ],
+                        },
+                    },
+                },
+            ],
+        },
+        pagerConfig: {
+            enabled: true,
+            pageSize: 10,
+            pageNum: 1,
+            id: id,
+            total: 0,
+            isFixed: false
+        },
+        toolbarConfig: {
+        },
+        tableSearchBeforeBiz() {
+            const searchParams = getValue('searchConfig.data');
+            setValue('searchConfig.data', { ...searchParams, id: id });
+        },
+    },
+});
+function fetchTableData() {
+
+}
+</script>
+<style lang="scss" scoped>
+.retention-transformation {
+    .toolbarTop {
+        display: flex;
+        flex-direction: row;
+        justify-content: space-between;
+    }
+}
+</style>

+ 84 - 0
src/views/market-manage/activity-manage/activity-management/components/service-member/components/member-modal.vue

@@ -0,0 +1,84 @@
+<template>
+  <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="activityName">
+        <OrgUserSelector v-model:selected-data="formData.activityName" :multiple="SELECT_MULTIPLE.ONE" />
+      </a-form-item>
+      <a-form-item label="营销团队" name="orgSelector">
+        <OrgUserSelector v-model:selected-data="formData.orgSelector" :multiple="SELECT_MULTIPLE.ONE" :scene-type="SCENE_TYPE.ORG" />
+      </a-form-item>
+    </a-form>
+  </bs-modal>
+</template>
+<script setup lang="jsx">
+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 { isEmpty } from 'lodash';
+
+const props = defineProps(['title'])
+const formData = ref({
+  activityName: '',
+  orgSelector:''
+})
+const rules = {
+  activityName:[{required:true,message:'请选择营销人'}],
+  orgSelector:[{required:true,message:'请选择团队'}]
+}
+watch(() => formData.value.orgSelector, (value) => {
+  console.log(value);
+})
+const {
+  modalOptions,
+  getModalPropsValue: getMVal,
+  setModalPropsValue: setMVal,
+} = useBsModal({
+  modalOptions: {
+    width: '25%',
+    title: '',
+    visible: false,
+    modalExtraProps: {
+      destroyOnClose: true,
+      okButtonProps: {
+        loading: false
+      }
+    },
+  },
+});
+
+const showModal = (title, rowData) => {
+  // setMVal("width", "100%")
+  if (!isEmpty(rowData)) {
+    formData.value = rowData
+    console.log(title, rowData);
+  }
+  setMVal('title', title);
+  setMVal('visible', true);
+};
+
+const handleCancel = () => {
+  setMVal('visible', false);
+};
+
+const handleOk = ({ }) => {
+  setMVal("modalExtraProps.okButtonProps.loading", true)
+  setTimeout(() => {
+    setMVal("modalExtraProps.okButtonProps.loading", false)
+    setMVal('visible', false);
+  }, 1000)
+
+};
+
+defineExpose({
+  showModal,
+});
+</script>
+
+<style lang="scss" scoped>
+.content {
+  width: 100%;
+  height: 900px;
+}
+</style>

+ 143 - 0
src/views/market-manage/activity-manage/activity-management/components/service-member/index.vue

@@ -0,0 +1,143 @@
+<template>
+    <div class="service-member">
+        <bs-table v-bind="tableOptions">
+            <template #toolbarTop>
+                <div class="toolbarTop">
+                    <a-button type="primary" @click="openModal('新增成员', null)">
+                        <span>添加成员</span>
+                    </a-button>
+                </div>
+            </template>
+        </bs-table>
+    </div>
+    <memberModal :title="title" ref="memberModalRef" />
+</template>
+<script setup lang="jsx">
+import { ref, reactive } from "vue"
+import { useRouter } from "vue-router";
+
+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 { Modal } from "ant-design-vue";
+const { id } = defineProps(['id'])
+const router = useRouter()
+const memberModalRef = ref(null)
+const title = ref('新增成员')
+function openModal(title, data) {
+    memberModalRef.value.showModal(title, data)
+}
+/* 表格 */
+const {
+    tableOptions,
+    setTablePropsValue: setValue,
+    getTablePropsValue: getValue,
+} = useBsTable({
+    tableOptions: {
+        url: '/supports/activity/member/queryPage',
+        gridOptions: {
+            loading: false,
+            columns: [
+                {
+                    type: 'seq',
+                    width: 80,
+                },
+                {
+                    field: 'marketer',
+                    title: '营销人',
+                },
+                {
+                    field: 'marketingTeam',
+                    title: '营销团队',
+
+                },
+                {
+                    field: 'permissions',
+                    title: '权限',
+                },
+                {
+                    field: '',
+                    title: '提成比例',
+                },
+                {
+                    field: 'createUserId',
+                    title: '操作人',
+                },
+                {
+                    field: 'createTime',
+                    title: '操作时间',
+                },
+                {
+                    // fixed: 'right',
+                    cellRender: {
+                        name: 'CellOption',
+                        extraProps: {
+                            buttons: [
+                                {
+                                    title: '编辑',
+                                    code: 'edit',
+                                    display: ({ row }) => {
+                                        return DISPLAY_STATE.VISIBLE;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) {
+                                        openModal('编辑成员', row)
+                                    },
+                                    extraProps: {},
+                                }, {
+                                    title: '删除',
+                                    code: 'delete',
+                                    display: ({ row }) => {
+                                        return DISPLAY_STATE.VISIBLE;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) {
+                                        Modal.confirm({
+                                            title: '提示',
+                                            content: `确定要删除${row.activityName}吗?`,
+                                            onOk: () => {
+                                                
+                                            },
+                                        });
+                                    },
+                                    extraProps: {
+                                        danger: true,
+                                    },
+                                },
+                            ],
+                        },
+                    },
+                },
+            ],
+        },
+        pagerConfig: {
+            enabled: true,
+            pageSize: 10,
+            pageNum: 1,
+            total: 0,
+            isFixed: false
+        },
+        toolbarConfig: {
+
+        },
+        tableSearchBeforeBiz() {
+            const searchParams = getValue('searchConfig.data');
+            setValue('searchConfig.data', { ...searchParams, id: id });
+        },
+    },
+});
+function fetchTableData() {
+
+}
+</script>
+<style lang="scss" scoped>
+.toolbarTop {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+}
+</style>

+ 184 - 0
src/views/market-manage/activity-manage/activity-management/detail.vue

@@ -0,0 +1,184 @@
+<template>
+  <div class="page-detail">
+    <page-detail-layout :tabs="tabs" v-model:tab-active-key="tabActiveKey" :index-config="indexConfig"
+      :title="descData.activityName" v-if="descData !== null">
+      <!-- <template #titleRight>
+        <img src="/@/assets/images/page-detail-layout/customer/SS_user.png" alt="" />
+        <a-tag color="blue">企业单位</a-tag>
+      </template> -->
+
+      <template #toolBtn>
+        <a-button ghost type="primary" size="small">编辑</a-button>
+      </template>
+
+      <template #titleBottom>
+        <a-tag color="#f0f4fe" v-for="(tagItem, tagIndex) in tagList" :key="tagIndex">
+          <div class="tag-stl">
+            <img :src="tagItem.icon" alt="" />
+            <span class="title-render">{{ tagItem.title }}</span>
+          </div>
+        </a-tag>
+      </template>
+
+      <template #basicInfo>
+        <basicInfo :data="descData" />
+      </template>
+      <template #retentionTransformation>
+        <retentionTransformation :id="id" />
+      </template>
+      <template #serviceMember>
+        <serviceMember :id="id" />
+      </template>
+      <template #activityInfo>
+        <activityInfo :id="id" />
+      </template>
+      <template #activitySummary>
+        <activitySummary :id="id" />
+      </template>
+    </page-detail-layout>
+  </div>
+</template>
+
+<script setup>
+import { onMounted, ref } from 'vue';
+import { useRoute } from 'vue-router';
+import PageDetailLayout from '/@/components/business/page-detail-layout/index.vue';
+import selectedIcon from '/@/assets/images/page-detail-layout/selectedIcon.png';
+import unSelectedIcon from '/@/assets/images/page-detail-layout/unSelectedIcon.png';
+import basicInfo from './components/basic-info/index.vue'
+import retentionTransformation from './components/retention-transformation/index.vue'
+import serviceMember from './components/service-member/index.vue'
+import activityInfo from './components/activity-info/index.vue'
+import activitySummary from './components/activity-summary/index.vue'
+import { getActivityDetail } from '/@/api/market-manage/activity-manage';
+const route = useRoute()
+const { id } = route.query
+const descData = ref(null)
+onMounted(() => {
+  getActivityDetail(id).then((res) => {
+    descData.value = res.data
+    indexConfig.value = {
+      sourceData: [
+        {
+          label: '活动状态',
+          value: descData.value['activityStatus'],
+        },
+        {
+          label: '活动预算金额',
+          value: descData.value['activityBudget'],
+        },
+        {
+          label: '活动负责人',
+          value:  descData.value['activityHead'],
+        },
+        {
+          label: '联系电话',
+          value: descData.value['headPhone'],
+        },
+      ],
+      labelKey: 'label',
+      valueKey: 'value',
+    }
+  })
+})
+const tabActiveKey = ref('0');
+
+const tabs = ref([
+  {
+    title: '基本信息',
+    key: '0',
+    slotName: 'basicInfo',
+    selectedIcon: selectedIcon,
+    unSelectedIcon: unSelectedIcon,
+  },
+  {
+    title: '留资转化',
+    key: '1',
+    slotName: 'retentionTransformation',
+    selectedIcon: selectedIcon,
+    unSelectedIcon: unSelectedIcon,
+  },
+  {
+    title: '活动数据',
+    key: '2',
+    slotName: 'activityData',
+    selectedIcon: selectedIcon,
+    unSelectedIcon: unSelectedIcon,
+  },
+  {
+    title: '服务成员',
+    key: '3',
+    slotName: 'serviceMember',
+    selectedIcon: selectedIcon,
+    unSelectedIcon: unSelectedIcon,
+  },
+  {
+    title: '活动资料',
+    key: '4',
+    slotName: 'activityInfo',
+    selectedIcon: selectedIcon,
+    unSelectedIcon: unSelectedIcon,
+  },
+  {
+    title: '活动总结',
+    key: '5',
+    slotName: 'activitySummary',
+    selectedIcon: selectedIcon,
+    unSelectedIcon: unSelectedIcon,
+  },
+]);
+
+const tagList = [
+  {
+    title: '活动ID:',
+    // icon: getImgUrl('icon-tianyancha'),
+  },
+  {
+    title: '山东省环境治理中心',
+    // icon: getImgUrl('icon-xiansuodengji'),
+  },
+  {
+    title: '地址:',
+    // icon: getImgUrl('icon-biaoqianguanli'),
+  },
+]
+const indexConfig = ref({
+  sourceData: [
+    {
+      label: '活动状态',
+      value: '',
+    },
+    {
+      label: '活动预算金额',
+      // value: descData.value['activityBudget'],
+    },
+    {
+      label: '活动负责人',
+      // value:  descData.value['activityHead'],
+    },
+    {
+      label: '联系电话',
+      // value: descData.value['headPhone'],
+    },
+  ],
+  labelKey: 'label',
+  valueKey: 'value',
+})
+</script>
+
+<style lang="scss" scoped>
+.page-detail {
+  width: 100%;
+
+  .tag-stl {
+    display: flex;
+    gap: 5px;
+    align-items: center;
+
+    .title-render {
+      color: #999999;
+      font-size: 14px;
+    }
+  }
+}
+</style>

+ 9 - 14
src/views/market-manage/activity-manage/activity-management/index.vue

@@ -91,7 +91,7 @@ const {
                                         return false;
                                     },
                                     onClick({ row }) {
-                                        router.push('/market-manage/activity-manage/activity-management/detail')
+                                        router.push('/market-manage/activity-manage/activity-management/detail?id='+row.id)
                                      },
                                     extraProps: {},
                                 },
@@ -106,28 +106,22 @@ const {
             fieldSpan: 4,
             fields: [
                 {
-                    field: 'name',
+                    field: 'activityName',
                     label: '活动名称',
                     component: 'a-input',
                     componentProps: {
-                        placeholder: '请输入客户名称',
+                        placeholder: '请输入活动名称',
                     },
                 },
                 {
-                    field: 'name',
+                    field: 'id',
                     label: '活动地址',
-                    component: 'a-select',
+                    component: 'a-input',
                     componentProps: {
                         placeholder: '请输入活动地址',
                     },
                 },
             ],
-            onSearch() {
-                fetchTableData();
-            },
-            onReset() {
-                fetchTableData();
-            },
         },
         pagerConfig: {
             enabled: true,
@@ -137,11 +131,12 @@ const {
             isFixed: false
         },
         toolbarConfig: {
-            onRefresh() {
-                fetchTableData();
-            },
+
         },
     },
 });
+function fetchTableData(){
+    
+}
 </script>
 <style lang="scss" scoped></style>

+ 37 - 23
src/views/market-manage/service-provider-manage/service-provider-creation/index.vue → src/views/market-manage/service-provider-manage/service-provider-audit/index.vue

@@ -1,5 +1,5 @@
 <template>
-    <div class="service-provider-creation">
+    <div class="service-provider-review">
         <bs-table v-bind="tableOptions">
             <template #searchRight>
                 <div>
@@ -8,6 +8,9 @@
                     </a-button>
                 </div>
             </template>
+            <template #status="{ row, column }">
+                
+            </template>
         </bs-table>
     </div>
 </template>
@@ -15,13 +18,14 @@
 import { ref, reactive } from "vue"
 import BsTable, { useBsTable } from '/@/components/BsUi/Table/index.js';
 import { DISPLAY_STATE } from '/@/components/BsUi/constant.js';
+
 const {
     tableOptions,
     setTablePropsValue: setValue,
     getTablePropsValue: getValue,
 } = useBsTable({
     tableOptions: {
-        url: '',
+        url: '/supports/provider/queryPage',
         gridOptions: {
             loading: false,
             columns: [
@@ -30,47 +34,53 @@ const {
                     width: 80,
                 },
                 {
-                    field: 'id',
+                    field: 'status',
                     title: '状态',
+                    slots: {
+                        default: 'status',
+                    },
                 },
                 {
-                    field: 'id',
+                    field: '',
                     title: '流水号',
                 },
                 {
-                    field: 'id',
+                    field: 'storeSource',
                     title: '来源',
                 },
                 {
-                    field: 'name',
+                    field: 'providerName',
                     title: '服务商名称',
                 },
                 {
-                    field: 'name1',
+                    field: 'id',
                     title: '服务商ID',
                 },
                 {
-                    field: 'name2',
+                    field: 'countryRegion',
                     title: '服务商地区',
                 },
                 {
-                    field: 'name',
+                    field: 'address',
                     title: '服务商地址',
                 },
                 {
-                    field: 'name',
+                    field: 'providerType',
                     title: '服务商类型',
+                    cellRender: {
+                        name: 'CellDict',
+                    },
                 },
                 {
-                    field: 'name',
+                    field: 'contactPeople',
                     title: '联系人',
                 },
                 {
-                    field: 'name',
+                    field: 'contactPhone',
                     title: '联系电话',
                 },
                 {
-                    field: 'name',
+                    field: 'createTime',
                     title: '注册时间',
                 },
                 {
@@ -79,6 +89,18 @@ const {
                         name: 'CellOption',
                         extraProps: {
                             buttons: [
+                                {
+                                    title: '去审核',
+                                    code: 'view',
+                                    display: ({ row }) => {
+                                        return DISPLAY_STATE.VISIBLE;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) { },
+                                    extraProps: {},
+                                },
                                 {
                                     title: '查看详情',
                                     code: 'view',
@@ -101,7 +123,7 @@ const {
             enabled: true,
             fieldSpan: 4,
             fields: [
-              {
+                {
                     field: 'name',
                     label: '服务商名称',
                     component: 'a-input',
@@ -121,17 +143,12 @@ const {
                     field: 'name',
                     label: '服务商类型',
                     component: 'a-select',
+
                     componentProps: {
                         placeholder: '请输入服务商类型',
                     },
                 },
             ],
-            onSearch() {
-                fetchTableData();
-            },
-            onReset() {
-                fetchTableData();
-            },
         },
         pagerConfig: {
             enabled: true,
@@ -141,9 +158,6 @@ const {
             isFixed: false
         },
         toolbarConfig: {
-            onRefresh() {
-                fetchTableData();
-            },
         },
     },
 });

+ 35 - 27
src/views/market-manage/service-provider-manage/service-provider-review/index.vue

@@ -15,13 +15,14 @@
 import { ref, reactive } from "vue"
 import BsTable, { useBsTable } from '/@/components/BsUi/Table/index.js';
 import { DISPLAY_STATE } from '/@/components/BsUi/constant.js';
+
 const {
     tableOptions,
     setTablePropsValue: setValue,
     getTablePropsValue: getValue,
 } = useBsTable({
     tableOptions: {
-        url: '',
+        url: '/supports/provider/queryPage',
         gridOptions: {
             loading: false,
             columns: [
@@ -30,47 +31,50 @@ const {
                     width: 80,
                 },
                 {
-                    field: 'id',
+                    field: 'status',
                     title: '状态',
                 },
                 {
-                    field: 'id',
+                    field: '',
                     title: '流水号',
                 },
                 {
-                    field: 'id',
+                    field: 'storeSource',
                     title: '来源',
                 },
                 {
-                    field: 'name',
+                    field: 'providerName',
                     title: '服务商名称',
                 },
                 {
-                    field: 'name1',
+                    field: 'id',
                     title: '服务商ID',
                 },
                 {
-                    field: 'name2',
+                    field: 'countryRegion',
                     title: '服务商地区',
                 },
                 {
-                    field: 'name',
+                    field: 'address',
                     title: '服务商地址',
                 },
                 {
-                    field: 'name',
+                    field: 'providerType',
                     title: '服务商类型',
+                    cellRender: {
+                        name: 'CellDict',
+                    },
                 },
                 {
-                    field: 'name',
+                    field: 'contactPeople',
                     title: '联系人',
                 },
                 {
-                    field: 'name',
+                    field: 'contactPhone',
                     title: '联系电话',
                 },
                 {
-                    field: 'name',
+                    field: 'createTime',
                     title: '注册时间',
                 },
                 {
@@ -79,6 +83,18 @@ const {
                         name: 'CellOption',
                         extraProps: {
                             buttons: [
+                                {
+                                    title: '去审核',
+                                    code: 'view',
+                                    display: ({ row }) => {
+                                        return DISPLAY_STATE.VISIBLE;
+                                    },
+                                    disabled({ row }) {
+                                        return false;
+                                    },
+                                    onClick({ row }) { },
+                                    extraProps: {},
+                                },
                                 {
                                     title: '查看详情',
                                     code: 'view',
@@ -103,35 +119,30 @@ const {
             fields: [
               {
                     field: 'name',
-                    label: '客户名称',
+                    label: '服务商名称',
                     component: 'a-input',
                     componentProps: {
-                        placeholder: '请输入客户名称',
+                        placeholder: '请输入服务商名称',
                     },
                 },
                 {
                     field: 'name',
-                    label: '客户地址',
+                    label: '服务商地址',
                     component: 'a-input',
                     componentProps: {
-                        placeholder: '请输入客户地址',
+                        placeholder: '请输入服务商地址',
                     },
                 },
                 {
                     field: 'name',
-                    label: '客户类型',
+                    label: '服务商类型',
                     component: 'a-select',
+
                     componentProps: {
-                        placeholder: '请输入客户类型',
+                        placeholder: '请输入服务商类型',
                     },
                 },
             ],
-            onSearch() {
-                fetchTableData();
-            },
-            onReset() {
-                fetchTableData();
-            },
         },
         pagerConfig: {
             enabled: true,
@@ -141,9 +152,6 @@ const {
             isFixed: false
         },
         toolbarConfig: {
-            onRefresh() {
-                fetchTableData();
-            },
         },
     },
 });