| | |
| | | <template> |
| | | <Row class="mb-10px"> |
| | | <Col span="12"> |
| | | <Dropdown :trigger="['click']" arrow @openChange="openChange"> |
| | | <span class="cursor-pointer" @click.prevent> |
| | | {{ dropDownTitle }} |
| | | <BasicArrow :expand="false" down/> |
| | | </span> |
| | | <template #overlay> |
| | | <Menu @click="onMenuItemClick"> |
| | | <MenuItem key="0"> |
| | | <span>未完成</span> |
| | | </MenuItem> |
| | | <MenuItem key="1"> |
| | | <span>已完成</span> |
| | | </MenuItem> |
| | | </Menu> |
| | | </template> |
| | | </Dropdown> |
| | | </Col> |
| | | <Col span="12" :style="'text-align:right'"> |
| | | <Tooltip title="新建日程"> |
| | | <PlusSquareOutlined class="cursor-pointer" style="fontSize:24px;color: #aaa" |
| | | @click="openScheduleModal"/> |
| | | </Tooltip> |
| | | <div ref="loadingEl" class="bg-gray-50 p-10px"> |
| | | <a-divider> |
| | | <span class="c-gray font-size-12px">以下是历史记录</span> |
| | | </a-divider> |
| | | <a-card class="mb-15px" style="width: auto" v-for="item in cardList" :key="item.id"> |
| | | <p class="tips-title"> |
| | | <AimOutlined class="c-amber-5" /> |
| | | 商机"<a class="">{{item.cluesName}}</a>"已过了结单日期 |
| | | </p> |
| | | <p class="tips-content font-size-12px"> |
| | | "<a class="">{{item.cluesName}}</a>"已过了结单日期,但仍未结束(赢单/输单),请尽快跟进 |
| | | </p> |
| | | <p class="tips-time"> |
| | | |
| | | </Col> |
| | | </Row> |
| | | <BasicTable |
| | | @register="registerTable" |
| | | @row-click="handleScheduleRowClick" |
| | | > |
| | | <template #bodyCell="{ column, record }"> |
| | | <template v-if="column.key === 'cluesName'"> |
| | | <div> |
| | | <Avatar :size="16" :style="'background-color:'+ record.color"></Avatar> |
| | | <span class="ml-5px"> |
| | | {{ record.cluesName }} |
| | | </span> |
| | | </div> |
| | | </template> |
| | | </template> |
| | | </BasicTable> |
| | | <ScheduleDetailModal @register="registerScheduleModal"></ScheduleDetailModal> |
| | | <div> |
| | | <template v-for="item in projectList" :key="item.title"> |
| | | <Row class="cursor-pointer" :gutter="[22,26]" align="middle"> |
| | | <Col span="12"> |
| | | <Avatar :size="16" :style="'background-color:'+ item.color"></Avatar> |
| | | <span class="ml-5px">{{ item.title }}</span> |
| | | </Col> |
| | | <Col span="12" :style="'text-align:right'"> |
| | | <span>{{ item.content }}</span> |
| | | </Col> |
| | | </Row> |
| | | </template> |
| | | |
| | | </p> |
| | | <a-flex justify="space-between"> |
| | | <span class="c-gray font-size-12px">{{item.privateTime}}</span> |
| | | <a-button class="font-size-12px" type="link">编辑商机</a-button> |
| | | </a-flex> |
| | | </a-card> |
| | | <a-divider> |
| | | <span class="c-gray font-size-12px">已显示全部内容</span> |
| | | </a-divider> |
| | | </div> |
| | | |
| | | <!-- <List :class="prefixCls" item-layout="horizontal" :data-source="projectList" :grid="{ column: 1, gutter: 12}" :pagination="pagination" >--> |
| | | <!-- <template #renderItem="{ item }">--> |
| | | <!-- <ListItem>--> |
| | |
| | | <script lang="ts" setup> |
| | | import {List, Avatar, Card, Row, Col, Dropdown, Menu, Tooltip, Tag} from 'ant-design-vue'; |
| | | import {projectList} from './data'; |
| | | import {PlusSquareOutlined} from '@ant-design/icons-vue'; |
| | | import {AimOutlined} from '@ant-design/icons-vue'; |
| | | import {BasicArrow} from "@/components/Basic"; |
| | | import {ref} from 'vue'; |
| | | import {onMounted, ref} from 'vue'; |
| | | import ScheduleDetailModal from './ScheduleDetail.vue'; |
| | | |
| | | const ListItem = List.Item; |
| | | const MenuItem = Menu.Item; |
| | | |
| | | import EventBus from '@/utils/eventBus'; |
| | | import {BasicTable, ColumnChangeParam, TableAction, useTable} from "@/components/Table"; |
| | | import {cluesListApi} from "@/api/clues/table"; |
| | | import {cluesDynamicApi} from "@/api/clues/dynamic"; |
| | | import {getEditCellColumns, getFormConfig} from "@/views/clues/components/tableData"; |
| | | import {useModal} from "@/components/Modal"; |
| | | import {useLoading} from "@/components/Loading"; |
| | | |
| | | const [registerScheduleModal, {openModal, setModalProps}] = useModal(); |
| | | const openScheduleModal = () => { |
| | |
| | | }); |
| | | }; |
| | | |
| | | const pagination = { |
| | | onChange: (page: number) => { |
| | | console.log(page); |
| | | }, |
| | | pageSize: 3, |
| | | }; |
| | | |
| | | const openChange = (status: boolean) => { |
| | | Logger.log('openChange', status); |
| | | }; |
| | | const dropDownTitle = ref('未完成'); |
| | | const onMenuItemClick = (e: any) => { |
| | | let titles = ['未完成', '已完成']; |
| | | Logger.log('onMenuItemClick', e); |
| | | dropDownTitle.value = titles[e.key]; |
| | | }; |
| | | |
| | | const [ |
| | | registerTable, |
| | | { |
| | | // setLoading, |
| | | // setProps, |
| | | // getColumns, |
| | | // getDataSource, |
| | | // getRawDataSource, |
| | | // reload, |
| | | // getPaginationRef, |
| | | // setPagination, |
| | | // getSelectRows, |
| | | // getSelectRowKeys, |
| | | // setSelectedRowKeys, |
| | | // clearSelectedRowKeys, |
| | | }, |
| | | ] = useTable({ |
| | | canResize: true, |
| | | api: cluesListApi, |
| | | // beforeFetch: (params) => { |
| | | // console.log('beforeFetch', params); |
| | | // params.pageNo = params.page; |
| | | // // return Promise.resolve(params); |
| | | // }, |
| | | showIndexColumn: false, |
| | | columns: [ |
| | | { |
| | | // title: '', |
| | | // defaultHidden: true, |
| | | dataIndex: 'cluesName', |
| | | width: 200 |
| | | }, |
| | | { |
| | | // title: '', |
| | | dataIndex: 'archiveTime', |
| | | width: 200, |
| | | }, |
| | | ], |
| | | // defSort: { |
| | | // pageNo: 1, |
| | | // pageSize: 20, |
| | | // field: 'name', |
| | | // order: 'ascend', |
| | | // }, |
| | | rowKey: 'id', |
| | | // showTableSetting: false, |
| | | // showIndexColumn: false, // 是否显示序号列 |
| | | // useSearchForm: false, // 使用搜索表单 |
| | | // clickToRowSelect: false, |
| | | // formConfig: getFormConfig(), // 搜索表单配置 |
| | | pagination: { |
| | | // pageSize: 20, |
| | | pageSizeOptions: ['10', '20', '50', '100'], |
| | | defaultPageSize: 20, |
| | | // showSizeChanger: true, |
| | | let cardList = ref([] as any[]); |
| | | // tips Loading |
| | | const loadingEl = ref<ElRef>(null); |
| | | const [openWrapLoading, closeWrapLoading] = useLoading({ |
| | | target: loadingEl, |
| | | props: { |
| | | tip: '加载中...', |
| | | absolute: true, |
| | | }, |
| | | }); |
| | | // tips列表数据 |
| | | // 获取客户卡片数据 |
| | | setTimeout(() => { |
| | | getCustomerCardData(); |
| | | }, 50); |
| | | async function getCustomerCardData(){ |
| | | openWrapLoading(); |
| | | let params = { |
| | | page: 1, |
| | | pageSize: 10, |
| | | }; |
| | | try { |
| | | // cluesDynamicApi(params).then(res => { |
| | | // |
| | | // }) |
| | | let res = await cluesDynamicApi(params) |
| | | Logger.log('cluesDynamicApi...',res); |
| | | // console.log(_this); |
| | | // _this.$set(dynamicList,res.items) |
| | | cardList.value = res.items; |
| | | |
| | | |
| | | |
| | | function handleScheduleRowClick(e) { |
| | | Logger.log('handleScheduleRowClick', e); |
| | | openModal(true, { |
| | | // record, |
| | | // isUpdate: true, |
| | | }); |
| | | } catch (e) { |
| | | Logger.error(e); |
| | | } finally { |
| | | closeWrapLoading(); |
| | | } |
| | | } |
| | | |
| | | const prefixCls = 'account-center-project'; |
| | | </script> |
| | | <style lang="less" > |
| | | <style lang="less" scoped> |
| | | |
| | | </style> |