Commit ea3c15ff authored by GuanHua's avatar GuanHua
parents f8758331 da553ac1
...@@ -14,28 +14,49 @@ export default [ ...@@ -14,28 +14,49 @@ export default [
name: 'quoteOrder', name: 'quoteOrder',
component: '@/pages/transaction/confirmInquiryQuote/quoteOrder' component: '@/pages/transaction/confirmInquiryQuote/quoteOrder'
}, },
// 报价单查询详情
{
path: '/memberCenter/tranactionAbility/confirmInquiryQuote/quoteOrder/details',
name: 'quoteOrderDetails',
hideInMenu: true,
component: '@/pages/transaction/confirmInquiryQuote/components/details'
},
// 待提交审核报价单 // 待提交审核报价单
{ {
path: '/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmitReview', path: '/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmitReview',
name: 'pendingSubmitReview', name: 'pendingSubmitReview',
component: '@/pages/transaction/confirmInquiryQuote/pendingSubmitReview' component: '@/pages/transaction/confirmInquiryQuote/pendingSubmitReview'
}, },
// 待提交审核报价单详情
{
path: '/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmitReview/details',
name: 'pendingSubmitReviewDetails',
hideInMenu: true,
component: '@/pages/transaction/confirmInquiryQuote/components/details'
},
// 待审核询价单(一级) // 待审核询价单(一级)
{ {
path: '/memberCenter/tranactionAbility/confirmInquiryQuote/pendingReviewOne', path: '/memberCenter/tranactionAbility/confirmInquiryQuote/pendingReviewOne',
name: 'pendingReviewOne', name: 'pendingReviewOne',
component: '@/pages/transaction/confirmInquiryQuote/pendingReviewOne' component: '@/pages/transaction/confirmInquiryQuote/pendingReviewOne'
}, },
// 待审核询价单(一级)详情
{
path: '/memberCenter/tranactionAbility/confirmInquiryQuote/pendingReviewOne/details',
name: 'pendingReviewOneDetails',
hideInMenu: true,
component: '@/pages/transaction/confirmInquiryQuote/components/details'
},
// 待审核询价单(二级) // 待审核询价单(二级)
{ {
path: '/memberCenter/tranactionAbility/confirmInquiryQuote/pendingReviewTwo', path: '/memberCenter/tranactionAbility/confirmInquiryQuote/pendingReviewTwo',
name: 'pendingReviewTwo', name: 'pendingReviewTwo',
component: '@/pages/transaction/confirmInquiryQuote/pendingReviewTwo' component: '@/pages/transaction/confirmInquiryQuote/pendingReviewTwo'
}, },
// 详情 // 待审核询价单(二级)详情
{ {
path: '/memberCenter/tranactionAbility/confirmInquiryQuote/components/details', path: '/memberCenter/tranactionAbility/confirmInquiryQuote/pendingReviewTwo/details',
name: 'details', name: 'pendingReviewTwoDetails',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/confirmInquiryQuote/components/details' component: '@/pages/transaction/confirmInquiryQuote/components/details'
}, },
...@@ -45,6 +66,13 @@ export default [ ...@@ -45,6 +66,13 @@ export default [
name: 'pendingSubmit', name: 'pendingSubmit',
component: '@/pages/transaction/confirmInquiryQuote/pendingSubmit' component: '@/pages/transaction/confirmInquiryQuote/pendingSubmit'
}, },
// 待提交报价单详情
{
path: '/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmit/details',
name: 'pendingSubmitDetails',
hideInMenu: true,
component: '@/pages/transaction/confirmInquiryQuote/components/details'
},
] ]
}, },
] ]
\ No newline at end of file
...@@ -17,7 +17,7 @@ export default [ ...@@ -17,7 +17,7 @@ export default [
// 询价单查询详情 // 询价单查询详情
{ {
path: '/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/details', path: '/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/details',
name: 'details', name: 'quoteOrderDetails',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/goodsOffer/components/details' component: '@/pages/transaction/goodsOffer/components/details'
}, },
...@@ -37,14 +37,14 @@ export default [ ...@@ -37,14 +37,14 @@ export default [
// 编辑报价单 // 编辑报价单
{ {
path: '/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/edit', path: '/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/edit',
name: 'add', name: 'edit',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/goodsOffer/addEnquiryOrder/add' component: '@/pages/transaction/goodsOffer/addEnquiryOrder/add'
}, },
// 待新增询价单详情 // 待新增询价单详情
{ {
path: '/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/details', path: '/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/details',
name: 'details', name: 'addEnquiryOrderDetails',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/goodsOffer/components/details' component: '@/pages/transaction/goodsOffer/components/details'
}, },
...@@ -57,7 +57,7 @@ export default [ ...@@ -57,7 +57,7 @@ export default [
// 待审核询价单(一级)详情 // 待审核询价单(一级)详情
{ {
path: '/memberCenter/tranactionAbility/goodsOffer/pendingReviewOne/details', path: '/memberCenter/tranactionAbility/goodsOffer/pendingReviewOne/details',
name: 'details', name: 'pendingReviewOneDetails',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/goodsOffer/components/details' component: '@/pages/transaction/goodsOffer/components/details'
}, },
...@@ -70,7 +70,7 @@ export default [ ...@@ -70,7 +70,7 @@ export default [
// 待审核询价单(二级)详情 // 待审核询价单(二级)详情
{ {
path: '/memberCenter/tranactionAbility/goodsOffer/pendingReviewTwo/details', path: '/memberCenter/tranactionAbility/goodsOffer/pendingReviewTwo/details',
name: 'details', name: 'pendingReviewTwoDetails',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/goodsOffer/components/details' component: '@/pages/transaction/goodsOffer/components/details'
}, },
...@@ -83,7 +83,7 @@ export default [ ...@@ -83,7 +83,7 @@ export default [
// 待提交询价单详情 // 待提交询价单详情
{ {
path: '/memberCenter/tranactionAbility/goodsOffer/pendingSubmit/details', path: '/memberCenter/tranactionAbility/goodsOffer/pendingSubmit/details',
name: 'details', name: 'pendingSubmitDetails',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/goodsOffer/components/details' component: '@/pages/transaction/goodsOffer/components/details'
} }
......
...@@ -450,6 +450,27 @@ const TranactionRoute: RouterChild = { ...@@ -450,6 +450,27 @@ const TranactionRoute: RouterChild = {
name: 'analysis', name: 'analysis',
component: '@/pages/transaction/supplierEvaluation/analysis', component: '@/pages/transaction/supplierEvaluation/analysis',
}, },
// 收到的评价-详情
{
path: '/memberCenter/tranactionAbility/supplierEvaluation/received/detail',
name: 'receivedDetail',
component: '@/pages/transaction/supplierEvaluation/received/detail/index',
hideInMenu: true,
},
// 发出的评价-详情
{
path: '/memberCenter/tranactionAbility/supplierEvaluation/sent/detail',
name: 'sentDetail',
component: '@/pages/transaction/supplierEvaluation/sent/detail/index',
hideInMenu: true,
},
// 发出的评价-编辑
{
path: '/memberCenter/tranactionAbility/supplierEvaluation/sent/edit',
name: 'editSent',
component: '@/pages/transaction/supplierEvaluation/sent/detail/index',
hideInMenu: true,
},
// 收到的评价(UI合并到评价统计了,暂时不需要) // 收到的评价(UI合并到评价统计了,暂时不需要)
// { // {
// path: '/memberCenter/tranactionAbility/supplierEvaluation/received', // path: '/memberCenter/tranactionAbility/supplierEvaluation/received',
...@@ -489,6 +510,27 @@ const TranactionRoute: RouterChild = { ...@@ -489,6 +510,27 @@ const TranactionRoute: RouterChild = {
name: 'analysis', name: 'analysis',
component: '@/pages/transaction/purchaserEvaluation/analysis', component: '@/pages/transaction/purchaserEvaluation/analysis',
}, },
// 收到的评价-详情
{
path: '/memberCenter/tranactionAbility/purchaserEvaluation/received/detail',
name: 'receivedDetail',
component: '@/pages/transaction/purchaserEvaluation/received/detail/index',
hideInMenu: true,
},
// 发出的评价-详情
{
path: '/memberCenter/tranactionAbility/purchaserEvaluation/sent/detail',
name: 'sentDetail',
component: '@/pages/transaction/purchaserEvaluation/sent/detail/index',
hideInMenu: true,
},
// 发出的评价-编辑
{
path: '/memberCenter/tranactionAbility/purchaserEvaluation/sent/edit',
name: 'editSent',
component: '@/pages/transaction/purchaserEvaluation/sent/detail/index',
hideInMenu: true,
},
// 收到的评价(UI合并到评价统计了,暂时不需要) // 收到的评价(UI合并到评价统计了,暂时不需要)
// { // {
// path: '/memberCenter/tranactionAbility/purchaserEvaluation/received', // path: '/memberCenter/tranactionAbility/purchaserEvaluation/received',
......
...@@ -17,7 +17,7 @@ export default [ ...@@ -17,7 +17,7 @@ export default [
// 询价单查询详情 // 询价单查询详情
{ {
path: '/memberCenter/tranactionAbility/inquiryQuote/enquiryOrder/details', path: '/memberCenter/tranactionAbility/inquiryQuote/enquiryOrder/details',
name: 'details', name: 'enquiryOrder',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/inquiryQuote/components/details' component: '@/pages/transaction/inquiryQuote/components/details'
}, },
...@@ -30,7 +30,7 @@ export default [ ...@@ -30,7 +30,7 @@ export default [
// 报价单查询详情 // 报价单查询详情
{ {
path: '/memberCenter/tranactionAbility/inquiryQuote/quoteOrder/details', path: '/memberCenter/tranactionAbility/inquiryQuote/quoteOrder/details',
name: 'details', name: 'quoteOrderDetails',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/inquiryQuote/components/details' component: '@/pages/transaction/inquiryQuote/components/details'
}, },
...@@ -50,7 +50,7 @@ export default [ ...@@ -50,7 +50,7 @@ export default [
// 新建报价单编辑 // 新建报价单编辑
{ {
path: '/memberCenter/tranactionAbility/inquiryQuote/addInquiryOrder/edit', path: '/memberCenter/tranactionAbility/inquiryQuote/addInquiryOrder/edit',
name: 'add', name: 'edit',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/inquiryQuote/addInquiryOrder/add' component: '@/pages/transaction/inquiryQuote/addInquiryOrder/add'
}, },
...@@ -70,7 +70,7 @@ export default [ ...@@ -70,7 +70,7 @@ export default [
// 待审核报价单(一级)详情 // 待审核报价单(一级)详情
{ {
path: '/memberCenter/tranactionAbility/inquiryQuote/pendingReviewOne/details', path: '/memberCenter/tranactionAbility/inquiryQuote/pendingReviewOne/details',
name: 'details', name: 'pendingReviewOneDetails',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/inquiryQuote/components/details' component: '@/pages/transaction/inquiryQuote/components/details'
}, },
...@@ -83,7 +83,7 @@ export default [ ...@@ -83,7 +83,7 @@ export default [
// 待审核报价单(二级)详情 // 待审核报价单(二级)详情
{ {
path: '/memberCenter/tranactionAbility/inquiryQuote/pendingReviewTwo/details', path: '/memberCenter/tranactionAbility/inquiryQuote/pendingReviewTwo/details',
name: 'details', name: 'pendingReviewTwoDetails',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/inquiryQuote/components/details' component: '@/pages/transaction/inquiryQuote/components/details'
}, },
...@@ -96,7 +96,7 @@ export default [ ...@@ -96,7 +96,7 @@ export default [
// 待提交报价单详情 // 待提交报价单详情
{ {
path: '/memberCenter/tranactionAbility/inquiryQuote/pendingSubmit/details', path: '/memberCenter/tranactionAbility/inquiryQuote/pendingSubmit/details',
name: 'details', name: 'pendingSubmitDetails',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/inquiryQuote/components/details' component: '@/pages/transaction/inquiryQuote/components/details'
}, },
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: LeeJiancong * @Author: LeeJiancong
* @Date: 2020-07-13 14:08:50 * @Date: 2020-07-13 14:08:50
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-20 19:48:59 * @LastEditTime: 2020-10-21 14:13:00
*/ */
export default { export default {
...@@ -139,34 +139,49 @@ export default { ...@@ -139,34 +139,49 @@ export default {
// 确认询价报价 // 确认询价报价
'menu.tranactionAbility.confirmInquiryQuote': '确认询价报价', 'menu.tranactionAbility.confirmInquiryQuote': '确认询价报价',
'menu.tranactionAbility.confirmInquiryQuote.quoteOrder': '报价单查询', 'menu.tranactionAbility.confirmInquiryQuote.quoteOrder': '报价单查询',
'menu.tranactionAbility.confirmInquiryQuote.details': '新建报价单', 'menu.tranactionAbility.confirmInquiryQuote.quoteOrderDetails': '报价单查询详情',
'menu.tranactionAbility.confirmInquiryQuote.pendingSubmitReview': '待提交审核报价单', 'menu.tranactionAbility.confirmInquiryQuote.pendingSubmitReview': '待提交审核报价单',
'menu.tranactionAbility.confirmInquiryQuote.pendingSubmitReviewDetails': '待提交审核报价单详情',
'menu.tranactionAbility.confirmInquiryQuote.pendingReviewOne': '待审核报价单(一级)', 'menu.tranactionAbility.confirmInquiryQuote.pendingReviewOne': '待审核报价单(一级)',
'menu.tranactionAbility.confirmInquiryQuote.pendingReviewOneDetails': '待审核报价单(一级)详情',
'menu.tranactionAbility.confirmInquiryQuote.pendingReviewTwo': '待审核报价单(二级)', 'menu.tranactionAbility.confirmInquiryQuote.pendingReviewTwo': '待审核报价单(二级)',
'menu.tranactionAbility.confirmInquiryQuote.pendingReviewTwoDetails': '待审核报价单(二级)详情',
'menu.tranactionAbility.confirmInquiryQuote.pendingSubmit': '待确认报价单', 'menu.tranactionAbility.confirmInquiryQuote.pendingSubmit': '待确认报价单',
'menu.tranactionAbility.confirmInquiryQuote.pendingSubmitDetails': '待确认报价单详情',
// 商品询价 // 商品询价
'menu.tranactionAbility.goodsOffer': '商品询价', 'menu.tranactionAbility.goodsOffer': '商品询价',
'menu.tranactionAbility.goodsOffer.enquiryOrder': '询价单查询', 'menu.tranactionAbility.goodsOffer.enquiryOrder': '询价单查询',
'menu.tranactionAbility.goodsOffer.enquiryOrderDetails': '询价单查询详情',
'menu.tranactionAbility.goodsOffer.addEnquiryOrder': '待新增询价单', 'menu.tranactionAbility.goodsOffer.addEnquiryOrder': '待新增询价单',
'menu.tranactionAbility.goodsOffer.add': '新建询价单', 'menu.tranactionAbility.goodsOffer.add': '新建询价单',
'menu.tranactionAbility.goodsOffer.edit': '编辑询价单', 'menu.tranactionAbility.goodsOffer.edit': '编辑询价单',
'menu.tranactionAbility.goodsOffer.detail': '查看询价单', 'menu.tranactionAbility.goodsOffer.addEnquiryOrderDetails': '待新增询价详情',
'menu.tranactionAbility.goodsOffer.details': '新建询价单',
'menu.tranactionAbility.goodsOffer.pendingReviewOne': '待审核询价单(一级)', 'menu.tranactionAbility.goodsOffer.pendingReviewOne': '待审核询价单(一级)',
'menu.tranactionAbility.goodsOffer.pendingReviewOneDetails': '待审核询价单(一级)详情',
'menu.tranactionAbility.goodsOffer.pendingReviewTwo': '待审核询价单(二级)', 'menu.tranactionAbility.goodsOffer.pendingReviewTwo': '待审核询价单(二级)',
'menu.tranactionAbility.goodsOffer.pendingReviewTwoDetails': '待审核询价单(二级)详情',
'menu.tranactionAbility.goodsOffer.pendingSubmit': '待提交询价单', 'menu.tranactionAbility.goodsOffer.pendingSubmit': '待提交询价单',
'menu.tranactionAbility.goodsOffer.pendingSubmitDetails': '待提交询价单详情',
'menu.tranactionAbility.goodsOffer.quoteOrderDetails': '报价单查询详情',
// 询价报价 // 询价报价
'menu.tranactionAbility.inquiryQuote': '询价报价', 'menu.tranactionAbility.inquiryQuote': '询价报价',
'menu.tranactionAbility.inquiryQuote.enquiryOrder': '询价单查询', 'menu.tranactionAbility.inquiryQuote.enquiryOrder': '询价单查询',
'menu.tranactionAbility.inquiryQuote.enquiryOrderDetails': '询价单查询详情',
'menu.tranactionAbility.inquiryQuote.quoteOrder': '报价单查询', 'menu.tranactionAbility.inquiryQuote.quoteOrder': '报价单查询',
'menu.tranactionAbility.inquiryQuote.quoteOrderDetails': '报价单查询详情',
'menu.tranactionAbility.inquiryQuote.addInquiryOrder': '待新增报价单', 'menu.tranactionAbility.inquiryQuote.addInquiryOrder': '待新增报价单',
'menu.tranactionAbility.inquiryQuote.add': '新建报价单', 'menu.tranactionAbility.inquiryQuote.add': '新建报价单',
'menu.tranactionAbility.inquiryQuote.edit': '编辑报价单',
'menu.tranactionAbility.inquiryQuote.details': '新建报价单', 'menu.tranactionAbility.inquiryQuote.details': '新建报价单',
'menu.tranactionAbility.inquiryQuote.addInquiryOrderDetails': '待新增报价单详情',
'menu.tranactionAbility.inquiryQuote.pendingReviewOne': '待审核报价单(一级)', 'menu.tranactionAbility.inquiryQuote.pendingReviewOne': '待审核报价单(一级)',
'menu.tranactionAbility.inquiryQuote.pendingReviewOneDetails': '待审核报价单(一级)详情',
'menu.tranactionAbility.inquiryQuote.pendingReviewTwo': '待审核报价单(二级)', 'menu.tranactionAbility.inquiryQuote.pendingReviewTwo': '待审核报价单(二级)',
'menu.tranactionAbility.inquiryQuote.pendingReviewTwoDetails': '待审核报价单(二级)详情',
'menu.tranactionAbility.inquiryQuote.pendingSubmit': '待提交报价单', 'menu.tranactionAbility.inquiryQuote.pendingSubmit': '待提交报价单',
'menu.tranactionAbility.inquiryQuote.pendingSubmitDetails': '待提交报价单详情',
//进销存 //进销存
'menu.tranactionAbility.stockSellStorage': '进销存', 'menu.tranactionAbility.stockSellStorage': '进销存',
...@@ -282,6 +297,9 @@ export default { ...@@ -282,6 +297,9 @@ export default {
'menu.tranactionAbility.supplierEvaluation.evaluate': '评价', 'menu.tranactionAbility.supplierEvaluation.evaluate': '评价',
'menu.tranactionAbility.supplierEvaluation.analysis': '评价统计', 'menu.tranactionAbility.supplierEvaluation.analysis': '评价统计',
'menu.tranactionAbility.supplierEvaluation.received': '收到的评价', 'menu.tranactionAbility.supplierEvaluation.received': '收到的评价',
'menu.tranactionAbility.supplierEvaluation.receivedDetail': '查看收到的评价',
'menu.tranactionAbility.supplierEvaluation.sentDetail': '查看发出的评价',
'menu.tranactionAbility.supplierEvaluation.editSent': '编辑发出的评价',
'menu.tranactionAbility.supplierEvaluation.sent': '发出的评价', 'menu.tranactionAbility.supplierEvaluation.sent': '发出的评价',
// 采购商评价 // 采购商评价
...@@ -290,6 +308,9 @@ export default { ...@@ -290,6 +308,9 @@ export default {
'menu.tranactionAbility.purchaserEvaluation.evaluate': '评价', 'menu.tranactionAbility.purchaserEvaluation.evaluate': '评价',
'menu.tranactionAbility.purchaserEvaluation.analysis': '评价统计', 'menu.tranactionAbility.purchaserEvaluation.analysis': '评价统计',
'menu.tranactionAbility.purchaserEvaluation.received': '收到的评价', 'menu.tranactionAbility.purchaserEvaluation.received': '收到的评价',
'menu.tranactionAbility.purchaserEvaluation.receivedDetail': '查看收到的评价',
'menu.tranactionAbility.purchaserEvaluation.sentDetail': '查看发出的评价',
'menu.tranactionAbility.purchaserEvaluation.editSent': '编辑发出的评价',
'menu.tranactionAbility.purchaserEvaluation.sent': '发出的评价', 'menu.tranactionAbility.purchaserEvaluation.sent': '发出的评价',
// 物流能力 // 物流能力
......
...@@ -3,10 +3,10 @@ import AuditProcess from '@/components/AuditProcess' ...@@ -3,10 +3,10 @@ import AuditProcess from '@/components/AuditProcess'
import { findLastIndexFlowState } from '../../_public/order/utils' import { findLastIndexFlowState } from '../../_public/order/utils'
import OrderProductTable from '../../components/orderProductTable' import OrderProductTable from '../../components/orderProductTable'
import SaleOrderProductTable from '../../components/saleOrderProductTable' import SaleOrderProductTable from '../../components/saleOrderProductTable'
import OrderPayTabs from '../../components/OrderPayTabs' import OrderPayTabs from '../../components/orderPayTabs'
import OrderMergeInfo from '../../components/OrderMergeInfo' import OrderMergeInfo from '../../components/orderMergeInfo'
import OrderDeleveRecord from '../../components/OrderDeleveRecord' import OrderDeleveRecord from '../../components/orderDeleveRecord'
import OrderTransformRecord from '../../components/OrderTransformRecord' import OrderTransformRecord from '../../components/orderTransformRecord'
export interface OrderDetailSectionProps { export interface OrderDetailSectionProps {
formContext: any, formContext: any,
......
...@@ -25,11 +25,12 @@ export interface parmas { ...@@ -25,11 +25,12 @@ export interface parmas {
batchAction?: Function, batchAction?: Function,
reloadRef?: any, reloadRef?: any,
type?: number, type?: number,
column?: any
} }
const ReviewList: React.FC<parmas> = (props) => { const ReviewList: React.FC<parmas> = (props) => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const { fetchData, selectAll, batchAction, reloadRef, type } = props; const { fetchData, selectAll, batchAction, reloadRef, type, column } = props;
const [selectRow, setSelectRow] = useState([]) const [selectRow, setSelectRow] = useState([])
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<number>>([]); const [selectedRowKeys, setSelectedRowKeys] = useState<Array<number>>([]);
const [id, setId] = useState<number>(); const [id, setId] = useState<number>();
...@@ -50,20 +51,7 @@ const ReviewList: React.FC<parmas> = (props) => { ...@@ -50,20 +51,7 @@ const ReviewList: React.FC<parmas> = (props) => {
}) })
const columns: ColumnType<any>[] = [ const columns: ColumnType<any>[] = [
{ ...column,
title: '报价单号',
key: 'quotationNo',
dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/components/details?id=${record.id}&page_type=${type}&view=2`}>{text}</EyePreview>
},
{
title: '询价单号',
key: 'inquiryListNo',
dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/components/details?id=${record.id}&page_type=${type}&view=1`}>{text}</EyePreview>
},
{ {
title: '询价单摘要', title: '询价单摘要',
key: 'details', key: 'details',
......
...@@ -3,6 +3,8 @@ import { message } from 'antd'; ...@@ -3,6 +3,8 @@ import { message } from 'antd';
import ReviewList from '../components/reviewList'; import ReviewList from '../components/reviewList';
import { timeRange } from '@/utils/index'; import { timeRange } from '@/utils/index';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
const PendingReviewOne: React.FC<{}> = () => { const PendingReviewOne: React.FC<{}> = () => {
const [selectRow, setSelectRow] = useState<Array<number>>([]); const [selectRow, setSelectRow] = useState<Array<number>>([]);
...@@ -65,6 +67,21 @@ const PendingReviewOne: React.FC<{}> = () => { ...@@ -65,6 +67,21 @@ const PendingReviewOne: React.FC<{}> = () => {
message.error('请选择要操作的询价单!') message.error('请选择要操作的询价单!')
} }
} }
const column: ColumnType<any>[] = [{
title: '报价单号',
key: 'quotationNo',
dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmit/details?id=${record.id}&page_type=1&view=2`}>{text}</EyePreview>
}, {
title: '询价单号',
key: 'inquiryListNo',
dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmit/details?id=${record.id}&page_type=1&view=1`}>{text}</EyePreview>
}]
return ( return (
<ReviewList <ReviewList
reloadRef={ref} reloadRef={ref}
...@@ -72,6 +89,7 @@ const PendingReviewOne: React.FC<{}> = () => { ...@@ -72,6 +89,7 @@ const PendingReviewOne: React.FC<{}> = () => {
selectAll={selectAll} selectAll={selectAll}
batchAction={batchAction} batchAction={batchAction}
type={2} type={2}
column={column}
/> />
) )
} }
......
...@@ -3,6 +3,8 @@ import { message } from 'antd'; ...@@ -3,6 +3,8 @@ import { message } from 'antd';
import ReviewList from '../components/reviewList'; import ReviewList from '../components/reviewList';
import { timeRange } from '@/utils/index'; import { timeRange } from '@/utils/index';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
const PendingReviewTwo: React.FC<{}> = () => { const PendingReviewTwo: React.FC<{}> = () => {
const [selectRow, setSelectRow] = useState<Array<number>>([]); const [selectRow, setSelectRow] = useState<Array<number>>([]);
...@@ -65,6 +67,21 @@ const PendingReviewTwo: React.FC<{}> = () => { ...@@ -65,6 +67,21 @@ const PendingReviewTwo: React.FC<{}> = () => {
message.error('请选择要操作的询价单!') message.error('请选择要操作的询价单!')
} }
} }
const column: ColumnType<any>[] = [{
title: '报价单号',
key: 'quotationNo',
dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmit/details?id=${record.id}&page_type=1&view=2`}>{text}</EyePreview>
}, {
title: '询价单号',
key: 'inquiryListNo',
dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmit/details?id=${record.id}&page_type=1&view=1`}>{text}</EyePreview>
}]
return ( return (
<ReviewList <ReviewList
reloadRef={ref} reloadRef={ref}
...@@ -72,6 +89,7 @@ const PendingReviewTwo: React.FC<{}> = () => { ...@@ -72,6 +89,7 @@ const PendingReviewTwo: React.FC<{}> = () => {
selectAll={selectAll} selectAll={selectAll}
batchAction={batchAction} batchAction={batchAction}
type={3} type={3}
column={column}
/> />
) )
} }
......
...@@ -30,13 +30,13 @@ const PendingSubmit: React.FC<{}> = () => { ...@@ -30,13 +30,13 @@ const PendingSubmit: React.FC<{}> = () => {
key: 'quotationNo', key: 'quotationNo',
dataIndex: 'quotationNo', dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/components/details?id=${record.id}&page_type=1&view=2`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmit/details?id=${record.id}&page_type=1&view=2`}>{text}</EyePreview>
}, { }, {
title: '询价单号', title: '询价单号',
key: 'inquiryListNo', key: 'inquiryListNo',
dataIndex: 'inquiryListNo', dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/components/details?id=${record.id}&page_type=1&view=1`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmit/details?id=${record.id}&page_type=1&view=1`}>{text}</EyePreview>
}, { }, {
title: '询价单摘要', title: '询价单摘要',
key: 'details', key: 'details',
......
...@@ -29,13 +29,13 @@ const PendingSubmitReview: React.FC<{}> = () => { ...@@ -29,13 +29,13 @@ const PendingSubmitReview: React.FC<{}> = () => {
key: 'quotationNo', key: 'quotationNo',
dataIndex: 'quotationNo', dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/components/details?id=${record.id}&page_type=5&view=2`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmitReview/details?id=${record.id}&page_type=5&view=2`}>{text}</EyePreview>
},{ },{
title: '询价单号', title: '询价单号',
key: 'inquiryListNo', key: 'inquiryListNo',
dataIndex: 'inquiryListNo', dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/components/details?id=${record.id}&page_type=5&view=1`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmitReview/details?id=${record.id}&page_type=5&view=1`}>{text}</EyePreview>
}, { }, {
title: '报价单摘要', title: '报价单摘要',
key: 'details', key: 'details',
......
...@@ -23,13 +23,13 @@ const EnquiryOrder: React.FC<{}> = (props) => { ...@@ -23,13 +23,13 @@ const EnquiryOrder: React.FC<{}> = (props) => {
key: 'quotationNo', key: 'quotationNo',
dataIndex: 'quotationNo', dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/components/details?id=${record.id}&page_type=4&view=2`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/confirmInquiryQuote/quoteOrder/details?id=${record.id}&page_type=4&view=2`}>{text}</EyePreview>
},{ },{
title: '询价单号', title: '询价单号',
key: 'inquiryListNo', key: 'inquiryListNo',
dataIndex: 'inquiryListNo', dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/confirmInquiryQuote/components/details?id=${record.id}&page_type=4&view=1`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/confirmInquiryQuote/quoteOrder/details?id=${record.id}&page_type=4&view=1`}>{text}</EyePreview>
}, { }, {
title: '报价单摘要', title: '报价单摘要',
key: 'details', key: 'details',
......
...@@ -28,7 +28,7 @@ const AddEnquiryOrder: React.FC<{}> = () => { ...@@ -28,7 +28,7 @@ const AddEnquiryOrder: React.FC<{}> = () => {
key: 'inquiryListNo', key: 'inquiryListNo',
dataIndex: 'inquiryListNo', dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/goodsOffer/components/details?id=${record.id}&page_type=6&view=1`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/details?id=${record.id}&page_type=6&view=1`}>{text}</EyePreview>
}, },
{ {
title: '询价单摘要', title: '询价单摘要',
...@@ -89,7 +89,7 @@ const AddEnquiryOrder: React.FC<{}> = () => { ...@@ -89,7 +89,7 @@ const AddEnquiryOrder: React.FC<{}> = () => {
return ( return (
<> <>
<Button type='link' disabled={record.interiorState !== 1}>提交审核</Button> <Button type='link' disabled={record.interiorState !== 1}>提交审核</Button>
<Button type="link" disabled={record.interiorState !== 4 && record.externalState !== 1 }><Link to={`/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/add?id=${record.id}`}>编辑</Link></Button> <Button type="link" disabled={record.interiorState !== 4 && record.externalState !== 1 }><Link to={`/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/edit?id=${record.id}`}>编辑</Link></Button>
<Popconfirm <Popconfirm
title="确定要删除吗?" title="确定要删除吗?"
okText="是" okText="是"
......
...@@ -23,11 +23,12 @@ export interface parmas { ...@@ -23,11 +23,12 @@ export interface parmas {
batchAction?: Function, batchAction?: Function,
reloadRef?: any, reloadRef?: any,
type?: number, type?: number,
column?: any
} }
const ReviewList: React.FC<parmas> = (props) => { const ReviewList: React.FC<parmas> = (props) => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const { fetchData, selectAll, batchAction, reloadRef, type } = props; const { fetchData, selectAll, batchAction, reloadRef, type, column} = props;
const [selectRow, setSelectRow] = useState([]) const [selectRow, setSelectRow] = useState([])
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<number>>([]); const [selectedRowKeys, setSelectedRowKeys] = useState<Array<number>>([]);
const [id, setId] = useState<number>(); const [id, setId] = useState<number>();
...@@ -48,13 +49,7 @@ const ReviewList: React.FC<parmas> = (props) => { ...@@ -48,13 +49,7 @@ const ReviewList: React.FC<parmas> = (props) => {
}) })
const columns: ColumnType<any>[] = [ const columns: ColumnType<any>[] = [
{ column,
title: '询价单号',
key: 'inquiryListNo',
dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/goodsOffer/components/details?id=${record.id}&page_type=${type}&view=1`}>{text}</EyePreview>
},
{ {
title: '询价单摘要', title: '询价单摘要',
key: 'details', key: 'details',
......
...@@ -23,7 +23,7 @@ const EnquiryOrder: React.FC<{}> = (props) => { ...@@ -23,7 +23,7 @@ const EnquiryOrder: React.FC<{}> = (props) => {
key: 'inquiryListNo', key: 'inquiryListNo',
dataIndex: 'inquiryListNo', dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/goodsOffer/components/details?id=${record.id}&page_type=4&view=1`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/details?id=${record.id}&page_type=4&view=1`}>{text}</EyePreview>
}, { }, {
title: '询价单摘要', title: '询价单摘要',
key: 'details', key: 'details',
......
...@@ -3,6 +3,7 @@ import { message } from 'antd'; ...@@ -3,6 +3,7 @@ import { message } from 'antd';
import ReviewList from '../components/reviewList'; import ReviewList from '../components/reviewList';
import { timeRange } from '@/utils/index'; import { timeRange } from '@/utils/index';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import EyePreview from '@/components/EyePreview';
const PendingReviewOne: React.FC<{}> = () => { const PendingReviewOne: React.FC<{}> = () => {
const [selectRow, setSelectRow] = useState<Array<number>>([]); const [selectRow, setSelectRow] = useState<Array<number>>([]);
...@@ -42,7 +43,7 @@ const PendingReviewOne: React.FC<{}> = () => { ...@@ -42,7 +43,7 @@ const PendingReviewOne: React.FC<{}> = () => {
const fetchData = (params?: any) => { const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数 console.log(params)//可以直接打印参数
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
PublicApi.getOrderInquiryToAuditList({...params}).then(res => { PublicApi.getOrderInquiryToAuditList({ ...params }).then(res => {
resolve(res.data) resolve(res.data)
}) })
// setTimeout(() => { // setTimeout(() => {
...@@ -65,6 +66,13 @@ const PendingReviewOne: React.FC<{}> = () => { ...@@ -65,6 +66,13 @@ const PendingReviewOne: React.FC<{}> = () => {
message.error('请选择要操作的询价单!') message.error('请选择要操作的询价单!')
} }
} }
const column = {
title: '询价单号',
key: 'inquiryListNo',
dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/goodsOffer/pendingReviewOne/details?id=${record.id}&page_type=2&view=1`}>{text}</EyePreview>
}
return ( return (
<ReviewList <ReviewList
reloadRef={ref} reloadRef={ref}
...@@ -72,6 +80,7 @@ const PendingReviewOne: React.FC<{}> = () => { ...@@ -72,6 +80,7 @@ const PendingReviewOne: React.FC<{}> = () => {
selectAll={selectAll} selectAll={selectAll}
batchAction={batchAction} batchAction={batchAction}
type={2} type={2}
column={column}
/> />
) )
} }
......
...@@ -3,6 +3,7 @@ import { message } from 'antd'; ...@@ -3,6 +3,7 @@ import { message } from 'antd';
import ReviewList from '../components/reviewList'; import ReviewList from '../components/reviewList';
import { timeRange } from '@/utils/index'; import { timeRange } from '@/utils/index';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import EyePreview from '@/components/EyePreview';
const PendingReviewTwo: React.FC<{}> = () => { const PendingReviewTwo: React.FC<{}> = () => {
const [selectRow, setSelectRow] = useState<Array<number>>([]); const [selectRow, setSelectRow] = useState<Array<number>>([]);
...@@ -12,7 +13,7 @@ const PendingReviewTwo: React.FC<{}> = () => { ...@@ -12,7 +13,7 @@ const PendingReviewTwo: React.FC<{}> = () => {
setSelectRow(values); setSelectRow(values);
console.log(values, '我是多选的id') console.log(values, '我是多选的id')
} }
// 列表数据 //列表数据
// const data = { // 模拟的数据 // const data = { // 模拟的数据
// totalCount: 6, // totalCount: 6,
// data: [{ // data: [{
...@@ -65,6 +66,14 @@ const PendingReviewTwo: React.FC<{}> = () => { ...@@ -65,6 +66,14 @@ const PendingReviewTwo: React.FC<{}> = () => {
message.error('请选择要操作的询价单!') message.error('请选择要操作的询价单!')
} }
} }
const column = {
title: '询价单号',
key: 'inquiryListNo',
dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/goodsOffer/pendingReviewTwo/details?id=${record.id}&page_type=3&view=1`}>{text}</EyePreview>
}
return ( return (
<ReviewList <ReviewList
reloadRef={ref} reloadRef={ref}
...@@ -72,6 +81,7 @@ const PendingReviewTwo: React.FC<{}> = () => { ...@@ -72,6 +81,7 @@ const PendingReviewTwo: React.FC<{}> = () => {
selectAll={selectAll} selectAll={selectAll}
batchAction={batchAction} batchAction={batchAction}
type={3} type={3}
column={column}
/> />
) )
} }
......
...@@ -30,7 +30,7 @@ const PendingSubmit: React.FC<{}> = () => { ...@@ -30,7 +30,7 @@ const PendingSubmit: React.FC<{}> = () => {
key: 'inquiryListNo', key: 'inquiryListNo',
dataIndex: 'inquiryListNo', dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/goodsOffer/components/details?id=${record.id}&page_type=1&view=1`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/goodsOffer/pendingSubmit/details?id=${record.id}&page_type=1&view=1`}>{text}</EyePreview>
}, },
{ {
title: '询价单摘要', title: '询价单摘要',
......
...@@ -27,13 +27,13 @@ const AddInquiryOrder: React.FC<{}> = () => { ...@@ -27,13 +27,13 @@ const AddInquiryOrder: React.FC<{}> = () => {
key: 'quotationNo', key: 'quotationNo',
dataIndex: 'quotationNo', dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/components/details?id=${record.id}&page_type=6&view=2`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/inquiryQuote/addInquiryOrder/details?id=${record.id}&page_type=6&view=2`}>{text}</EyePreview>
}, { }, {
title: '询价单号', title: '询价单号',
key: 'inquiryListNo', key: 'inquiryListNo',
dataIndex: 'inquiryListNo', dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/components/details?id=${record.id}&page_type=6&view=1`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/inquiryQuote/addInquiryOrder/details?id=${record.id}&page_type=6&view=1`}>{text}</EyePreview>
}, { }, {
title: '询价单摘要', title: '询价单摘要',
key: 'details', key: 'details',
...@@ -78,7 +78,7 @@ const AddInquiryOrder: React.FC<{}> = () => { ...@@ -78,7 +78,7 @@ const AddInquiryOrder: React.FC<{}> = () => {
return ( return (
<> <>
<Button type='link' >提交审核</Button> <Button type='link' >提交审核</Button>
<Button type="link"><Link to={`/memberCenter/tranactionAbility/inquiryQuote/addInquiryOrder/add?id=${record.id}`}>编辑</Link></Button> <Button type="link"><Link to={`/memberCenter/tranactionAbility/inquiryQuote/addInquiryOrder/edit?id=${record.id}`}>编辑</Link></Button>
<Popconfirm <Popconfirm
destroyTooltipOnHide destroyTooltipOnHide
title="确定要删除吗?" title="确定要删除吗?"
......
...@@ -23,11 +23,12 @@ export interface parmas { ...@@ -23,11 +23,12 @@ export interface parmas {
batchAction?: Function, batchAction?: Function,
reloadRef?: any, reloadRef?: any,
type?: number, type?: number,
column?: any
} }
const ReviewList: React.FC<parmas> = (props) => { const ReviewList: React.FC<parmas> = (props) => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const { fetchData, selectAll, batchAction, reloadRef, type } = props; const { fetchData, selectAll, batchAction, reloadRef, type, column } = props;
const [selectRow, setSelectRow] = useState([]) const [selectRow, setSelectRow] = useState([])
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<number>>([]); const [selectedRowKeys, setSelectedRowKeys] = useState<Array<number>>([]);
const [id, setId] = useState<number>(); const [id, setId] = useState<number>();
...@@ -48,20 +49,7 @@ const ReviewList: React.FC<parmas> = (props) => { ...@@ -48,20 +49,7 @@ const ReviewList: React.FC<parmas> = (props) => {
}) })
const columns: ColumnType<any>[] = [ const columns: ColumnType<any>[] = [
{ ...column,
title: '报价单号',
key: 'quotationNo',
dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/components/details?id=${record.id}&page_type=${type}&view=2`}>{text}</EyePreview>
},
{
title: '询价单号',
key: 'inquiryListNo',
dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/components/details?id=${record.id}&page_type=${type}&view=1`}>{text}</EyePreview>
},
{ {
title: '询价单摘要', title: '询价单摘要',
key: 'details', key: 'details',
......
...@@ -23,7 +23,7 @@ const EnquiryOrder: React.FC<{}> = (props) => { ...@@ -23,7 +23,7 @@ const EnquiryOrder: React.FC<{}> = (props) => {
key: 'inquiryListNo', key: 'inquiryListNo',
dataIndex: 'inquiryListNo', dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/components/details?id=${record.id}&page_type=4&view=1`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/inquiryQuote/enquiryOrder/details?id=${record.id}&page_type=4&view=1`}>{text}</EyePreview>
}, { }, {
title: '询价单摘要', title: '询价单摘要',
key: 'details', key: 'details',
......
...@@ -3,6 +3,8 @@ import { message } from 'antd'; ...@@ -3,6 +3,8 @@ import { message } from 'antd';
import ReviewList from '../components/reviewList'; import ReviewList from '../components/reviewList';
import { timeRange } from '@/utils/index'; import { timeRange } from '@/utils/index';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
const PendingReviewOne: React.FC<{}> = () => { const PendingReviewOne: React.FC<{}> = () => {
const [selectRow, setSelectRow] = useState<Array<number>>([]); const [selectRow, setSelectRow] = useState<Array<number>>([]);
...@@ -65,6 +67,20 @@ const PendingReviewOne: React.FC<{}> = () => { ...@@ -65,6 +67,20 @@ const PendingReviewOne: React.FC<{}> = () => {
message.error('请选择要操作的询价单!') message.error('请选择要操作的询价单!')
} }
} }
const column: ColumnType<any>[] = [{
title: '报价单号',
key: 'quotationNo',
dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/pendingReviewOne/details?id=${record.id}&page_type=2&view=2`}>{text}</EyePreview>
},
{
title: '询价单号',
key: 'inquiryListNo',
dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/pendingReviewOne/details?id=${record.id}&page_type=2&view=1`}>{text}</EyePreview>
}]
return ( return (
<ReviewList <ReviewList
reloadRef={ref} reloadRef={ref}
...@@ -72,6 +88,7 @@ const PendingReviewOne: React.FC<{}> = () => { ...@@ -72,6 +88,7 @@ const PendingReviewOne: React.FC<{}> = () => {
selectAll={selectAll} selectAll={selectAll}
batchAction={batchAction} batchAction={batchAction}
type={2} type={2}
column={column}
/> />
) )
} }
......
...@@ -3,6 +3,8 @@ import { message } from 'antd'; ...@@ -3,6 +3,8 @@ import { message } from 'antd';
import ReviewList from '../components/reviewList'; import ReviewList from '../components/reviewList';
import { timeRange } from '@/utils/index'; import { timeRange } from '@/utils/index';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
const PendingReviewTwo: React.FC<{}> = () => { const PendingReviewTwo: React.FC<{}> = () => {
const [selectRow, setSelectRow] = useState<Array<number>>([]); const [selectRow, setSelectRow] = useState<Array<number>>([]);
...@@ -65,6 +67,20 @@ const PendingReviewTwo: React.FC<{}> = () => { ...@@ -65,6 +67,20 @@ const PendingReviewTwo: React.FC<{}> = () => {
message.error('请选择要操作的询价单!') message.error('请选择要操作的询价单!')
} }
} }
const column: ColumnType<any>[] = [{
title: '报价单号',
key: 'quotationNo',
dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/pendingReviewOne/details?id=${record.id}&page_type=2&view=2`}>{text}</EyePreview>
},
{
title: '询价单号',
key: 'inquiryListNo',
dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/pendingReviewOne/details?id=${record.id}&page_type=2&view=1`}>{text}</EyePreview>
}]
return ( return (
<ReviewList <ReviewList
reloadRef={ref} reloadRef={ref}
...@@ -72,6 +88,7 @@ const PendingReviewTwo: React.FC<{}> = () => { ...@@ -72,6 +88,7 @@ const PendingReviewTwo: React.FC<{}> = () => {
selectAll={selectAll} selectAll={selectAll}
batchAction={batchAction} batchAction={batchAction}
type={3} type={3}
column={column}
/> />
) )
} }
......
...@@ -29,13 +29,13 @@ const PendingSubmit: React.FC<{}> = () => { ...@@ -29,13 +29,13 @@ const PendingSubmit: React.FC<{}> = () => {
key: 'quotationNo', key: 'quotationNo',
dataIndex: 'quotationNo', dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/components/details?id=${record.id}&page_type=1&view=2`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/inquiryQuote/pendingSubmit/details?id=${record.id}&page_type=1&view=2`}>{text}</EyePreview>
}, { }, {
title: '询价单号', title: '询价单号',
key: 'inquiryListNo', key: 'inquiryListNo',
dataIndex: 'inquiryListNo', dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/components/details?id=${record.id}&page_type=1&view=1`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/inquiryQuote/pendingSubmit/details?id=${record.id}&page_type=1&view=1`}>{text}</EyePreview>
}, { }, {
title: '询价单摘要', title: '询价单摘要',
key: 'details', key: 'details',
......
...@@ -23,13 +23,13 @@ const EnquiryOrder: React.FC<{}> = (props) => { ...@@ -23,13 +23,13 @@ const EnquiryOrder: React.FC<{}> = (props) => {
key: 'quotationNo', key: 'quotationNo',
dataIndex: 'quotationNo', dataIndex: 'quotationNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/components/details?id=${record.id}&page_type=5&view=2`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/inquiryQuote/quoteOrder/details?id=${record.id}&page_type=5&view=2`}>{text}</EyePreview>
},{ },{
title: '询价单号', title: '询价单号',
key: 'inquiryListNo', key: 'inquiryListNo',
dataIndex: 'inquiryListNo', dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/inquiryQuote/components/details?id=${record.id}&page_type=5&view=1`}>{text}</EyePreview> url={`/memberCenter/tranactionAbility/inquiryQuote/quoteOrder/details?id=${record.id}&page_type=5&view=1`}>{text}</EyePreview>
}, { }, {
title: '询价单摘要', title: '询价单摘要',
key: 'details', key: 'details',
......
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Tabs, Row, Col, Button } from 'antd'; import { Tabs, Row, Col, Button } from 'antd';
import { history } from 'umi';
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { isJSONStr } from '@/utils'; import { isJSONStr } from '@/utils';
...@@ -169,6 +170,7 @@ const Analysis: React.FC = () => { ...@@ -169,6 +170,7 @@ const Analysis: React.FC = () => {
data: data.map(item => { data: data.map(item => {
const product = isJSONStr(item.product) || {}; const product = isJSONStr(item.product) || {};
return { return {
id: item.id,
star: item.star, star: item.star,
comment: item.comment, comment: item.comment,
productName: product.productName || '', productName: product.productName || '',
...@@ -176,6 +178,7 @@ const Analysis: React.FC = () => { ...@@ -176,6 +178,7 @@ const Analysis: React.FC = () => {
quantity: product.purchaseCount, quantity: product.purchaseCount,
created: item.createTime, created: item.createTime,
target: item.byMemberName, target: item.byMemberName,
orderId: product.orderId,
}; };
}), }),
totalCount, totalCount,
...@@ -200,6 +203,7 @@ const Analysis: React.FC = () => { ...@@ -200,6 +203,7 @@ const Analysis: React.FC = () => {
data: data.map(item => { data: data.map(item => {
const product = isJSONStr(item.product) || {}; const product = isJSONStr(item.product) || {};
return { return {
id: item.id,
star: item.star, star: item.star,
comment: item.comment, comment: item.comment,
productName: product.productName || '', productName: product.productName || '',
...@@ -207,6 +211,7 @@ const Analysis: React.FC = () => { ...@@ -207,6 +211,7 @@ const Analysis: React.FC = () => {
quantity: product.purchaseCount, quantity: product.purchaseCount,
created: item.dealTime as string, created: item.dealTime as string,
target: item.memberName, target: item.memberName,
orderId: product.orderId,
}; };
}), }),
totalCount, totalCount,
...@@ -233,6 +238,7 @@ const Analysis: React.FC = () => { ...@@ -233,6 +238,7 @@ const Analysis: React.FC = () => {
data: data.map(item => { data: data.map(item => {
const product = isJSONStr(item.product) || {}; const product = isJSONStr(item.product) || {};
return { return {
id: item.id,
star: item.star, star: item.star,
comment: item.comment, comment: item.comment,
productName: product.productName || '', productName: product.productName || '',
...@@ -240,6 +246,7 @@ const Analysis: React.FC = () => { ...@@ -240,6 +246,7 @@ const Analysis: React.FC = () => {
quantity: product.purchaseCount, quantity: product.purchaseCount,
created: item.dealTime as string, created: item.dealTime as string,
target: item.subMemberName, target: item.subMemberName,
orderId: product.orderId,
}; };
}), }),
totalCount, totalCount,
...@@ -284,6 +291,18 @@ const Analysis: React.FC = () => { ...@@ -284,6 +291,18 @@ const Analysis: React.FC = () => {
getTradeSummary(); getTradeSummary();
}, []); }, []);
const handleJumpReceived = record => {
history.push(`/memberCenter/tranactionAbility/purchaserEvaluation/received/detail?orderId=${record.orderId}&id=${record.id}&preview=1`);
};
const handleEditSent = record => {
history.push(`/memberCenter/tranactionAbility/purchaserEvaluation/sent/edit?orderId=${record.orderId}&id=${record.id}&preview=0`);
};
const handleJumpSent = record => {
history.push(`/memberCenter/tranactionAbility/purchaserEvaluation/sent/detail?orderId=${record.orderId}&id=${record.id}&preview=1`);
};
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<MellowCard <MellowCard
...@@ -324,16 +343,30 @@ const Analysis: React.FC = () => { ...@@ -324,16 +343,30 @@ const Analysis: React.FC = () => {
</Shelves> </Shelves>
<Shelves title="评价记录"> <Shelves title="评价记录">
<RecordList fetchList={getTradeHistory} paginationType="button" searchable={false} /> <RecordList
fetchList={getTradeHistory}
paginationType="button"
searchable={false}
onCheck={handleJumpReceived}
/>
</Shelves> </Shelves>
</TabPane> </TabPane>
<TabPane tab="收到的评价" key="2"> <TabPane tab="收到的评价" key="2">
<RecordList fetchList={getReceivedList} /> <RecordList
fetchList={getReceivedList}
onCheck={handleJumpReceived}
/>
</TabPane> </TabPane>
<TabPane tab="发出的评价" key="3"> <TabPane tab="发出的评价" key="3">
<RecordList fetchList={getSentList} /> <RecordList
fetchList={getSentList}
onCheck={handleJumpSent}
onEdit={handleEditSent}
opposite={false}
editable={true}
/>
</TabPane> </TabPane>
</Tabs> </Tabs>
</MellowCard> </MellowCard>
......
...@@ -74,6 +74,10 @@ export interface RecordItem { ...@@ -74,6 +74,10 @@ export interface RecordItem {
* 评价方/被评价方 * 评价方/被评价方
*/ */
target: string target: string
/**
* 订单id
*/
orderId: string
}; };
export interface RecordRes { export interface RecordRes {
...@@ -91,7 +95,14 @@ interface RecordListProps { ...@@ -91,7 +95,14 @@ interface RecordListProps {
// 是否是查看收到的品论 // 是否是查看收到的品论
opposite?: boolean; opposite?: boolean;
// 是否可编辑的
editable?: boolean;
fetchList: (params: ListParams) => Promise<RecordRes>; fetchList: (params: ListParams) => Promise<RecordRes>;
onCheck: (record: RecordItem) => void;
onEdit?: (record: RecordItem) => void;
}; };
interface RecordListState { interface RecordListState {
...@@ -140,8 +151,12 @@ export default class RecordList extends React.Component<RecordListProps, RecordL ...@@ -140,8 +151,12 @@ export default class RecordList extends React.Component<RecordListProps, RecordL
this.setState({ loading: true }); this.setState({ loading: true });
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const { searchVal, page, size } = this.state; const { searchVal, page, size } = this.state;
const { dealTimeStart, dealTimeEnd } = searchVal;
fetchList({ fetchList({
...searchVal, ...searchVal,
dealTimeStart: dealTimeStart ? moment(+dealTimeStart).format('YYYY-MM-DD HH:mm:ss') : null,
dealTimeEnd: dealTimeEnd ? moment(+dealTimeEnd).format('YYYY-MM-DD HH:mm:ss') : null,
current: `${page}`, current: `${page}`,
pageSize: `${size}`, pageSize: `${size}`,
}).then(res => { }).then(res => {
...@@ -210,11 +225,26 @@ export default class RecordList extends React.Component<RecordListProps, RecordL ...@@ -210,11 +225,26 @@ export default class RecordList extends React.Component<RecordListProps, RecordL
}); });
}; };
handleCheck = record => {
const { onCheck } = this.props;
if (onCheck) {
onCheck(record);
}
};
handleEdit = record => {
const { onEdit } = this.props;
if (onEdit) {
onEdit(record);
}
};
render() { render() {
const { const {
paginationType = 'pagination', paginationType = 'pagination',
searchable = true, searchable = true,
opposite = true, opposite = true,
editable = false,
} = this.props; } = this.props;
const { page, size, loading, receivedList, hasMore } = this.state; const { page, size, loading, receivedList, hasMore } = this.state;
...@@ -232,7 +262,12 @@ export default class RecordList extends React.Component<RecordListProps, RecordL ...@@ -232,7 +262,12 @@ export default class RecordList extends React.Component<RecordListProps, RecordL
)} )}
<Spin spinning={paginationType === 'pagination' && loading}> <Spin spinning={paginationType === 'pagination' && loading}>
<ul className={styles.record}> <ul
className={styles.record}
style={{
minHeight: loading ? 69 : 'auto',
}}
>
{receivedList.data.map((item, index) => ( {receivedList.data.map((item, index) => (
<li className={styles['record-item']} key={index}> <li className={styles['record-item']} key={index}>
<div className={styles['record-item-good']}> <div className={styles['record-item-good']}>
...@@ -272,7 +307,10 @@ export default class RecordList extends React.Component<RecordListProps, RecordL ...@@ -272,7 +307,10 @@ export default class RecordList extends React.Component<RecordListProps, RecordL
</div> </div>
<div className={styles['record-item-actions']}> <div className={styles['record-item-actions']}>
<Button type="link">查看</Button> {editable && (
<Button type="link" onClick={() => this.handleEdit(item)}>编辑</Button>
)}
<Button type="link" onClick={() => this.handleCheck(item)}>查看</Button>
</div> </div>
</li> </li>
))} ))}
......
...@@ -19,7 +19,28 @@ export const searchSchema: ISchema = { ...@@ -19,7 +19,28 @@ export const searchSchema: ISchema = {
properties: { properties: {
star: { star: {
type: 'string', type: 'string',
enum: [], enum: [
{
label: '一星',
value: 1,
},
{
label: '二星',
value: 2,
},
{
label: '三星',
value: 3,
},
{
label: '四星',
value: 4,
},
{
label: '五星',
value: 5,
},
],
'x-component-props': { 'x-component-props': {
placeholder: '评论星级', placeholder: '评论星级',
allowClear: true, allowClear: true,
......
import { useBusinessEffects } from './useBusinessEffects';
export const createEffects = (context, actions) => {
useBusinessEffects(context, actions);
};
\ No newline at end of file
import { FormEffectHooks, FormPath } from '@formily/antd';
const {
onFieldInputChange$,
onFieldValueChange$,
} = FormEffectHooks;
export const useBusinessEffects = (context, actions) => {
const {
setFieldState,
} = actions;
// 评论图片限制 4 张
onFieldInputChange$('comments.*.picture').subscribe(fieldState => {
const { name, value } = fieldState;
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `comments.${$1}.picture`
}),
state => {
state.props['x-component-props'].disabled = value.length >= 4;
}
);
});
// 评分联动
onFieldInputChange$('comments.*.star').subscribe(fieldState => {
const { name, value } = fieldState;
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `comments.${$1}.smile`
}),
state => {
state.value = value;
}
);
});
}
\ No newline at end of file
import React, { useState, useEffect } from 'react';
import {
PageHeader,
Descriptions,
Card,
Spin,
Button,
message,
} from 'antd';
import { FormOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { history } from 'umi';
import { createFormActions, FormEffectHooks, FormPath } from '@formily/antd';
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus';
import { PublicApi } from '@/services/api';
import { GetOrderPurchaseOrderDetailsResponse } from '@/services/OrderApi';
import { normalizeFiledata, isJSONStr } from '@/utils';
import AvatarWrap from '@/components/AvatarWrap';
import NiceForm from '@/components/NiceForm';
import { normalizeUnevaluatedList } from '../../utils';
import { evaluateSchema } from './schema';
import { createEffects } from './effects';
import EvaluationList from '../../components/EvaluationList';
import styles from './index.less';
const formActions = createFormActions();
interface Unevaluated {
good: {
pic: string,
productName: string,
price: string,
purchaseCount: string,
};
star: number;
comment: string;
picture: string[];
smile: number;
};
const ReceivedDetail: React.FC = () => {
const { orderId, id, pageStatus } = usePageStatus();
const [orderInfo, setOrderInfo] = useState<GetOrderPurchaseOrderDetailsResponse>(null);
const [orderInfoLoading, setOrderInfoLoading] = useState(false);
const [evaluationInfo, setEvaluationInfo] = useState<Unevaluated>(null);
const [evaluationInfoLoading, setEvaluationInfoLoading] = useState(false);
const [submitLoading, setSubmitLoading] = useState(false);
const getOrderInfo = () => {
if (!orderId) {
return;
}
setOrderInfoLoading(true);
PublicApi.getOrderProcurementOrderDetails({
id: orderId,
}).then(res => {
if (res.code === 1000) {
setOrderInfo(res.data);
}
}).finally(() => {
setOrderInfoLoading(false);
});
};
const getEvaluationInfo = () => {
if (!id) {
return;
}
setEvaluationInfoLoading(true);
PublicApi.getMemberCommentConsumerReceiveTradeHistoryGet({
id,
}).then(res => {
if (res.code === 1000) {
const { product } = res.data;
const productObj = isJSONStr(product) || {};
setEvaluationInfo({
good: {
pic: productObj.pic,
productName: productObj.productName,
price: productObj.price,
purchaseCount: productObj.purchaseCount,
},
star: res.data.star,
comment: res.data.comment,
picture: res.data.pics ? res.data.pics.map(item => normalizeFiledata(item)) : [],
smile: res.data.star,
});
}
}).finally(() => {
setEvaluationInfoLoading(false);
});
};
useEffect(() => {
getOrderInfo();
getEvaluationInfo();
}, []);
const handleSubmit = values => {
};
const beforeUpload = file => {
if (file.size / 1024 < 10) {
message.warning('图片大小超过10M');
return Promise.reject();
}
};
const UploadTip = (
<span
style={{
lineHeight: '24px',
color: '#909399',
fontWeight: 400,
wordBreak: 'break-all',
position: 'relative',
top: '34px',
}}
>
支持JPG/PNG/JPEG <br />每张最大不超过 10M,尺寸不限 <br />最大数量限制 4张
</span>
);
return (
<Spin spinning={orderInfoLoading || evaluationInfoLoading}>
<PageHeaderWrapper
title={
<>
<PageHeader
style={{ padding: '0' }}
onBack={() => history.goBack()}
title={
<AvatarWrap
info={{
aloneTxt: '单',
name: orderInfo?.orderNo,
}}
/>
}
extra={(
<>
{
pageStatus === PageStatus.EDIT && (
<Button
type="primary"
icon={<FormOutlined />}
loading={submitLoading}
onClick={() => formActions.submit()}
>
修改
</Button>
)
}
</>
)}
>
<Descriptions
size="small"
column={3}
style={{
padding: '0 32px',
}}
>
<Descriptions.Item label="供应会员">{orderInfo?.supplyMembersName}</Descriptions.Item>
<Descriptions.Item label="下单时间" span={2}>{orderInfo?.createTime}</Descriptions.Item>
</Descriptions>
</PageHeader>
</>
}
>
<NiceForm
actions={formActions}
initialValues={{
comments: [evaluationInfo],
}}
editable={pageStatus === PageStatus.EDIT}
expressionScope={{
UploadTip: pageStatus === PageStatus.EDIT ? UploadTip : null,
beforeUpload,
}}
onSubmit={handleSubmit}
components={{
EvaluationList,
}}
effects={($, actions) => {
createEffects($, actions);
}}
schema={evaluateSchema}
/>
</PageHeaderWrapper>
</Spin>
);
};
export default ReceivedDetail;
\ No newline at end of file
/*
* @Author: XieZhiXiong
* @Date: 2020-09-23 17:00:24
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-21 13:47:51
* @Description:
*/
import { ISchema } from '@formily/antd';
import { UPLOAD_TYPE } from '@/constants';
export const evaluateSchema: ISchema = {
type: 'object',
properties: {
comments: {
type: 'array',
'x-component': 'EvaluationList',
default: [],
items: {
type: 'object',
properties: {
LEFT_RIGHT: {
type: 'object',
'x-component': 'LeftRightLayout',
'x-component-props': {
rightProps: {
span: 2,
offset: 4,
},
},
properties: {
MEGA_LADYOUT: {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
labelCol: 6,
labelAlign: 'left',
position: 'left',
},
properties: {
star: {
title: '满意程度',
required: true,
'x-component': 'Rating',
'x-component-props': {
allowHalf: false,
},
'x-rules': [
{
required: true,
message: '请选择满意程度',
},
],
},
comment: {
type: 'string',
title: '评价',
'x-component': 'TextArea',
'x-component-props': {
rows: 4,
},
'x-rules': {
max: 200,
},
},
picture: {
type: 'string',
title: '图片',
'x-component': 'Upload',
'x-component-props': {
listType: 'card',
action: '/api/file/file/upload/prefix',
data: {
fileType: UPLOAD_TYPE,
prefix: '/purchaserEvaluation/',
},
beforeUpload: '{{beforeUpload}}',
accept: '.png, .jpg, .jpeg',
},
'x-mega-props': {
addonAfter: '{{UploadTip}}',
},
},
},
},
smile: {
type: 'object',
default: 1,
'x-component': 'SmilingFace',
'x-component-props': {
position: 'right',
},
},
},
},
},
},
},
},
};
\ No newline at end of file
import { useBusinessEffects } from './useBusinessEffects';
export const createEffects = (context, actions) => {
useBusinessEffects(context, actions);
};
\ No newline at end of file
import { FormEffectHooks, FormPath } from '@formily/antd';
const {
onFieldInputChange$,
onFieldValueChange$,
} = FormEffectHooks;
export const useBusinessEffects = (context, actions) => {
const {
setFieldState,
} = actions;
// 评论图片限制 4 张
onFieldInputChange$('comments.*.picture').subscribe(fieldState => {
const { name, value } = fieldState;
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `comments.${$1}.picture`
}),
state => {
state.props['x-component-props'].disabled = value.length >= 4;
}
);
});
// 评分联动
onFieldInputChange$('comments.*.star').subscribe(fieldState => {
const { name, value } = fieldState;
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `comments.${$1}.smile`
}),
state => {
state.value = value;
}
);
});
}
\ No newline at end of file
import React, { useState, useEffect } from 'react';
import {
PageHeader,
Descriptions,
Card,
Spin,
Button,
message,
} from 'antd';
import { FormOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { history } from 'umi';
import { createFormActions, FormEffectHooks, FormPath } from '@formily/antd';
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus';
import { PublicApi } from '@/services/api';
import { GetOrderPurchaseOrderDetailsResponse } from '@/services/OrderApi';
import { normalizeFiledata, isJSONStr } from '@/utils';
import AvatarWrap from '@/components/AvatarWrap';
import NiceForm from '@/components/NiceForm';
import { normalizeUnevaluatedList } from '../../utils';
import { evaluateSchema } from './schema';
import { createEffects } from './effects';
import EvaluationList from '../../components/EvaluationList';
import styles from './index.less';
const formActions = createFormActions();
const {
onFormInit$,
} = FormEffectHooks;
interface Unevaluated {
good: {
pic: string,
productName: string,
price: string,
purchaseCount: string,
};
star: number;
comment: string;
picture: string[];
smile: number;
};
const SentDetail: React.FC = () => {
const { orderId, id, pageStatus } = usePageStatus();
const [orderInfo, setOrderInfo] = useState<GetOrderPurchaseOrderDetailsResponse>(null);
const [orderInfoLoading, setOrderInfoLoading] = useState(false);
const [evaluationInfo, setEvaluationInfo] = useState<Unevaluated>(null);
const [evaluationInfoLoading, setEvaluationInfoLoading] = useState(false);
const [submitLoading, setSubmitLoading] = useState(false);
const getOrderInfo = () => {
if (!orderId) {
return;
}
setOrderInfoLoading(true);
PublicApi.getOrderProcurementOrderDetails({
id: orderId,
}).then(res => {
if (res.code === 1000) {
setOrderInfo(res.data);
}
}).finally(() => {
setOrderInfoLoading(false);
});
};
const getEvaluationInfo = () => {
if (!id) {
return;
}
setEvaluationInfoLoading(true);
PublicApi.getMemberCommentConsumerSendTradeHistoryGet({
id,
}).then(res => {
if (res.code === 1000) {
const { product } = res.data;
const productObj = isJSONStr(product) || {};
setEvaluationInfo({
good: {
pic: productObj.pic,
productName: productObj.productName,
price: productObj.price,
purchaseCount: productObj.purchaseCount,
},
star: res.data.star,
comment: res.data.comment,
picture: res.data.pics ? res.data.pics.map(item => normalizeFiledata(item)) : [],
smile: res.data.star,
});
}
}).finally(() => {
setEvaluationInfoLoading(false);
});
};
useEffect(() => {
getOrderInfo();
getEvaluationInfo();
}, []);
const handleSubmit = values => {
setSubmitLoading(true);
const payload = values.comments.map(item => {
const {
comment,
good,
picture,
star,
} = item;
return {
id,
star,
comment,
};
});
if (!payload.length) {
return;
}
PublicApi.postMemberCommentConsumerSendTradeHistoryUpdate(payload[0])
.then(res => {
if (res.code === 1000) {
setTimeout(() => {
history.goBack();
}, 800);
}
})
.finally(() => {
setSubmitLoading(false);
});
};
const beforeUpload = file => {
if (file.size / 1024 < 10) {
message.warning('图片大小超过10M');
return Promise.reject();
}
};
const UploadTip = (
<span
style={{
lineHeight: '24px',
color: '#909399',
fontWeight: 400,
wordBreak: 'break-all',
position: 'relative',
top: '34px',
}}
>
支持JPG/PNG/JPEG <br />每张最大不超过 10M,尺寸不限 <br />最大数量限制 4张
</span>
);
return (
<Spin spinning={orderInfoLoading || evaluationInfoLoading}>
<PageHeaderWrapper
title={
<>
<PageHeader
style={{ padding: '0' }}
onBack={() => history.goBack()}
title={
<AvatarWrap
info={{
aloneTxt: '单',
name: orderInfo?.orderNo,
}}
/>
}
extra={(
<>
{
pageStatus === PageStatus.EDIT && (
<Button
type="primary"
icon={<FormOutlined />}
disabled={!id}
loading={submitLoading}
onClick={() => formActions.submit()}
>
修改
</Button>
)
}
</>
)}
>
<Descriptions
size="small"
column={3}
style={{
padding: '0 32px',
}}
>
<Descriptions.Item label="供应会员">{orderInfo?.supplyMembersName}</Descriptions.Item>
<Descriptions.Item label="下单时间" span={2}>{orderInfo?.createTime}</Descriptions.Item>
</Descriptions>
</PageHeader>
</>
}
>
<NiceForm
actions={formActions}
initialValues={{
comments: [evaluationInfo],
}}
editable={pageStatus === PageStatus.EDIT}
expressionScope={{
UploadTip: pageStatus === PageStatus.EDIT ? UploadTip : null,
beforeUpload,
}}
onSubmit={handleSubmit}
components={{
EvaluationList,
}}
effects={($, actions) => {
createEffects($, actions);
onFormInit$().subscribe(() => {
if (pageStatus === PageStatus.EDIT) {
actions.setFieldState(
'comments.*.picture',
state => {
state.visible = false;
}
);
}
});
}}
schema={evaluateSchema}
/>
</PageHeaderWrapper>
</Spin>
);
};
export default SentDetail;
\ No newline at end of file
/*
* @Author: XieZhiXiong
* @Date: 2020-09-23 17:00:24
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-19 16:23:24
* @Description:
*/
import { ISchema } from '@formily/antd';
import { UPLOAD_TYPE } from '@/constants';
export const evaluateSchema: ISchema = {
type: 'object',
properties: {
comments: {
type: 'array',
'x-component': 'EvaluationList',
default: [],
items: {
type: 'object',
properties: {
LEFT_RIGHT: {
type: 'object',
'x-component': 'LeftRightLayout',
'x-component-props': {
rightProps: {
span: 2,
offset: 4,
},
},
properties: {
MEGA_LADYOUT: {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
labelCol: 6,
labelAlign: 'left',
position: 'left',
},
properties: {
star: {
title: '满意程度',
required: true,
'x-component': 'Rating',
'x-component-props': {
allowHalf: false,
},
'x-rules': [
{
required: true,
message: '请选择满意程度',
},
],
},
comment: {
type: 'string',
title: '评价',
'x-component': 'TextArea',
'x-component-props': {
rows: 4,
},
'x-rules': {
max: 200,
},
},
picture: {
type: 'string',
title: '图片',
'x-component': 'Upload',
'x-component-props': {
listType: 'card',
action: '/api/file/file/upload/prefix',
data: {
fileType: UPLOAD_TYPE,
prefix: '/purchaserEvaluation/',
},
beforeUpload: '{{beforeUpload}}',
accept: '.png, .jpg, .jpeg',
},
'x-mega-props': {
addonAfter: '{{UploadTip}}',
},
},
},
},
smile: {
type: 'object',
default: 1,
'x-component': 'SmilingFace',
'x-component-props': {
position: 'right',
},
},
},
},
},
},
},
},
};
\ No newline at end of file
...@@ -58,6 +58,9 @@ export const evaluateSchema: ISchema = { ...@@ -58,6 +58,9 @@ export const evaluateSchema: ISchema = {
'x-component-props': { 'x-component-props': {
rows: 4, rows: 4,
}, },
'x-rules': {
max: 200,
},
}, },
picture: { picture: {
type: 'string', type: 'string',
...@@ -68,7 +71,7 @@ export const evaluateSchema: ISchema = { ...@@ -68,7 +71,7 @@ export const evaluateSchema: ISchema = {
action: '/api/file/file/upload/prefix', action: '/api/file/file/upload/prefix',
data: { data: {
fileType: UPLOAD_TYPE, fileType: UPLOAD_TYPE,
prefix: '/supplierEvaluation/', prefix: '/purchaserEvaluation/',
}, },
beforeUpload: '{{beforeUpload}}', beforeUpload: '{{beforeUpload}}',
accept: '.png, .jpg, .jpeg', accept: '.png, .jpg, .jpeg',
......
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Tabs, Row, Col, Button } from 'antd'; import { Tabs, Row, Col, Button } from 'antd';
import { history } from 'umi';
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { isJSONStr } from '@/utils'; import { isJSONStr } from '@/utils';
...@@ -169,6 +170,7 @@ const Analysis: React.FC = () => { ...@@ -169,6 +170,7 @@ const Analysis: React.FC = () => {
data: data.map(item => { data: data.map(item => {
const product = isJSONStr(item.product) || {}; const product = isJSONStr(item.product) || {};
return { return {
id: item.id,
star: item.star, star: item.star,
comment: item.comment, comment: item.comment,
productName: product.productName || '', productName: product.productName || '',
...@@ -176,6 +178,7 @@ const Analysis: React.FC = () => { ...@@ -176,6 +178,7 @@ const Analysis: React.FC = () => {
quantity: product.purchaseCount, quantity: product.purchaseCount,
created: item.createTime, created: item.createTime,
target: item.byMemberName, target: item.byMemberName,
orderId: product.orderId,
}; };
}), }),
totalCount, totalCount,
...@@ -200,6 +203,7 @@ const Analysis: React.FC = () => { ...@@ -200,6 +203,7 @@ const Analysis: React.FC = () => {
data: data.map(item => { data: data.map(item => {
const product = isJSONStr(item.product) || {}; const product = isJSONStr(item.product) || {};
return { return {
id: item.id,
star: item.star, star: item.star,
comment: item.comment, comment: item.comment,
productName: product.productName || '', productName: product.productName || '',
...@@ -207,6 +211,7 @@ const Analysis: React.FC = () => { ...@@ -207,6 +211,7 @@ const Analysis: React.FC = () => {
quantity: product.purchaseCount, quantity: product.purchaseCount,
created: item.dealTime as string, created: item.dealTime as string,
target: item.memberName, target: item.memberName,
orderId: product.orderId,
}; };
}), }),
totalCount, totalCount,
...@@ -233,6 +238,7 @@ const Analysis: React.FC = () => { ...@@ -233,6 +238,7 @@ const Analysis: React.FC = () => {
data: data.map(item => { data: data.map(item => {
const product = isJSONStr(item.product) || {}; const product = isJSONStr(item.product) || {};
return { return {
id: item.id,
star: item.star, star: item.star,
comment: item.comment, comment: item.comment,
productName: product.productName || '', productName: product.productName || '',
...@@ -240,6 +246,7 @@ const Analysis: React.FC = () => { ...@@ -240,6 +246,7 @@ const Analysis: React.FC = () => {
quantity: product.purchaseCount, quantity: product.purchaseCount,
created: item.dealTime as string, created: item.dealTime as string,
target: item.subMemberName, target: item.subMemberName,
orderId: product.orderId,
}; };
}), }),
totalCount, totalCount,
...@@ -284,6 +291,18 @@ const Analysis: React.FC = () => { ...@@ -284,6 +291,18 @@ const Analysis: React.FC = () => {
getTradeSummary(); getTradeSummary();
}, []); }, []);
const handleJumpReceived = record => {
history.push(`/memberCenter/tranactionAbility/supplierEvaluation/received/detail?orderId=${record.orderId}&id=${record.id}&preview=1`);
};
const handleEditSent = record => {
history.push(`/memberCenter/tranactionAbility/supplierEvaluation/sent/edit?orderId=${record.orderId}&id=${record.id}&preview=0`);
};
const handleJumpSent = record => {
history.push(`/memberCenter/tranactionAbility/supplierEvaluation/sent/detail?orderId=${record.orderId}&id=${record.id}&preview=1`);
};
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<MellowCard <MellowCard
...@@ -324,16 +343,30 @@ const Analysis: React.FC = () => { ...@@ -324,16 +343,30 @@ const Analysis: React.FC = () => {
</Shelves> </Shelves>
<Shelves title="评价记录"> <Shelves title="评价记录">
<RecordList fetchList={getTradeHistory} paginationType="button" searchable={false} /> <RecordList
fetchList={getTradeHistory}
paginationType="button"
searchable={false}
onCheck={handleJumpReceived}
/>
</Shelves> </Shelves>
</TabPane> </TabPane>
<TabPane tab="收到的评价" key="2"> <TabPane tab="收到的评价" key="2">
<RecordList fetchList={getReceivedList} /> <RecordList
fetchList={getReceivedList}
onCheck={handleJumpReceived}
/>
</TabPane> </TabPane>
<TabPane tab="发出的评价" key="3"> <TabPane tab="发出的评价" key="3">
<RecordList fetchList={getSentList} /> <RecordList
fetchList={getSentList}
onCheck={handleJumpSent}
onEdit={handleEditSent}
opposite={false}
editable={true}
/>
</TabPane> </TabPane>
</Tabs> </Tabs>
</MellowCard> </MellowCard>
......
...@@ -74,6 +74,10 @@ export interface RecordItem { ...@@ -74,6 +74,10 @@ export interface RecordItem {
* 评价方/被评价方 * 评价方/被评价方
*/ */
target: string target: string
/**
* 订单id
*/
orderId: string
}; };
export interface RecordRes { export interface RecordRes {
...@@ -91,7 +95,14 @@ interface RecordListProps { ...@@ -91,7 +95,14 @@ interface RecordListProps {
// 是否是查看收到的品论 // 是否是查看收到的品论
opposite?: boolean; opposite?: boolean;
// 是否可编辑的
editable?: boolean;
fetchList: (params: ListParams) => Promise<RecordRes>; fetchList: (params: ListParams) => Promise<RecordRes>;
onCheck: (record: RecordItem) => void;
onEdit?: (record: RecordItem) => void;
}; };
interface RecordListState { interface RecordListState {
...@@ -140,8 +151,12 @@ export default class RecordList extends React.Component<RecordListProps, RecordL ...@@ -140,8 +151,12 @@ export default class RecordList extends React.Component<RecordListProps, RecordL
this.setState({ loading: true }); this.setState({ loading: true });
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const { searchVal, page, size } = this.state; const { searchVal, page, size } = this.state;
const { dealTimeStart, dealTimeEnd } = searchVal;
fetchList({ fetchList({
...searchVal, ...searchVal,
dealTimeStart: dealTimeStart ? moment(+dealTimeStart).format('YYYY-MM-DD HH:mm:ss') : null,
dealTimeEnd: dealTimeEnd ? moment(+dealTimeEnd).format('YYYY-MM-DD HH:mm:ss') : null,
current: `${page}`, current: `${page}`,
pageSize: `${size}`, pageSize: `${size}`,
}).then(res => { }).then(res => {
...@@ -210,11 +225,26 @@ export default class RecordList extends React.Component<RecordListProps, RecordL ...@@ -210,11 +225,26 @@ export default class RecordList extends React.Component<RecordListProps, RecordL
}); });
}; };
handleCheck = record => {
const { onCheck } = this.props;
if (onCheck) {
onCheck(record);
}
};
handleEdit = record => {
const { onEdit } = this.props;
if (onEdit) {
onEdit(record);
}
};
render() { render() {
const { const {
paginationType = 'pagination', paginationType = 'pagination',
searchable = true, searchable = true,
opposite = true, opposite = true,
editable = false,
} = this.props; } = this.props;
const { page, size, loading, receivedList, hasMore } = this.state; const { page, size, loading, receivedList, hasMore } = this.state;
...@@ -232,7 +262,12 @@ export default class RecordList extends React.Component<RecordListProps, RecordL ...@@ -232,7 +262,12 @@ export default class RecordList extends React.Component<RecordListProps, RecordL
)} )}
<Spin spinning={paginationType === 'pagination' && loading}> <Spin spinning={paginationType === 'pagination' && loading}>
<ul className={styles.record}> <ul
className={styles.record}
style={{
minHeight: loading ? 69 : 'auto',
}}
>
{receivedList.data.map((item, index) => ( {receivedList.data.map((item, index) => (
<li className={styles['record-item']} key={index}> <li className={styles['record-item']} key={index}>
<div className={styles['record-item-good']}> <div className={styles['record-item-good']}>
...@@ -272,7 +307,10 @@ export default class RecordList extends React.Component<RecordListProps, RecordL ...@@ -272,7 +307,10 @@ export default class RecordList extends React.Component<RecordListProps, RecordL
</div> </div>
<div className={styles['record-item-actions']}> <div className={styles['record-item-actions']}>
<Button type="link">查看</Button> {editable && (
<Button type="link" onClick={() => this.handleEdit(item)}>编辑</Button>
)}
<Button type="link" onClick={() => this.handleCheck(item)}>查看</Button>
</div> </div>
</li> </li>
))} ))}
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-10-19 18:08:51 * @Date: 2020-10-19 18:08:51
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-19 18:09:31 * @LastEditTime: 2020-10-21 13:58:50
* @Description: * @Description:
*/ */
import { ISchema } from '@formily/antd'; import { ISchema } from '@formily/antd';
...@@ -19,7 +19,28 @@ export const searchSchema: ISchema = { ...@@ -19,7 +19,28 @@ export const searchSchema: ISchema = {
properties: { properties: {
star: { star: {
type: 'string', type: 'string',
enum: [], enum: [
{
label: '一星',
value: 1,
},
{
label: '二星',
value: 2,
},
{
label: '三星',
value: 3,
},
{
label: '四星',
value: 4,
},
{
label: '五星',
value: 5,
},
],
'x-component-props': { 'x-component-props': {
placeholder: '评论星级', placeholder: '评论星级',
allowClear: true, allowClear: true,
......
import { useBusinessEffects } from './useBusinessEffects';
export const createEffects = (context, actions) => {
useBusinessEffects(context, actions);
};
\ No newline at end of file
import { FormEffectHooks, FormPath } from '@formily/antd';
const {
onFieldInputChange$,
onFieldValueChange$,
} = FormEffectHooks;
export const useBusinessEffects = (context, actions) => {
const {
setFieldState,
} = actions;
// 评论图片限制 4 张
onFieldInputChange$('comments.*.picture').subscribe(fieldState => {
const { name, value } = fieldState;
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `comments.${$1}.picture`
}),
state => {
state.props['x-component-props'].disabled = value.length >= 4;
}
);
});
// 评分联动
onFieldInputChange$('comments.*.star').subscribe(fieldState => {
const { name, value } = fieldState;
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `comments.${$1}.smile`
}),
state => {
state.value = value;
}
);
});
}
\ No newline at end of file
import React, { useState, useEffect } from 'react';
import {
PageHeader,
Descriptions,
Card,
Spin,
Button,
message,
} from 'antd';
import { FormOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { history } from 'umi';
import { createFormActions, FormEffectHooks, FormPath } from '@formily/antd';
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus';
import { PublicApi } from '@/services/api';
import { GetOrderPurchaseOrderDetailsResponse } from '@/services/OrderApi';
import { normalizeFiledata, isJSONStr } from '@/utils';
import AvatarWrap from '@/components/AvatarWrap';
import NiceForm from '@/components/NiceForm';
import { normalizeUnevaluatedList } from '../../utils';
import { evaluateSchema } from './schema';
import { createEffects } from './effects';
import EvaluationList from '../../components/EvaluationList';
import styles from './index.less';
const formActions = createFormActions();
interface Unevaluated {
good: {
pic: string,
productName: string,
price: string,
purchaseCount: string,
};
star: number;
comment: string;
picture: string[];
smile: number;
};
const ReceivedDetail: React.FC = () => {
const { orderId, id, pageStatus } = usePageStatus();
const [orderInfo, setOrderInfo] = useState<GetOrderPurchaseOrderDetailsResponse>(null);
const [orderInfoLoading, setOrderInfoLoading] = useState(false);
const [evaluationInfo, setEvaluationInfo] = useState<Unevaluated>(null);
const [evaluationInfoLoading, setEvaluationInfoLoading] = useState(false);
const [submitLoading, setSubmitLoading] = useState(false);
const getOrderInfo = () => {
if (!orderId) {
return;
}
setOrderInfoLoading(true);
PublicApi.getOrderPurchaseOrderDetails({
id: orderId,
}).then(res => {
if (res.code === 1000) {
setOrderInfo(res.data);
}
}).finally(() => {
setOrderInfoLoading(false);
});
};
const getEvaluationInfo = () => {
if (!id) {
return;
}
setEvaluationInfoLoading(true);
PublicApi.getMemberCommentSupplySupplyTradeHistoryGet({
id,
}).then(res => {
if (res.code === 1000) {
const { product } = res.data;
const productObj = isJSONStr(product) || {};
setEvaluationInfo({
good: {
pic: productObj.pic,
productName: productObj.productName,
price: productObj.price,
purchaseCount: productObj.purchaseCount,
},
star: res.data.star,
comment: res.data.comment,
picture: res.data.pics ? res.data.pics.map(item => normalizeFiledata(item)) : [],
smile: res.data.star,
});
}
}).finally(() => {
setEvaluationInfoLoading(false);
});
};
useEffect(() => {
getOrderInfo();
getEvaluationInfo();
}, []);
const handleSubmit = values => {
};
const beforeUpload = file => {
if (file.size / 1024 < 10) {
message.warning('图片大小超过10M');
return Promise.reject();
}
};
const UploadTip = (
<span
style={{
lineHeight: '24px',
color: '#909399',
fontWeight: 400,
wordBreak: 'break-all',
position: 'relative',
top: '34px',
}}
>
支持JPG/PNG/JPEG <br />每张最大不超过 10M,尺寸不限 <br />最大数量限制 4张
</span>
);
return (
<Spin spinning={orderInfoLoading || evaluationInfoLoading}>
<PageHeaderWrapper
title={
<>
<PageHeader
style={{ padding: '0' }}
onBack={() => history.goBack()}
title={
<AvatarWrap
info={{
aloneTxt: '单',
name: orderInfo?.orderNo,
}}
/>
}
extra={(
<>
{
pageStatus === PageStatus.EDIT && (
<Button
type="primary"
icon={<FormOutlined />}
loading={submitLoading}
onClick={() => formActions.submit()}
>
修改
</Button>
)
}
</>
)}
>
<Descriptions
size="small"
column={3}
style={{
padding: '0 32px',
}}
>
<Descriptions.Item label="采购会员">{orderInfo?.createMemberName}</Descriptions.Item>
<Descriptions.Item label="下单时间" span={2}>{orderInfo?.createTime}</Descriptions.Item>
</Descriptions>
</PageHeader>
</>
}
>
<NiceForm
actions={formActions}
initialValues={{
comments: [evaluationInfo],
}}
editable={pageStatus === PageStatus.EDIT}
expressionScope={{
UploadTip: pageStatus === PageStatus.EDIT ? UploadTip : null,
beforeUpload,
}}
onSubmit={handleSubmit}
components={{
EvaluationList,
}}
effects={($, actions) => {
createEffects($, actions);
}}
schema={evaluateSchema}
/>
</PageHeaderWrapper>
</Spin>
);
};
export default ReceivedDetail;
\ No newline at end of file
/*
* @Author: XieZhiXiong
* @Date: 2020-09-23 17:00:24
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-21 13:46:22
* @Description:
*/
import { ISchema } from '@formily/antd';
import { UPLOAD_TYPE } from '@/constants';
export const evaluateSchema: ISchema = {
type: 'object',
properties: {
comments: {
type: 'array',
'x-component': 'EvaluationList',
default: [],
items: {
type: 'object',
properties: {
LEFT_RIGHT: {
type: 'object',
'x-component': 'LeftRightLayout',
'x-component-props': {
rightProps: {
span: 2,
offset: 4,
},
},
properties: {
MEGA_LADYOUT: {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
labelCol: 6,
labelAlign: 'left',
position: 'left',
},
properties: {
star: {
title: '满意程度',
required: true,
'x-component': 'Rating',
'x-component-props': {
allowHalf: false,
},
'x-rules': [
{
required: true,
message: '请选择满意程度',
},
],
},
comment: {
type: 'string',
title: '评价',
'x-component': 'TextArea',
'x-component-props': {
rows: 4,
},
'x-rules': {
max: 200,
},
},
picture: {
type: 'string',
title: '图片',
'x-component': 'Upload',
'x-component-props': {
listType: 'card',
action: '/api/file/file/upload/prefix',
data: {
fileType: UPLOAD_TYPE,
prefix: '/supplierEvaluation/',
},
beforeUpload: '{{beforeUpload}}',
accept: '.png, .jpg, .jpeg',
},
'x-mega-props': {
addonAfter: '{{UploadTip}}',
},
},
},
},
smile: {
type: 'object',
default: 1,
'x-component': 'SmilingFace',
'x-component-props': {
position: 'right',
},
},
},
},
},
},
},
},
};
\ No newline at end of file
import { useBusinessEffects } from './useBusinessEffects';
export const createEffects = (context, actions) => {
useBusinessEffects(context, actions);
};
\ No newline at end of file
import { FormEffectHooks, FormPath } from '@formily/antd';
const {
onFieldInputChange$,
onFieldValueChange$,
} = FormEffectHooks;
export const useBusinessEffects = (context, actions) => {
const {
setFieldState,
} = actions;
// 评论图片限制 4 张
onFieldInputChange$('comments.*.picture').subscribe(fieldState => {
const { name, value } = fieldState;
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `comments.${$1}.picture`
}),
state => {
state.props['x-component-props'].disabled = value.length >= 4;
}
);
});
// 评分联动
onFieldInputChange$('comments.*.star').subscribe(fieldState => {
const { name, value } = fieldState;
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `comments.${$1}.smile`
}),
state => {
state.value = value;
}
);
});
}
\ No newline at end of file
import React, { useState, useEffect } from 'react';
import {
PageHeader,
Descriptions,
Card,
Spin,
Button,
message,
} from 'antd';
import { FormOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { history } from 'umi';
import { createFormActions, FormEffectHooks, FormPath } from '@formily/antd';
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus';
import { PublicApi } from '@/services/api';
import { GetOrderPurchaseOrderDetailsResponse } from '@/services/OrderApi';
import { normalizeFiledata, isJSONStr } from '@/utils';
import AvatarWrap from '@/components/AvatarWrap';
import NiceForm from '@/components/NiceForm';
import { normalizeUnevaluatedList } from '../../utils';
import { evaluateSchema } from './schema';
import { createEffects } from './effects';
import EvaluationList from '../../components/EvaluationList';
import styles from './index.less';
const formActions = createFormActions();
const {
onFormInit$,
} = FormEffectHooks;
interface Unevaluated {
good: {
pic: string,
productName: string,
price: string,
purchaseCount: string,
};
star: number;
comment: string;
picture: string[];
smile: number;
};
const SentDetail: React.FC = () => {
const { orderId, id, pageStatus } = usePageStatus();
const [orderInfo, setOrderInfo] = useState<GetOrderPurchaseOrderDetailsResponse>(null);
const [orderInfoLoading, setOrderInfoLoading] = useState(false);
const [evaluationInfo, setEvaluationInfo] = useState<Unevaluated>(null);
const [evaluationInfoLoading, setEvaluationInfoLoading] = useState(false);
const [submitLoading, setSubmitLoading] = useState(false);
const getOrderInfo = () => {
if (!orderId) {
return;
}
setOrderInfoLoading(true);
PublicApi.getOrderPurchaseOrderDetails({
id: orderId,
}).then(res => {
if (res.code === 1000) {
setOrderInfo(res.data);
}
}).finally(() => {
setOrderInfoLoading(false);
});
};
const getEvaluationInfo = () => {
if (!id) {
return;
}
setEvaluationInfoLoading(true);
PublicApi.getMemberCommentSupplySendTradeHistoryGet({
id,
}).then(res => {
if (res.code === 1000) {
const { product } = res.data;
const productObj = isJSONStr(product) || {};
setEvaluationInfo({
good: {
pic: productObj.pic,
productName: productObj.productName,
price: productObj.price,
purchaseCount: productObj.purchaseCount,
},
star: res.data.star,
comment: res.data.comment,
picture: res.data.pics ? res.data.pics.map(item => normalizeFiledata(item)) : [],
smile: res.data.star,
});
}
}).finally(() => {
setEvaluationInfoLoading(false);
});
};
useEffect(() => {
getOrderInfo();
getEvaluationInfo();
}, []);
const handleSubmit = values => {
setSubmitLoading(true);
const payload = values.comments.map(item => {
const {
comment,
good,
picture,
star,
} = item;
return {
id,
star,
comment,
};
});
if (!payload.length) {
return;
}
PublicApi.postMemberCommentSupplySendTradeHistoryUpdate(payload[0])
.then(res => {
if (res.code === 1000) {
setTimeout(() => {
history.goBack();
}, 800);
}
})
.finally(() => {
setSubmitLoading(false);
});
};
const beforeUpload = file => {
if (file.size / 1024 < 10) {
message.warning('图片大小超过10M');
return Promise.reject();
}
};
const UploadTip = (
<span
style={{
lineHeight: '24px',
color: '#909399',
fontWeight: 400,
wordBreak: 'break-all',
position: 'relative',
top: '34px',
}}
>
支持JPG/PNG/JPEG <br />每张最大不超过 10M,尺寸不限 <br />最大数量限制 4张
</span>
);
return (
<Spin spinning={orderInfoLoading || evaluationInfoLoading}>
<PageHeaderWrapper
title={
<>
<PageHeader
style={{ padding: '0' }}
onBack={() => history.goBack()}
title={
<AvatarWrap
info={{
aloneTxt: '单',
name: orderInfo?.orderNo,
}}
/>
}
extra={(
<>
{
pageStatus === PageStatus.EDIT && (
<Button
type="primary"
icon={<FormOutlined />}
disabled={!id}
loading={submitLoading}
onClick={() => formActions.submit()}
>
修改
</Button>
)
}
</>
)}
>
<Descriptions
size="small"
column={3}
style={{
padding: '0 32px',
}}
>
<Descriptions.Item label="采购会员">{orderInfo?.createMemberName}</Descriptions.Item>
<Descriptions.Item label="下单时间" span={2}>{orderInfo?.createTime}</Descriptions.Item>
</Descriptions>
</PageHeader>
</>
}
>
<NiceForm
actions={formActions}
initialValues={{
comments: [evaluationInfo],
}}
editable={pageStatus === PageStatus.EDIT}
expressionScope={{
UploadTip: pageStatus === PageStatus.EDIT ? UploadTip : null,
beforeUpload,
}}
onSubmit={handleSubmit}
components={{
EvaluationList,
}}
effects={($, actions) => {
createEffects($, actions);
onFormInit$().subscribe(() => {
if (pageStatus === PageStatus.EDIT) {
actions.setFieldState(
'comments.*.picture',
state => {
state.visible = false;
}
);
}
});
}}
schema={evaluateSchema}
/>
</PageHeaderWrapper>
</Spin>
);
};
export default SentDetail;
\ No newline at end of file
/*
* @Author: XieZhiXiong
* @Date: 2020-09-23 17:00:24
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-19 16:23:24
* @Description:
*/
import { ISchema } from '@formily/antd';
import { UPLOAD_TYPE } from '@/constants';
export const evaluateSchema: ISchema = {
type: 'object',
properties: {
comments: {
type: 'array',
'x-component': 'EvaluationList',
default: [],
items: {
type: 'object',
properties: {
LEFT_RIGHT: {
type: 'object',
'x-component': 'LeftRightLayout',
'x-component-props': {
rightProps: {
span: 2,
offset: 4,
},
},
properties: {
MEGA_LADYOUT: {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
labelCol: 6,
labelAlign: 'left',
position: 'left',
},
properties: {
star: {
title: '满意程度',
required: true,
'x-component': 'Rating',
'x-component-props': {
allowHalf: false,
},
'x-rules': [
{
required: true,
message: '请选择满意程度',
},
],
},
comment: {
type: 'string',
title: '评价',
'x-component': 'TextArea',
'x-component-props': {
rows: 4,
},
'x-rules': {
max: 200,
},
},
picture: {
type: 'string',
title: '图片',
'x-component': 'Upload',
'x-component-props': {
listType: 'card',
action: '/api/file/file/upload/prefix',
data: {
fileType: UPLOAD_TYPE,
prefix: '/supplierEvaluation/',
},
beforeUpload: '{{beforeUpload}}',
accept: '.png, .jpg, .jpeg',
},
'x-mega-props': {
addonAfter: '{{UploadTip}}',
},
},
},
},
smile: {
type: 'object',
default: 1,
'x-component': 'SmilingFace',
'x-component-props': {
position: 'right',
},
},
},
},
},
},
},
},
};
\ No newline at end of file
...@@ -43,18 +43,18 @@ interface OrderInfo extends GetOrderPurchaseOrderDetailsResponse { ...@@ -43,18 +43,18 @@ interface OrderInfo extends GetOrderPurchaseOrderDetailsResponse {
}; };
const EvaluateOrder: React.FC = () => { const EvaluateOrder: React.FC = () => {
const { id } = usePageStatus(); const { orderId } = usePageStatus();
const [orderInfo, setOrderInfo] = useState<OrderInfo>(null); const [orderInfo, setOrderInfo] = useState<OrderInfo>(null);
const [infoLoading, setInfoLoading] = useState(false); const [infoLoading, setInfoLoading] = useState(false);
const [submitLoading, setSubmitLoading] = useState(false); const [submitLoading, setSubmitLoading] = useState(false);
const getOrderInfo = () => { const getOrderInfo = () => {
if (!id) { if (!orderId) {
return; return;
} }
setInfoLoading(true); setInfoLoading(true);
PublicApi.getOrderPurchaseOrderDetails({ PublicApi.getOrderPurchaseOrderDetails({
id, id: orderId,
}).then(res => { }).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
const { orderProductRequests } = res.data; const { orderProductRequests } = res.data;
......
...@@ -58,6 +58,9 @@ export const evaluateSchema: ISchema = { ...@@ -58,6 +58,9 @@ export const evaluateSchema: ISchema = {
'x-component-props': { 'x-component-props': {
rows: 4, rows: 4,
}, },
'x-rules': {
max: 200,
},
}, },
picture: { picture: {
type: 'string', type: 'string',
......
...@@ -84,7 +84,7 @@ const Unevaluated: React.FC = () => { ...@@ -84,7 +84,7 @@ const Unevaluated: React.FC = () => {
align: 'center', align: 'center',
render: (text, record) => ( render: (text, record) => (
<> <>
<Link to={`/memberCenter/tranactionAbility/supplierEvaluation/unevaluated/evaluate?id=${record.id}`}> <Link to={`/memberCenter/tranactionAbility/supplierEvaluation/unevaluated/evaluate?orderId=${record.id}`}>
<Button <Button
type="link" type="link"
> >
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment