liqh 4 kuukautta sitten
vanhempi
commit
b0e0aad5c6

+ 3 - 29
src/views/support-manage/competition/opponent/opponent-detail/components/CredentialInfo/modules/CredentialDetail.vue

@@ -5,41 +5,25 @@
   * @Date:      2022-08-08 20:46:18
 -->
 <template>
-  <a-modal v-model:open="visible" width="40%" title="文件登记" @ok="onSubmit" @cancel="closeModal" destroyOnClose>
+  <a-modal v-model:open="visible" width="40%" title="资质信息" @ok="onSubmit" @cancel="closeModal" destroyOnClose>
     <a-form class="smart-query-form" ref="formRef" labelWrap :label-col="labelCol" :model="form" :rules="rules">
       <div class="cost-compose">
         <div class="basic-info">
           <div class="basic-info-form">
             <a-row :gutter="16" class="smart-query-form-row">
               <a-col :span="24">
-                <a-form-item label="文件类别" name="fileType" class="smart-query-form-item">
+                <a-form-item label="资质名称" name="fileType" class="smart-query-form-item">
                   <DictSelect key-code="BLINK_CUSTOMER_FILE_TYPE" v-model:value="form.fileType" placeholder="请选择文件类别" width="100%" />
                 </a-form-item>
               </a-col>
             </a-row>
             <a-row :gutter="16" class="smart-query-form-row">
               <a-col :span="24">
-                <a-form-item label="备注" name="remark" class="smart-query-form-item">
+                <a-form-item label="备注信息" name="remark" class="smart-query-form-item">
                   <a-textarea v-model:value="form.remark" placeholder="请输入备注" :auto-size="{ minRows: 2, maxRows: 5 }" />
                 </a-form-item>
               </a-col>
             </a-row>
-            <a-row :gutter="16" class="smart-query-form-row">
-              <a-col :span="24">
-                <a-form-item label="文件" name="form.attachment" class="smart-query-form-item">
-                  <Upload
-                    ref="UploadRef"
-                    :defaultFileList="defaultFileList"
-                    :maxUploadSize="10"
-                    :folder="FILE_FOLDER_TYPE_ENUM.COMMON.value"
-                    buttonText="上传文件"
-                    listType="text"
-                    extraMsg="最多上传10个附件"
-                    @change="changeAttachment"
-                  />
-                </a-form-item>
-              </a-col>
-            </a-row>
           </div>
         </div>
       </div>
@@ -51,9 +35,7 @@
   import { theme, message, Modal } from 'ant-design-vue';
   import _ from 'lodash';
   import DictSelect from '/@/components/support/dict-select/index.vue';
-  import Upload from '/@/components/support/file-upload/index.vue';
   import { clientManageApi } from '/@/api/market-manage/index.js';
-  import { FILE_FOLDER_TYPE_ENUM } from '/@/constants/support/file-const';
 
   // ----------------------- 对外暴漏 ---------------------
   defineExpose({
@@ -102,14 +84,6 @@
     Object.assign(form, formDefault);
   }
 
-  // ----------------------- 上传附件 ----------------------------
-  // 已上传的附件列表
-  const defaultFileList = ref([]);
-  function changeAttachment(fileList) {
-    defaultFileList.value = fileList;
-    form.attachment = _.isEmpty(fileList) ? [] : fileList;
-  }
-
   // ----------------------- form 表单  ajax 操作 ---------------------
   function onSubmit() {
     console.log('form', form);

+ 29 - 54
src/views/support-manage/competition/opponent/opponent-detail/components/ProjectInfo/index.vue

@@ -13,6 +13,7 @@
       </template>
     </bs-table>
     <HistoryProjDetail ref="HistoryProjDetailRef" @refreshTable="refreshTable()"></HistoryProjDetail>
+    <ProjectQuotation ref="ProjectQuotationRef" @refreshTable="refreshTable()"></ProjectQuotation>
   </div>
 </template>
 
@@ -23,9 +24,11 @@
   import { DISPLAY_STATE } from '/@/components/BsUi/constant.js';
 
   import HistoryProjDetail from '/@/views/support-manage/competition/opponent/opponent-detail/components/ProjectInfo/modules/HistoryProjDetail.vue';
+  import ProjectQuotation from '/@/views/support-manage/competition/opponent/opponent-detail/components/ProjectInfo/modules/ProjectQuotation.vue';
 
   const selectedStatus = ref(''); // 定义状态变量
   const HistoryProjDetailRef = ref();
+  const ProjectQuotationRef = ref();
 
   const {
     tableOptions,
@@ -50,28 +53,39 @@
             align: 'center',
           },
           {
-            title: '项目进度',
+            title: '项目报价',
             // field: 'projectType',
             align: 'center',
 
             slots: {
               default({ row, column }) {
-                return <span>{row?.projectType?.[0]?.valueName || ''}</span>;
+                return (
+                  <a-button
+                    type='link'
+                    size='small'
+                    disabled={false}
+                    onClick={() => {
+                      goProjectQuotation();
+                    }}
+                  >
+                    查看项目报价
+                  </a-button>
+                );
               },
             },
           },
           {
-            title: '项目地址',
+            title: '合同金额(元)',
             field: 'provinceCityDistrict',
             align: 'center',
           },
           {
-            title: '甲方',
+            title: '补充协议金额(元)',
             field: 'landlordUnitId',
             align: 'center',
           },
           {
-            title: '概算金额(万)',
+            title: '合同总金额(万)',
             field: 'address',
             align: 'center',
           },
@@ -87,7 +101,7 @@
             },
           },
           {
-            title: '工程属性',
+            title: '产品类型',
             // field: 'tendersType',
             align: 'center',
 
@@ -98,63 +112,20 @@
             },
           },
           {
-            title: '对接营销经理',
+            title: '项目来源',
             field: 'bidOpenDate',
             align: 'center',
           },
           {
-            title: '创建时间',
-            field: 'planStartDate',
+            title: '归属营销人员',
+            field: 'bidOpenDate',
             align: 'center',
           },
           {
+            title: '创建时间',
+            field: 'planStartDate',
             align: 'center',
-            cellRender: {
-              name: 'CellOption',
-              extraProps: {
-                buttons: [
-                  {
-                    title: '查看详情',
-                    code: 'view',
-                    display: ({ row }) => {
-                      return DISPLAY_STATE.VISIBLE;
-                    },
-                    disabled({ row }) {
-                      return false;
-                    },
-                    onClick({ row }) {
-                      goDetailPage(row);
-                    },
-                    extraProps: {},
-                  },
-                ],
-              },
-            },
           },
-          // {
-          //   field: 'opt',
-          //   title: '操作',
-          //   width: '10%',
-          //   fixed: 'right',
-          //   align: 'center',
-          //   slots: {
-          //     default({ row, column }) {
-          //       return (
-          //         <>
-          //           <a-button
-          //             type='text'
-          //             size='small'
-          //             onClick={() => {
-          //               goDetailPage(row);
-          //             }}
-          //           >
-          //             项目详情
-          //           </a-button>
-          //         </>
-          //       );
-          //     },
-          //   },
-          // },
         ],
         data: [
           {
@@ -198,6 +169,10 @@
   function goHistroyProjectPage() {
     HistoryProjDetailRef.value.showModal(query.id);
   }
+  //查看项目报价
+  function goProjectQuotation() {
+    ProjectQuotationRef.value.showModal();
+  }
 
   //查看项目详情
   function goDetailPage(record) {

+ 152 - 0
src/views/support-manage/competition/opponent/opponent-detail/components/ProjectInfo/modules/ProjectQuotation.vue

@@ -0,0 +1,152 @@
+<!--
+  * 弹窗表单
+  *
+  * @Author:    BoundLink
+  * @Date:      2022-08-08 20:46:18
+-->
+<template>
+  <a-modal v-model:open="visible" width="80%" title="项目报价详情" @cancel="closeModal" destroyOnClose>
+    <div class="table-demo">
+      <bs-table v-bind="tableOptions"> </bs-table>
+    </div>
+  </a-modal>
+</template>
+<script setup lang="jsx">
+  import BsTable, { useBsTable } from '/@/components/BsUi/Table/index.js';
+  import { reactive, ref } from 'vue';
+
+  const {
+    tableOptions,
+    fetchTableData,
+    setTablePropsValue: setValue,
+    getTablePropsValue: getValue,
+  } = useBsTable({
+    tableOptions: {
+      url: '/supports/project/queryPage',
+      gridOptions: {
+        loading: false,
+        columns: [
+          {
+            type: 'seq',
+            align: 'center',
+          },
+          {
+            title: '竞争对手名称',
+            field: 'clueName',
+            align: 'center',
+          },
+          {
+            title: '报价轮次',
+            field: 'clueName',
+            align: 'center',
+          },
+          {
+            title: '报价金额(元)',
+            field: 'clueName',
+            align: 'center',
+          },
+          {
+            title: '是否中标',
+            field: 'clueName',
+            align: 'center',
+          },
+          {
+            title: '报价日期',
+            field: 'clueName',
+            align: 'center',
+          },
+          {
+            title: '操作人',
+            field: 'clueName',
+            align: 'center',
+          },
+          {
+            title: '操作日期',
+            field: 'clueName',
+            align: 'center',
+          },
+          //   {
+          //     title: '报价轮次',
+          //     // field: 'projectType',
+          //     align: 'center',
+
+          //     slots: {
+          //       default({ row, column }) {
+          //         return (
+          //           <a-button
+          //             type='link'
+          //             size='small'
+          //             disabled={false}
+          //             onClick={() => {
+          //               goProjectQuotation();
+          //             }}
+          //           >
+          //             查看项目报价
+          //           </a-button>
+          //         );
+          //       },
+          //     },
+          //   },
+        ],
+        data: [
+          {
+            id: 1,
+            name: '测试数据',
+            dictField: [
+              {
+                dictKeyId: '',
+                dictValueId: '',
+                remark: '',
+                sort: 3,
+                status: 1,
+                valueCode: '03',
+                valueName: '微信公众号',
+              },
+            ],
+          },
+        ], // 模拟数据源
+      },
+      pagerConfig: {
+        enabled: true,
+        isFixed:false,
+        pageSize: 10,
+        pageNum: 1,
+      },
+      toolbarConfig: {},
+      tableSearchBeforeBiz() {
+        const searchParams = getValue('searchConfig.data');
+        setValue('searchConfig.data', { ...searchParams, status: selectedStatus.value });
+      },
+    },
+  });
+
+  // ----------------------- 对外暴漏 ---------------------
+  defineExpose({
+    showModal,
+  });
+
+  // ----------------------- modal 的显示与隐藏 ---------------------
+
+  const visible = ref(false);
+  function showModal(params) {
+    visible.value = true;
+  }
+
+  function closeModal() {
+    visible.value = false;
+  }
+</script>
+<style scoped lang="scss">
+  .table-demo {
+    background-color: #fff;
+    height: 100%;
+
+    .tabs {
+      padding: 0 24px;
+
+      :deep(.anticon) {
+        margin: 0;
+      }
+    }
+  }
+</style>

+ 2 - 18
src/views/support-manage/competition/opponent/opponent-detail/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="page-detail">
-    <page-detail-layout :tabs="tabs" v-model:tab-active-key="tabActiveKey" :index-config="indexConfig" :title="customerDetailData?.customerName">
+    <page-detail-layout :tabs="tabs" v-model:tab-active-key="tabActiveKey" :index-config="indexConfig" :title="标题内容">
       <template #titleRight>
         <img v-if="customerDetailData?.customerGrade?.[0].valueCode === 'S'" src="/@/assets/images/page-detail-layout/customer/SS_user.png" alt="" />
         <img v-if="customerDetailData?.customerGrade?.[0].valueCode === 'A'" src="/@/assets/images/page-detail-layout/customer/AA_user.png" alt="" />
@@ -10,14 +10,6 @@
       </template>
 
       <template #toolBtn>
-        <a-button danger ghost type="primary" size="small" @click="handleTransferPublicSea">
-          <UserDeleteOutlined />
-          <span>释放公海</span>
-        </a-button>
-        <a-button ghost type="primary" size="small" @click="customerTransferModalRef.showModal()">
-          <RightSquareOutlined />
-          <span> 放弃 </span></a-button
-        >
       </template>
 
       <template #titleBottom>
@@ -62,14 +54,6 @@
   const route = useRoute();
   const headerIndexData = ref(null);
 
-  const customerTransferModalRef = ref(null);
-
-  const transferPublicSeaModalRef = ref(null);
-
-  const handleTransferPublicSea = () => {
-    transferPublicSeaModalRef.value.showModal();
-  };
-
   const getImgUrl = (name) => {
     return new URL('/src/assets/images/page-detail-layout/customer/' + name + '.svg', import.meta.url).href;
   };
@@ -152,7 +136,7 @@
           value: resData.unpaidAmount || 0,
         },
         {
-          label: '添加事件',
+          label: '添加时间',
           value: resData.unpaidAmount || 0,
         },
       ],