Commit 846bb5a4 authored by 前端-黄佳鑫's avatar 前端-黄佳鑫
parents f5127d66 606abbfe
......@@ -23,7 +23,7 @@ const config: any = {
},
routes,
extraBabelPlugins: [
// ['import', { libraryName: 'antd', libraryDirectory: 'es', style: true }, 'antd'],
['import', { libraryName: 'antd', libraryDirectory: 'es', style: true }, 'antd'],
['import', { libraryName: 'god', libraryDirectory: 'es', style: true }, 'god'],
['import', { libraryName: '@umijs/hooks', libraryDirectory: 'lib', camel2DashComponentName: false }, '@umijs/hooks'],// 将下划线转化关闭
],
......
export default {
'/api': {
'target': 'http://10.0.0.25:8100/',
'target': 'http://lingxi-all.wg.shushangyun.com',
'changeOrigin': true,
'pathRewrite': { '^/api': '' },
}
......
/**
* @description 自定义路由类型
* @author xjm
* @date 2020-10-09
* @export
* @interface RouterChild
*/
export interface RouterChild {
path: string
/**
* @description 国际化对应的key
* @type {string}
* @memberof RouterChild
*/
name: string
icon?: string
routes?: RouterChild[]
component?: string
/**
* @description 是否在右侧菜单隐藏
* @type {boolean}
* @memberof RouterChild
*/
hideInMenu?: boolean
/**
* @description 是否禁用content内页中的margin, true为禁用
* @type {boolean}
* @memberof RouterChild
*/
noMargin?: boolean
}
......@@ -18,7 +18,8 @@
"prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'",
"test": "umi-test",
"test:coverage": "umi-test --coverage",
"start:cross": "cross-env SITE_ID=352 yarn start"
"start:cross": "cross-env SITE_ID=352 yarn start",
"start:url": "cross-env SITE_ID=1 BACK_GATEWAY=http://lingxi-all.wg.shushangyun.com yarn start"
},
"lint-staged": {
"*.{js,jsx,less,md,json}": [
......
......@@ -44,8 +44,8 @@ export enum LAYOUT_TYPE {
}
// 本地环境跳过权限校验
export const isDev = process.env.NODE_ENV === "development"
// export const isDev = false
// export const isDev = process.env.NODE_ENV === "development"
export const isDev = false
export const Environment_Status = {
0: "所有",
......
......@@ -2,7 +2,7 @@
* @Author: LeeJiancong
* @Date: 2020-07-22 09:54:50
* @LastEditors: LeeJiancong
* @LastEditTime: 2020-07-30 19:28:23
* @LastEditTime: 2020-10-09 10:54:23
*/
/**
* 正则表达式集合
......@@ -13,6 +13,7 @@ export const PATTERN_MAPS = {
password: /^(?=.*[a-z])(?=.*[A-Z])[a-zA-Z\d]{8,20}$/,
email: /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/,
phone: /^1[3|4|5|6|7|8|9][0-9]{9}$/,
tel: /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/,//座机
smsCode: /^\d{6}$/,
money:/^\d*(?:\.\d{0,2})?$/,
weight:/^\d*(?:\.\d{0,3})?$/,
......
......@@ -17,10 +17,6 @@ export const useAsyncSelect = async (name, service: () => Promise<any[]>, format
})
linkage.loading(name)
service().then(res => {
setFieldState(name, state => {
state.originAsyncData = res
})
linkage.loaded(name)
if (format) {
const [labelString, valueString] = format
res = res.map(v => ({
......@@ -28,7 +24,15 @@ export const useAsyncSelect = async (name, service: () => Promise<any[]>, format
value: v[valueString]
}))
}
linkage.enum(name, res)
console.log(res)
setFieldState(name, state => {
state.loading = !state.loading
state.props.enum = res
state.originAsyncData = res
})
// linkage.loaded(name)
// linkage.enum(name, res)
//请求结束可以dispatch一个自定义事件收尾,方便后续针对该事件做联动
dispatch('requestAsyncSelect', {
name,
......
......@@ -43,6 +43,20 @@
left: 175px;
top: 45px;
}
.status {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #fff;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
color: red;
}
}
......@@ -95,7 +109,7 @@
bottom: 0;
border-top-left-radius: 45px;
border-bottom-left-radius: 45px ;
background-color: #91d5ff;
// background-color: #91d5ff;
}
}
......
......@@ -96,8 +96,11 @@ const SliderVerify: React.FC<SliderVerifyProps> = (props) => {
const onError = () => {
console.log("error")
// setOffset({x: 0, y: 0})
setStatus(ERROR);
setTimeout(() => {
reRender()
}, 500)
// setOffset({x: 0, y: 0})
}
const onReset = () => {
......@@ -106,12 +109,8 @@ const SliderVerify: React.FC<SliderVerifyProps> = (props) => {
const reRender = () => {
setLoading(true);
setStatus(READY);
setOffset({x: 0, y: 0})
const objImage = new Image()
console.log(imageUrl)
objImage.addEventListener("load", () => {
console.log(objImage.width);
// 先获取两个ctx
const ctxShadow = shadowCanvas.current.getContext("2d")
const ctxFragment = fragmentCanvas.current.getContext("2d")
......@@ -147,6 +146,9 @@ const SliderVerify: React.FC<SliderVerifyProps> = (props) => {
// 修改状态
setLoading(false);
setStatus(READY);
setOffset({x: 0, y: 0})
})
objImage.src = imageUrl
}
......@@ -161,11 +163,11 @@ const SliderVerify: React.FC<SliderVerifyProps> = (props) => {
? null
: (
<div>
{
{/* {
loading
? <div className={styles.loading}><Spin /></div>
: null
}
} */}
<div className={styles.sliderContainer} style={{visibility: !loading ? 'visible' : 'hidden'}}>
<div className={styles.container}>
......@@ -184,6 +186,12 @@ const SliderVerify: React.FC<SliderVerifyProps> = (props) => {
ref={fragmentCanvas}
style={{ left: offset.x + "px", top: clipImagePosition.y + "px" }}
></canvas>
{
status === ERROR
? <div className={styles.status}>验证失败</div>
: null
}
</div>
<div className={styles.slider} onMouseMove={mouseMove} onMouseLeave={mouseUp}>
<div className={styles.sliderHandle} onMouseDown={mouseDown} onMouseUp={mouseUp} style={sliderHandleStyle} ><DoubleRightOutlined /></div>
......
......@@ -2,7 +2,7 @@
* @Author: LeeJiancong
* @Date: 2020-07-15 10:31:55
* @LastEditors: LeeJiancong
* @LastEditTime: 2020-09-17 17:41:05
* @LastEditTime: 2020-10-09 11:00:43
*/
import React, { Component, useState, useEffect } from 'react';
import ReactDOM from 'react-dom'
......@@ -440,20 +440,16 @@ const diaLogForm: React.FC<ListProps> = (props) => {
/>
</FormMegaLayout>
<FormMegaLayout label='电话号码' grid full>
{/* <Field
x-mega-props={{ span: 1 }}
name="phoneHead"
x-component="Input"
x-component-props={{
placeholder: '区号'
}}
/> */}
<Field
x-mega-props={{ span: 5 }}
name="tel"
x-component="Input"
x-component-props={{
placeholder: ''
placeholder: '输入你的电话号码'
}}
x-rules = {{
message: '输入正确电话号码',
pattern: PATTERN_MAPS.tel
}}
/>
</FormMegaLayout>
......
......@@ -6,7 +6,7 @@ EyePreview/*
*/
import React, { Component, ReactNode, useRef, useState } from 'react'
import { history } from 'umi'
import { Modal, Card, Button, Form, InputNumber, Radio, Popconfirm, Switch, Input } from 'antd';
import { Modal, Card, Row, Col, Button, Form, InputNumber, Radio, Popconfirm, Switch, Input } from 'antd';
import {
PlayCircleOutlined,
PauseCircleOutlined,
......@@ -20,7 +20,7 @@ import { ColumnType } from 'antd/lib/table/interface'
import { IFormFilter, IButtonFilter } from 'god/dist/src/standard-table/TableController'
import StatusSwitch from '@/components/StatusSwitch'
import EyePreview from '@/components/EyePreview'
import { PublicApi} from '@/services/api'
import { PublicApi } from '@/services/api'
const data = [
{
......@@ -47,7 +47,7 @@ const data = [
// 模拟请求
const fetchData = (params: any) => {
return new Promise((resolve, reject) => {
PublicApi.getLogisticsFreightTemplatePage({...params}).then(res=> {
PublicApi.getLogisticsFreightTemplatePage({ ...params }).then(res => {
resolve(res.data)
})
})
......@@ -114,6 +114,9 @@ const EditableCell: React.FC<EditableCellProps> = ({
const Template: React.FC<ListProps> = (props) => {
console.log(props)
const ref = useRef<any>({})
const [searchForm, setSearchForm] = useState({
name: ''
})
const [form] = Form.useForm();
const [table, setTable] = useState([])
const [editingKey, setEditingKey] = useState('');
......@@ -128,7 +131,7 @@ const Template: React.FC<ListProps> = (props) => {
dataIndex: 'name',
align: 'left',
key: 'name',
render: (text:any,record:any) => (
render: (text: any, record: any) => (
<EyePreview url={`/memberCenter/logisticsAbility/logistics/templateForm?id=${record.id}&isSee=${true}`}>{text}</EyePreview>
)
},
......@@ -137,9 +140,9 @@ const Template: React.FC<ListProps> = (props) => {
align: 'center',
dataIndex: 'pricingMode',
key: 'pricingMode',
render: (_:any,record:any) => {
render: (_: any, record: any) => {
return (
<>{record.transportMode === 1?'按重量':''}</>
<>{record.transportMode === 1 ? '按重量' : ''}</>
)
}
},
......@@ -148,9 +151,9 @@ const Template: React.FC<ListProps> = (props) => {
dataIndex: 'transportMode',
align: 'center',
key: 'transportMode',
render: (_:any,record:any) => {
render: (_: any, record: any) => {
return (
<>{record.transportMode === 1?'快递':''}</>
<>{record.transportMode === 1 ? '快递' : ''}</>
)
}
},
......@@ -166,7 +169,7 @@ const Template: React.FC<ListProps> = (props) => {
dataIndex: 'status',
key: 'status',
render: (text: any, record: any) => (
<StatusSwitch fieldNames="status" handleConfirm={() => handleChangeStatus(record.id,record.status)} record={record}/>
<StatusSwitch fieldNames="status" handleConfirm={() => handleChangeStatus(record.id, record.status)} record={record} />
)
},
{
......@@ -180,7 +183,7 @@ const Template: React.FC<ListProps> = (props) => {
record.status === 0 ?
<>
<Button type='link' onClick={() => history.push(`/memberCenter/logisticsAbility/logistics/templateForm?id=${record.id}`)}>编辑</Button>
<Popconfirm title="确定要删除吗?" okText="是" cancelText="否" onConfirm={() =>handleDelete(record.id)}>
<Popconfirm title="确定要删除吗?" okText="是" cancelText="否" onConfirm={() => handleDelete(record.id)}>
<Button type='link'>
删除
</Button>
......@@ -206,18 +209,18 @@ const Template: React.FC<ListProps> = (props) => {
columns.forEach((v, index) => {
})
}
const handleChangeStatus = (id:any,status:any) => {
let _status = status == 0 ? 1: 0
PublicApi.postLogisticsFreightTemplateEnable({id:id,status:_status}).then(res => {
if(res.code === 1000){
const handleChangeStatus = (id: any, status: any) => {
let _status = status == 0 ? 1 : 0
PublicApi.postLogisticsFreightTemplateEnable({ id: id, status: _status }).then(res => {
if (res.code === 1000) {
console.log(ref)
ref.current.reload()
}
})
}
const handleDelete = (id:number) => {
PublicApi.postLogisticsFreightTemplateDelete({id:id}).then(res => {
if(res.code === 1000){
const handleDelete = (id: number) => {
PublicApi.postLogisticsFreightTemplateDelete({ id: id }).then(res => {
if (res.code === 1000) {
ref.current.reload()
}
})
......@@ -247,6 +250,16 @@ const Template: React.FC<ListProps> = (props) => {
console.log('执行状态修改', record)
}
const handleChange = (key: any, val: any) => {
let obj: any = {}
switch (key) {
case 'name':
obj = { ...searchForm, name: val }
break;
}
setSearchForm(obj)
ref.current.reload(obj)
}
return (
<PageHeaderWrapper>
<Card>
......@@ -255,15 +268,22 @@ const Template: React.FC<ListProps> = (props) => {
currentRef={ref}
fetchTableData={(params: any) => fetchData(params)}
rowClassName="editable-row"
formilyChilds={{
children: (
<>
<Button type="primary" icon={<PlusOutlined />} onClick={() => history.push(`/memberCenter/logisticsAbility/logistics/templateForm?id=0`)}>
新建
</Button>
</>
)
}}
controlRender={
<Row style={{ marginBottom: '32px' }}>
<Col span={6}>
<Button type="primary" icon={<PlusOutlined />} onClick={() => history.push(`/memberCenter/logisticsAbility/logistics/templateForm?id=0`)}>新建</Button>
</Col>
<Col span={10} offset={8} style={{ textAlign: 'right' }}>
<Input.Search
style={{ width: '232px' }}
value={searchForm.name}
placeholder='输入模板名称进行搜索'
onChange={(e) => setSearchForm({ ...searchForm, name: e.target.value })}
onSearch={(val) => handleChange('name', val)}
/>
</Col>
</Row>
}
/>
</Card>
</PageHeaderWrapper>
......
......@@ -2,7 +2,7 @@
* @Author: LeeJiancong
* @Date: 2020-07-14 15:07:34
* @LastEditors: LeeJiancong
* @LastEditTime: 2020-09-22 14:26:16
* @LastEditTime: 2020-10-09 11:29:36
*/
import React, { Component, ReactNode, useRef, useState, useEffect } from 'react'
import { history } from 'umi'
......@@ -408,17 +408,6 @@ const OrderList: React.FC<ListProps> = (props) => {
})
}
</Select>
<Select
className={style.select}
value={searchForm.status}
onChange={(val) => setSearchForm({ ...searchForm, status: val })}
>
{
outSideStatusList.map((item, index) => {
return <Option key={index} value={item.value}>{item.label}</Option>
})
}
</Select>
</Space>
</Col>
}
......
......@@ -167,7 +167,8 @@ const OrderElectronModal:React.FC<OrderElectronModalProps> = (props) => {
expressionScope={{
electronBtn
}}
effects={($) => {
effects={($, actions) => {
useAsyncSelect('contractTemplateId', async () => (await PublicApi.getOrderSelectListContractTemplate()).data, ['name', 'id'])
}}
/>
......
......@@ -282,9 +282,10 @@ const OrderProductTable:React.FC<OrderProductTableProps> = (props) => {
const hasPriceList = orderProductRequests.filter(v => !v.memberPrice)
if (hasPriceList.length > 0) {
asyncGetMemberPrice(hasPriceList).then((asyncData) => {
if (asyncData.length > 0) {
const newData = orderProductRequests.map((v, i) => {
if (!v.memberPrice) {
v.memberPrice = asyncData.find(j => j.id === v.id)?.value || ''
v.memberPrice = asyncData.find(j => j.id === v.id)?.value || 0
}
return v
})
......@@ -293,6 +294,7 @@ const OrderProductTable:React.FC<OrderProductTableProps> = (props) => {
...data,
orderProductRequests: newData
})
}
})
}
}, [orderProductRequests])
......
......@@ -228,6 +228,8 @@ const CommonOrderDetail:React.FC<CommonOrderDetailProps> = (props) => {
titleLabel: '订单号: ',
titleValue: formData.orderNo
} : null
console.log('123')
return formData ? (
<div>
<OrderDetailContext.Provider value={formContext}>
......
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