Commit 61eab372 by peii

order

parent ce6b3f46
...@@ -131,7 +131,7 @@ export const reqSelfSurgeryHospital = async (global_domain_config, params) => { ...@@ -131,7 +131,7 @@ export const reqSelfSurgeryHospital = async (global_domain_config, params) => {
} }
// 获取订单类型 params={access_token:'', value_set_code:'SUR_ORDER_TYPE'} // 获取订单类型 params={access_token:'', value_set_code:'SUR_ORDER_TYPE'}
export function requestSelfOrderType(params, url) { export function requestSelfOrderType(params, url, cb = () => {}) {
return (dispatch, getState) => { return (dispatch, getState) => {
dispatch(requestListDataing()) dispatch(requestListDataing())
let { global_domain_config } = getState().login let { global_domain_config } = getState().login
...@@ -144,7 +144,7 @@ export function requestSelfOrderType(params, url) { ...@@ -144,7 +144,7 @@ export function requestSelfOrderType(params, url) {
console.log('获取订单类型 res=====', res) console.log('获取订单类型 res=====', res)
// 兼容老的接口,有的环境没有实现获取订单类型接口 // 兼容老的接口,有的环境没有实现获取订单类型接口
if (res.status === 404) { if (res.status === 404) {
return dispatch(requestSelfOrderType(params, '/system/value_set/search')) return dispatch(requestSelfOrderType(params, '/system/value_set/search', cb))
} }
if (res.error_code == 0) { if (res.error_code == 0) {
let data = [] let data = []
...@@ -159,13 +159,14 @@ export function requestSelfOrderType(params, url) { ...@@ -159,13 +159,14 @@ export function requestSelfOrderType(params, url) {
data = res.data.sys_values data = res.data.sys_values
} }
dispatch(requestListDataSuccess(data)) dispatch(requestListDataSuccess(data))
cb(data)
} else { } else {
showWarnErrorMessage(dispatch, res, exitLoginStatus, requestListDataFail) showWarnErrorMessage(dispatch, res, exitLoginStatus, requestListDataFail)
} }
}) })
.catch(err => { .catch(err => {
if (!url) { if (!url) {
requestSelfOrderType(params, '/system/value_set/search') requestSelfOrderType(params, '/system/value_set/search', cb)
} else { } else {
showErrorMessage(dispatch, err, requestListDataFail, '获取订单类型') showErrorMessage(dispatch, err, requestListDataFail, '获取订单类型')
} }
......
...@@ -50,7 +50,7 @@ class HomePage extends Component { ...@@ -50,7 +50,7 @@ class HomePage extends Component {
MOBILE_SELF_HELP_ORDER: { MOBILE_SELF_HELP_ORDER: {
icon: require('../../images/self_order.png'), icon: require('../../images/self_order.png'),
title: '自助下单', title: '自助下单',
page: 'SelfOrder', page: 'SelfOrderPage',
params: { params: {
isLendOrder: false, isLendOrder: false,
}, },
...@@ -396,7 +396,7 @@ const mapDispatchToProps = dispatch => ({ ...@@ -396,7 +396,7 @@ const mapDispatchToProps = dispatch => ({
dispatch(getLendOrderCodeValues()) dispatch(getLendOrderCodeValues())
}, },
getOrganizationData: () => { getOrganizationData: () => {
dispatch(getOrganizations()) dispatch(getOrganizations(null, { success: () => {} }))
}, },
}) })
......
...@@ -36,6 +36,7 @@ const defaultState = { ...@@ -36,6 +36,7 @@ const defaultState = {
OBS_MOBILE_BM_DISPLAY: '00', OBS_MOBILE_BM_DISPLAY: '00',
OBS_MOBILE_SUR_FOLLOWER_DISPLAY: '00', OBS_MOBILE_SUR_FOLLOWER_DISPLAY: '00',
OBS_MOBILE_DELIVERYMAN_DISPLAY: '00', OBS_MOBILE_DELIVERYMAN_DISPLAY: '00',
OBS_MOBILE_BOR_WARE_REQUIRED: '00'
}, },
sysValueSets: { sysValueSets: {
SUR_FEE_TYPE: [], SUR_FEE_TYPE: [],
...@@ -59,6 +60,7 @@ export const originSysProfiles = { ...@@ -59,6 +60,7 @@ export const originSysProfiles = {
OBS_MOBILE_SUR_FOLLOWER_DISPLAY: '00', OBS_MOBILE_SUR_FOLLOWER_DISPLAY: '00',
// APP下单是否显示送货员权限 // APP下单是否显示送货员权限
OBS_MOBILE_DELIVERYMAN_DISPLAY: '00', OBS_MOBILE_DELIVERYMAN_DISPLAY: '00',
OBS_MOBILE_BOR_WARE_REQUIRED: '00'
} }
export const originSysValueSets = { export const originSysValueSets = {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @FilePath: /BoneHouse_Business_APP/src/actions/action-types.ts * @FilePath: /BoneHouse_Business_APP/src/actions/action-types.ts
* @Author: PEII * @Author: PEII
* @Date: 2022-11-02 16:41:21 * @Date: 2022-11-02 16:41:21
* @LastEditTime: 2022-11-04 18:00:41 * @LastEditTime: 2022-11-24 16:33:56
* @LastEditors: PEII * @LastEditors: PEII
* @Vision: 1.0 * @Vision: 1.0
* @Description: * @Description:
...@@ -11,4 +11,6 @@ export const GET_ORGANIZATIONS = 'GET_ORGANIZATIONS' ...@@ -11,4 +11,6 @@ export const GET_ORGANIZATIONS = 'GET_ORGANIZATIONS'
export const GET_CUSTOMERS = 'GET_CUSTOMERS' export const GET_CUSTOMERS = 'GET_CUSTOMERS'
export const GET_COLLECT_SETTING = 'GET_COLLECT_SETTING' export const GET_COLLECT_SETTING = 'GET_COLLECT_SETTING'
\ No newline at end of file
export const GET_DEPARTMENTS = 'GET_DEPARTMENTS'
\ No newline at end of file
...@@ -2,17 +2,30 @@ ...@@ -2,17 +2,30 @@
* @FilePath: /BoneHouse_Business_APP/src/actions/userAction.ts * @FilePath: /BoneHouse_Business_APP/src/actions/userAction.ts
* @Author: PEII * @Author: PEII
* @Date: 2022-11-02 16:09:29 * @Date: 2022-11-02 16:09:29
* @LastEditTime: 2022-11-04 18:51:56 * @LastEditTime: 2022-11-24 16:35:34
* @LastEditors: PEII * @LastEditors: PEII
* @Vision: 1.0 * @Vision: 1.0
* @Description: * @Description:
*/ */
import { createApiAction } from './utils' import { createApiAction } from './utils'
import { GET_ORGANIZATIONS, GET_CUSTOMERS, GET_COLLECT_SETTING } from './action-types' import { GET_ORGANIZATIONS, GET_CUSTOMERS, GET_COLLECT_SETTING, GET_DEPARTMENTS } from './action-types'
import api from '../services/api' import api from '../services/api'
import service from '../services/service'
/**
* @description: 获取组织
* @return {*}
*/
export const getOrganizations = createApiAction(GET_ORGANIZATIONS, api.getOrganizations) export const getOrganizations = createApiAction(GET_ORGANIZATIONS, api.getOrganizations)
/**
* @description: 获取部门
* @return {*}
*/
export const getDepartments = createApiAction(GET_DEPARTMENTS, service.getDepartmentsBySellerAndOrg)
export const getCustomers = createApiAction(GET_CUSTOMERS, api.getCustomers) export const getCustomers = createApiAction(GET_CUSTOMERS, api.getCustomers)
export const getCollectSetting = createApiAction(GET_COLLECT_SETTING, api.getCollectSetting) export const getCollectSetting = createApiAction(GET_COLLECT_SETTING, api.getCollectSetting)
...@@ -38,6 +38,8 @@ export const createApiAction: IApiAction = (actionType: string, fn: Function) => ...@@ -38,6 +38,8 @@ export const createApiAction: IApiAction = (actionType: string, fn: Function) =>
return (params = {}, callback = { success: <U>(p: U) => {}, fail: <R>(p: R) => {} }, customActionType = actionType) => return (params = {}, callback = { success: <U>(p: U) => {}, fail: <R>(p: R) => {} }, customActionType = actionType) =>
async (dispatch: Function) => { async (dispatch: Function) => {
try { try {
console.log({ type: `${customActionType}_REQUEST`, params })
dispatch({ type: `${customActionType}_REQUEST`, params }) dispatch({ type: `${customActionType}_REQUEST`, params })
if (type(fn) !== 'Function') { if (type(fn) !== 'Function') {
throw new Error(`参数【${fn.toString()}】不是可调用函数`) throw new Error(`参数【${fn.toString()}】不是可调用函数`)
......
...@@ -79,7 +79,7 @@ export default class Form extends Component<IProps> { ...@@ -79,7 +79,7 @@ export default class Form extends Component<IProps> {
checkSubmit() { checkSubmit() {
const { fields, data } = this.props const { fields, data } = this.props
for (const item of fields) { for (const item of fields) {
if (isBlank(item.rules)) continue if (item.show === false || isBlank(item.rules)) continue
// 校验是否可以提交 // 校验是否可以提交
for (const rule of item.rules) { for (const rule of item.rules) {
...@@ -124,6 +124,8 @@ export default class Form extends Component<IProps> { ...@@ -124,6 +124,8 @@ export default class Form extends Component<IProps> {
<ScrollView style={g(styles, 'form')}> <ScrollView style={g(styles, 'form')}>
<KeyboardAvoidingView style={g(styles, 'form-inner')} behavior="padding" enabled> <KeyboardAvoidingView style={g(styles, 'form-inner')} behavior="padding" enabled>
{fields.map(item => { {fields.map(item => {
if (item.show === false) return <></>
let FormComponent = formComponents[item.type] || Select let FormComponent = formComponents[item.type] || Select
if (item.type === FieldType.CUSTOM) { if (item.type === FieldType.CUSTOM) {
......
...@@ -70,7 +70,11 @@ export default class Select extends Component<IProps> { ...@@ -70,7 +70,11 @@ export default class Select extends Component<IProps> {
} }
// 换了options,表示依赖的项没有了,把当前设置为空 // 换了options,表示依赖的项没有了,把当前设置为空
const val = getText(item, value) const val = getText(item, value)
if (isNotBlank(value) && isBlank(val) && R.complement(R.equals)(this.props.data, nextProps.data)) { if (
isNotBlank(value) &&
isBlank(val) &&
(R.complement(R.equals)(this.props.data, nextProps.data) || isBlank(item.options))
) {
this.onChange(null) this.onChange(null)
} }
......
...@@ -286,7 +286,7 @@ class Filter extends React.Component<IProps, IState> { ...@@ -286,7 +286,7 @@ class Filter extends React.Component<IProps, IState> {
const mapStateToProps = state => ({ const mapStateToProps = state => ({
userInfo: state.login.userInfo, userInfo: state.login.userInfo,
sysProfiles: state.login.sysProfiles, sysProfiles: state.login.sysProfiles,
organizations: state.login.organizations, organizations: state.user.organizations,
}) })
const mapDispatchToProps = dispatch => ({}) const mapDispatchToProps = dispatch => ({})
......
...@@ -257,7 +257,7 @@ class Filter extends React.Component<IProps, IState> { ...@@ -257,7 +257,7 @@ class Filter extends React.Component<IProps, IState> {
const mapStateToProps = state => ({ const mapStateToProps = state => ({
userInfo: state.login.userInfo, userInfo: state.login.userInfo,
sysProfiles: state.login.sysProfiles, sysProfiles: state.login.sysProfiles,
organizations: state.login.organizations, organizations: state.user.organizations,
}) })
const mapDispatchToProps = dispatch => ({}) const mapDispatchToProps = dispatch => ({})
......
...@@ -546,7 +546,7 @@ class ConsumeForm extends Component<IProps, IState> { ...@@ -546,7 +546,7 @@ class ConsumeForm extends Component<IProps, IState> {
const mapStateToProps = state => ({ const mapStateToProps = state => ({
list: state.mixConsume.orders, list: state.mixConsume.orders,
userInfo: state.login.userInfo, userInfo: state.login.userInfo,
organizations: state.login.organizations, organizations: state.user.organizations,
sysProfiles: state.login.sysProfiles, sysProfiles: state.login.sysProfiles,
}) })
......
/*
* @FilePath: /BoneHouse_Business_APP/src/pages/order/hoc/order.tsx
* @Author: PEII
* @Date: 2022-11-22 16:47:26
* @LastEditTime: 2022-11-24 22:36:13
* @LastEditors: PEII
* @Vision: 1.0
* @Description: 订单类型form
*/
// @ts-nocheck
import React, { Component } from 'react'
import * as R from 'ramda'
import { g, getFormItem, isBlank, isNotBlank, show, getOrderSysProfile } from '../../../utils/utils'
import service from '../../../services/service'
import api from '../../../services/api'
type IProps = {
navigation: INavigation
userInfo: any
organizations: IOrganization[]
allCustomers: {}
getCustomers: (sellerCode: string, orgCode: string) => Promise<any>
getCollectSetting: (orgCode, customerCode, billToSiteCode, shipToSiteCode) => Promise<any>
getOrderTypes: (token, orgCode) => Promise<any>
}
type IState = {
data: { [key: string]: any[] }
formItems: IFormField[]
doctorNames: string[]
invs: { string: any[] }
departments: { string: any[] }
}
export default function Order(WrapComponent: Component<IProps, IState>) {
return class Order extends WrapComponent {
constructor(props) {
super(props)
this.setData = this.setData.bind(this)
this.submitHandler = this.submitHandler.bind(this)
}
state = {
data: {
sellerCode: this.props.userInfo.user_name,
replaceItemFlag: 'N',
Caller: 'dingding',
},
invs: {},
orderTypes: {},
departments: {},
}
/**
* @description: 设置修改值
* @param {*} key
* @param {*} vlaue
* @return {*}
*/
setData(key: string, value: any) {
return new Promise<any>((resolve, reject) => {
const { data, formItems } = this.state
data[key] = value
this.setState({ data }, () => {
const item = getFormItem(formItems, key)
item && item.callback && item.callback()
resolve()
})
})
}
/**
* @description: 组织选择完回调
* @param {*}
* @return {*}
*/
async setOrgCallback() {
const { show } = getOrderSysProfile('OBS_MOBILE_DEPARTMENT_DISPLAY')
this.getOrderTypes()
// 设置完组织获取部门和客户
if (show) {
this.getDepartments.call(this)
}
this.getCustomers.call(this)
}
/**
* @description: 获取部门列表
* @param {*}
* @return {*}
*/
async getDepartments() {
let { data, formItems, departments } = this.state
const { orgCode, sellerCode } = data
const key = `${sellerCode}${orgCode}`
const item = getFormItem(formItems, 'departmentCode')
if (isBlank(departments[key])) {
item.loading = true
const res = await service.getDepartmentsBySellerAndOrg({ orgCode, sellerCode, scopeFlag: 'Y' })
item.loading = false
departments[key] = R.pathOr([], ['data', 'relationships'])(res)
}
item.options = R.map(
R.applySpec({
value: R.prop('department_code'),
label: R.prop('department_name'),
}),
)(departments[key] || [])
this.setState({ formItems, departments })
}
/**
* @description: 设置部门后回调
* @param {*}
* @return {*}
*/
async setDepartmentCallback() {
const { data, formItems, departments } = this.state
const { orgCode, sellerCode, departmentCode } = data
const key = `${sellerCode}${orgCode}`
const dep = R.compose(R.find(R.propEq('department_code', departmentCode)), R.propOr([], key))(departments)
console.log(dep)
// 设置业务经理
const bmItem = getFormItem(formItems, 'businessManagerCode')
if (bmItem.show) {
bmItem.options = R.compose(
R.map(
R.applySpec({
value: R.prop('business_manager_code'),
label: R.prop('business_manager_name'),
}),
),
R.propOr([], 'business_manager_list'),
)(dep)
}
// 设置跟台员
const followerItem = getFormItem(formItems, 'surgeryFollowerCode')
if (followerItem.show) {
followerItem.options = R.compose(
R.map(
R.applySpec({
value: R.prop('surgery_follower_code'),
label: R.prop('surgery_follower_name'),
}),
),
R.propOr([], 'surgery_follower_list'),
)(dep)
}
// 设置送货员
const item = getFormItem(formItems, 'deliverymanCode')
if (item.show) {
item.options = R.compose(
R.map(
R.applySpec({
value: R.prop('deliveryman_code'),
label: R.prop('deliveryman_name'),
}),
),
R.propOr([], 'surgery_follower_list'),
)(dep)
}
this.setState({ formItems })
}
/**
* @description: 获取客户列表
* @param {*}
* @return {*}
*/
async getCustomers() {
const { data, formItems, allCustomers } = this.state
const { orgCode, sellerCode } = data
let customers = R.propOr([], orgCode)(allCustomers)
const item = getFormItem(formItems, 'customerCode')
if (isBlank(customers)) {
item.loading = true
await this.props.getCustomers(sellerCode, orgCode)
item.loading = false
customers = R.propOr([], orgCode)(this.props.allCustomers)
}
item.options = R.map(
R.applySpec({
label: R.prop('customer_name'),
value: R.prop('customer_code'),
}),
)(customers)
this.setState({ formItems })
}
/**
* @description: 客户选择完回调
* @param {*}
* @return {*}
*/
setCustomerCallback() {
const { formItems, data, allCustomers } = this.state
const { orgCode, customerCode } = data
const customer = R.find(R.propEq('customer_code', customerCode))(allCustomers[orgCode] || [])
const item = getFormItem(formItems, 'billToSiteCode')
if (isBlank(customer)) {
item.options = []
} else {
item.options = R.map(
R.applySpec({
label: R.prop('bill_to_site_name'),
value: R.prop('bill_to_site_code'),
shipToSites: R.propOr([], 'ship_to_sites'),
}),
)(customer.bill_to_sites)
}
this.setState({ formItems })
}
/**
* @description: 收单地点选择完回调
* @param {*}
* @return {*}
*/
setBillToSitesCallback() {
let { formItems, data, doctorNames } = this.state
const { billToSiteCode } = data
const item = getFormItem(formItems, 'shipToSiteCode')
const billItem = getFormItem(formItems, 'billToSiteCode')
const billToSiteItem = R.find(R.propEq('value', billToSiteCode))(billItem.options || [])
const doctorItem = getFormItem(formItems, 'doctorName')
if (isBlank(billToSiteItem)) {
item.options = []
doctorNames = []
doctorItem.options = []
} else {
doctorNames = R.compose(R.filter(isNotBlank), R.uniq, R.pluck('customer_name'))(billToSiteItem.shipToSites)
doctorItem.options = R.map(R.applySpec({ label: R.identity, value: R.identity }))(doctorNames)
item.options = R.compose(
R.map(
R.applySpec({
label: R.prop('ship_to_site_name'),
value: R.prop('ship_to_site_code'),
doctorName: R.prop('customer_doctor'),
authorization: R.prop('authorization'),
sal_seller_customer_product_authorization: R.prop('sal_seller_customer_product_authorization'),
}),
),
)(billToSiteItem.shipToSites || [])
}
this.setState({ formItems, doctorNames })
}
/**
* @description: 收货地点选择完回调
* @param {*}
* @return {*}
*/
setShipToSiteCallback() {
const { shipToSiteCode } = this.state.data
// 借货仓库依赖收货地址
if (isNotBlank(shipToSiteCode)) {
this.getInventories()
}
}
/**
* @description: 获取借货仓库
* @param {*}
* @return {*}
*/
async getInventories() {
const { formItems, data, invs } = this.state
const { orgCode, customerCode, billToSiteCode, shipToSiteCode } = data
const item = getFormItem(formItems, 'collectSrcInvCode')
let invRes = await api.getCollectSetting({
orgCode,
customerCode,
billToSiteCode,
shipToSiteCode,
processCode: 'COLLECT',
})
item.options = R.compose(
R.uniqBy(R.prop('source_inv_code')),
R.map(
R.applySpec({
label: R.prop('source_inv_name'),
value: R.prop('source_inv_code'),
}),
),
R.propOr([], 'data'),
)(invRes)
this.setState({ formItems })
}
/**
* @description: 订单类型
* @return {*}
*/
async getOrderTypes() {
let { data, orderTypes, formItems } = this.state
const { token } = this.props
if (isBlank(orderTypes[data.orgCode])) {
const res = await this.props.getOrderTypes(token, data.orgCode)
orderTypes[data.orgCode] = res
}
const item = getFormItem(formItems, 'orderTypeCode')
item.options = R.compose(
R.uniqBy(R.prop('value')),
R.map(
R.applySpec({
label: R.prop('value_name'),
value: R.prop('value_code'),
}),
),
)(orderTypes[data.orgCode] || [])
this.setState({ formItems })
}
/**
* @description:
* @param {*}
* @return {*}
*/
submitHandler() {
console.log('submit')
}
render() {
return super.render()
}
}
}
...@@ -2,17 +2,24 @@ ...@@ -2,17 +2,24 @@
* @FilePath: /BoneHouse_Business_APP/src/pages/order/self.formItem.ts * @FilePath: /BoneHouse_Business_APP/src/pages/order/self.formItem.ts
* @Author: PEII * @Author: PEII
* @Date: 2022-10-27 15:10:32 * @Date: 2022-10-27 15:10:32
* @LastEditTime: 2022-11-02 12:16:05 * @LastEditTime: 2022-11-24 21:12:12
* @LastEditors: PEII * @LastEditors: PEII
* @Vision: 1.0 * @Vision: 1.0
* @Description: 自助下单formItem数据 * @Description: 自助下单formItem数据
*/ */
// @ts-nocheck // @ts-nocheck
import * as R from 'ramda' import * as R from 'ramda'
import { FieldType, SelectMode } from '../../enums'
import { IFormField } from 'bonehouse' import { IFormField } from 'bonehouse'
import { FieldType, SelectMode } from '../../enums'
import { getOrderSysProfile } from '../../utils/utils'
export function getSelfFormItems(): IFormField[] { export function getSelfFormItems(): IFormField[] {
const srcInvProfile = getOrderSysProfile('OBS_MOBILE_BOR_WARE_REQUIRED')
const departmentProfile = getOrderSysProfile('OBS_MOBILE_DEPARTMENT_DISPLAY')
const businessManagerProfile = getOrderSysProfile('OBS_MOBILE_BM_DISPLAY')
const followerProfile = getOrderSysProfile('OBS_MOBILE_SUR_FOLLOWER_DISPLAY')
const deliverymanProfile = getOrderSysProfile('OBS_MOBILE_DELIVERYMAN_DISPLAY')
return [ return [
{ {
field: 'sellerCode', field: 'sellerCode',
...@@ -40,7 +47,7 @@ export function getSelfFormItems(): IFormField[] { ...@@ -40,7 +47,7 @@ export function getSelfFormItems(): IFormField[] {
value: R.prop('org_code'), value: R.prop('org_code'),
}), }),
), ),
R.uniqBy(R.prop('org_code')) R.uniqBy(R.prop('org_code')),
)(this.props.organizations || []) )(this.props.organizations || [])
})(), })(),
placeholder: '请选择', placeholder: '请选择',
...@@ -48,6 +55,47 @@ export function getSelfFormItems(): IFormField[] { ...@@ -48,6 +55,47 @@ export function getSelfFormItems(): IFormField[] {
callback: this.setOrgCallback.bind(this), callback: this.setOrgCallback.bind(this),
}, },
{ {
field: 'departmentCode',
label: '部门',
type: FieldType.SELECT,
placeholder: '请选择',
show: departmentProfile.show,
options: [],
rules: [{ required: departmentProfile.required, message: '请选择客户' }],
refrence: ['orgCode'],
callback: this.setDepartmentCallback.bind(this),
},
{
field: 'businessManagerCode',
label: '业务经理',
type: FieldType.SELECT,
placeholder: '请选择',
show: businessManagerProfile.show,
options: [],
rules: [{ required: businessManagerProfile.required, message: '请选择业务经理' }],
refrence: ['orgCode', 'departmentCode'],
},
{
field: 'surgeryFollowerCode',
label: '跟台员',
type: FieldType.SELECT,
placeholder: '请选择',
show: followerProfile.show,
options: [],
rules: [{ required: followerProfile.required, message: '请选择跟台员' }],
refrence: ['orgCode', 'departmentCode'],
},
{
field: 'deliverymanCode',
label: '送货员',
type: FieldType.SELECT,
placeholder: '请选择',
show: deliverymanProfile.show,
options: [],
rules: [{ required: deliverymanProfile.required, message: '请选择送货员' }],
refrence: ['orgCode', 'departmentCode'],
},
{
field: 'customerCode', field: 'customerCode',
label: '客户', label: '客户',
type: FieldType.SELECT, type: FieldType.SELECT,
...@@ -80,10 +128,10 @@ export function getSelfFormItems(): IFormField[] { ...@@ -80,10 +128,10 @@ export function getSelfFormItems(): IFormField[] {
{ {
field: 'doctorName', field: 'doctorName',
label: '主治医生', label: '主治医生',
type: FieldType.SELECT, type: FieldType.TEXT,
options: [], // options: [],
placeholder: '请选择', placeholder: '请输入',
refrence: ['orgCode', 'customerCode', 'billToSiteCode', 'shipToSiteCode'], // refrence: ['orgCode', 'customerCode', 'billToSiteCode', 'shipToSiteCode'],
}, },
{ {
field: 'surgeryDate', field: 'surgeryDate',
...@@ -99,15 +147,7 @@ export function getSelfFormItems(): IFormField[] { ...@@ -99,15 +147,7 @@ export function getSelfFormItems(): IFormField[] {
type: FieldType.SELECT, type: FieldType.SELECT,
placeholder: '请选择', placeholder: '请选择',
rules: [{ required: true, message: '请选择订单类型' }], rules: [{ required: true, message: '请选择订单类型' }],
options: R.compose( options: [],
R.map(
R.applySpec({
label: R.prop('valueName'),
value: R.prop('valueCode'),
}),
),
R.pathOr([], ['sysStore', 'sysValueSets', 'SUR_ORDER_TYPE']),
)(this.props),
}, },
{ {
field: 'products', field: 'products',
...@@ -124,7 +164,9 @@ export function getSelfFormItems(): IFormField[] { ...@@ -124,7 +164,9 @@ export function getSelfFormItems(): IFormField[] {
label: '借货仓库', label: '借货仓库',
type: FieldType.SELECT, type: FieldType.SELECT,
placeholder: '请选择', placeholder: '请选择',
show: srcInvProfile.show,
options: [], options: [],
rules: [{ required: srcInvProfile.required, message: '请选择借货仓库' }],
refrence: ['orgCode', 'sellerCode', 'customerCode', 'billToSiteCode', 'shipToSiteCode'], refrence: ['orgCode', 'sellerCode', 'customerCode', 'billToSiteCode', 'shipToSiteCode'],
}, },
{ {
...@@ -171,5 +213,10 @@ export function getSelfFormItems(): IFormField[] { ...@@ -171,5 +213,10 @@ export function getSelfFormItems(): IFormField[] {
type: FieldType.VOICE, type: FieldType.VOICE,
placeholder: '还有什么要安排的,可录音备注哟!', placeholder: '还有什么要安排的,可录音备注哟!',
}, },
{
field: 'imageUrl',
label: '添加图片',
type: FieldType.IMAGE,
},
] ]
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @FilePath: /BoneHouse_Business_APP/src/pages/order/self.tsx * @FilePath: /BoneHouse_Business_APP/src/pages/order/self.tsx
* @Author: peii * @Author: peii
* @Date: 2021-07-13 22:40:12 * @Date: 2021-07-13 22:40:12
* @LastEditTime: 2022-11-21 15:21:52 * @LastEditTime: 2022-11-24 21:20:19
* @LastEditors: PEII * @LastEditors: PEII
* @Vision: 1.0 * @Vision: 1.0
* @Description: 自助下单 * @Description: 自助下单
...@@ -17,11 +17,13 @@ import * as R from 'ramda' ...@@ -17,11 +17,13 @@ import * as R from 'ramda'
import { connect } from 'react-redux' import { connect } from 'react-redux'
import Resolution from '../../components/common/Resolution' import Resolution from '../../components/common/Resolution'
import Form from '../../components/form' import Form from '../../components/form'
import Order from './hoc/order'
import { FieldType, SelectMode } from '../../enums' import { FieldType, SelectMode } from '../../enums'
import Header from '../../components/header/header' import Header from '../../components/header/header'
import { g, getFormItem, isBlank, isNotBlank, show, getOrderSysProfile } from '../../utils/utils' import { g, getFormItem, isBlank, isNotBlank, show, getOrderSysProfile } from '../../utils/utils'
import { getSelfFormItems } from './self.formItem' import { getSelfFormItems } from './self.formItem'
import { getCustomers, getCollectSetting } from '../../actions/userAction' import { getCustomers, getCollectSetting } from '../../actions/userAction'
import { requestSelfOrderType } from '../../../app/action/SelfAction'
import styles from './self.styl' import styles from './self.styl'
type IProps = { type IProps = {
...@@ -31,6 +33,7 @@ type IProps = { ...@@ -31,6 +33,7 @@ type IProps = {
allCustomers: {} allCustomers: {}
getCustomers: (sellerCode: string, orgCode: string) => Promise<any> getCustomers: (sellerCode: string, orgCode: string) => Promise<any>
getCollectSetting: (orgCode, customerCode, billToSiteCode, shipToSiteCode) => Promise<any> getCollectSetting: (orgCode, customerCode, billToSiteCode, shipToSiteCode) => Promise<any>
getOrderTypes: (token, orgCode) => Promise<any>
} }
type IState = { type IState = {
...@@ -41,344 +44,38 @@ type IState = { ...@@ -41,344 +44,38 @@ type IState = {
} }
class SelfOrder extends Component<IProps, IState> { class SelfOrder extends Component<IProps, IState> {
constructor(props) {
super(props)
this.setData = this.setData.bind(this)
this.submitHandler = this.submitHandler.bind(this)
}
state = {
data: {
sellerCode: this.props.userInfo.user_name,
replaceItemFlag: 'N',
Caller: 'dingding',
},
formItems: [],
invs: {},
}
componentDidMount() { componentDidMount() {
const formItems = getSelfFormItems.call(this) const formItems = getSelfFormItems.call(this)
this.setState({ formItems }, () => { this.setState({ formItems }, () => {
this.setOptionsFormItems() this.setState({ data: this.state.data })
}) })
} }
componentWillUnmount() {}
/**
* @description: 设置配置性的表单字段(部门,业务经理,跟台员,送货员)
*/
setOptionsFormItems() {
let { formItems } = this.state
// 部门(00)第一位显示、第二位必需
let dep = getOrderSysProfile('OBS_MOBILE_DEPARTMENT_DISPLAY')
if (dep.show) {
formItems = R.insert(
2,
{
field: 'departmentCode',
label: '部门',
type: FieldType.SELECT,
placeholder: '请选择',
options: [],
rules: [{ required: dep.required, message: '请选择客户' }],
refrence: ['orgCode'],
callback: this.setDepartmentCallback.bind(this),
},
formItems,
)
}
// 业务经理(00)第一位显示、第二位必需
let businessManager = getOrderSysProfile('OBS_MOBILE_DEPARTMENT_DISPLAY')
if (businessManager.show) {
formItems = R.insert(
3,
{
field: 'businessManagerCode',
label: '业务经理',
type: FieldType.SELECT,
placeholder: '请选择',
options: [],
rules: [{ required: businessManager.required, message: '请选择业务经理' }],
refrence: ['orgCode', 'departmentCode'],
},
formItems,
)
}
// 跟台员(00)第一位显示、第二位必需
let follower = getOrderSysProfile('OBS_MOBILE_SUR_FOLLOWER_DISPLAY')
if (follower.show) {
formItems = R.insert(
4,
{
field: 'surgeryFollowerCode',
label: '跟台员',
type: FieldType.SELECT,
placeholder: '请选择',
options: [],
rules: [{ required: follower.required, message: '请选择跟台员' }],
refrence: ['orgCode', 'departmentCode'],
},
formItems,
)
}
// 送货员(00)第一位显示、第二位必需
let deliver = getOrderSysProfile('OBS_MOBILE_DELIVERYMAN_DISPLAY')
if (deliver.show) {
formItems = R.insert(
5,
{
field: 'deliverymanCode',
label: '送货员',
type: FieldType.SELECT,
placeholder: '请选择',
options: [],
rules: [{ required: follower.required, message: '请选择送货员' }],
refrence: ['orgCode', 'departmentCode'],
},
formItems,
)
}
this.setState({ formItems })
}
/**
* @description: 设置修改值
* @param {*} key
* @param {*} vlaue
* @return {*}
*/
setData(key: string, value: any) {
return new Promise<any>((resolve, reject) => {
const { data, formItems } = this.state
data[key] = value
this.setState({ data }, () => {
const item = getFormItem(formItems, key)
item && item.callback && item.callback()
resolve()
})
})
}
/**
* @description: 组织选择完回调
* @param {*}
* @return {*}
*/
async setOrgCallback() {
const { show } = getOrderSysProfile('OBS_MOBILE_DEPARTMENT_DISPLAY')
// 设置完组织获取部门和客户
if (show) {
this.getDepartments.call(this)
}
this.getCustomers.call(this)
}
/**
* @description: 获取部门列表
* @param {*}
* @return {*}
*/
async getDepartments() {
const { data, formItems } = this.state
const { orgCode, sellerCode } = data
// let departments = this.props.orgStore.departments(sellerCode, orgCode)
// const item = getFormItem(formItems, 'departmentCode')
// if (isBlank(departments)) {
// item.loading = true
// await this.props.orgStore.getDepartmentsBySellerAndOrg(sellerCode, orgCode)
// item.loading = false
// departments = this.props.orgStore.departments(sellerCode, orgCode)
// }
// item.options = departments
// this.setState({ formItems })
}
/** /**
* @description: 设置部门后回调 * @description: 产品选择点击回调
* @param {*}
* @return {*}
*/
async setDepartmentCallback() {
const { data, formItems } = this.state
const { orgCode, sellerCode, departmentCode } = data
// 设置业务经理
// const bmItem = getFormItem(formItems, 'businessManagerCode')
// if (isNotBlank(bmItem)) {
// bmItem.options = this.props.orgStore.businessManagers(sellerCode, orgCode, departmentCode)
// }
// // 设置跟台员
// const followerItem = getFormItem(formItems, 'surgeryFollowerCode')
// if (isNotBlank(followerItem)) {
// followerItem.options = this.props.orgStore.followers(sellerCode, orgCode, departmentCode)
// }
// // 设置送货员
// const item = getFormItem(formItems, 'deliverymanCode')
// if (isNotBlank(item)) {
// item.options = this.props.orgStore.delivermen(sellerCode, orgCode, departmentCode)
// }
this.setState({ formItems })
}
/**
* @description: 获取客户列表
* @param {*} * @param {*}
* @return {*} * @return {*}
*/ */
async getCustomers() { selectProductsBeforeHandler() {
const { data, formItems } = this.state const { data, formItems } = this.state
const { orgCode, sellerCode } = data console.log(data)
let customers = R.propOr([], orgCode)(this.props.allCustomers)
const item = getFormItem(formItems, 'customerCode')
if (isBlank(customers)) {
item.loading = true
await this.props.getCustomers(sellerCode, orgCode)
item.loading = false
customers = R.propOr([], orgCode)(this.props.allCustomers)
}
console.log(customers)
item.options = R.map(
R.applySpec({
label: R.prop('customer_name'),
value: R.prop('customer_code'),
}),
)(customers)
this.setState({ formItems })
}
/**
* @description: 客户选择完回调
* @param {*}
* @return {*}
*/
setCustomerCallback() {
const { formItems, data } = this.state
const { orgCode, customerCode } = data
const customer = R.find(R.propEq('customer_code', customerCode))(this.props.allCustomers[orgCode] || [])
const item = getFormItem(formItems, 'billToSiteCode')
item.options = R.map(
R.applySpec({
label: R.prop('bill_to_site_name'),
value: R.prop('bill_to_site_code'),
shipToSites: R.propOr([], 'ship_to_sites'),
}),
)(customer.bill_to_sites)
this.setState({ formItems })
}
/**
* @description: 收单地点选择完回调
* @param {*}
* @return {*}
*/
setBillToSitesCallback() {
let { formItems, data, doctorNames } = this.state
const { billToSiteCode } = data
const item = getFormItem(formItems, 'shipToSiteCode') const item = getFormItem(formItems, 'shipToSiteCode')
const billItem = getFormItem(formItems, 'billToSiteCode')
const billToSiteItem = R.find(R.propEq('value', billToSiteCode))(billItem.options || [])
doctorNames = R.compose(R.uniq, R.pluck('customer_name'))(billToSiteItem.shipToSites)
const doctorItem = getFormItem(formItems, 'doctorName')
doctorItem.options = R.map(R.applySpec({ label: R.identity, value: R.identity }))(doctorNames)
item.options = R.compose(
R.map(
R.applySpec({
label: R.prop('ship_to_site_name'),
value: R.prop('ship_to_site_code'),
doctorName: R.prop('customer_doctor'),
}),
),
)(billToSiteItem.shipToSites || [])
this.setState({ formItems, doctorNames })
}
/**
* @description: 收货地点选择完回调
* @param {*}
* @return {*}
*/
setShipToSiteCallback() {
const { shipToSiteCode } = this.state.data
// 借货仓库依赖收货地址
if (isNotBlank(shipToSiteCode)) {
this.getInventories()
}
}
/**
* @description: 获取借货仓库
* @param {*}
* @return {*}
*/
async getInventories() {
const { formItems, data, invs } = this.state
const { orgCode, customerCode, billToSiteCode, shipToSiteCode } = data
const item = getFormItem(formItems, 'collectSrcInvCode')
const key = `${orgCode}_${customerCode}_${billToSiteCode}_${shipToSiteCode}`
if (isBlank(invs[key])) {
let invRes = await this.props.getCollectSetting(orgCode, customerCode, billToSiteCode, shipToSiteCode)
const options = R.compose(
R.uniqBy(R.prop('value')),
R.map(
R.applySpec({
value: R.prop('source_inv_code'),
label: R.prop('source_inv_name'),
}),
),
R.propOr([], 'payload'),
)(invRes)
invs[key] = options
}
item.options = invs[key]
console.log(item.options) console.log(item.options)
const value = R.find(R.propEq('value', data.shipToSiteCode))(item.options)
this.setState({ formItems, invs }) console.log(value)
}
this.props.navigation.navigate('ChooseProductPage', {
/** title: `选择产品`,
* @description: 产品选择点击回调 selfData: {
* @param {*} org_code: data.orgCode,
* @return {*} },
*/ productCallBack: productions => {
selectProductsBeforeHandler() { console.log(productions)
// const { data } = this.state },
// this.props.navigation.navigate('Productions', { })
// orgCode: data.orgCode,
// callback: productions => {
// console.log(productions)
// },
// })
} }
/**
* @description:
* @param {*}
* @return {*}
*/
submitHandler() {}
render() { render() {
const { formItems, data } = this.state const { formItems, data } = this.state
const { navigation } = this.props const { navigation } = this.props
...@@ -409,9 +106,11 @@ class SelfOrder extends Component<IProps, IState> { ...@@ -409,9 +106,11 @@ class SelfOrder extends Component<IProps, IState> {
} }
const mapStateToProps = state => ({ const mapStateToProps = state => ({
token: state.login.token,
userInfo: state.login.userInfo, userInfo: state.login.userInfo,
organizations: state.user.organizations, organizations: state.user.organizations,
allCustomers: state.user.customers, allCustomers: state.user.customers,
srcInvs: state.user.srcInvs,
}) })
const mapDispatchToProps = dispatch => ({ const mapDispatchToProps = dispatch => ({
...@@ -421,6 +120,14 @@ const mapDispatchToProps = dispatch => ({ ...@@ -421,6 +120,14 @@ const mapDispatchToProps = dispatch => ({
}) })
}, },
/**
* @description: 借货设置
* @param {*} orgCode
* @param {*} customerCode
* @param {*} billToSiteCode
* @param {*} shipToSiteCode
* @return {*}
*/
getCollectSetting(orgCode, customerCode, billToSiteCode, shipToSiteCode) { getCollectSetting(orgCode, customerCode, billToSiteCode, shipToSiteCode) {
return new Promise(resolve => { return new Promise(resolve => {
dispatch( dispatch(
...@@ -435,6 +142,23 @@ const mapDispatchToProps = dispatch => ({ ...@@ -435,6 +142,23 @@ const mapDispatchToProps = dispatch => ({
) )
}) })
}, },
/**
* @description: 获取订单类型
* @param {*} access_token
* @param {*} org_code
* @return {*}
*/
getOrderTypes(access_token, org_code) {
const params = { access_token, org_code, value_set_code: 'SUR_ORDER_TYPE', order_type: 'SUR_ORDER_TYPE' }
return new Promise(resolve => {
dispatch(
requestSelfOrderType(params, null, res => {
resolve(res)
}),
)
})
},
}) })
export default connect(mapStateToProps, mapDispatchToProps)(SelfOrder) export default connect(mapStateToProps, mapDispatchToProps)(Order(SelfOrder))
...@@ -267,7 +267,7 @@ class Filter extends React.Component<IProps, IState> { ...@@ -267,7 +267,7 @@ class Filter extends React.Component<IProps, IState> {
const mapStateToProps = state => ({ const mapStateToProps = state => ({
userInfo: state.login.userInfo, userInfo: state.login.userInfo,
sysProfiles: state.login.sysProfiles, sysProfiles: state.login.sysProfiles,
organizations: state.login.organizations, organizations: state.user.organizations,
}) })
const mapDispatchToProps = dispatch => ({}) const mapDispatchToProps = dispatch => ({})
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @FilePath: /BoneHouse_Business_APP/src/reducers/user.ts * @FilePath: /BoneHouse_Business_APP/src/reducers/user.ts
* @Author: PEII * @Author: PEII
* @Date: 2022-11-02 16:02:14 * @Date: 2022-11-02 16:02:14
* @LastEditTime: 2022-11-04 18:39:31 * @LastEditTime: 2022-11-24 16:32:06
* @LastEditors: PEII * @LastEditors: PEII
* @Vision: 1.0 * @Vision: 1.0
* @Description: * @Description:
...@@ -15,7 +15,7 @@ const initState = { ...@@ -15,7 +15,7 @@ const initState = {
organizations: [], organizations: [],
inventories: [], inventories: [],
customers: {}, customers: {},
srcInvs: {}, srcInvs: [],
} }
type IAction = { type IAction = {
...@@ -38,7 +38,6 @@ export const user = createReducer(initState, { ...@@ -38,7 +38,6 @@ export const user = createReducer(initState, {
}, },
[GET_COLLECT_SETTING](state: any, action: IAction) { [GET_COLLECT_SETTING](state: any, action: IAction) {
console.log(action) return {...state, srcInvs: action.payload}
return state
}, },
}) })
...@@ -73,6 +73,7 @@ declare module 'bonehouse' { ...@@ -73,6 +73,7 @@ declare module 'bonehouse' {
order?: number order?: number
minuteInterval?: number minuteInterval?: number
symmetric?: string symmetric?: string
show?: boolean
[key: string]: any [key: string]: any
} }
......
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 sign in to comment