| | |
| | | { |
| | | "appId": "202108312122504607B107A83F55B40C98CCF", |
| | | "appkey": "20210831212235413F287EC3BF489424496C8", |
| | | "appId": "201912040924165801464FF1788654BC5AC73", |
| | | "appkey": "20191106103859640976D6E924E464D029CF0", |
| | | "mainSystemApi": "http://sso.mk9h.cn/cloud/webapi/dostars", |
| | | "systemType": "", |
| | | "externalDatabase": "false", |
| | | "lineColor": "", |
| | | "filter": "false", |
| | | "defaultApp": "mkindustry", |
| | | "defaultApp": "mk", |
| | | "defaultLang": "zh-CN", |
| | | "WXAppID": "", |
| | | "WXminiAppID": "", |
| | |
| | | "probation": "", |
| | | "keepPassword": "true", |
| | | "platforms": ["H5", "wechat", "android", "ios", "wxMiniProgram"], |
| | | "host": "http://demo.mk9h.cn", |
| | | "service": "erp_new/" |
| | | "host": "http://qingqiumarket.cn", |
| | | "service": "MKWMS/" |
| | | } |
| | |
| | | import PropTypes from 'prop-types' |
| | | import { is, fromJS } from 'immutable' |
| | | import { DndProvider, DragSource, DropTarget } from 'react-dnd' |
| | | import { Table, Popover, Modal, message, Button } from 'antd' |
| | | import { Table, Popover, Modal, message, Button, Typography } from 'antd' |
| | | import { PlusOutlined, FileSyncOutlined, EditOutlined, CopyOutlined, DeleteOutlined, FontColorsOutlined, CloseCircleOutlined, AntDesignOutlined } from '@ant-design/icons' |
| | | |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | |
| | | import './index.scss' |
| | | |
| | | const { confirm } = Modal |
| | | const { Paragraph } = Typography |
| | | const EditColumn = asyncComponent(() => import('./editColumn')) |
| | | const TableVerify = asyncComponent(() => import('./tableIn')) |
| | | const MarkColumn = asyncIconComponent(() => import('@/menu/components/share/markcomponent')) |
| | |
| | | } |
| | | return ( |
| | | <td style={{...style, minWidth: column.Width || 100}} className={className}> |
| | | {val} |
| | | {column.Hide === 'true' ? <CloseCircleOutlined style={{marginLeft: '5px', color: 'orange', fontSize: '12px'}}/> : null} |
| | | {column.field ? <Paragraph className="col-copy" copyable={{ text: column.field }}>{val}</Paragraph> : val} |
| | | {column.marks && column.marks.length ? <AntDesignOutlined className="profile"/> : null} |
| | | {column.Hide === 'true' ? <CloseCircleOutlined className="close-col"/> : null} |
| | | </td> |
| | | ) |
| | | } else { |
| | |
| | | tr { |
| | | td { |
| | | background: #ffffff; |
| | | .col-copy { |
| | | margin-bottom: 0; |
| | | display: inline-block; |
| | | .ant-typography-copy { |
| | | position: absolute; |
| | | left: 2px; |
| | | top: 0px; |
| | | margin-left: 0px; |
| | | font-size: 12px; |
| | | opacity: 0; |
| | | transition: opacity 0.2s; |
| | | } |
| | | } |
| | | } |
| | | td:hover .col-copy { |
| | | .ant-typography-copy { |
| | | opacity: 1; |
| | | } |
| | | } |
| | | td:not(.ant-table-selection-column) { |
| | | position: relative; |
| | |
| | | color: purple; |
| | | font-size: 12px; |
| | | } |
| | | >.close-col { |
| | | position: absolute; |
| | | top: 2px; |
| | | right: 2px; |
| | | color: orange; |
| | | font-size: 12px; |
| | | } |
| | | >.profile + .close-col { |
| | | right: 20px; |
| | | } |
| | | } |
| | | } |
| | | .action-column { |
| | |
| | | import PropTypes from 'prop-types' |
| | | import { is, fromJS } from 'immutable' |
| | | import { DndProvider, DragSource, DropTarget } from 'react-dnd' |
| | | import { Table, Popover, Modal, message } from 'antd' |
| | | import { Table, Popover, Modal, message, Typography } from 'antd' |
| | | import { PlusOutlined, FileSyncOutlined, EditOutlined, CopyOutlined, DeleteOutlined, FontColorsOutlined, CloseCircleOutlined, AntDesignOutlined } from '@ant-design/icons' |
| | | |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | |
| | | import './index.scss' |
| | | |
| | | const { confirm } = Modal |
| | | const { Paragraph } = Typography |
| | | const EditColumn = asyncIconComponent(() => import('./editColumn')) |
| | | const MarkColumn = asyncIconComponent(() => import('@/menu/components/share/markcomponent')) |
| | | const CardCellComponent = asyncComponent(() => import('@/menu/components/card/cardcellcomponent')) |
| | |
| | | } |
| | | return ( |
| | | <td style={{...style, minWidth: column.Width || 100}} className={className}> |
| | | {val} |
| | | {column.Hide === 'true' ? <CloseCircleOutlined style={{marginLeft: '5px', color: 'orange', fontSize: '12px'}}/> : null} |
| | | {column.field ? <Paragraph className="col-copy" copyable={{ text: column.field }}>{val}</Paragraph> : val} |
| | | {column.marks && column.marks.length ? <AntDesignOutlined className="profile"/> : null} |
| | | {column.Hide === 'true' ? <CloseCircleOutlined className="close-col"/> : null} |
| | | </td> |
| | | ) |
| | | } else { |
| | |
| | | tr { |
| | | td { |
| | | background: #ffffff; |
| | | .col-copy { |
| | | margin-bottom: 0; |
| | | display: inline-block; |
| | | .ant-typography-copy { |
| | | position: absolute; |
| | | left: 2px; |
| | | top: 0px; |
| | | margin-left: 0px; |
| | | font-size: 12px; |
| | | opacity: 0; |
| | | transition: opacity 0.2s; |
| | | } |
| | | } |
| | | } |
| | | td:hover .col-copy { |
| | | .ant-typography-copy { |
| | | opacity: 1; |
| | | } |
| | | } |
| | | td:not(.ant-table-selection-column) { |
| | | position: relative; |
| | |
| | | color: purple; |
| | | font-size: 12px; |
| | | } |
| | | >.close-col { |
| | | position: absolute; |
| | | top: 2px; |
| | | right: 2px; |
| | | color: orange; |
| | | font-size: 12px; |
| | | } |
| | | >.profile + .close-col { |
| | | right: 20px; |
| | | } |
| | | } |
| | | } |
| | | .action-column { |
| | |
| | | formdata: null, |
| | | selines: null, |
| | | btnconfig: null, |
| | | confirmLoading: false, |
| | | loading: false, |
| | | disabled: false, |
| | | hidden: false, |
| | |
| | | */ |
| | | execSuccess = (res) => { |
| | | const { btn } = this.props |
| | | const { autoMatic } = this.state |
| | | const { autoMatic, btnconfig } = this.state |
| | | |
| | | if ((res.ErrCode === 'S' || !res.ErrCode) || autoMatic) { // 执行成功 |
| | | notification.success({ |
| | |
| | | |
| | | } |
| | | |
| | | if (autoMatic || !btnconfig || btnconfig.setting.finish !== 'unclose') { |
| | | this.setState({ |
| | | visible: false |
| | | }) |
| | | } |
| | | |
| | | this.setState({ |
| | | loading: false |
| | | loading: false, |
| | | confirmLoading: false |
| | | }) |
| | | |
| | | if (autoMatic) { |
| | |
| | | } |
| | | |
| | | this.setState({ |
| | | loading: false |
| | | loading: false, |
| | | confirmLoading: false |
| | | }) |
| | | |
| | | if (autoMatic) { |
| | |
| | | * @description 模态框(表单),确认 |
| | | */ |
| | | handleOk = () => { |
| | | const { btnconfig, autoMatic } = this.state |
| | | |
| | | if (!this.formRef) return |
| | | |
| | | this.formRef.handleConfirm().then(res => { |
| | | if (btnconfig.setting.finish !== 'unclose' || autoMatic) { |
| | | this.setState({ |
| | | visible: false |
| | | }) |
| | | } |
| | | this.setState({ confirmLoading: true }) |
| | | this.triggerPrint(this.state.selines, res) |
| | | }) |
| | | } |
| | |
| | | handleCancel = () => { |
| | | this.setState({ |
| | | loading: false, |
| | | visible: false |
| | | visible: false, |
| | | confirmLoading: false |
| | | }) |
| | | } |
| | | |
| | |
| | | getContainer={container} |
| | | wrapClassName='action-modal' |
| | | visible={this.state.visible} |
| | | confirmLoading={this.state.confirmLoading} |
| | | width={width} |
| | | onOk={this.handleOk} |
| | | onCancel={this.handleCancel} |
| | |
| | | |
| | | handleChange = (val) => { |
| | | this.setState({value: val}) |
| | | this.props.onChange(val) |
| | | |
| | | let _val = val |
| | | |
| | | if (typeof(_val) !== 'number') { |
| | | _val = parseFloat(_val) |
| | | |
| | | if (isNaN(_val)) { |
| | | _val = '' |
| | | } |
| | | } |
| | | |
| | | this.props.onChange(_val) |
| | | } |
| | | |
| | | handleSubmit = () => { |
| | |
| | | |
| | | return ( |
| | | <Col key={template.type + index} className={template.disabled ? 'disabled' : ''} title={template.disTitle || ''} span={6}> |
| | | <Card |
| | | title={template.title}> |
| | | <Card title={<div className="title-wrap"><div>{template.title}</div><div>{template.MenuNo}</div></div>}> |
| | | <img onClick={() => {this.previewPicture(template)}} src={template.url} alt=""/> |
| | | <div className="card-operation"> |
| | | <Button type="primary" onClick={() => {this.useTemplate(template, 'user')}}>使用模板</Button> |
| | |
| | | .ant-col { |
| | | padding: 10px; |
| | | } |
| | | .ant-card-head { |
| | | padding: 0 10px; |
| | | } |
| | | .ant-col.disabled { |
| | | cursor: not-allowed; |
| | | .ant-card-head-title { |
| | |
| | | } |
| | | .ant-card-head-title { |
| | | text-align: center; |
| | | .title-wrap { |
| | | position: relative; |
| | | top: -8px; |
| | | height: 30px; |
| | | div { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | } |
| | | } |
| | | .ant-card-body { |
| | | padding: 2px; |