first commit

This commit is contained in:
编码猿
2024-09-27 01:28:38 +08:00
commit a9bde91e8e
2653 changed files with 701970 additions and 0 deletions

1
朱鹏鹏/.pydio Normal file
View File

@@ -0,0 +1 @@
37ee5fd0-f188-4cf7-b533-68bdd4083bd7

30
朱鹏鹏/keiri/.gitignore vendored Executable file
View File

@@ -0,0 +1,30 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
/dist
.vscode
.history
.yarn*
.idea
package-lock

1
朱鹏鹏/keiri/.pydio Normal file
View File

@@ -0,0 +1 @@
ee1fcdd4-b3e0-4553-83f1-b277566953a6

4
朱鹏鹏/keiri/README.md Executable file
View File

@@ -0,0 +1,4 @@
# keiri
# yarn
# yarn start 运行

View File

@@ -0,0 +1,51 @@
const { override, fixBabelImports, addDecoratorsLegacy, addWebpackAlias, overrideDevServer, disableEsLint, addLessLoader } = require('customize-cra');
const path = require('path')
const devServer = () => {
return (config) => {
return {
...config,
open: true,
proxy: {
'/api': {
target: 'http://222k09y748.iask.in/',
changeOrigin: true,
pathRewrite: {
'^/api': '/'
}
}
}
}
}
}
module.exports = {
webpack: override(
addWebpackAlias({
["$actions"]: path.resolve(__dirname, "src/store/actions"),
["$pages"]: path.resolve(__dirname, "src/pages"),
["$c"]: path.resolve(__dirname, "src/components"),
["$router"]: path.resolve(__dirname, "src/router"),
["$public"]: path.resolve(__dirname, "src/public/js"),
["$http"]: path.resolve(__dirname, "src/public/js/http"),
["$button"]: path.resolve(__dirname, "src/public/js/buttons"),
["$src"]: path.resolve(__dirname, "src")
}),
addDecoratorsLegacy(),
disableEsLint(),
fixBabelImports('import', {
libraryName: 'antd',
libraryDirectory: 'es',
style: true
}),
addLessLoader({
javascriptEnabled: true,
modifyVars: { '@primary-color': '#4BAEA0' },
})
),
devServer: overrideDevServer(
devServer()
)
};

14944
朱鹏鹏/keiri/package-lock.json generated Executable file

File diff suppressed because it is too large Load Diff

52
朱鹏鹏/keiri/package.json Executable file
View File

@@ -0,0 +1,52 @@
{
"name": "keiri",
"version": "0.1.0",
"private": true,
"dependencies": {
"@babel/plugin-proposal-decorators": "^7.6.0",
"@loadable/component": "^5.10.2",
"antd": "^4.7.0",
"axios": "^0.19.0",
"babel-plugin-import": "^1.12.1",
"bignumber": "^1.1.0",
"bignumber.js": "^9.0.0",
"classnames": "^2.2.6",
"cross-env": "^7.0.2",
"customize-cra": "^0.6.0",
"echarts": "^4.4.0",
"echarts-for-react": "^2.0.15-beta.1",
"less": "^3.10.3",
"less-loader": "^5.0.0",
"lodash": "^4.17.15",
"node-sass": "^4.12.0",
"react": "^16.9.0",
"react-app-rewired": "^2.1.3",
"react-dom": "^16.9.0",
"react-redux": "^7.1.1",
"react-router-dom": "^5.0.1",
"react-scripts": "3.1.1",
"redux": "^4.0.4",
"redux-persist": "^6.0.0"
},
"scripts": {
"start": "react-app-rewired start",
"build": " cross-env GENERATE_SOURCEMAP=false react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

View File

@@ -0,0 +1 @@
b336353c-30c6-4b36-aa95-043ebf4ba7fb

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>キャッシュレスシステム</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>

View File

@@ -0,0 +1,25 @@
{
"short_name": "React App",
"name": "Create React App Sample",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}

View File

@@ -0,0 +1,2 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *

View File

@@ -0,0 +1 @@
f563b270-f994-4a75-bc7e-8e382ee9fbd7

28
朱鹏鹏/keiri/src/App.js Executable file
View File

@@ -0,0 +1,28 @@
import React from 'react';
import { HashRouter as Router, Route, Switch } from 'react-router-dom';
import Main from '$pages/main';
import ja_JP from 'antd/es/locale/ja_JP';
import { ConfigProvider } from 'antd';
import { Provider } from 'react-redux';
import { PersistGate } from 'redux-persist/integration/react';
import configStore from './store';
function App() {
const { store, persistor } = configStore();
return (
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<ConfigProvider locale={ja_JP}>
<Router>
<Switch>
<Route path="/" component={Main} />
</Switch>
</Router>
</ConfigProvider>
</PersistGate>
</Provider>
);
}
export default App;

View File

@@ -0,0 +1 @@
8f43184a-8d90-4431-ac0e-7d8530be3048

View File

@@ -0,0 +1 @@
f3702f59-009a-47df-8ded-dec23adc1341

View File

@@ -0,0 +1,517 @@
import React, { Component } from 'react';
import { Form, Input, Select, Checkbox, Button, Spin } from 'antd';
import { AddButton } from '$button'
import { CaretRightOutlined, RollbackOutlined } from '@ant-design/icons';
import { http } from '$http';
import './index.scss'
const { Option } = Select
class Detail extends Component {
constructor(props) {
super(props);
this.state = {
loading: false,
detail: {},
checked1: false,
checked2: false,
checked3: false,
checked4: false,
}
}
formRef = React.createRef();
onGenderChange = (label,value) => {
console.log(label,value);
this.formRef.current.setFieldsValue({
[label]: value,
});
};
changeChecked(name, e) {
this.setState({
[name]: e.target.checked
})
};
onFinish = (values) => {
console.log(values);
};
goBack = () => {
this.props.goBack()
}
submit() {
}
async load() {
const { row, hd_c1_name } = this.props;
const parmas = {
login_ymd: sessionStorage.getItem('login_ymd'),
denpyo_no: row.pldenpyo_NO,
denpyo_ymd: row.pldenpyo_YMD,
hd_c1_name: hd_c1_name
}
try {
this.setState({ loading: true})
const detail = await http.post('s01/a1701_0010r/Entry/doIndicate', parmas)
this.setState({ loading: false, detail: detail })
console.log(detail)
this.formRef.current.setFieldsValue({
tx_denpyo_no: detail.tx_denpyo_no,
tx_shain_no: detail.tx_shain_no,
tx_buka_cod: detail.tx_buka_cod,
tx_buka_name: detail.tx_buka_name,
tx_serialno: detail.tx_serialno,
lbl_seihin_mei: detail.lbl_seihin_mei,
se_kamoku_mei: detail.se_kamoku_mei,
se_tekiyo_mei: detail.se_tekiyo_mei || "-----------",
tx_tekiyo_mei: detail.tx_tekiyo_mei,
tx_kanjo_code: detail.tx_kanjo_code,
tx_kanjo_name: detail.tx_kanjo_name,
tx_kih_year: detail.tx_kih_year,
tx_kih_month: detail.tx_kih_month,
tx_kih_day: detail.tx_kih_day,
se_shuhyotp_kbn: detail.se_shuhyotp_kbn,
tx_shoniks_kin: detail.tx_shoniks_kin,
tx_nito_kin: detail.tx_nito_kin,
tx_kotuhi_kin: detail.tx_kotuhi_kin,
tx_goukei_kin: detail.tx_goukei_kin,
tx_hikyuks_kin: detail.tx_hikyuks_kin,
tx_taizaihi_kin: detail.tx_taizaihi_kin,
se_shucho_kbn: detail.se_shucho_kbn,
tx_schosaki_mei: detail.tx_schosaki_mei,
se_schosaki_mei: detail.se_schosaki_mei,
se_shuhatu_year: detail.se_shuhatu_year,
se_shuhatu_month: detail.se_shuhatu_month,
se_shuhatu_day: detail.se_shuhatu_day,
se_shuchaku_year: detail.se_shuchaku_year,
se_shuchaku_month: detail.se_shuchaku_month,
se_shuchaku_day: detail.se_shuchaku_day,
});
} catch (error) {
console.error(error);
this.setState({ loading: false })
}
}
componentDidMount() {
this.load()
}
render() {
const { loading, detail, checked1, checked2, checked3, checked4 } = this.state;
const { se_shucho_kbn_list, se_tekiyo_mei_list, se_kamoku_mei_list, se_schosaki_mei_list,
se_shuhatu_year_list, se_shuchaku_year_list, se_shuhatu_month_list,
se_shuchaku_month_list, se_shuhatu_day_list, se_shuchaku_day_list, lbl_1} = detail;
const { hd_c1_name } = this.props;
return (
<Spin spinning={loading}>
<div className='aw_a1701_0010_detail'>
<div><Button onClick={this.goBack} className='back_btn' icon={<RollbackOutlined />} /> 国内出張旅費</div>
<div style={{ textAlign: "right", paddingRight: 50 }}>
<AddButton >コピー</AddButton>
<span style={{ marginLeft: 16 }}>{lbl_1}</span>
</div>
<div style={{ margin: '10px auto 0', }}>
<Form labelAlign="left" size="small" layout="inline" ref={this.formRef} name="control-ref" onFinish={this.onFinish}>
<div className="form_one">
<div className="form_one">
<div>
<div className="form_one">
<Form.Item name="tx_denpyo_no" label="伝票番号">
<Input disabled style={{ width: 100 }} />
</Form.Item>
<Form.Item name="tx_shain_no" label="社員名称">
<Input disabled style={{ width: 100 }} />
</Form.Item>
</div>
<div className="form_one">
<Form.Item name="tx_buka_cod" label="部課コード">
<Input style={{ width: 100 }} />
</Form.Item>
<Form.Item name="tx_buka_name" label="部課名称">
<Input disabled />
</Form.Item>
</div>
<div className="form_one">
<Form.Item name="tx_serialno" label="オーダーNo">
<Input style={{ width: 100 }} />
</Form.Item>
<Form.Item name="lbl_seihin_mei" label="">
<Input disabled />
</Form.Item>
</div>
<div className="form_one form_labe_center">
<div style={{ margin: '0 8px 0 2px', width: 64, textAlign: 'right' }}>用件:</div>
{
hd_c1_name === 'a1701_0010r' ?
<div >
<div className="form_one">
<Form.Item name="se_kamoku_mei" label="" style={{ marginRight: 6 }}>
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_kamoku_mei')}
>
{
se_kamoku_mei_list && se_kamoku_mei_list.map(item => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
</Form.Item>
<Button className="form_btn" style={{ marginRight: 6 }} icon={<CaretRightOutlined style={{ color: '#fff', fontSize: 16 }} />}></Button>
<Form.Item name="se_tekiyo_mei" label="" style={{ marginRight: 6 }}>
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_tekiyo_mei')}
>
{
se_tekiyo_mei_list && se_tekiyo_mei_list.map(item => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
</Form.Item>
<Button className="form_btn"><div className="stop_btn_icon"></div></Button>
</div>
<Form.Item name="tx_tekiyo_mei" label="">
<Input style={{width:200}} />
</Form.Item>
</div> :
<Form.Item name="tx_tekiyo_mei" label="">
<Input style={{ width: 200 }} disabled />
</Form.Item>
}
</div>
<div className="form_one">
<Form.Item name="tx_kanjo_code" label="勘定科目">
<Input disabled style={{ width: 100 }} />
</Form.Item>
<Form.Item name="tx_kanjo_name" label="">
<Input disabled style={{ width: 100 }} />
</Form.Item>
</div>
<div className="form_one">
<Form.Item name="tx_kih_year" label="起票日" style={{ marginRight: 0 }}>
<Input disabled style={{ width: 70 }} />
</Form.Item>
<span style={{ margin: '0 6px' }}></span>
<Form.Item name="tx_kih_month" label="" style={{ marginRight: 0 }}>
<Input disabled style={{ width: 50 }} />
</Form.Item>
<span style={{ margin: '0 6px' }}></span>
<Form.Item name="tx_kih_day" label="" style={{ marginRight: 0 }}>
<Input disabled style={{ width: 50 }} />
</Form.Item>
<span style={{ margin: '0 16px 0 6px' }}></span>
<Form.Item name="se_shuhyotp_kbn" label="証憑添付">
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_shuhyotp_kbn')}
style={{ width: 60 }}
>
<Option value="1"></Option>
<Option value="0"></Option>
</Select>
</Form.Item>
</div>
<div className="form_one">
<div>
<Form.Item name="tx_shoniks_kin" label="初日加算">
<Input style={{ width: 100 }} />
</Form.Item>
<Form.Item name="tx_nito_kin" label="長期出張手当">
<Input style={{ width: 100 }} />
</Form.Item>
<Form.Item name="tx_kotuhi_kin" label="交通費">
<Input disabled style={{ width: 100 }} />
</Form.Item>
</div>
<div style={{ marginLeft: 30 }}>
<Form.Item name="tx_goukei_kin" label="合計金額">
<Input style={{ width: 100 }} />
</Form.Item>
<Form.Item name="tx_hikyuks_kin" label="日帰出張手当">
<Input style={{ width: 100 }} />
</Form.Item>
<Form.Item name="tx_taizaihi_kin" label="宿泊代(実費)">
<Input style={{ width: 100 }} />
</Form.Item>
</div>
</div>
</div>
{/* 右边 */}
<div style={{ marginLeft: '30px' }}>
<Form.Item name="se_shucho_kbn" label="出張種別" style={{ maxWidth: 120 }}>
<Select
disabled={hd_c1_name !== 'a1701_0010r'}
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_shucho_kbn')}
>
{
se_shucho_kbn_list&& se_shucho_kbn_list.map(item => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
</Form.Item>
<div className="form_one form_labe_center">
<div style={{ margin: '0 8px 0 2px' }}>出張先:</div>
{
hd_c1_name === 'a1701_0010r' ?
<div >
<div className="form_one">
<Form.Item name="tx_schosaki_mei" label="">
<Input />
</Form.Item>
<AddButton>出張先追加</AddButton>
</div>
<Form.Item name="se_schosaki_mei" label="">
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_schosaki_mei')}
>
{
se_schosaki_mei_list && se_schosaki_mei_list.map(item => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
</Form.Item>
</div> :
<div className="form_one">
<Form.Item name="tx_schosaki_mei" label="">
<Input disabled />
</Form.Item>
</div>
}
</div>
<div className='form_right_tow'>
<div className='title'>出張期间</div>
<div className="form_one">
<Form.Item name="se_shuhatu_year" label="出発日" style={{ marginRight: 0 }}>
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_shuhatu_year')}
style={{ width: 70 }}
>
{
se_shuhatu_year_list && se_shuhatu_year_list.map((item, i) => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
</Form.Item>
<span style={{ margin: '0 6px' }}></span>
<Form.Item name="se_shuhatu_month" label="" style={{ marginRight: 0 }}>
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_shuhatu_month')}
style={{ width: 70 }}
>
{
se_shuhatu_month_list && se_shuhatu_month_list.map((item, i) => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
</Form.Item>
<span style={{ margin: '0 6px' }}></span>
<Form.Item name="se_shuhatu_day" label="" style={{ marginRight: 0 }}>
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_shuhatu_day')}
style={{ width: 70 }}
>
{
se_shuhatu_day_list && se_shuhatu_day_list.map((item, i) => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
</Form.Item>
<span style={{ margin: '0 6px' }}></span>
</div>
<div className="form_one">
<Form.Item name="se_shuchaku_year" label="帰着日" style={{ marginRight: 0 }}>
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_shuchaku_year')}
style={{ width: 70 }}
>
{
se_shuchaku_year_list && se_shuchaku_year_list.map((item, i) => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
</Form.Item>
<span style={{ margin: '0 6px' }}></span>
<Form.Item name="se_shuchaku_month" label="" style={{ marginRight: 0 }}>
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_shuchaku_month')}
style={{ width: 70 }}
>
{
se_shuchaku_month_list && se_shuchaku_month_list.map((item, i) => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
</Form.Item>
<span style={{ margin: '0 6px' }}></span>
<Form.Item name="se_shuchaku_day" label="" style={{ marginRight: 0 }}>
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_shuchaku_day')}
style={{ width: 70 }}
>
{
se_shuchaku_day_list && se_shuchaku_day_list.map((item, i) => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
</Form.Item>
<span style={{ margin: '0 6px' }}></span>
</div>
</div>
</div>
</div>
</div>
<div className="form_one form_right">
<div className='form_right_tow'>
<div className='title'>出張手当</div>
<div className="form_one">
<Checkbox onChange={this.changeChecked.bind(this, 'checked1')}>
<span >帰社時刻が</span><br />
<span style={{ paddingLeft: 20 }}>19:30</span><br />
<span style={{ paddingLeft: 20 }}>を超えた場合</span><br />
<span style={{ paddingLeft: 20, color: 'red' }}>2級以上のみ</span>
</Checkbox>
<Form.Item name="tx_nitks_kai" label="">
<Input disabled={!checked1} style={{ maxWidth: 50 }} />
</Form.Item>
</div>
</div>
<div className='form_right_tow'>
<div className='title' style={{ transform: 'translate(0px, -12px)' }}>日帰出張旅費出張手当</div>
<div className="form_one">
<Checkbox onChange={this.changeChecked.bind(this, 'checked2')}>4H以上</Checkbox>
<Form.Item name="tx_kyu6h_kai" label="">
<Input disabled={!checked2} style={{ maxWidth: 50 }} />
</Form.Item>
</div>
<div className="form_one">
<Checkbox onChange={this.changeChecked.bind(this, 'checked3')}>2H以上4H未満</Checkbox>
<Form.Item name="tx_kyu4h_kai" label="">
<Input disabled={!checked3} style={{ maxWidth: 50 }} />
</Form.Item>
</div>
<div className="form_one">
<Checkbox onChange={this.changeChecked.bind(this, 'checked4')}>1H以上2H未満</Checkbox>
<Form.Item name="tx_kyu2h_kai" label="">
<Input disabled={!checked4} style={{ maxWidth: 50 }} />
</Form.Item>
</div>
</div>
{/* <div className='form_right_tow'>
<div className='title' style={{ transform: 'translate(0px, -12px)' }}>宿泊出張旅費-所定就業日</div>
<div className="form_one">
<Checkbox >4H以上</Checkbox>
<Form.Item name="tx_gai6h_kai" label="">
<Input style={{ maxWidth: 50 }} />
</Form.Item>
</div>
<div className="form_one">
<Checkbox >2H以上4H未満</Checkbox>
<Form.Item name="tx_gai4h_kai" label="">
<Input style={{ maxWidth: 50 }} />
</Form.Item>
</div>
<div className="form_one">
<Checkbox >1H以上2H未満</Checkbox>
<Form.Item name="tx_gai2h_kai" label="">
<Input style={{ maxWidth: 50 }} />
</Form.Item>
</div>
</div>
<div className='form_right_tow'>
<div className='title' style={{ transform: 'translate(0px, -12px)' }}>宿泊出張旅費-休日</div>
<div className="form_one">
<Checkbox >4H以上</Checkbox>
<Form.Item name="tx_chokyu6h_kai" label="">
<Input style={{ maxWidth: 50 }} />
</Form.Item>
</div>
<div className="form_one">
<Checkbox >2H以上4H未満</Checkbox>
<Form.Item name="tx_chokyu4h_kai" label="">
<Input style={{ maxWidth: 50 }} />
</Form.Item>
</div>
<div className="form_one">
<Checkbox >1H以上2H未満</Checkbox>
<Form.Item name="tx_chokyu2h_kai" label="">
<Input style={{ maxWidth: 50 }} />
</Form.Item>
</div>
</div>
<div className='form_right_tow'>
<div className='title'>滞在日数</div>
<div className="form_one">
<Checkbox >車中</Checkbox>
<Form.Item name="tx_shusha_kai" label="">
<Input style={{ maxWidth: 50 }} />
</Form.Item>
</div>
<div className="form_one">
<Checkbox >普通</Checkbox>
<Form.Item name="tx_shufut_kai" label="">
<Input style={{ maxWidth: 50 }} />
</Form.Item>
</div>
<div className="form_one">
<Checkbox >綱島寮</Checkbox>
<Form.Item name="tx_shuryo_kai" label="">
<Input style={{ maxWidth: 50 }} />
</Form.Item>
</div>
</div> */}
</div>
{
hd_c1_name === 'a1701_0010r' &&
<div style={{ marginTop: 20 }}>
<AddButton htmlType="submit">印刷プレビュー</AddButton>&emsp;
<AddButton htmlType="submit">確定</AddButton>&emsp;
<AddButton htmlType="submit">交通費明細</AddButton>&emsp;
<AddButton htmlType="submit">滞在費計算</AddButton>
</div>
}
</Form>
</div>
</div>
</Spin>
)
}
}
export default Detail

View File

@@ -0,0 +1,41 @@
.aw_a1701_0010_detail {
width: 90%;
margin: 0 auto;
.form_one {
display: flex;
}
.form_btn {
background: #4baea0;
width: 60px;
}
.stop_btn_icon {
width: 12px;
height: 12px;
background: #FFF;
margin: 0 auto;
}
.form_labe_center {
align-items: center;
}
.form_right {
width: 100%;
justify-content: center;
}
.form_right_tow {
margin: 20px 0 0 20px;
padding: 0 24px;
border: 1px solid #ccc;
.title {
display: inline-block;
padding: 0 10px;
background: #fff;
transform: translate(20px,-12px);
}
}
.ant-form-item {
margin-bottom: 10px;
}
.back_btn {
transform: translateX(-30px);
}
}

View File

@@ -0,0 +1 @@
62005a64-c293-447b-9e4c-409f2d271184

View File

@@ -0,0 +1,707 @@
import React, { Component } from 'react';
import { Form, Input, Select, Modal, Button, Spin, Table, Radio } from 'antd';
import { AddButton } from '$button'
import { RollbackOutlined, CaretRightOutlined } from '@ant-design/icons';
import { http } from '$http';
import './index.scss'
const { Option } = Select
class Detail extends Component {
constructor(props) {
super(props);
this.state = {
loading: false,
detail: {},
dataSource: [],
columns: [
{
title: 'No',
dataIndex: 'no',
key: 'no',
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '部課',
dataIndex: 'bukake_mei',
key: 'bukake_mei',
},
{
title: '利用日',
dataIndex: 'torihiki_ymd',
key: 'torihiki_ymd',
},
{
title: '勘定科目',
dataIndex: 'kamoku_mei',
key: 'kamoku_mei',
},
{
title: '摘要',
dataIndex: 'tekiyo_mei',
key: 'tekiyo_mei',
},
{
title: 'オーダー名称',
dataIndex: 'sei_ryaku',
key: 'sei_ryaku',
},
{
title: '金額',
dataIndex: 'karikata_kin',
key: 'karikata_kin',
},
{
title: '税',
dataIndex: 'zeibunri_kbn',
key: 'zeibunri_kbn',
},
{
title: '支払先',
dataIndex: 'torihkpl_mei',
key: 'torihkpl_mei',
}
],
visible: false,
visible1: false
}
}
formRef = React.createRef();
onGenderChange = (label,value) => {
console.log(label,value);
this.formRef.current.setFieldsValue({
[label]: value,
});
};
toDetail(text, record) {
}
changeChecked(name, e) {
this.setState({
[name]: e.target.checked
})
};
onFinish = (values) => {
console.log(values);
};
goBack = () => {
this.props.goBack()
}
submit() {
}
setKanjo({ kanjo_code, kanjo_name, tekiyou_name }) {
this.setState({ visible1: false});
console.log(kanjo_code);
this.formRef.current.setFieldsValue({
tx_kanjo_code: kanjo_code,
tx_kanjo_name: kanjo_name,
// tx_tekiyou_name: tekiyou_name,
})
}
async load() {
const { row } = this.props;
const parmas = {
login_ymd: sessionStorage.getItem('login_ymd'),
denpyo_no: row.pldenpyo_NO,
denpyo_ymd: row.pldenpyo_YMD,
// hd_c1_name: 'a1701_0010r'
}
try {
this.setState({ loading: true})
const detail = await http.post('s02/a1702_0010r/entry/doIndicate', parmas)
this.setState({ loading: false, detail: detail, dataSource: detail.resultList})
console.log(detail)
this.formRef.current.setFieldsValue({
tx_denpyo_no: detail.tx_denpyo_no,
tx_buka_cod: detail.tx_buka_cod,
tx_shain_no: detail.tx_shain_no,
tx_buka_name: detail.tx_buka_name,
tx_kih_year: detail.tx_kih_year,
tx_kih_month: detail.tx_kih_month,
tx_kih_day: detail.tx_kih_day,
se_shiharai_kbn: detail.se_shiharai_kbn,
tx_sumprice: detail.tx_sumprice,
tx_taxprice: detail.tx_taxprice,
tx_meisai_no: detail.tx_meisai_no,
tx_buka_cod2: detail.tx_buka_cod2,
se_tyear: detail.se_tyear,
se_tmonth: detail.se_tmonth,
se_tday: detail.se_tday,
tx_kanjo_code: detail.tx_kanjo_code,
tx_kanjo_name: detail.tx_kanjo_name,
tx_tekiyou_name: detail.tx_tekiyou_name,
tx_serialno: detail.tx_serialno,
se_sihaskdi_cod: detail.se_sihaskdi_cod,
tx_pay_side: detail.tx_pay_side,
tx_priceyen: detail.tx_priceyen,
se_zeibunri_kbn: detail.se_zeibunri_kbn,
se_sihaskdi_cod_list: detail.se_sihaskdi_cod_list,
});
} catch (error) {
console.error(error);
this.setState({ loading: false })
}
}
toKanjo() {
const { visible1 } = this.state;
this.setState({ visible1: !visible1 })
}
handleCancel() {
const { visible } = this.state;
this.setState({ visible: !visible })
}
componentDidMount() {
this.load()
}
render() {
const { loading, detail, columns, dataSource, visible, visible1 } = this.state, { row } = this.props;;
const { se_sihaskdi_cod_list, lbl_1, tx_buka_cod=""} = detail;
const setting = {
dataSource: dataSource,
columns: columns,
rowKey: 'no',
pagination: false,
size: "small",
bordered: true,
};
return (
<Spin spinning={loading}>
<div className='detail_21'>
<div><Button onClick={this.goBack} icon={<RollbackOutlined />} /> 21 領収証支払</div>
{
!row.isAdd &&
<div style={{ textAlign: "right", paddingRight: 50 }}>
<AddButton >コピー</AddButton>
<span style={{ marginLeft: 16 }}>{lbl_1}</span>
</div>
}
<div style={{ margin: '10px auto 0', }}>
<Form labelAlign="right" size="small" ref={this.formRef} name="control" >
<div className="detail_21_form_1">
<div >
<Form.Item name="tx_denpyo_no" label="伝票番号">
<Input disabled style={{ width: 100 }} />
</Form.Item>
<Form.Item name="tx_buka_cod" label="部課コード">
<Input disabled style={{ width: 100 }} />
</Form.Item>
</div>
<div>
<Form.Item name="tx_shain_no" label="社員名称">
<Input disabled style={{ width: 150 }} />
</Form.Item>
<Form.Item name="tx_buka_name" label="部課名称">
<Input disabled style={{ width: 150 }} />
</Form.Item>
</div>
<div>
<div style={{display:'flex'}}>
<Form.Item name="tx_kih_year" label="起票日" >
<Input disabled style={{ width: 70 }} />
</Form.Item>&nbsp;
<span ></span>&nbsp;
<Form.Item name="tx_kih_month">
<Input disabled style={{ width: 50 }} />
</Form.Item>&nbsp;
<span></span>&nbsp;
<Form.Item name="tx_kih_day" >
<Input disabled style={{ width: 50 }} />
</Form.Item>&nbsp;
<span ></span>&nbsp;
</div>
<Form.Item name="se_shiharai_kbn" label="精算種別">
<Select
onChange={this.onGenderChange.bind(this, 'se_shiharai_kbn')}
style={{ width: 100 }}
>
<Option value="">--------</Option>
<Option value="0">概算精算</Option>
<Option value="1">確定精算</Option>
</Select>
</Form.Item>
<div style={{display: 'flex'}}>
<Form.Item name="tx_sumprice" label="合計金額">
<Input style={{ width: 80 }} />
</Form.Item>&emsp;
<Form.Item name="tx_taxprice" label="消費税">
<Input disabled style={{ width: 80 }} />
</Form.Item>
</div>
</div>
</div>
<div style={{marginTop: 20}}>
<Form.Item name="tx_meisai_no" label="編集明細No">
<Input disabled style={{ width: 80 }} />
</Form.Item>
<div className="detail_21_form_1">
<div>
<Form.Item name="tx_buka_cod2" label="部課コード">
<Input style={{ width: 80 }} />
</Form.Item>
</div>
<div style={{ display: 'flex' }}>
<Form.Item name="se_tyear" label="利用日" >
<Input disabled style={{ width: 70 }} />
</Form.Item>&nbsp;
<span ></span>&nbsp;
<Form.Item name="se_tmonth" label="">
<Input disabled style={{ width: 50 }} />
</Form.Item>&nbsp;
<span></span>&nbsp;
<Form.Item name="se_tday" label="" >
<Input disabled style={{ width: 50 }} />
</Form.Item>&nbsp;
<span ></span>&nbsp;
</div>
</div>
<div style={{display:'flex'}}>
<span className="layout_label">勘定科目:</span>
<AddButton htmlType="submit" onClick={this.toKanjo.bind(this)}>科目選択</AddButton>&nbsp;
<AddButton htmlType="submit">科目クリア</AddButton>&nbsp;
<Form.Item name="tx_kanjo_code">
<Input disabled style={{ width: 80 }} />
</Form.Item>
<Form.Item name="tx_kanjo_name">
<Input disabled style={{ width: 180 }} />
</Form.Item>
</div>
<Form.Item name="tx_tekiyou_name" label="摘要">
<Input style={{ width: 280 }} />
</Form.Item>
<div className="detail_21_form_1">
<div>
<Form.Item name="tx_serialno" label="オーダーNo">
<Input style={{ width: 100 }} />
<span>( )</span>
</Form.Item>
</div>
<div style={{ display: 'flex' }}>
<Form.Item name="se_sihaskdi_cod" label="支払先" >
<Select
onChange={this.onGenderChange.bind(this, 'se_sihaskdi_cod')}
style={{ width: 160 }}
>
{
se_sihaskdi_cod_list && se_sihaskdi_cod_list.map(item => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
</Form.Item>&nbsp;
<Form.Item name="tx_pay_side" >
<Input style={{ width: 170 }} />
</Form.Item>
</div>
</div>
<div style={{ display: 'flex' }}>
<Form.Item name="tx_priceyen" label="金額(円)" >
<Input style={{ width: 100 }} />
</Form.Item>&nbsp;
<Form.Item name="se_zeibunri_kbn" >
<Select
onChange={this.onGenderChange.bind(this, 'se_zeibunri_kbn')}
style={{ width: 100 }}
>
<Option value="1">税込</Option>
<Option value="2">課税対象外</Option>
</Select>
</Form.Item>
</div>
</div>
<div style={{ textAlign: 'right' }}>
<AddButton htmlType="submit">印刷プレビュー</AddButton>&emsp;
<AddButton htmlType="submit" onClick={this.handleCancel.bind(this)}>取引先登録</AddButton>&emsp;
{
row.isAdd &&
<span>
<AddButton htmlType="submit">行登録</AddButton>&emsp;
<AddButton htmlType="submit">確定</AddButton>&emsp;
</span>
}
</div>
</Form>
</div>
<div style={{ marginTop: 20}}>
<span className="layout_label"> 検索結果:{ dataSource.length }</span>
<Table {...setting} ></Table>
</div>
<Modal
title="02 取引先メンテナンス"
visible={visible}
onCancel={this.handleCancel.bind(this)}
width={1000}
footer={null}
>
<ModalInfo />
</Modal>
<Modal
title="02 摘要科目選択"
visible={visible1}
onCancel={this.toKanjo.bind(this)}
width={1000}
footer={null}
>
<ModalInfo1 bukaCod={tx_buka_cod} setKanjo={this.setKanjo.bind(this)} />
</Modal>
</div>
</Spin>
)
}
}
class ModalInfo extends Component {
state = {
valueRadio: '10',
active1: '-1',
se_torihkpl_cod1_list: [],
se_torihkpl_cod2_list: [],
hd_torihkpl_cnt1: '',
hd_torihkpl_cnt2: '',
hd_torishu_kbn: '',
se_torihkpl_cod1: '',
se_torihkpl_cod2: '',
tx_torihkpl_cod: ''
}
changeInput({ target: { value } }) {
this.setState({ tx_torihkpl_cod: value})
}
clickItem(item, name) {
this.setState({ active1: item.value, [name]: item.value})
}
async fnEntry() {
const { tx_torihkpl_cod, valueRadio } = this.state;
console.log(tx_torihkpl_cod);
try {
const params = {
hd_denpyodt_kbn: 'B1',
rd_torishu_kbn: valueRadio,
tx_torihkpl_cod,
}
const res = await http.post('s90/a1790_0020z/Entry/doEntry', params)
this.setState({
se_torihkpl_cod2_list: res.se_torihkpl_cod2_list,
se_torihkpl_cod1_list: res.se_torihkpl_cod1_list,
hd_torihkpl_cnt1: res.hd_torihkpl_cnt1,
hd_torihkpl_cnt2: res.hd_torihkpl_cnt2,
hd_torishu_kbn: res.hd_torishu_kbn,
se_torihkpl_cod1: '',
se_torihkpl_cod2: ''
})
} catch (error) {
console.log(error);
}
}
async fnDelete(num) {
const { hd_torihkpl_cnt1, hd_torihkpl_cnt2, hd_torishu_kbn, se_torihkpl_cod1, se_torihkpl_cod2, valueRadio, tx_torihkpl_cod} = this.state;
if (num === '1' && !se_torihkpl_cod1) {
alert("項目を選択してください。");
return
}
if (num === '2' && !se_torihkpl_cod2) {
alert("項目を選択してください。");
return
}
try {
const params = {
hd_denpyodt_kbn: 'B1',
hd_torihkpl_cnt1,
hd_torihkpl_cnt2,
hd_torishu_kbn,
se_torihkpl_cod1,
se_torihkpl_cod2,
rd_torishu_kbn: valueRadio,
tx_torihkpl_cod
}
const res = await http.post('s90/a1790_0020z/Entry/doDelete', params)
this.setState({
se_torihkpl_cod2_list: res.se_torihkpl_cod2_list,
se_torihkpl_cod1_list: res.se_torihkpl_cod1_list,
hd_torihkpl_cnt1: res.hd_torihkpl_cnt1,
hd_torihkpl_cnt2: res.hd_torihkpl_cnt2,
hd_torishu_kbn: res.hd_torishu_kbn,
se_torihkpl_cod1: '',
se_torihkpl_cod2: ''
})
} catch (error) {
console.log(error);
}
}
onChange({ target: { value }}) {
this.setState({ valueRadio: value})
}
async load() {
try {
const { se_torihkpl_cod2_list, se_torihkpl_cod1_list, hd_torihkpl_cnt1, hd_torihkpl_cnt2, hd_torishu_kbn} = await http.post('s90/a1790_0020z/Entry/doIndicate', { hd_denpyodt_kbn: 'B1'})
this.setState({
se_torihkpl_cod2_list,
se_torihkpl_cod1_list,
hd_torihkpl_cnt1,
hd_torihkpl_cnt2,
hd_torishu_kbn
})
} catch (error) {
console.log(error);
}
}
componentDidMount() {
this.load()
}
render() {
const { valueRadio, active1, se_torihkpl_cod1_list, se_torihkpl_cod2_list, tx_torihkpl_cod } = this.state;
return (
<div>
<div>
<span className="layout_label" style={{marginRight:8}}>追加名称</span>
<Radio.Group onChange={this.onChange.bind(this)} value={valueRadio}>
<Radio value='10'>代表支払先 /</Radio>
<Radio value='20'>客先名称</Radio>
</Radio.Group>
<Input style={{ width: 200, margin: '0px 20px 0 10px' }} onChange={this.changeInput.bind(this)} size="small" />
<AddButton onClick={this.fnEntry.bind(this)}>追加</AddButton>
<span style={{marginRight:100}}></span>
<AddButton>設定</AddButton>
</div>
<div style={{display:'flex',marginTop:10}}>
<div className="layout_label">削除名称</div>
<div style={{width:350,display:'flex',flexDirection:'column',alignItems:'center'}}>
<div className="layout_label" >代表支払先</div>
<div style={{ width: 167, height: 234, border: '1px solid #ccc', margin: '14px 0', overflow: "auto"}}>
{
se_torihkpl_cod1_list.map(item => {
return(
<div
onClick={this.clickItem.bind(this, item,'se_torihkpl_cod1')}
key={item.value}
style={{
height: 20, lineHeight: '20px',
textAlign:'center',cursor:'pointer',
color: active1 === item.value ? '#fff' : '#000000d9',
background: active1 === item.value ? '#4baea0' : '#fff',
}}
>{item.label}</div>
)
})
}
</div>
<div style={{ width: 80 }}><AddButton onClick={this.fnDelete.bind(this,'1')}>削除</AddButton></div>
</div>
<div style={{ width: 350, display: 'flex', flexDirection: 'column', alignItems: 'center' }}>
<div className="layout_label" >客先名称</div>
<div style={{ width: 167, height: 234, border: '1px solid #ccc', margin: '14px 0',overflow:"auto" }}>
{
se_torihkpl_cod2_list.map(item => {
return (
<div
onClick={this.clickItem.bind(this, item,'se_torihkpl_cod2')}
key={item.value}
style={{
height: 20, lineHeight: '20px',
textAlign: 'center', cursor: 'pointer',
color: active1 === item.value ? '#fff' : '#000000d9',
background: active1 === item.value ? '#4baea0' : '#fff',
}}
>{item.label}</div>
)
})
}
</div>
<div style={{ width: 80 }}><AddButton onClick={this.fnDelete.bind(this,'2')}>削除</AddButton></div>
</div>
</div>
</div>
)
}
}
class ModalInfo1 extends Component {
state = {
se_tekiyou1: '',
se_tekiyou2: '',
se_tekiyou3: '',
se_tekiyou4: '',
se_tekiyou5: '',
se_tekiyou6: '',
se_tekiyou1_list:[],
se_tekiyou2_list:[],
se_tekiyou3_list:[],
se_tekiyou4_list:[],
se_tekiyou5_list:[],
se_tekiyou6_list:[],
array: [],
kanjo_code: '',
kanjo_name: '',
tekiyou_name: ''
}
submit() {
const { kanjo_code, kanjo_name, tekiyou_name} = this.state
this.props.setKanjo({ kanjo_code, kanjo_name, tekiyou_name})
}
onChange(name, value ) {
console.log( value);
const array = value.split('@').filter(item => item)
console.log(array);
this.setState({ [name]: value, array })
}
async next(hd_status) {
try {
const { se_tekiyou1, se_tekiyou2, se_tekiyou3, se_tekiyou4, se_tekiyou5, se_tekiyou6, array} = this.state;
const pamars ={
buka_cod: this.props.bukaCod,
hd_status, se_tekiyou1,
se_tekiyou2, se_tekiyou3,
se_tekiyou4, se_tekiyou5,
se_tekiyou6
}
const res = await http.post('s90/a1790_0020z/Search/doSearch', pamars)
let obj = {}
if (array.length>3) {
obj = {
kanjo_code: array[1],
kanjo_name: array[3],
tekiyou_name: array[0]
}
}
this.setState({
se_tekiyou1_list: res.resultMap.se_tekiyou1_list,
se_tekiyou2_list: res.resultMap.se_tekiyou2_list,
se_tekiyou3_list: res.resultMap.se_tekiyou3_list,
se_tekiyou4_list: res.resultMap.se_tekiyou4_list,
se_tekiyou5_list: res.resultMap.se_tekiyou5_list,
se_tekiyou6_list: res.resultMap.se_tekiyou6_list,
...obj
})
} catch (error) {
console.log(error);
}
}
async load() {
try {
const res = await http.post('s90/a1790_0020z/Search/doIndicate', { buka_cod: this.props.bukaCod })
this.setState({
se_tekiyou1_list: res.resultMap.se_tekiyou1_list,
se_tekiyou2_list: res.resultMap.se_tekiyou2_list,
se_tekiyou3_list: res.resultMap.se_tekiyou3_list,
se_tekiyou4_list: res.resultMap.se_tekiyou4_list,
se_tekiyou5_list: res.resultMap.se_tekiyou5_list,
se_tekiyou6_list: res.resultMap.se_tekiyou6_list,
se_tekiyou1: res.resultMap.se_tekiyou1_list[0].value
})
} catch (error) {
console.log(error);
}
}
componentDidMount() {
this.load()
}
render() {
const { se_tekiyou1, se_tekiyou2, se_tekiyou3,
se_tekiyou4, se_tekiyou5, se_tekiyou6, se_tekiyou1_list,
se_tekiyou4_list, se_tekiyou3_list, se_tekiyou5_list, se_tekiyou2_list,
se_tekiyou6_list, kanjo_code, kanjo_name, tekiyou_name
} = this.state;
const buttonStyle = { background: '#4baea0', width: 50, height: 20, lineHeight: '20px', border: 0, padding: 0 };
return (
<div style={{paddingBottom:100}}>
<div className="layout_label" style={{width:85}}>絞り込み</div>
<div style={{ margin: '10px 0 10px 85px' }}><AddButton>摘要クリア</AddButton></div>
<div >
<span className="layout_label" style={{paddingLeft:50}}>摘要</span>
<Select value={se_tekiyou1} size="small" style={{ width: 288 }} onChange={this.onChange.bind(this,'se_tekiyou1')} >
{
se_tekiyou1_list.map((item) => {
return <Option key={item.value||'1'} value={item.vlaue}>{item.label}</Option>
})
}
</Select>&emsp;
<Button onClick={this.next.bind(this,'1')} style={buttonStyle} icon={<CaretRightOutlined style={{ color: '#fff', fontSize: 16 }} />}></Button>&emsp;
<Select value={se_tekiyou2} size="small" style={{ width: 174 }} onChange={this.onChange.bind(this,'se_tekiyou2')} >&emsp;
{
se_tekiyou2_list.map((item) => {
return <Option key={item.value||'1'} value={item.vlaue}>{item.label}</Option>
})
}
</Select>&emsp;
<Button onClick={this.next.bind(this, '2')} style={buttonStyle} icon={<CaretRightOutlined style={{ color: '#fff', fontSize: 16 }} />}></Button>&emsp;
<Select value={se_tekiyou3} size="small" style={{ width: 174 }} onChange={this.onChange.bind(this,'se_tekiyou3')} >
{
se_tekiyou3_list.map((item) => {
return <Option key={item.value || '1'} value={item.vlaue}>{item.label}</Option>
})
}
</Select>&emsp;
<Button onClick={this.next.bind(this, '3')} style={buttonStyle} icon={<CaretRightOutlined style={{ color: '#fff', fontSize: 16 }} />}></Button>
</div>
<div style={{margin:'10px 0 0 82px'}}>
<Select value={se_tekiyou4} size="small" style={{ width: 174, marginRight: 114 }} onChange={this.onChange.bind(this,'se_tekiyou4')} >
{
se_tekiyou4_list.map((item) => {
return <Option key={item.value || '1'} value={item.vlaue}>{item.label}</Option>
})
}
</Select>&emsp;
<Button onClick={this.next.bind(this, '4')} style={buttonStyle} icon={<CaretRightOutlined style={{ color: '#fff', fontSize: 16 }} />}></Button>&emsp;
<Select value={se_tekiyou5} size="small" style={{ width: 174 }} onChange={this.onChange.bind(this,'se_tekiyou5')} >&emsp;
{
se_tekiyou5_list.map((item) => {
return <Option key={item.value || '1'} value={item.vlaue}>{item.label}</Option>
})
}
</Select>&emsp;
<Button onClick={this.next.bind(this, '5')} style={buttonStyle} icon={<CaretRightOutlined style={{ color: '#fff', fontSize: 16 }} />}></Button>&emsp;
<Select value={se_tekiyou6} size="small" style={{ width: 174 }} onChange={this.onChange.bind(this,'se_tekiyou6')} >
{
se_tekiyou6_list.map((item, i) => {
return <Option key={item.value || '1'} value={item.vlaue}>{item.label}</Option>
})
}
</Select>&emsp;
<Button onClick={this.next.bind(this, '6')} style={buttonStyle}><div className="stop_btn_icon"></div></Button>
</div>
<div style={{marginTop:20}}>
<div>
<span className="layout_label" style={{paddingLeft:24}}>勘定科目</span>
<Input size="small" value={kanjo_code} style={{ width: 80 }} />&emsp;
<Input size="small" value={kanjo_name} style={{width:180}} />
</div>
<div style={{margin:'10px 0'}}>
<span className="layout_label" style={{ paddingLeft: 24 }}>摘要名称</span>
<Input size="small" value={tekiyou_name} style={{ width: 300 }} />
</div>
<div style={{marginLeft:80}}>
<AddButton onClick={this.submit.bind(this)}>設定</AddButton>
</div>
</div>
</div>
)
}
}
export default Detail

View File

@@ -0,0 +1,22 @@
.detail_21 {
width: 960px;
.detail_21_form_1 {
display: flex;
>div {
flex: 1
}
}
.ant-form-item-label {
font-weight: bold;
}
.ant-form-item {
margin-bottom: 10px;
}
}
.stop_btn_icon {
width: 10px;
height: 10px;
background: #FFF;
margin: 0 auto;
}

View File

@@ -0,0 +1 @@
28d02706-278c-4622-a0f4-a81929737fc8

View File

@@ -0,0 +1 @@
070bb4cc-a4c5-46b2-a8a6-bef619a3c185

Binary file not shown.

Binary file not shown.

13
朱鹏鹏/keiri/src/index.js Executable file
View File

@@ -0,0 +1,13 @@
import React from 'react';
import ReactDOM from 'react-dom';
import './index.scss';
import App from './App';
import * as serviceWorker from './serviceWorker';
import moment from 'moment';
import 'moment/locale/zh-cn';
moment.locale('zh-cn');
ReactDOM.render(<App />, document.getElementById('root'));
serviceWorker.unregister();

265
朱鹏鹏/keiri/src/index.scss Executable file
View File

@@ -0,0 +1,265 @@
html,
body,
#root {
height: 100%;
// min-width: 1920px;
font-family: " ゴシック";
}
.layout_label {
font-weight: bold;
font-size: 9pt;
padding-right: 6px;
font-family: " ゴシック";
}
.ellipsis {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 99%;
}
div::-webkit-scrollbar {
width: 5px;
height: 10px;
}
div::-webkit-scrollbar-track {
background: none;
border-radius: 2px;
}
div::-webkit-scrollbar-thumb {
background: rgb(239, 239, 239);
border-radius: 10px;
}
div::-webkit-scrollbar-thumb:hover {
background: #bfbfbf;
}
.ant-modal-content .ant-modal-body {
padding: 14px 20px;
}
#root {
.logo {
float: left;
padding-left: 52px;
}
.version {
position: absolute;
left: 38px;
bottom: 20px;
font-size: 10px;
color: #666666;
}
.v-tag {
color: #359CF1;
background: #fff;
border: 1px solid #359CF1;
position: relative;
&:after {
content: "";
position: absolute;
top: 0;
right: 24px;
height: 100%;
width: 1px;
height: 100%;
background: #359CF1;
}
.anticon-close {
color: #359CF1;
margin-left: 14px;
}
}
.ant-input,
.ant-select,
.ant-form label {
font-size: 12px;
}
.upload-box {
position: relative;
display: inline-block;
vertical-align: top;
&:hover {
.mask {
display: block;
}
}
.trash {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
.icon {
display: inline-block;
vertical-align: middle;
color: #fff;
font-size: 18px;
margin-right: 10px;
cursor: pointer;
}
img {
cursor: pointer;
height: 16px;
}
}
.mask {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
background: rgba(0, 0, 0, .2);
display: none;
}
.upload-view {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
height: 80px;
// line-height: 80px;
width: 80px;
border: 1px dashed #BBB9BB;
cursor: pointer;
font-size: 12px;
text-align: center;
}
.upload-view-icon {
display: flex;
color: #fff;
border-radius: 50%;
background: #F8E71C;
width: 30px;
height: 30px;
justify-content: center;
align-items: center;
font-size: 20px;
}
.upload-image-box {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #fff;
overflow: hidden;
.upload-image {
height: 100%;
&:after {
content: "";
position: absolute;
top: 0;
left: 0;
height: 16px;
width: 100%;
background: linear-gradient(180deg, rgba(0, 0, 0, 0.36) 0%, rgba(0, 0, 0, 0) 100%);
border-radius: 4px 4px 0px 0px;
}
>img {
width: 100%;
height: 100%;
}
}
}
.upload-progress {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
}
.searchBox {
// min-height: 32px;
// line-height: 32px;
vertical-align: middle;
margin-bottom: 24px;
}
.ant-switch {
&.ant-switch-checked {
background-color: #4BAEA0;
}
}
.base-modal {
position: absolute;
top: 5px;
left: 20px;
right: 20px;
bottom: 0;
background-color: #fff;
z-index: 100;
display: flex;
flex-direction: column;
.base-modal-title {
margin: 30px 0 0 40px;
font-size: 18px;
position: relative;
padding-left: 12px;
margin-bottom: 24px;
>span {
vertical-align: sub;
}
&:after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 5px;
background: #4BAEA0;
height: 26px;
}
}
.base-modal-body {
flex: 1;
overflow: auto;
}
.base-modal-footer {
line-height: 84px;
border-top: 1px solid #D9D9D9;
text-align: center;
padding: 0 24px;
}
}
}
.ant-form-item {
margin-bottom: 5px;
}

7
朱鹏鹏/keiri/src/logo.svg Executable file
View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3">
<g fill="#61DAFB">
<path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/>
<circle cx="420.9" cy="296.5" r="45.7"/>
<path d="M520.5 78.1z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1 @@
aaf079ec-44c1-4b35-9e37-4292c11ab6d8

View File

@@ -0,0 +1 @@
55b92cb5-7dfc-4105-be8c-48d5856555c3

View File

@@ -0,0 +1 @@
d1352898-c814-4ed8-ad6c-c008c3335057

View File

@@ -0,0 +1,135 @@
import React, { Component } from 'react';
import { Card, Select, Button } from 'antd';
import { connect } from 'react-redux';
import { http } from '$http';
import { getDate } from '$public/allMenus'
import './index.scss'
const date = new Date();
const { Option } = Select
@connect(
({ user }) => {
return {
user: user.user
};
},
() => ({})
)
class Home extends Component {
constructor(props) {
super(props);
const {fullYear, months, days} = getDate()
console.log(months, days);
this.state = {
info: [],
fullYear,
months,
days,
form: {
year: date.getFullYear(),
months: date.getMonth() + 1,
days: date.getDate()
}
}
}
handleChange(name, val) {
console.log(val, name)
this.setState({
form: {
...this.state.form,
[name]: val
}
})
}
submit() {
const { form } = this.state
const ymd = `${form.year}/${form.months}/${form.days}`
sessionStorage.setItem('login_ymd', ymd)
}
async loadInfo() {
try {
const info = await http.get('index/message')
this.setState({ info: info.map(item => item.sysnaiyoMei).join(' ') })
} catch (error) {
}
}
componentDidMount() {
this.loadInfo()
this.submit()
}
render() {
const { shain_no, shain_mei, buka_cod, buka_mei } = this.props.user;
const {info, fullYear, months, days, form} = this.state;
return (
<div className="home_wrp" >
<Card title="ログイン情報" style={{ width: 700 }}>
<div className="item_info">
<span>社員番号 </span>
<span>{shain_no} {shain_mei}</span>
</div>
<div className="item_info">
<span>部課コード </span>
<span>{buka_cod} {buka_mei}</span>
</div>
<div className="item_info">
<span>起票日付 </span>
<span> {form.year}{form.months}{form.days}</span>
</div>
<div className="item_info">
<span>起票日付変更 </span>
<div>
<Select size='small' value={form.year} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'year')}>
{
fullYear.map(item => {
return (
<Option key={item} value={item}>{item}</Option>
)
})
}
</Select>
<span style={{ padding: '0 6px '}}>
<Select size='small' value={form.months} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'months')}>
{
months.map(item => {
return (
<Option key={item} value={item}>{item}</Option>
)
})
}
</Select>
</span>
<Select size='small' value={form.days} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'days')}>
{
days.map(item => {
return (
<Option key={item} value={item}>{item}</Option>
)
})
}
</Select>
<Button onClick={this.submit.bind(this)} className="ok_btn" size='small' type="primary">OK</Button>
<div style={{ lineHeight: '26px' }}>起票日付 を変更する場合は日付を変更してから OKボタン を押してください</div>
</div>
</div>
</Card>
<Card title="総務部からのお知らせ" style={{ width: 700, marginTop:50 }}>
{/* {
info.map(item => {
return <span key={item.systeigiCod} dangerouslySetInnerHTML={{ __html: item.sysnaiyoMei }} ></span>
})
} */}
{
<div dangerouslySetInnerHTML={{ __html: info }}></div>
}
</Card>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,24 @@
.home_wrp {
display: flex;
flex-direction: column;
align-items: center;
.ant-card-head {
min-height: 36px;
}
.ant-card-head-title {
padding: 4px 0;
text-align: center;
}
.ant-card-bordered {
border-radius: 4px;
}
.item_info {
line-height: 34px;
display: flex;
}
.ok_btn {
margin-left: 10px;
width: 60px;
}
}

View File

@@ -0,0 +1,388 @@
import React, { Component } from 'react';
import { Layout, Menu, Dropdown } from 'antd';
import { Route, Switch, withRouter, Link, Redirect } from 'react-router-dom';
import PDF from '../../documents/pdf/plsp_doc.pdf'
import PDFSoumu from '../../documents/pdf/plsp_doc_soumu.pdf'
import loadable from '@loadable/component';
import { connect } from 'react-redux';
import Home from './home'
import { setUser } from '$actions/user';
import './index.scss';
import { http } from '$http';
import { DownOutlined, HomeOutlined, AppstoreOutlined } from '@ant-design/icons';
import { allMenus } from '$public/allMenus'
const { Header, Content, Sider } = Layout;
const { SubMenu, Item } = Menu;
@withRouter
@connect(
({ user }) => {
return {
user: user.user
};
},
() => ({})
)
class Info extends Component {
logout() {
sessionStorage.clear();
this.props.history.replace('/');
}
render() {
const style = {
float: 'right',
marginRight: 50,
cursor: 'pointer'
};
const menu = (
<Menu>
<Menu.Item onClick={this.logout.bind(this)}>退出</Menu.Item>
</Menu>
);
const { shain_mei, shain_no } = this.props.user;
return (
<div overlay={menu} style={style}>
{shain_no} {shain_mei}
{/* <Dropdown overlay={menu}>
<div style={{ color: '#fff' }}>
{shain_no} {shain_mei} <DownOutlined />
</div>
</Dropdown> */}
</div>
);
}
}
@connect(
() => {
return {};
},
(dispatch) => {
return {
setUser: (data) => dispatch(setUser(data))
};
}
)
class Main extends Component {
constructor(props) {
super(props);
this.state = {
};
}
async UNSAFE_componentWillMount() {
try {
// const { shain_no, shain_mei, buka_cod, buka_mei, authCode } = await http.get('getUserDetailById?userId=0010');
const authCode = [
"sw_a1701",
"sw_a1701_0010",
"sw_a1701_0020",
"sw_a1701_0030",
"sw_a1701_0040",
"sw_a1701_0050",
"sw_a1701_0060",
"sw_a1702",
"sw_a1702_0010",
"sw_a1702_0020",
"sw_a1702_0030",
"sw_a1703",
"sw_a1703_0010",
"sw_a1703_0020",
"sw_a1706",
"sw_a1706_0010",
"sw_a1707",
"sw_a1707_0010",
"sw_a1708",
"sw_a1708_0010",
"sw_a1708_0020",
"sw_a1708_0030",
"sw_a1708_0040",
"sw_a1708_0050",
"sw_a1708_0060",
"sw_a1708_0070",
"sw_a1708_0080",
"sw_a1702",
"sw_a1702_0040",
"sw_a1702_0050",
"sw_a1703",
"sw_a1703_0030",
"sw_a1703_0040",
"sw_a1704",
"sw_a1704_0010",
"sw_a1704_0020",
"sw_a1704_0030",
"sw_a1704_0040",
"sw_a1704",
"sw_a1704_0050",
"sw_a1704_0060",
"sw_a1704_0070",
"sw_a1704_0080",
"sw_a1704_0090",
"sw_a1704_0100",
"sw_a1704_0110",
"sw_a1705",
"sw_a1705_0010_01",
"sw_a1705_0010_02",
"sw_a1705_0010_03",
"sw_a1705_0010_04",
"sw_a1705_0010_05",
"sw_a1705_0010_06",
"sw_a1705_0010_07",
"sw_a1705_0010_08",
"sw_a1709",
"sw_a1709_0010",
"sw_a1709_0020",
"sw_a1709_0030",
"sw_a1709_0050",
"sw_a1709_0060",
"sw_a1709_0070",
"sw_a1709_0080",
"sw_a1709_0090",
"sw_a1709_0100",
"sw_a1709_0110",
"sw_a1709_0120",
"sw_a1709_0130",
"sw_a1709_0140",
"sw_a1709_0150",
"sw_a1709_0160",
"sw_a1709_0170",
"sw_a1709_0040",
"sw_a1790",
"sw_a1790_0030",
"sw_a1710",
"sw_a1710_0010",
"sw_a1710_0020",
"sw_a1710_0030",
"sw_a1710_0040",
"sw_a1710_0050",
"sw_a1710_0060",
"sw_a1710_0070",
"sw_a1710_0080",
"sw_a1710_0090",
"sw_a1710_0100",
"sw_a1710_0110",
"sw_a1710_0120",
"sw_a1709",
"sw_a1709_0050",
"sw_a1709_0080",
"sw_a1709_0120"
]
const currentMenus = []
allMenus.forEach(item => {
let menu = {}
if (authCode.indexOf(item.code) > -1) {
menu = item;
if (item.children) {
menu.children = item.children.filter(child => authCode.indexOf(child.code) > -1)
}
currentMenus.push(menu)
}
})
this.props.setUser({
user: {
// shain_no,
// shain_mei,
// buka_cod,
// buka_mei,
},
menus: currentMenus
});
} catch (error) {
console.error(error);
}
}
render() {
return (
<div className="main-layout">
<Layout>
<Header style={{ background: '#4BAEA0', padding: 0 }}>
<div className="logo">
キャッシュレスシステム
</div>
<Info />
</Header>
<Layout>
<Sider
trigger={null}
width={270}
style={{ background: '#fff' }}
collapsible
collapsed={this.state.inlineCollapsed}
>
<div className='main-menu-wrp'>
<LeftMenu inlineCollapsed={this.state.inlineCollapsed} />
</div>
</Sider>
<Content className="main-layout-content">
<PageRoute />
</Content>
</Layout>
</Layout>
</div>
);
}
}
@withRouter
@connect(
({ user }) => {
return {
user
};
},
() => ({})
)
class PageRoute extends Component {
getRouters() {
return this.findMenu(this.props.user.menus);
}
findMenu(array) {
let ret = [];
array.forEach((menu) => {
if (menu.children && menu.children.length > 0) {
ret = ret.concat(this.findMenu(menu.children));
} else {
if (menu.keys === 'desc') {
return;
}
const path = `/${menu.keys.join('/')}`;
ret.push(
<Route
key={path}
path={path}
component={loadable(() => import('../main/' + menu.keys.join('/')))}
/>
);
}
});
return ret;
}
render() {
return <Switch>
<Route exact path="/"><Redirect to="/home" /></Route>
{this.getRouters()}
<Route
path='/home'
component={Home}
/>
</Switch>;
}
}
@withRouter
@connect(
({ user }) => {
return {
user
};
},
() => ({})
)
class LeftMenu extends Component {
defaultOpenKeys = [];
defaultSelectedKeys = [];
state = {
openKeys: []
};
go(item) {
if (item.keys === 'desc') {
window.open(PDFSoumu)
return;
}
const path = `/${item.keys.join('/')}`;
this.props.history.replace(path);
}
getItems(items) {
return items.map((item) => {
if (item.children && item.children.length > 0) {
return (
<SubMenu
key={item.keys.join('-')}
title={
<span>
<AppstoreOutlined />
<span>{item.title}</span>
</span>
}
>
{this.getItems(item.children)}
</SubMenu>
);
}
return (
<Item onClick={this.go.bind(this, item)} key={item.keys ==='desc'?'desc' :item.keys.join('-')}>
<div className='empty-icon'></div>
{item.title}
</Item>
);
});
}
constructor(props) {
super(props);
const { history } = this.props;
let _paths = history.location.pathname.split('/').filter((item) => item);
this.defaultSelectedKeys = [_paths.join('-') || 'home'];
this.state.openKeys = _paths;
}
onOpenChange(_openKeys) {
const { openKeys } = this.state;
const array = _openKeys.filter((key) => openKeys.indexOf(key) == -1);
this.setState({
openKeys: array.length > 0 ? array : _openKeys
});
}
render() {
const { user, inlineCollapsed } = this.props;
const { openKeys } = this.state;
const setting = {
mode: 'inline',
defaultOpenKeys: openKeys,
defaultSelectedKeys: this.defaultSelectedKeys,
onOpenChange: this.onOpenChange.bind(this),
};
if (!inlineCollapsed) {
setting.openKeys = openKeys;
}
return (
<Menu {...setting}>
<Item key={'home'}>
<Link to='/home'>
<HomeOutlined />
<span style={{fontWeight:'bold',fontSize:14}}>首頁</span>
</Link>
</Item>
<SubMenu
key='operate'
title={
<span>
<AppstoreOutlined />
<span>操作説明</span>
</span>
}
>
<Item key='instructions'>
<a href = {PDF} target = "_blank">
<span>操作説明 [PDF 1.99MB]</span>
</a>
</Item>
</SubMenu>
{this.getItems(user.menus)}
</Menu>
);
}
}
export default Main;

View File

@@ -0,0 +1,139 @@
.main-layout {
height: 100%;
position: relative;
>.ant-layout {
height: 100%;
}
.ant-table-small .ant-table-thead {
tr th{
background-color: #fafafa;
font-weight: bold;
font-size: 12px;
}
}
.ant-table-small {
.ant-table-tbody {
.ant-table-cell {
padding: 2px 8px !important;
}
}
}
.ant-table-small > .ant-table-content > .ant-table-body {
margin: 0;
}
.ant-layout-content {
position: relative;
margin: 14px;
background: #fff;
border-radius: 6px;
padding: 10px 10px 20px;
.ant-select-single .ant-select-selector {
height: 21px;
line-height: 20px;
.ant-select-selection-search-input {
height: 20px;
}
.ant-select-selection-item {
line-height: 20px;
}
.ant-select-selection-placeholder {
line-height: 21px;
}
}
}
.main-menu-wrp {
height: 100%;
overflow: hidden;
overflow-y: auto;
}
.ant-menu {
&.ant-menu-inline {
border-right: none;
}
.ant-menu-submenu-title {
font-weight: bold;
}
.ant-menu-item {
font-size: 12px;
height: 32px;
line-height: 32px;
color: #000;
&:hover {
color: #4BAEA0;
}
}
.ant-menu-item-selected {
color: #4BAEA0;
background-color: rgba(26, 194, 170, .2);
}
.ant-menu-item:hover {
color: #4BAEA0;
}
}
.ant-menu-submenu-title {
&:hover {
.ant-menu-submenu-arrow {
&:before {
background: linear-gradient(to right, #4BAEA0, #4BAEA0);
}
&:after {
background: linear-gradient(to right, #4BAEA0, #4BAEA0);
}
}
}
.ant-menu-submenu-arrow {
&:before {
background: #999;
height: 0.5px;
}
&:after {
background: #999;
height: 0.5px;
}
}
}
.systole {
cursor: pointer;
float: left;
margin-left: 70px;
}
}
.ant-tooltip.ant-menu-inline-collapsed-tooltip.ant-tooltip-placement-right .ant-tooltip-inner {
background-color: #fff;
color: #000;
}
// .ant-tooltip .ant-menu-inline-collapsed-tooltip .ant-tooltip-placement-right {
// left: 75px !important;
// }
.ant-tooltip.ant-menu-inline-collapsed-tooltip.ant-tooltip-placement-right .ant-tooltip-arrow {
&:before {
background-color: #fff;
}
}
.empty-icon {
display: inline-block;
vertical-align: middle;
width: 14px;
}

View File

@@ -0,0 +1 @@
e92422f6-06c4-4749-a8a1-1057489821cc

View File

@@ -0,0 +1,7 @@
.aw_a1701_0010 {
.table-label {
border-left: 3px solid rgb(75, 174, 160);
padding-left: 6px;
margin-bottom: 12px;
}
}

View File

@@ -0,0 +1,149 @@
import React, { Component } from 'react';
import { Radio, Table } from 'antd';
import { AddButton } from '$button'
import { http } from '$http';
import Detail from '$c/detail'
import './0010.scss'
class Home extends Component {
state = {
value: 3,
dataSource: [],
columns: [
{
title: '状態',
dataIndex: 'status',
key: 'status'
},
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '伝票日付',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
},
{
title: '振込',
dataIndex: 'furikomi',
key: 'furikomi',
},
{
title: '摘要',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI',
},
{
title: 'オーダーNo',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
},
{
title: '金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
}
],
loading: false,
rowKey: 'pldenpyo_NO',
showDetail: false,
row: {}
};
onChange = e => {
console.log('radio checked', e.target.value);
this.setState({
value: e.target.value,
});
};
toDetail = (text, record) => {
this.setState({ showDetail: true, row: record})
}
async submit() {
try {
const { value } = this.state;
const { hd_info_msg2 } = await http.post('s01/a1701_0010r/Denpyo/doEntry', { rangedate: value, sKey: '1' })
alert(hd_info_msg2)
} catch (error) {
}
}
async fnSearch() {
try {
const { value } = this.state;
this.setState({ loading: true })
const { result, resultList } = await http.post('s01/a1701_0010r/Denpyo/doSearch', { rangedate: value, hd_status:''}).catch((err) => this.setState({ loading: false }))
if (result) {
this.setState({ dataSource: resultList, loading: false })
}
} catch (error) {
}
}
goback() {
this.setState({ showDetail: false })
}
onFinish = (values) => {
console.log(values);
};
render() {
const { dataSource, loading, columns, rowKey, showDetail, row } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
expandable: {
expandedRowRender: record => <div>承認者{record.snin_NO} {record.snin_MEI}承認時刻{record.snin_YMD}出張先{record.schosaki_MEI}切符手配{record.tehai_NO} {record.note} {record.mishori}</div>,
defaultExpandAllRows: true
},
rowClassName: (record, index) => {
let className = 'odd';
if (index % 2 === 1) className = 'even';
return className;
}
};
return (
<div>
{
!showDetail ?
<div className='aw_a1701_0010' style={{width:1000}}>
<div>11 国内出張旅費 確認</div>
<div style={{ marginTop: 10, paddingLeft: 120 }}>
<span>不承認 0</span>&emsp;
<span>未確定 0</span>&emsp;
<span>
<span onClick={this.fnSearch.bind(this)} style={{ color: '#4BAEA0', cursor: 'pointer' }}>確定済</span>
(&emsp;
<Radio.Group onChange={this.onChange} value={this.state.value}>
<Radio value={3}>3ヶ月前</Radio>
<Radio value={6}>6ヶ月前</Radio>
<Radio value={24}>12ヶ月前</Radio>
</Radio.Group>)&emsp;
{dataSource.length}
</span>&emsp;&emsp;
<AddButton onClick={this.submit.bind(this)} >新規</AddButton>
</div>
<div style={{ marginTop: 20 }}>
<div className="table-label">承認情報その他情報</div>
{ !!dataSource.length && <Table {...setting} ></Table> }
</div>
</div> :
<Detail row={row} hd_c1_name='a1701_0010r' goBack={this.goback.bind(this)} />
}
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,104 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
import { http } from '$http';
class Home extends Component {
state = {
dataSource: [],
columns: [
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
},
{
title: '出張先',
dataIndex: 'schosaki_MEI',
key: 'schosaki_MEI',
width: 270
},
{
title: '摘要',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI',
},
{
title: 'オーダーNo',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
},
{
title: '登録日',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
},
{
title: '金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
}
],
loading: false,
rowKey: 'pldenpyo_NO',
options: [],
selectValue: ''
}
handleChange() {
}
async loadList() {
try {
const { se_pldenpyo_no_list, slist } = await http.post('s01/a1701_0020r/Entry/doIndicate', { login_ymd: sessionStorage.getItem('login_ymd')});
if (se_pldenpyo_no_list && se_pldenpyo_no_list.length) {
this.setState({ options: se_pldenpyo_no_list})
}
if (slist && slist.length) {
this.setState({ dataSource: slist })
}
} catch (error) {
console.error(error)
}
}
componentDidMount() {
this.loadList()
}
render() {
const { dataSource, loading, columns, rowKey, options, selectValue } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
bordered:true,
size: "small"
};
return (
<div>
<div>12 内容取消 (国内出張旅費)</div>
<div style={{ marginTop: 10, padding: 20 }}>
伝票番号&emsp;<Select size='small' vlaue={selectValue} style={{ width: 100 }} onChange={this.handleChange.bind(this)}>
{
options.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>
<div style={{ marginTop: 20}}>
<Table {...setting}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,131 @@
import React, { Component } from 'react';
import { Radio, Table, Select } from 'antd';
import Detail from '$c/detail'
import './0010.scss'
import { http } from '$http';
class Home extends Component {
state = {
value: 3,
dataSource: [],
columns: [
{
title: '状態',
dataIndex: 'status',
key: 'status'
},
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '伝票日付',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
},
{
title: '振込',
dataIndex: 'furikomi',
key: 'furikomi',
},
{
title: '摘要',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI',
},
{
title: 'オーダーNo',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
},
{
title: '金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
}
],
loading: false,
rowKey: 'pldenpyo_NO',
showDetail: false,
row: {}
};
toDetail = (text, record) => {
this.setState({ showDetail: true, row: record })
}
goback() {
this.setState({ showDetail: false })
}
onChange = e => {
console.log('radio checked', e.target.value);
this.setState({
value: e.target.value,
});
};
async fnSearch() {
try {
const { value } = this.state;
this.setState({ loading: true })
const { result, resultList } = await http.post('s01/a1701_0030r/Entry/doIndicate', { rangedate: value, hd_status: '' }).catch((err) => this.setState({ loading: false }))
if (result) {
this.setState({ dataSource: resultList, loading: false })
}
} catch (error) {
}
}
render() {
const { dataSource, loading, columns, rowKey, showDetail, row, value } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
expandable: {
expandedRowRender: record => <div>承認者{record.snin_NO} {record.snin_MEI}承認時刻{record.snin_YMD}出張先{record.schosaki_MEI}切符手配{record.tehai_NO} {record.note} {record.mishori}</div>,
defaultExpandAllRows: true
},
rowClassName: (record, index) => {
let className = 'odd';
if (index % 2 === 1) className = 'even';
return className;
}
};
return (
<div>
{
!showDetail ?
<div className='aw_a1701_0010'>
<div>13 事後修正 確認</div>
<div style={{ marginTop: 10, paddingLeft: 120 }}>
<span>
<span onClick={this.fnSearch.bind(this)} style={{ color: '#4BAEA0', cursor: 'pointer' }}>期間</span>
(&emsp;
<Radio.Group onChange={this.onChange} value={value}>
<Radio value={3}>3ヶ月前</Radio>
<Radio value={6}>6ヶ月前</Radio>
<Radio value={24}>12ヶ月前</Radio>
</Radio.Group>)&emsp;
0
</span>
</div>
<div style={{ marginTop: 20 }}>
<div className="table-label">承認情報その他情報</div>
{!!dataSource.length && <Table {...setting} ></Table>}
</div>
</div> :
<Detail row={row} hd_c1_name='a1701_0030r' goBack={this.goback.bind(this)} />
}
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,10 @@
import React, { Component } from 'react';
class Home extends Component {
render() {
return (
<div>0040</div>
)
}
}
export default Home

View File

@@ -0,0 +1,10 @@
import React, { Component } from 'react';
class Home extends Component {
render() {
return (
<div>0050</div>
)
}
}
export default Home

View File

@@ -0,0 +1,10 @@
import React, { Component } from 'react';
class Home extends Component {
render() {
return (
<div>0060</div>
)
}
}
export default Home

View File

@@ -0,0 +1 @@
768929e1-8728-4fc5-8798-3feca9d3b7c5

View File

@@ -0,0 +1,7 @@
.aw_a1702_0010 {
.table-label {
border-left: 3px solid rgb(75, 174, 160);
padding-left: 6px;
margin-bottom: 12px;
}
}

View File

@@ -0,0 +1,201 @@
import React, { Component } from 'react';
import { Radio, Table, Modal } from 'antd';
import { AddButton } from '$button'
import { ExclamationCircleOutlined } from '@ant-design/icons';
import { http } from '$http';
import Detail from '$c/detail_21'
import './0020.scss'
class Home extends Component {
state = {
value: 3,
dataSource: [],
columns: [
{
title: '状態',
dataIndex: 'status',
key: 'status'
},
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '伝票日付',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
},
{
title: '振込',
dataIndex: 'furikomi',
key: 'furikomi',
},
{
title: '摘要',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI',
},
{
title: 'オーダーNo',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
},
{
title: '金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
}
],
loading: false,
rowKey: 'pldenpyo_NO',
showDetail: false,
row: {}
};
onChange = e => {
console.log('radio checked', e.target.value);
this.setState({
value: e.target.value,
});
};
toDetail = (text, record) => {
this.setState({ showDetail: true, row: record })
}
async add() {
try {
const { value } = this.state;
const params = {
login_ymd: sessionStorage.getItem('login_ymd'),
rd_range: value,
hd_status: '確定済',
key: '1'
}
const { hd_info_msg2=''} = await http.post('s02/a1702_0010r/Denpyo/doEntry', params)
Modal.confirm({
title: '提示',
icon: <ExclamationCircleOutlined />,
content: hd_info_msg2,
okText: '確認',
cancelText: 'キャンセル',
onOk: () => { this.toAdd() },
onCancel: () => { this.cancel() }
});
} catch (error) {
console.log(error);
}
}
async cancel() {
try {
const { value } = this.state;
const params = {
login_ymd: sessionStorage.getItem('login_ymd'),
rd_range: value,
hd_status: '確定済',
key: '3'
}
const { hd_info_msg2 = '' } = await http.post('s02/a1702_0010r/Denpyo/doEntry', params)
Modal.confirm({
title: '提示',
icon: <ExclamationCircleOutlined />,
content: hd_info_msg2,
okText: '確認',
cancelText: 'キャンセル',
onOk: () => { this.toAdd() },
});
} catch (error) {
console.log(error);
}
}
async toAdd() {
try {
const { value } = this.state;
const params = {
login_ymd: sessionStorage.getItem('login_ymd'),
rd_range: value,
hd_status: '確定済',
key: '2'
}
const { hd_denpyo_no = '', hd_denpyo_ymd="" } = await http.post('s02/a1702_0010r/Denpyo/doEntry', params)
this.setState({ showDetail: true, row: { pldenpyo_NO: hd_denpyo_no, pldenpyo_YMD: hd_denpyo_ymd ,isAdd: true}})
} catch (error) {
console.log(error);
}
}
async fnSearch() {
try {
const { value } = this.state;
this.setState({ loading: true })
const params = {
login_ymd: sessionStorage.getItem('login_ymd'),
rd_range: value,
hd_status: '確定済'
}
const { result, resultList } = await http.post('s02/a1702_0010r/Denpyo/doSearch', params).catch((err) => this.setState({ loading: false }))
this.setState({ dataSource: resultList, loading: false })
} catch (error) {
}
}
goback() {
this.setState({ showDetail: false })
}
formRef = React.createRef();
render() {
const { dataSource, loading, columns, rowKey, showDetail, row } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
expandable: {
expandedRowRender: record => <div>承認者{record.snin_NO} {record.snin_MEI}承認時刻{record.snin_YMD}出張先{record.schosaki_MEI}切符手配{record.tehai_NO} {record.note} {record.mishori}</div>,
defaultExpandAllRows: true
},
rowClassName: (record, index) => {
let className = 'odd';
if (index % 2 === 1) className = 'even';
return className;
}
};
return (
<div>
{
!showDetail ?
<div className='aw_a1702_0010'>
<div>21 領収証支払 確認</div>
<div style={{ marginTop: 10, paddingLeft: 120 }}>
<span>不承認 0</span>&emsp;
<span>未確定 0</span>&emsp;
<span>
<span onClick={this.fnSearch.bind(this)} style={{ color: '#4BAEA0', cursor: 'pointer' }}>確定済</span>
(&emsp;
<Radio.Group onChange={this.onChange} value={this.state.value}>
<Radio value={3}>3ヶ月前</Radio>
<Radio value={6}>6ヶ月前</Radio>
<Radio value={24}>12ヶ月前</Radio>
</Radio.Group>)&emsp;
0
</span>&emsp;&emsp;
<AddButton onClick={this.add.bind(this)} >新規</AddButton>
</div>
<div style={{ marginTop: 20 }}>
<div className="table-label">承認情報その他情報</div>
{!!dataSource.length && <Table {...setting} ></Table>}
</div>
</div> :
<Detail row={row} goBack={this.goback.bind(this)} />
}
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,91 @@
import React, { Component, } from 'react';
import { Select, Table } from 'antd';
import { http } from '$http';
const { Option } = Select
class Home extends Component {
state = {
se_denpyo_no_list: [],
slist: [],
columns: [
{
title: '伝票番号',
dataIndex: 'denpyo_no',
key: 'denpyo_no',
},
{
title: '摘要',
dataIndex: 'tekiyo',
key: 'tekiyo',
},
{
title: 'オーダーNo',
dataIndex: 'seizo_ban',
key: 'seizo_ban',
},
{
title: '登録日',
dataIndex: 'touroku_ymd',
key: 'touroku_ymd',
},
{
title: '金額',
dataIndex: 'karikata_kin',
key: 'karikata_kin',
}
],
loading: false,
rowKey: 'denpyo_no',
selectValue: ''
}
handleChange(value) {
this.setState({ selectValue: value})
}
async load() {
try {
const { se_denpyo_no_list=[], slist=[] } = await http.post('s02/a1702_0020r/Entry/doIndicate', { login_ymd: sessionStorage.getItem('login_ymd') })
this.setState({
se_denpyo_no_list, slist
})
} catch (error) {
}
}
componentDidMount() {
this.load()
}
render() {
const { se_denpyo_no_list, selectValue, slist, columns, loading, rowKey } = this.state;
const setting = {
dataSource: slist,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
bordered: true,
size: "small"
};
return (
<div>
<div>内容取消 (領収証)</div>
<div style={{ marginTop: 10, padding: 20 }}>
伝票番号&emsp;<Select size='small' value={selectValue} style={{ width: 120 }} onChange={this.handleChange.bind(this)}>
{
se_denpyo_no_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>
<div style={{ marginTop: 20 }}>
<Table {...setting}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,82 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
state = {
dataSource: [],
columns: [
{
title: '伝票番号',
dataIndex: 'number',
key: 'number',
},
{
title: '社員',
dataIndex: 'address',
key: 'address',
},
{
title: '社員名称 ',
dataIndex: 'userName',
key: 'userName',
},
{
title: '摘要',
dataIndex: 'desc',
key: 'desc',
},
{
title: 'オーダーNo',
dataIndex: 'orderNo',
key: 'orderNo',
},
{
title: '登録日',
dataIndex: 'date',
key: 'date',
},
{
title: '金額',
dataIndex: 'money',
key: 'money',
}
],
loading: false,
rowKey: 'id'
}
handleChange() {
}
render() {
const { dataSource, loading, columns, rowKey } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small"
};
const options = []
return (
<div>
<div>概算リスト</div>
<div style={{ marginTop: 10, padding: 20 }}>
<AddButton>印刷</AddButton>
<div style={{ marginTop: 20 }}>
<span>検索結果:0</span>
<Table {...setting}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,149 @@
import React, { Component } from 'react';
import { Radio, Table } from 'antd';
import { AddButton } from '$button'
import { http } from '$http';
import Detail from '$c/detail'
import './0020.scss'
class Home extends Component {
state = {
value: 1,
dataSource: [],
columns: [
{
title: '状態',
dataIndex: 'status',
key: 'status'
},
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '伝票日付',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
},
{
title: '振込',
dataIndex: 'furikomi',
key: 'furikomi',
},
{
title: '摘要',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI',
},
{
title: 'オーダーNo',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
},
{
title: '金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
}
],
loading: false,
rowKey: 'pldenpyo_NO',
showDetail: false,
row: {}
};
onChange = e => {
console.log('radio checked', e.target.value);
this.setState({
value: e.target.value,
});
};
toDetail = (text, record) => {
this.setState({ showDetail: true, row: record })
}
submit() {
}
async fnSearch() {
try {
const { value } = this.state;
this.setState({ loading: true })
const { result, resultList } = await http.post('a1701_0010r/doSearch', { rangedate: value }).catch((err) => this.setState({ loading: false }))
if (result) {
this.setState({ dataSource: resultList, loading: false })
}
} catch (error) {
}
}
goback() {
this.setState({ showDetail: false })
}
formRef = React.createRef();
onGenderChange = (value) => {
this.formRef.current.setFieldsValue({
note: `Hi, ${value === 'male' ? 'man' : 'lady'}!`,
});
};
onFinish = (values) => {
console.log(values);
};
render() {
const { dataSource, loading, columns, rowKey, showDetail, row } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
expandable: {
expandedRowRender: record => <div>承認者{record.snin_NO} {record.snin_MEI}承認時刻{record.snin_YMD}出張先{record.schosaki_MEI}切符手配{record.tehai_NO} {record.note} {record.mishori}</div>,
defaultExpandAllRows: true
},
rowClassName: (record, index) => {
let className = 'odd';
if (index % 2 === 1) className = 'even';
return className;
}
};
return (
<div>
{
!showDetail ?
<div className='aw_a1702_0010'>
<div> 振込支払 確認</div>
<div style={{ marginTop: 10, paddingLeft: 120 }}>
<span>不承認 0</span>&emsp;
<span>未確定 0</span>&emsp;
<span>
<span onClick={this.fnSearch.bind(this)} style={{ color: '#4BAEA0', cursor: 'pointer' }}>確定済</span>
(&emsp;
<Radio.Group onChange={this.onChange} value={this.state.value}>
<Radio value={1}>3ヶ月前</Radio>
<Radio value={2}>6ヶ月前</Radio>
<Radio value={3}>12ヶ月前</Radio>
</Radio.Group>)&emsp;
0
</span>&emsp;&emsp;
<AddButton onClick={this.submit.bind(this)} >新規</AddButton>
</div>
<div style={{ marginTop: 20 }}>
<div className="table-label">承認情報その他情報</div>
<Table {...setting} ></Table>
</div>
</div> :
<Detail row={row} goBack={this.goback.bind(this)} />
}
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,80 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
state = {
dataSource: [],
columns: [
{
title: '伝票番号',
dataIndex: 'number',
key: 'number',
},
{
title: '摘要',
dataIndex: 'desc',
key: 'desc',
},
{
title: 'オーダーNo',
dataIndex: 'orderNo',
key: 'orderNo',
},
{
title: '登録日',
dataIndex: 'date',
key: 'date',
},
{
title: '金額',
dataIndex: 'money',
key: 'money',
}
],
loading: false,
rowKey: 'id'
}
handleChange() {
}
render() {
const { dataSource, loading, columns, rowKey } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small"
};
const options = []
return (
<div>
<div>内容取消 (振込支払)</div>
<div style={{ marginTop: 10, padding: 20 }}>
伝票番号&emsp;<Select size='small' defaultValue={''} style={{ width: 70 }} onChange={this.handleChange.bind(this)}>
{
options.map(item => {
return (
<Option key={item} value={item}>{item}</Option>
)
})
}
</Select>
<div style={{ marginTop: 20 }}>
<span>検索結果:0</span>
<Table {...setting}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1 @@
fcfc1546-eeb3-4e93-83f4-7d595c40f29e

View File

@@ -0,0 +1,7 @@
.aw_a1703_0010 {
.table-label {
border-left: 3px solid rgb(75, 174, 160);
padding-left: 6px;
margin-bottom: 12px;
}
}

View File

@@ -0,0 +1,148 @@
import React, { Component } from 'react';
import { Radio, Table } from 'antd';
import { AddButton } from '$button'
import { http } from '$http';
import Detail from '$c/detail'
import './0030.scss'
class Home extends Component {
state = {
value: 1,
dataSource: [],
columns: [
{
title: '状態',
dataIndex: 'status',
key: 'status'
},
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '伝票日付',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
},
{
title: '振込',
dataIndex: 'furikomi',
key: 'furikomi',
},
{
title: '摘要',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI',
},
{
title: 'オーダーNo',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
},
{
title: '金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
}
],
loading: false,
rowKey: 'pldenpyo_NO',
showDetail: false,
row: {}
};
onChange = e => {
console.log('radio checked', e.target.value);
this.setState({
value: e.target.value,
});
};
toDetail = (text, record) => {
this.setState({ showDetail: true, row: record })
}
submit() {
}
async fnSearch() {
try {
const { value } = this.state;
this.setState({ loading: true })
const { result, resultList } = await http.post('a1701_0010r/doSearch', { rangedate: value }).catch((err) => this.setState({ loading: false }))
if (result) {
this.setState({ dataSource: resultList, loading: false })
}
} catch (error) {
}
}
goback() {
this.setState({ showDetail: false })
}
formRef = React.createRef();
onGenderChange = (value) => {
this.formRef.current.setFieldsValue({
note: `Hi, ${value === 'male' ? 'man' : 'lady'}!`,
});
};
onFinish = (values) => {
console.log(values);
};
render() {
const { dataSource, loading, columns, rowKey, showDetail, row } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
expandable: {
expandedRowRender: record => <div>承認者{record.snin_NO} {record.snin_MEI}承認時刻{record.snin_YMD}出張先{record.schosaki_MEI}切符手配{record.tehai_NO} {record.note} {record.mishori}</div>,
defaultExpandAllRows: true
},
rowClassName: (record, index) => {
let className = 'odd';
if (index % 2 === 1) className = 'even';
return className;
}
};
return (
<div>
{
!showDetail ?
<div className='aw_a1703_0010'>
<div>31 請求書支払 確認</div>
<div style={{ marginTop: 10, paddingLeft: 120 }}>
<span>不承認 0</span>&emsp;
<span>未確定 0</span>&emsp;
<span>
<span onClick={this.fnSearch.bind(this)} style={{ color: '#4BAEA0', cursor: 'pointer' }}>確定済</span>
(&emsp;
<Radio.Group onChange={this.onChange} value={this.state.value}>
<Radio value={1}>3ヶ月前</Radio>
<Radio value={2}>6ヶ月前</Radio>
<Radio value={3}>12ヶ月前</Radio>
</Radio.Group>)&emsp;
0
</span>&emsp;&emsp;
<AddButton onClick={this.submit.bind(this)} >新規</AddButton>
</div>
<div style={{ marginTop: 20 }}>
<div className="table-label">承認情報その他情報</div>
<Table {...setting} ></Table>
</div>
</div> :
<Detail row={row} goBack={this.goback.bind(this)} />
}
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,80 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
state = {
dataSource: [],
columns: [
{
title: '伝票番号',
dataIndex: 'number',
key: 'number',
},
{
title: '摘要',
dataIndex: 'desc',
key: 'desc',
},
{
title: 'オーダーNo',
dataIndex: 'orderNo',
key: 'orderNo',
},
{
title: '登録日',
dataIndex: 'date',
key: 'date',
},
{
title: '金額',
dataIndex: 'money',
key: 'money',
}
],
loading: false,
rowKey: 'id'
}
handleChange() {
}
render() {
const { dataSource, loading, columns, rowKey } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small"
};
const options = []
return (
<div>
<div>32 内容取消 (請求書)</div>
<div style={{ marginTop: 10, padding: 20 }}>
伝票番号&emsp;<Select size='small' defaultValue={''} style={{ width: 70 }} onChange={this.handleChange.bind(this)}>
{
options.map(item => {
return (
<Option key={item} value={item}>{item}</Option>
)
})
}
</Select>
<div style={{ marginTop: 20 }}>
<span>検索結果:0</span>
<Table {...setting}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1 @@
b231001c-2916-476c-8644-02c17148366b

View File

@@ -0,0 +1,80 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
state = {
dataSource: [],
columns: [
{
title: '伝票番号',
dataIndex: 'number',
key: 'number',
},
{
title: '摘要',
dataIndex: 'desc',
key: 'desc',
},
{
title: 'オーダーNo',
dataIndex: 'orderNo',
key: 'orderNo',
},
{
title: '登録日',
dataIndex: 'date',
key: 'date',
},
{
title: '金額',
dataIndex: 'money',
key: 'money',
}
],
loading: false,
rowKey: 'id'
}
handleChange() {
}
render() {
const { dataSource, loading, columns, rowKey } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small"
};
const options = []
return (
<div>
<div>内容取消 (振込支払)</div>
<div style={{ marginTop: 10, padding: 20 }}>
伝票番号&emsp;<Select size='small' defaultValue={''} style={{ width: 70 }} onChange={this.handleChange.bind(this)}>
{
options.map(item => {
return (
<Option key={item} value={item}>{item}</Option>
)
})
}
</Select>
<div style={{ marginTop: 20 }}>
<span>検索結果:0</span>
<Table {...setting}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,80 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
state = {
dataSource: [],
columns: [
{
title: '伝票番号',
dataIndex: 'number',
key: 'number',
},
{
title: '摘要',
dataIndex: 'desc',
key: 'desc',
},
{
title: 'オーダーNo',
dataIndex: 'orderNo',
key: 'orderNo',
},
{
title: '登録日',
dataIndex: 'date',
key: 'date',
},
{
title: '金額',
dataIndex: 'money',
key: 'money',
}
],
loading: false,
rowKey: 'id'
}
handleChange() {
}
render() {
const { dataSource, loading, columns, rowKey } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small"
};
const options = []
return (
<div>
<div>内容取消 (振込支払)</div>
<div style={{ marginTop: 10, padding: 20 }}>
伝票番号&emsp;<Select size='small' defaultValue={''} style={{ width: 70 }} onChange={this.handleChange.bind(this)}>
{
options.map(item => {
return (
<Option key={item} value={item}>{item}</Option>
)
})
}
</Select>
<div style={{ marginTop: 20 }}>
<span>検索結果:0</span>
<Table {...setting}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,80 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
state = {
dataSource: [],
columns: [
{
title: '伝票番号',
dataIndex: 'number',
key: 'number',
},
{
title: '摘要',
dataIndex: 'desc',
key: 'desc',
},
{
title: 'オーダーNo',
dataIndex: 'orderNo',
key: 'orderNo',
},
{
title: '登録日',
dataIndex: 'date',
key: 'date',
},
{
title: '金額',
dataIndex: 'money',
key: 'money',
}
],
loading: false,
rowKey: 'id'
}
handleChange() {
}
render() {
const { dataSource, loading, columns, rowKey } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small"
};
const options = []
return (
<div>
<div>内容取消 (振込支払)</div>
<div style={{ marginTop: 10, padding: 20 }}>
伝票番号&emsp;<Select size='small' defaultValue={''} style={{ width: 70 }} onChange={this.handleChange.bind(this)}>
{
options.map(item => {
return (
<Option key={item} value={item}>{item}</Option>
)
})
}
</Select>
<div style={{ marginTop: 20 }}>
<span>検索結果:0</span>
<Table {...setting}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1 @@
aa6684bd-9cba-454a-b22a-6db882920ed1

View File

@@ -0,0 +1,27 @@
.sw_a1705_0010_01 {
max-width: 1000px;
.sw_a1705_0010_01_header{
display: flex;
align-items: center;
background: #e5e5e5;
padding: 10px;
}
.sw_a1705_0010_01_list {
margin-top: 20px;
width: 300px;
>div {
border-left: 3px solid rgb(75, 174, 160);
padding-left: 6px;
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 14px;
}
}
.ant-radio-group {
width: 100%;
display: flex;
justify-content: space-around;
}
}

View File

@@ -0,0 +1 @@
d49d43c9-3f46-4010-843a-f1fbcf15a414

View File

@@ -0,0 +1,345 @@
import React, { Component } from 'react';
import { Table, Input, Select, Checkbox, Button } from 'antd';
import { AddButton } from '$button'
import { CaretRightOutlined, RollbackOutlined } from '@ant-design/icons';
import { http } from '$http';
import './index.scss'
const { Option } = Select
class Detail extends Component {
constructor(props) {
super(props);
this.state = {
dataSource: [
// {
// id: 1,
// pro: '普通',
// num: '2回',
// money: '4,000'
// }
],
dataSource1: [
// {
// id: 1,
// index:'1',
// pro: '普通',
// num: '2回',
// name: '間接',
// money: '4,000'
// }
],
dataSource2: [
// {
// id: 1,
// index: '1',
// pro: '普通',
// num: '2回',
// name: '間接',
// money: '4,000',
// date: '2019/07/02'
// }
],
loading: false,
columns: [
{
title: '項目',
dataIndex: 'pro',
key: '1',
},
{
title: '回数',
dataIndex: 'num',
key: '2',
},
{
title: '金額',
dataIndex: 'money',
key: '3',
}
],
columns1: [
{
title: 'No',
dataIndex: 'index',
key: '1',
},
{
title: 'オーダーNo',
dataIndex: 'num',
key: '2',
},
{
title: 'オーダー名称',
dataIndex: 'name',
key: '3',
},
{
title: '金額',
dataIndex: 'money',
key: '4',
}
],
columns2: [
{
title: '年月日',
dataIndex: 'date',
key: '1',
},
{
title: '休日',
dataIndex: 'num',
key: '2',
},
{
title: '出発',
dataIndex: 'name',
key: '3',
},
{
title: '到着',
dataIndex: 'money',
key: '4',
},
{
title: '乗車船',
dataIndex: 'money',
key: '5',
},
{
title: '宿泊地',
dataIndex: 'money',
key: '5',
},
{
title: '乗車駅',
dataIndex: 'money',
key: '5',
},
{
title: '降車駅',
dataIndex: 'money',
key: '5',
},
{
title: '金額',
dataIndex: 'money',
key: '5',
},
{
title: '内訳',
dataIndex: 'money',
key: '5',
}
],
rowKey: 'id'
}
}
formRef = React.createRef();
onGenderChange = (label, value) => {
console.log(label, value);
this.formRef.current.setFieldsValue({
note: `Hi, ${value === 'male' ? 'man' : 'lady'}!`,
});
};
onFinish = (values) => {
console.log(values);
};
goBack = () => {
this.props.goBack()
}
submit() {
}
componentDidMount() {
// console.log(this.props.row);
// this.formRef.current.setFieldsValue({
// tx_denpyo_no: this.props.row.pldenpyo_NO,
// tx_shain_no: this.props.row.snin_MEI,
// });
}
render() {
const { dataSource, dataSource1, columns1, dataSource2, columns2, loading, columns, rowKey } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
style: {width: 300}
};
const setting1 = {
dataSource: dataSource1,
columns: columns1,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
const setting2 = {
dataSource: dataSource2,
columns: columns2,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
return (
<div className='aw_a1705_0010_detail'>
&emsp;<Button onClick={this.goBack} icon={<RollbackOutlined />} />
<div className="aw_a1705_0010_detail_form">
<div>
<div className="form_item">
<div className="form_label">伝票番号</div>
<div className="form_value">
<Input size="small" disabled style={{width:100}} />
</div>
</div>
<div className="form_item">
<div className="form_label">起票日</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">社員名称</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
&emsp;<Input size="small" disabled style={{ width: 120 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">部課名称</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
&emsp;<Input size="small" disabled style={{ width: 120 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">勘定科目</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
&emsp;<Input size="small" disabled style={{ width: 120 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">摘要</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 200 }} />
</div>
</div>
</div>
<div>
<div className="form_item">
<div className="form_label">1次承認</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
&nbsp;<Input size="small" disabled style={{ width: 120 }} />
&nbsp;<Input size="small" disabled style={{ width: 120 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">2次承認</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
&nbsp;<Input size="small" disabled style={{ width: 120 }} />
&nbsp;<Input size="small" disabled style={{ width: 120 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">総務承認</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
&nbsp;<Input size="small" disabled style={{ width: 120 }} />
&nbsp;<Input size="small" disabled style={{ width: 120 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">出張種別</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">出張期間</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />&nbsp;
&nbsp;<Input size="small" disabled style={{ width: 100 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">出張先名称</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 200 }} />
</div>
</div>
</div>
</div>
<div className="aw_a1705_0010_detail_form1">
<div className="form1_left">
<div className="form_item">
<div className="form_label">合計金額</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">初日加算</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">長期出張手当</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">日帰出張手当</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">宿泊代(実費)</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
</div>
</div>
<div className="form_item">
<div className="form_label">交通費</div>
<div className="form_value">
<Input size="small" disabled style={{ width: 100 }} />
</div>
</div>
</div>
<div className="form1_right">
<Table {...setting} ></Table>&emsp;&emsp;
<Table {...setting} ></Table>
</div>
</div>
<div style={{width: 500,marginTop:20}}>
<Table {...setting1} ></Table>
</div>
<div style={{ marginTop: 20 }}>
交通費明細
<Table {...setting2} ></Table>
</div>
</div>
)
}
}
export default Detail

View File

@@ -0,0 +1,37 @@
.aw_a1705_0010_detail {
width: 1000px;
.aw_a1705_0010_detail_form {
margin-top: 12px;
padding: 20px 0 0;
background: #e5e5e5;
display: flex;
>div{
flex:1;
}
}
.aw_a1705_0010_detail_form1 {
display: flex;
.form1_left {
width: 300px;
background: #e5e5e5;
display: flex;
flex-direction: column;
align-items: flex-end;
}
.form1_right {
flex: 1;
display: flex;
padding: 10px 20px;
}
}
.form_item {
display: flex;
margin-bottom: 10px;
}
.form_label {
margin-right: 6px;
width: 100px;
text-align: right;
}
}

View File

@@ -0,0 +1,49 @@
import React, { Component } from 'react';
import { AddButton } from '$button'
import { Input } from 'antd';
import './0040.scss'
class Home extends Component {
state = {
loading: false,
}
render() {
const { loading } = this.state
return (
<div className="sw_a1705_0010_01">
<div>51 承認処理 確認</div>
<div style={{ marginTop: 10, padding: 20 }}>
<div className="sw_a1705_0010_01_header">
<span>状態&nbsp;</span>
<Input size="small" disabled style={{ width: 120 }} />
<span style={{ marginLeft: 20 }}>承認者&nbsp;</span>
<Input size="small" disabled style={{width:120}} />
</div>
<div className="sw_a1705_0010_01_list">
<div>
<span>国内出張旅費支払</span>
<span>0</span>
</div>
<div>
<span>請求書支払</span>
<span>0</span>
</div>
<div>
<span>領収証支払</span>
<span>0</span>
</div>
<div>
<span>勘定振替</span>
<span>0</span>
</div>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,49 @@
import React, { Component } from 'react';
import { AddButton } from '$button'
import { Input } from 'antd';
import './0040.scss'
class Home extends Component {
state = {
loading: false,
}
render() {
const { loading } = this.state
return (
<div className="sw_a1705_0010_01">
<div>51 承認処理 確認</div>
<div style={{ marginTop: 10, padding: 20 }}>
<div className="sw_a1705_0010_01_header">
<span>状態&nbsp;</span>
<Input size="small" disabled style={{ width: 120 }} />
<span style={{ marginLeft: 20 }}>承認者&nbsp;</span>
<Input size="small" disabled style={{ width: 120 }} />
</div>
<div className="sw_a1705_0010_01_list">
<div>
<span>国内出張旅費支払</span>
<span>0</span>
</div>
<div>
<span>請求書支払</span>
<span>0</span>
</div>
<div>
<span>領収証支払</span>
<span>0</span>
</div>
<div>
<span>勘定振替</span>
<span>0</span>
</div>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,49 @@
import React, { Component } from 'react';
import { AddButton } from '$button'
import { Input } from 'antd';
import './0040.scss'
class Home extends Component {
state = {
loading: false,
}
render() {
const { loading } = this.state
return (
<div className="sw_a1705_0010_01">
<div>51 承認処理 確認</div>
<div style={{ marginTop: 10, padding: 20 }}>
<div className="sw_a1705_0010_01_header">
<span>状態&nbsp;</span>
<Input size="small" disabled style={{ width: 120 }} />
<span style={{ marginLeft: 20 }}>承認者&nbsp;</span>
<Input size="small" disabled style={{ width: 120 }} />
</div>
<div className="sw_a1705_0010_01_list">
<div>
<span>国内出張旅費支払</span>
<span>0</span>
</div>
<div>
<span>請求書支払</span>
<span>0</span>
</div>
<div>
<span>領収証支払</span>
<span>0</span>
</div>
<div>
<span>勘定振替</span>
<span>0</span>
</div>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,49 @@
import React, { Component } from 'react';
import { AddButton } from '$button'
import { Input } from 'antd';
import './0040.scss'
class Home extends Component {
state = {
loading: false,
}
render() {
const { loading } = this.state
return (
<div className="sw_a1705_0010_01">
<div>51 承認処理 確認</div>
<div style={{ marginTop: 10, padding: 20 }}>
<div className="sw_a1705_0010_01_header">
<span>状態&nbsp;</span>
<Input size="small" disabled style={{ width: 120 }} />
<span style={{ marginLeft: 20 }}>承認者&nbsp;</span>
<Input size="small" disabled style={{ width: 120 }} />
</div>
<div className="sw_a1705_0010_01_list">
<div>
<span>国内出張旅費支払</span>
<span>0</span>
</div>
<div>
<span>請求書支払</span>
<span>0</span>
</div>
<div>
<span>領収証支払</span>
<span>0</span>
</div>
<div>
<span>勘定振替</span>
<span>0</span>
</div>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,189 @@
import React, { Component } from 'react';
import { AddButton } from '$button'
import { Input, Radio, Table } from 'antd';
import Detail from './components/detail'
import './0040.scss'
class Home extends Component {
state = {
value: 1,
loading: false,
showTable: false,
dataSource: [
{
"snin_MEI": "江田好美",
"tehai_NO": "",
"tekiyo": "",
"note": "",
"mishori": "",
"pldenpyo_NO": "120K058",
"snin_YMD": "2019/06/04 10:55:00",
"snin_NO": "0444",
"furikomi": "貂?",
"pldenpyo_YMD": "2019/05/31",
"cpyplden_NO": "",
"schosaki_MEI": "大井電気本社",
"tekiyo_MEI": "各種会議出席",
"seizo_BAN": "X9-00-00-000",
"karikata_KIN": "\\2,447"
},
],
columns: [
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '伝票日付',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
},
{
title: 'CAMS',
dataIndex: 'CAMS',
key: 'CAMS',
},
{
title: '氏名',
dataIndex: 'furikomi',
key: 'furikomi',
},
{
title: '出張先',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI',
},
{
title: '用件',
dataIndex: 'tehai_NO',
key: 'tehai_NO',
},
{
title: 'オーダーNo',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
},
{
title: '金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
},
{
title: '承認',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
align: 'center',
render: val => {
return {
children: <Radio.Group onChange={this.onChange} value={this.state.value}>
<Radio value={1}></Radio>
<Radio value={2}></Radio>
<Radio value={3}></Radio>
</Radio.Group>,
props: { colSpan: 3 }
}
}
},
{
title: '不承認',
key: 'karikata_KIN',
align: 'center',
render: val => {
return {
props: { colSpan: 0 }
}
}
},
{
title: '保留',
key: 'karikata_KIN',
align: 'center',
render: val => {
return {
props: { colSpan: 0 }
}
}
}
],
rowKey: 'pldenpyo_NO',
row: {},
showDetail: false
}
onChange = e => {
console.log(1);
this.setState({
value: e.target.value,
});
};
toDetail = (text, record) => {
this.setState({ showDetail: true, row: record })
}
render() {
const { dataSource, loading, columns, rowKey, showTable, showDetail } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
return (
<div className="sw_a1705_0010_01">
{
!showDetail ?
<>
<div>51 承認処理 確認</div>
<div style={{ marginTop: 10, padding: 20 }}>
<div className="sw_a1705_0010_01_header">
<span>状態&nbsp;</span>
<Input size="small" disabled style={{ width: 120 }} />
<span style={{ marginLeft: 20 }}>承認者&nbsp;</span>
<Input size="small" disabled style={{ width: 120, marginRight: 'auto' }} />
{
showTable &&
<span>
<AddButton >確定</AddButton>&emsp;
<AddButton>戻る</AddButton>
</span>
}
</div>
<div className="sw_a1705_0010_01_list">
<div>
<span style={{ color: '#4BAEA0', cursor: 'pointer' }}>国内出張旅費支払</span>
<span>0</span>
</div>
<div>
<span>請求書支払</span>
<span>0</span>
</div>
<div>
<span style={{ color: '#4BAEA0', cursor: 'pointer' }}>領収証支払</span>
<span>0</span>
</div>
<div>
<span>勘定振替</span>
<span>0</span>
</div>
</div>
</div>
<div style={{ marginTop: 20 }}>
<Table {...setting} ></Table>
</div>
</> :
<Detail />
}
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,49 @@
import React, { Component } from 'react';
import { AddButton } from '$button'
import { Input } from 'antd';
import './0040.scss'
class Home extends Component {
state = {
loading: false,
}
render() {
const { loading } = this.state
return (
<div className="sw_a1705_0010_01">
<div>51 承認処理 確認</div>
<div style={{ marginTop: 10, padding: 20 }}>
<div className="sw_a1705_0010_01_header">
<span>状態&nbsp;</span>
<Input size="small" disabled style={{ width: 120 }} />
<span style={{ marginLeft: 20 }}>承認者&nbsp;</span>
<Input size="small" disabled style={{ width: 120 }} />
</div>
<div className="sw_a1705_0010_01_list">
<div>
<span>国内出張旅費支払</span>
<span>0</span>
</div>
<div>
<span>請求書支払</span>
<span>0</span>
</div>
<div>
<span>領収証支払</span>
<span>0</span>
</div>
<div>
<span>勘定振替</span>
<span>0</span>
</div>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1 @@
e2c1c126-7f52-48ff-b72d-5b1af206f3c0

View File

@@ -0,0 +1,9 @@
.sw_a1706_0020 {
.sw_a1706_0020_header{
display: flex;
align-items: center;
background: #e5e5e5;
padding: 10px;
}
}

View File

@@ -0,0 +1,77 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
state = {
dataSource: [],
columns: [
{
title: '支払先CD',
dataIndex: 'number',
key: 'number',
},
{
title: '支払先名称',
dataIndex: 'address',
key: 'address',
},
{
title: '銀行名称',
dataIndex: 'desc',
key: 'desc',
},
{
title: '支店名称',
dataIndex: 'orderNo',
key: 'orderNo',
},
{
title: '申請依頼日',
dataIndex: 'date',
key: 'date',
},
{
title: '申請依頼者',
dataIndex: 'money',
key: 'money',
}
],
loading: false,
rowKey: 'id'
}
handleChange() {
}
render() {
const { dataSource, loading, columns, rowKey } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small"
};
const options = []
return (
<div>
<div>61 請求書支払先申請依頼確認</div>
<div style={{ marginTop: 10, padding: 20 }}>
<AddButton >新規</AddButton>
<div style={{ marginTop: 20 }}>
検索結果:0
<Table {...setting}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,84 @@
import React, { Component } from 'react';
import { Select, Table, Input } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
import './index.scss'
class Home extends Component {
state = {
dataSource: [],
columns: [
{
title: '支払先CD',
dataIndex: 'number',
key: 'number',
},
{
title: '支払先名称',
dataIndex: 'address',
key: 'address',
},
{
title: '銀行名称',
dataIndex: 'desc',
key: 'desc',
},
{
title: '支店名称',
dataIndex: 'orderNo',
key: 'orderNo',
},
{
title: '申請依頼日',
dataIndex: 'date',
key: 'date',
},
{
title: '申請依頼者',
dataIndex: 'money',
key: 'money',
}
],
loading: false,
rowKey: 'id'
}
handleChange() {
}
render() {
const { dataSource, loading, columns, rowKey } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small"
};
const options = []
return (
<div className="sw_a1706_0020">
<div>31 支払先マスタ検索 口座番号検索</div>
<div style={{ marginTop: 10, padding: 20 }}>
<div className="sw_a1706_0020_header">
<span>口座番号(7桁)&nbsp;</span>
<Input size="small" style={{ width: 120 }} />&emsp;
<AddButton>口座検索</AddButton>
<span style={{ marginLeft: 'auto'}}>
<AddButton>閉じる</AddButton>
</span>
</div>
<div style={{ marginTop: 20 }}>
検索結果:0
<Table {...setting}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1 @@
5e969060-f8f0-4efa-ad50-9b35966c5aa7

View File

@@ -0,0 +1,7 @@
.sw_a1707_0010 {
.sw_a1707_0010_header{
align-items: center;
background: #e5e5e5;
padding: 10px;
}
}

View File

@@ -0,0 +1,176 @@
import React, { Component } from 'react';
import { Select, Table, Radio } from 'antd';
import { AddButton } from '$button'
import { http } from '$http';
const { Option } = Select
import './index.scss'
class Home extends Component {
state = {
columns: [
{
title: '',
dataIndex: 'kamoku_COD',
key: 'kamoku_COD',
width: 60,
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '勘定科目名称',
dataIndex: 'kamoku_MEI',
key: 'kamoku_MEI',
},
{
title: '期予算',
dataIndex: 'kiyosan',
key: 'kiyosan',
},
{
title: '当月発生累計',
dataIndex: 'tougetu',
key: 'tougetu',
},
{
title: '実績累計',
dataIndex: 'jiseki',
key: 'jiseki',
},
{
title: '残予算',
dataIndex: 'zanyosan',
key: 'zanyosan',
},
{
title: '費消率',
dataIndex: 'hiritu',
key: 'hiritu',
}
],
loading: false,
rowKey: 'kamoku_COD',
value: '1200',
res:{}
}
toDetail = (text, record) => {
// this.setState({ showDetail: true, row: record })
};
handleChange(e) {
console.log(e);
this.setState({
value: e.target.value,
},() => {
this.load()
});
}
async load() {
try {
const { value } = this.state
const params = {
dsp_flg: true,
login_ymd: sessionStorage.getItem('login_ymd'),
se_buka_cod: value,
hd_buka_list: value,
}
const res = await http.post('s07/a1707_0010s/Search/doIndicate', params);
this.setState({ res })
} catch (error) {
console.log(error);
}
}
summary() {
const { res } = this.state;
return (
<Table.Summary.Row style={{ backgroundColor: '#fafafa' }}>
<Table.Summary.Cell colSpan={4}>
<div style={{ textAlign: 'right' }}><strong>総計</strong></div>
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
{res.jiseki_kei1}
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
{res.zanyosan_kei1}
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
{res.hiritu_kei1}
</Table.Summary.Cell>
</Table.Summary.Row>
)
}
summary1() {
const { res } = this.state;
return (
<Table.Summary.Row style={{ backgroundColor: '#fafafa' }}>
<Table.Summary.Cell colSpan={4}>
<div style={{ textAlign: 'right' }}><strong>総計</strong></div>
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
{res.jiseki_kei2}
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
{res.zanyosan_kei2}
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
{res.hiritu_kei2}
</Table.Summary.Cell>
</Table.Summary.Row>
)
}
componentDidMount() {
this.load()
}
render() {
const { loading, columns, rowKey, value, res } = this.state;
const { slist1 = [], slist2 = [] } = res;
const setting = {
dataSource: slist1,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
const setting1 = {
...setting,
dataSource: slist2,
};
const optionsWithDisabled = [
{ label: '1200 本社(総務部)', value: '1200' },
{ label: '1790 SEセンター', value: '1790' },
{ label: '9000 退職者', value: '9000' },
];
const deptName = optionsWithDisabled.filter(item => item.value === value)[0].label;
return (
<div className="sw_a1707_0010">
<div>71 予算実績累計</div>
<div style={{ marginTop: 10, padding: 20 }}>
<div className="sw_a1707_0010_header">
<span>対象部門 &emsp;</span>
<Radio.Group
options={optionsWithDisabled}
onChange={this.handleChange.bind(this)}
value={value}
optionType="button"
buttonStyle="solid"
/>
</div>
<div style={{ marginTop: 20 }}>
部門名称{deptName}
<Table {...setting} summary={this.summary.bind(this)}></Table>
</div>
<div style={{ marginTop: 20 }}>
<Table {...setting1} summary={this.summary1.bind(this)}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1 @@
4cd88ded-a326-44ca-9794-da1f4e240463

View File

@@ -0,0 +1,39 @@
import React, { Component } from 'react';
import { Input, Select } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
onGenderChange = (value) => {
};
render() {
return (
<div style={{width:1000}}>
<div>82 費用実績明細</div>
<div style={{display:'flex',alignContent:'center',margin:'20px 0 0 20px'}}>
対象年月&nbsp;
<Input disabled size="small" style={{ width: 80 }} />&nbsp;
<Input disabled size="small" style={{ width: 80 }} />&nbsp;月分
<span style={{ marginLeft: 20 }}>対象部課</span>&nbsp;
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this)}
style={{marginRight:40}}
>
<Option value="1200">1200 本社(総務部)</Option>
<Option value="1790">1790 SEセンター</Option>
<Option value="9000">9000 退職者</Option>
</Select>
<AddButton>CSV</AddButton>&emsp;
<AddButton>印刷</AddButton>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,39 @@
import React, { Component } from 'react';
import { Input, Select } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
onGenderChange = (value) => {
};
render() {
return (
<div style={{ width: 1000 }}>
<div>83 費用実績明細 (半期)</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 0 20px' }}>
対象半期&nbsp;
<Input disabled size="small" style={{ width: 80 }} />&nbsp;年度
<Input disabled size="small" style={{ width: 80 }} />&nbsp;
<span style={{ marginLeft: 20 }}>対象部課</span>&nbsp;
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this)}
style={{ marginRight: 40 }}
>
<Option value="1200">1200 本社(総務部)</Option>
<Option value="1790">1790 SEセンター</Option>
<Option value="9000">9000 退職者</Option>
</Select>
<AddButton>CSV</AddButton>&emsp;
<AddButton>印刷</AddButton>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,38 @@
import React, { Component } from 'react';
import { Input, Select } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
onGenderChange = (value) => {
};
render() {
return (
<div style={{ width: 1000 }}>
<div>83 費用実績明細 (半期)</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 0 20px' }}>
対象半期&nbsp;
<Input disabled size="small" style={{ width: 80 }} />&nbsp;年度
<Input disabled size="small" style={{ width: 80 }} />&nbsp;
<span style={{ marginLeft: 20 }}>対象部課</span>&nbsp;
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this)}
style={{ marginRight: 40 }}
>
<Option value="1200">1200 本社(総務部)</Option>
<Option value="1790">1790 SEセンター</Option>
<Option value="9000">9000 退職者</Option>
</Select>
<AddButton>印刷</AddButton>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,126 @@
import React, { Component } from 'react';
import { Input, Select, Table } from 'antd';
import { AddButton } from '$button'
import { http } from '$http';
const { Option } = Select
class Home extends Component {
state = {
value: 1,
dataSource: [],
columns: [
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '伝票種別',
dataIndex: 'status',
key: 'status'
},
{
title: '伝票日付',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
},
{
title: '摘要',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI',
},
{
title: 'オーダーNo',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
},
{
title: '金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
},
{
title: '未使用理由',
dataIndex: 'status',
key: 'status'
},
{
title: '確認済',
dataIndex: 'furikomi',
key: 'furikomi',
},
],
loading: false,
rowKey: 'pldenpyo_NO',
showDetail: false,
row: {},
tx_shain_mei: ''
};
toDetail = (text, record) => {
// this.setState({ showDetail: true, row: record })
}
onGenderChange = (value) => {
};
async load() {
try {
const { tx_shain_mei } = await http.post('s08/a1708_0050r/Entry/doIndicate', { login_ymd: sessionStorage.getItem('login_ymd') });
this.setState({ tx_shain_mei })
} catch (error) {
console.log(error)
}
}
componentDidMount() {
this.load()
}
render() {
const { dataSource, loading, columns, rowKey, value, tx_shain_mei } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
return (
<div style={{ width: 1000 }}>
<div>85 未確定データ確認</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 10px 20px' }}>
氏名&nbsp;
<Input disabled size="small" value={tx_shain_mei} style={{ width: 100 }} />
</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 10px 20px' }}>
伝票番号&nbsp; <Input disabled size="small" style={{ width: 80 }} />&nbsp;
未使用理由&nbsp; <Input disabled size="small" style={{ width: 300 }} />&nbsp;
<span style={{ marginLeft: 20 }}>対象部課</span>&nbsp;
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this)}
style={{ marginRight: 40,width:80 }}
value={value}
>
<Option value={0}>使用</Option>
<Option value={1}>未使用</Option>
</Select>
</div>
<div style={{ marginRight: 100, textAlign: 'right' }}><AddButton>設定</AddButton></div>
<div style={{marginTop: 50}}>
<Table {...setting} ></Table>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,26 @@
import React, { Component } from 'react';
import { Input } from 'antd';
import { AddButton } from '$button'
class Home extends Component {
render() {
return (
<div style={{ width: 1000 }}>
<div>86 未使用番号リスト</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 0 20px' }}>
対象半期&nbsp;
<Input disabled size="small" style={{ width: 80 }} />&nbsp;年度
<Input disabled size="small" style={{ width: 80 }} />&nbsp;
<span style={{ marginLeft: 20 }}>対象部課</span>&nbsp;
<Input disabled size="small" style={{ width: 180,marginRight: 20 }} />
<AddButton>印刷</AddButton>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,178 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
import { http } from '$http';
const { Option } = Select
class Home extends Component {
constructor(props) {
super(props);
this.state = {
year: '',
months: '',
value: '000',
dataSource: [],
columns: [
{
title: '種別',
dataIndex: 'dendtshu_MEI',
key: 'dendtshu_MEI',
},
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
},
{
title: '社員名称',
dataIndex: 'shain_MEI',
key: 'shain_MEI',
},
{
title: '部課',
dataIndex: 'buka_COD',
key: 'buka_COD'
},
{
title: '伝票日付',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
},
{
title: '支払日',
dataIndex: 'sihairai_YMD',
key: 'sihairai_YMD',
},
{
title: '借方金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
},
{
title: 'オーダーNo',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
},
{
title: '摘要',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI'
},
{
title: '承認者',
dataIndex: 'sninsha_MEI',
key: 'sninsha_MEI',
},
],
loading: false,
rowKey: 'pldenpyo_NO',
res: {}
}
}
handleChange(name, val) {
this.setState({
[name]: val
})
}
onGenderChange() {
}
async fnDisp() {
try {
const { year, months, value } = this.state;
const params = {
login_ymd: sessionStorage.getItem('login_ymd'),
tyear: year,
tmonth: months,
status: value
}
const res = await http.post('s08/a1708_0070p/SearchList/doSearch', params);
this.setState({ res, year: res.se_tyear, months: res.se_tmonth, dataSource: res.slist })
} catch (error) {
console.log(error);
}
};
async load() {
try {
const { year, months, value } = this.state;
const params = {
login_ymd: sessionStorage.getItem('login_ymd'),
tyear: year,
tmonth: months,
status: value
}
const res = await http.post('s08/a1708_0070p/SearchList/doIndicate', params);
this.setState({ res, year: res.se_tyear, months: res.se_tmonth})
} catch (error) {
console.log(error);
}
}
componentDidMount() {
this.load()
}
render() {
const date = new Date();
const { dataSource, loading, columns, rowKey, value, res } = this.state;
const { se_tyear_list =[], se_tmonth_list=[], se_status_list=[]} = res;
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
return (
<div style={{ width: 1000 }}>
<div>87 承認警告リスト</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 0 20px' }}>
対象半期&nbsp;
<Select size='small' defaultValue={date.getFullYear()} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'year')}>
{
se_tyear_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>&nbsp;
<span style={{ padding: '0 6px ' }}>
<Select size='small' defaultValue={date.getMonth() + 1} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'months')}>
{
se_tmonth_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>
</span>
<span style={{ marginLeft: 40 }}>状態</span>&nbsp;
<Select
onChange={this.onGenderChange.bind(this)}
style={{ marginRight: 40 }}
value={value}
>
{
se_status_list.map(item => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
<AddButton onClick={this.fnDisp.bind(this)}>一覧</AddButton>&emsp;&emsp;
<AddButton>印刷</AddButton>
</div>
<div style={{ marginTop: 50 }}>
<Table {...setting} ></Table>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,41 @@
import React, { Component } from 'react';
import { Input } from 'antd';
import { AddButton } from '$button'
class Home extends Component {
render() {
return (
<div style={{ width: 1000 }}>
<div>88 パスワード変更</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 10px 20px' }}>
<span style={{ width: 100, textAlign: 'right' }}>氏名</span>&nbsp;
<Input disabled size="small" style={{ width: 120 }} />
</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 10px 20px' }}>
<span style={{ width: 100, textAlign: 'right' }}>現パスワード</span>&nbsp;
<Input disabled size="small" style={{ width: 120 }} />
</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 10px 20px' }}>
<span style={{ width: 100, textAlign: 'right' }}>新パスワード</span>&nbsp;
<Input size="small" style={{ width: 120 }} />
</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 10px 20px' }}>
<span style={{ width: 100, textAlign: 'right' }}>新パスワード</span>&nbsp;
<Input size="small" style={{ width: 120 }} />&nbsp;確認
</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 10px 20px' }}>
<span style={{ width: 100, textAlign: 'right' }}></span>&nbsp;
<AddButton>設定</AddButton>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1 @@
45b082d2-f3da-45b1-84eb-7c87b4768be2

View File

@@ -0,0 +1 @@
d1cc03e1-5662-4f6b-8197-4279d91a2e37

View File

@@ -0,0 +1,276 @@
import React, { Component } from 'react';
import { Select, Button, Input, Checkbox, Radio } from 'antd';
import { http, postByJson } from '$http';
import { AddButton } from '$button'
import { RollbackOutlined } from '@ant-design/icons';
import './index.scss'
const CheckboxGroup = Checkbox.Group;
const { Option } = Select;
const size = 'small'
class Home extends Component {
state = {
res:{}
};
goBack = () => {
this.props.goBack()
}
onChange = (name, { target: { value }}) => {
const { res } = this.state;
this.setState({
res: {
...res,
[name]: value
}
});
};
onChange1 = (name, value) => {
const { res } = this.state
this.setState({
res: {
...res,
[name]: value
}
});
};
async fnDataNG() {
try {
const { hd_Sihask_Cod, tx_ginko_cod, tx_ginten_cod, se_mtginko_kbn, se_torokuho_kbn, ra_tesuryo_kbn } = this.state.res
const params = {
hd_Sihask_Cod, tx_ginko_cod,
tx_ginten_cod, se_mtginko_kbn, se_torokuho_kbn,
ra_tesuryo_kbn
}
await postByJson('s09/a1709_0030r/Entry/doDataNG', params)
} catch (error) {
}
}
async fnDataOK() {
try {
const { hd_Sihask_Cod, tx_ginko_cod, tx_ginten_cod, se_mtginko_kbn,
se_torokuho_kbn, ra_tesuryo_kbn, tx_hojo_cod, rd_siharai_kbn,
} = this.state.res;
if (!tx_ginko_cod) {
alert("支払先銀行コードが入力されていません。");
return false;
}
if (!tx_ginten_cod) {
alert("支払先支店コードが入力されていません。");
}
if (!rd_siharai_kbn) {
alert("買掛金または未払金が選択されていません。");
return false;
}
if (!tx_hojo_cod) {
alert("補助コードを確認してください。");
return false;
}
if (tx_hojo_cod.length != 4) {
alert("補助コードは4桁で入力してください。");
return false;
}
const params = {
hd_Sihask_Cod, tx_ginko_cod,
tx_ginten_cod, se_mtginko_kbn, se_torokuho_kbn,
ra_tesuryo_kbn, tx_hojo_cod, rd_siharai_kbn
}
await postByJson('s09/a1709_0030r/Entry/doDataOK', params)
} catch (error) {
}
}
async load() {
try {
const { sihask_COD } = this.props.row;
const res = await http.post('s09/a1709_0030r/Entry/doIndicate', { sihask_cod: sihask_COD });
this.setState({ res })
} catch (error) {
}
}
componentDidMount(){
this.load()
}
render() {
const { res } = this.state;
return (
<div className="detail_0030">
<div><Button onClick={this.goBack} style={{marginRight:30}} icon={<RollbackOutlined />} />93 請求書支払先申請依頼確認</div>
<div className="layout_label" style={{ textAlign: 'right',color:'red' }}>{res.lbl_shounin}</div>
<div className="detail_0030_item">
<div style={{width:160}}></div>
<div style={{width:210}}></div>
<div className="detail_0030_item_label" style={{ width: 120}}>依頼申請者</div>
<div style={{width:142}}>
<Input value={res.tx_sinshain_mei} disabled size={size} />
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>支払先名称(半角カナ)</div>
<div style={{ width: 210 }}>
<Input value={res.tx_kozakn_mei} disabled size={size} style={{width: 118}} />
</div>
<div className="detail_0030_item_label" style={{ width: 120 }}>支払先名称(漢字)</div>
<div style={{ width: 142 }}>
<Input value={res.tx_sihask_mei} disabled size={size} />
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>口座名称(半角カナ)</div>
<div style={{ width: 210 }}>
<Input value={res.tx_kozakn_mei} disabled size={size} />
</div>
<div className="detail_0030_item_label" style={{ width: 120 }}>口座名称(漢字)</div>
<div style={{ width: 142 }}>
<Input value={res.tx_koza_mei} disabled size={size} />
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>銀行名称(半角カナ)</div>
<div style={{ width: 210 }}>
<Input value={res.tx_ginkokn_mei} disabled size={size} style={{ width: 118 }} />
</div>
<div className="detail_0030_item_label" style={{ width: 120 }}>銀行名称(漢字)</div>
<div style={{ width: 142 }}>
<Input value={res.tx_ginko_mei} disabled size={size} />
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>支店名称(半角カナ)</div>
<div style={{ width: 210 }}>
<Input value={res.tx_gintenkn_mei} disabled size={size} style={{ width: 118 }} />
</div>
<div className="detail_0030_item_label" style={{ width: 120 }}>支店名称(漢字)</div>
<div style={{ width: 142 }}>
<Input value={res.tx_ginten_mei} disabled size={size} />
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>預金種目</div>
<div style={{ width: 210 }}>
<Input value={res.tx_yokinshu_mei} disabled size={size} style={{ width: 60 }} />
</div>
<div className="detail_0030_item_label" style={{ width: 120 }}>口座番号</div>
<div style={{ width: 142 }}>
<Input value={res.tx_koza_no} disabled size={size} style={{ width: 60 }} />
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>取引内容</div>
<div>
<Input value={res.tx_torinai_mei} disabled size={size} style={{ width: 380 }} />
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>申請理由</div>
<div>
<Input value={res.tx_sinsenai_mei} disabled size={size} style={{ width: 380 }} />
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>年間取引予定数</div>
<div style={{ width: 210 }}>
<Input value={res.tx_torinen_cnt} disabled size={size} style={{ width: 60 }} />
</div>
<div className="detail_0030_item_label" style={{ width: 120 }}>登録依頼日</div>
<div >
<Input value={res.tx_torokurq_year} disabled size={size} style={{ width: 60 }} /> &nbsp;
<Input value={res.tx_torokurq_month} disabled size={size} style={{ width: 60 }} /> &nbsp;
<Input value={res.tx_torokurq_day} disabled size={size} style={{ width: 60 }} /> &nbsp;
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>資本金区分</div>
<div style={{ width: 210 }}>
<Input value={res.lbl_shihonkin_kbn} disabled size={size} style={{ width: 160 }} />
</div>
<div className="detail_0030_item_label" style={{ width: 120 }}>資本金</div>
<div style={{ width: 142 }}>
<Input value={res.lbl_shihon_kin} disabled size={size} style={{ width: 160 }} />
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>取引内容区分</div>
<div>
<Checkbox disabled checked={res.ch_torihikinaiyo1_kbn}>商品材料等</Checkbox>
<Checkbox disabled checked={res.ch_torihikinaiyo2_kbn}>外注費</Checkbox>
<Checkbox disabled checked={res.ch_torihikinaiyo3_kbn}>その他原価</Checkbox>
<Checkbox disabled checked={res.ch_torihikinaiyo4_kbn}>経費等未払金</Checkbox>
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>支払条件</div>
<div style={{ width: 210 }}>
<Input value={res.tx_sihajken_kbn} disabled size={size} style={{ width: 160 }} />
</div>
<div className="detail_0030_item_label" style={{ width: 120 }}>支払種別</div>
<div>
<Radio.Group onChange={this.onChange.bind(this,'rd_siharai_kbn')} value={res.rd_siharai_kbn}>
<Radio value="A">買掛金業者</Radio>
<Radio value="B">未払金業者</Radio>
</Radio.Group>
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>支払先銀行コード</div>
<div style={{ width: 210 }}>
<Input value={res.tx_ginko_cod} onChange={this.onChange.bind(this, 'tx_ginko_cod')} size={size} style={{ width: 60 }} />
</div>
<div className="detail_0030_item_label" style={{ width: 120 }}>持込銀行</div>
<div style={{ width: 142 }}>
<Select onChange={this.onChange1.bind(this,'se_mtginko_kbn')} value={res.se_mtginko_kbn} style={{ width: 120 }} >
{
res.se_mtginko_kbn_list && res.se_mtginko_kbn_list.map(item => {
return <Option value={item.value} key={item.value}>{item.label}</Option>
})
}
</Select>
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>支払先支店コード</div>
<div style={{ width: 210 }}>
<Input value={res.tx_ginten_cod} onChange={this.onChange.bind(this, 'tx_ginten_cod')} size={size} style={{ width: 60 }} />
</div>
<div className="detail_0030_item_label" style={{ width: 120 }}>登録方法</div>
<div style={{ width: 142 }}>
<Select onChange={this.onChange1.bind(this, 'se_torokuho_kbn')} value={res.se_torokuho_kbn} style={{ width: 120 }} >
{
res.se_torokuho_kbn_list && res.se_torokuho_kbn_list.map(item => {
return <Option value={item.value} key={item.value}>{item.label}</Option>
})
}
</Select>
</div>
</div>
<div className="detail_0030_item">
<div className="detail_0030_item_label" style={{ width: 160 }}>補助コード</div>
<div style={{ width: 210 }}>
<Input value={res.tx_hojo_cod} onChange={this.onChange.bind(this, 'tx_hojo_cod')} size={size} style={{ width: 60 }} />
</div>
<div className="detail_0030_item_label" style={{ width: 120 }}>手数料相殺</div>
<div>
<Radio.Group onChange={this.onChange.bind(this,'ra_tesuryo_kbn')} value={res.ra_tesuryo_kbn}>
<Radio value="0">しない</Radio>
<Radio value="1">する</Radio>
</Radio.Group>
</div>
</div>
<div style={{ textAlign: 'right' }}>
<AddButton onClick={this.fnDataNG.bind(this)}>却下</AddButton>&emsp;
<AddButton>印刷プレビュー</AddButton>&emsp;
<AddButton onClick={this.fnDataOK.bind(this)}>承認</AddButton>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,13 @@
.detail_0030 {
.detail_0030_item {
display: flex;
align-items: center;
margin-bottom: 10px;
}
.detail_0030_item_label {
padding-right: 6px;
text-align: right;
font-weight: bold;
font-size: 9pt;
}
}

View File

@@ -0,0 +1,30 @@
.sw_a1709_0080 {
width: 1000px;
.sw_a1709_0080_header{
display: flex;
background: #e5e5e5;
padding: 10px;
}
.sw_a1709_0080_dep {
border: 1px solid #fafafa;
width: 220px;
height: 120px;
overflow-y: auto;
padding: 2px 4px;
background: #FFF;
>div {
cursor: pointer;
&.active {
background: #4BAEA0;
color: #FFF;
}
}
}
}
.sw_a1709_0120 {
.sw_a1709_0120_search {
display: flex;
padding: 0 10px 0 20px;
margin-top: 20px;
}
}

View File

@@ -0,0 +1,257 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { http, postByJson } from '$http';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
constructor(props) {
super(props);
this.state = {
se_tyear: '',
se_tmonth: '',
se_tday: '',
se_search_sihashu_kbn: '',
dataSource: [],
columns: [
{
title: 'No',
dataIndex: 'no',
key: 'no',
},
{
title: '伝票番号',
dataIndex: 'pldenpyo_no',
key: 'pldenpyo_no',
},
{
title: '計上日',
dataIndex: 'pldenpyo_ymd',
key: 'pldenpyo_ymd',
},
{
title: '支払日',
dataIndex: 'se_siharai_ymd',
key: 'se_siharai_ymd',
render: (text, record) => this.select(text, record)
},
{
title: '支払先名称',
dataIndex: 'sihask_mei',
key: 'sihask_mei',
},
{
title: '金額',
dataIndex: 'karikata_kin',
key: 'karikata_kin',
},
{
title: '確認',
dataIndex: 'se_sihashu_kbn',
key: 'se_sihashu_kbn',
render: (text, record) => this.select1(text, record)
},
],
loading: false,
rowKey: 'no',
res: {},
list:[],
se_siharai_ymd_list: [],
show: false,
}
}
select(text, record) {
const { se_siharai_ymd_list } = this.state;
return <Select size='small' value={text} onSelect={this.changeSelect.bind(this, record, 'se_siharai_ymd')} style={{width:'100%'}}>
{
se_siharai_ymd_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>
}
select1(text, record) {
const { list } = this.state;
return <Select value={text} onSelect={this.changeSelect.bind(this, record,'se_sihashu_kbn')} size='small' style={{width:'100px'}}>
{
list.map(item => {
return (
<Option key={item.kakunin_COD} value={item.kakunin_COD}>{item.kakunin_MEI}</Option>
)
})
}
</Select>
}
changeSelect(record, key, value) {
let { dataSource } = this.state;
dataSource.forEach(item => {
if (item.no === record.no) {
item[key] = value;
this.setState({ dataSource})
}
})
}
handleChange(name, val) {
this.setState({
[name]: val
})
}
async fnEntry() {
const { se_tyear, se_tmonth, se_tday, se_search_sihashu_kbn,dataSource, res} = this.state;
if (!res.records) {
return
}
const hd_pldenpyo_no = dataSource.map(item => item.hd_pldenpyo_no);
const se_siharai_ymd = dataSource.map(item => item.se_siharai_ymd);
const se_sihashu_kbn = dataSource.map(item => item.se_sihashu_kbn);
const hd_pldenpyo_ymd = dataSource.map(item => item.hd_pldenpyo_ymd);
const params = {
login_ymd: sessionStorage.getItem('login_ymd'),
se_group: '10',
se_tyear: '2013',
se_tmonth: '03',
se_tday: '21',
se_search_sihashu_kbn,
lbl_karikata_kin: res.lbl_karikata_kin || '',
se_siharai_ymd,
se_sihashu_kbn,
hd_pldenpyo_no,
hd_pldenpyo_ymd,
hd_records: res.hd_records
}
try {
const res = await postByJson('s09/a1709_0010r/Entry/doEntry', params);
this.setState({ res, dataSource: res.sList, list: res.list, se_siharai_ymd_list: res.se_siharai_ymd_list, show: false });
} catch (error) {
console.log(error);
}
}
async fnSearch() {
const { se_tyear, se_tmonth, se_tday, se_search_sihashu_kbn} = this.state
const params = {
login_ymd: sessionStorage.getItem('login_ymd'),
se_group: '10',
se_tyear: '2013',
se_tmonth: '03',
se_tday: '21',
se_search_sihashu_kbn,
}
try {
const res = await http.post('s09/a1709_0010r/Entry/doSearch', params);
this.setState({ res, dataSource: res.sList, list: res.list, se_siharai_ymd_list: res.se_siharai_ymd_list, show: true });
} catch (error) {
console.log(error);
}
}
async load() {
try {
const res = await http.post('s09/a1709_0010r/Entry/doIndicate', { login_ymd: sessionStorage.getItem('login_ymd') });
this.setState({ res, se_tyear: res.se_tyear, se_tmonth: res.se_tmonth, se_tday: res.se_tday, se_search_sihashu_kbn: res.se_search_sihashu_kbn});
} catch (error) {
console.log(error);
}
}
summary() {
const { res } = this.state;
return (
<Table.Summary.Row style={{ backgroundColor: '#fafafa' }}>
<Table.Summary.Cell colSpan={5}>
<div style={{ textAlign: 'right' }}><strong>金額計</strong></div>
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
{res.lbl_karikata_kin|| 0}
</Table.Summary.Cell>
<Table.Summary.Cell></Table.Summary.Cell>
</Table.Summary.Row>
)
}
componentDidMount() {
this.load()
}
render() {
const { show, dataSource, loading, columns, rowKey, se_search_sihashu_kbn, res, se_tyear, se_tmonth, se_tday } = this.state;
const { se_tyear_list = [], se_tday_list = [], se_tmonth_list = [], se_sihashu_kbn_list = [], records=0} = res;
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
return (
<div style={{ width: 1000 }}>
<div>91 請求書支払対象</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 0 20px' }}>
<span className="layout_label">支払対象日&nbsp;</span>
<Select size='small' value={se_tyear} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'se_tyear')}>
{
se_tyear_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>&nbsp;
<span style={{ padding: '0 6px ' }}>
<Select size='small' value={se_tmonth} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'se_tmonth')}>
{
se_tmonth_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>
</span>
<span style={{ padding: '0 6px ' }}>
<Select size='small' value={se_tday} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'se_tday')}>
{
se_tday_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>
</span>
<span className="layout_label" style={{ marginLeft: 40 }}>支払種別</span>&nbsp;
<Select
placeholder="Select a option"
onChange={this.handleChange.bind(this, 'se_search_sihashu_kbn')}
style={{ marginRight: 40 }}
value={se_search_sihashu_kbn}
>
{
se_sihashu_kbn_list.map(item => {
return <Option value={item.value} key={item.value}>{item.label}</Option>
})
}
</Select>
<AddButton onClick={this.fnSearch.bind(this)}>一覧表示</AddButton>&emsp;&emsp;
<AddButton onClick={this.fnEntry.bind(this)}>設定</AddButton>
</div>
{
show &&
<div style={{ marginTop: 20 }}>
<div>検索結果:{records}</div>
<Table {...setting} summary={this.summary.bind(this)} ></Table>
</div>
}
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,92 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { http, postByJson } from '$http';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
state = {
se_tyear: '',
se_tmonth: '',
se_pay: '',
}
handleChange(name, val) {
console.log(name, val);
this.setState({
[name]: val
})
}
async load() {
const res = await http.post('s09/a1709_0020p/SearchList/doIndicate', { login_ymd: sessionStorage.getItem('login_ymd')});
this.res = { ...res };
this.setState({ se_tyear: res.se_tyear, se_tmonth: res.se_tmonth, se_pay: res.se_pay})
}
componentDidMount() {
this.load()
}
render() {
const { se_tyear, se_tmonth, se_pay } = this.state;
const { se_tyear_list = [], se_tmonth_list = [], se_pay_list = [] } = this.res||{};
return (
<div style={{ width: 1000 }}>
<div>92 請求書支払明細書</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 0 20px' }}>
<span className="layout_label">銀行振込</span>
<span className="layout_label" style={{ marginLeft: 40 }}>支払対象日</span>&nbsp;
<Select
placeholder="Select a option"
onChange={this.handleChange.bind(this,'se_pay')}
style={{ marginRight: 140,width:110 }}
value={se_pay}
>
{
se_pay_list.map(item => {
return <Option value={item.value} key={item.value}>{item.label}</Option>
})
}
</Select>
<AddButton>三菱UFJ銀行</AddButton>&emsp;
<AddButton>外貨</AddButton>
</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 0 20px' }}>
<span className="layout_label" style={{ marginRight: 40 }}>支払種類別</span>
<span className="layout_label">対象年月&nbsp;</span>
<Select size='small' value={se_tyear} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'se_tyear')}>
{
se_tyear_list.map(item => {
return (
<Option value={item.value} key={item.value}>{item.label}</Option>
)
})
}
</Select>&nbsp;
<span style={{ padding: '0 6px ', marginRight: 40 }}>
<Select size='small' value={se_tmonth} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'se_tmonth')}>
{
se_tmonth_list.map(item => {
return (
<Option value={item.value} key={item.value}>{item.label}</Option>
)
})
}
</Select>
</span>
<AddButton>手形</AddButton>&emsp;
<AddButton>相殺</AddButton>&emsp;
<AddButton>引落</AddButton>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,120 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
import { http } from '$http';
const { Option } = Select
import Detail from './components/0030Detail'
class Home extends Component {
constructor(props) {
super(props);
this.state = {
dataSource: [],
columns: [
{
title: '支払先CD',
dataIndex: 'sihask_COD',
key: 'sihask_COD',
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '支払先名称',
dataIndex: 'sihask_MEI',
key: 'sihask_MEI',
},
{
title: '銀行名称',
dataIndex: 'ginko_MEI',
key: 'ginko_MEI',
},
{
title: '支店名称',
dataIndex: 'ginten_MEI',
key: 'ginten_MEI'
},
{
title: '申請依頼日',
dataIndex: 'torokurq_YMD',
key: 'torokurq_YMD',
},
{
title: '申請依頼者',
dataIndex: 'sinshain_MEI',
key: 'sinshain_MEI',
}
],
loading: false,
rowKey: 'sihask_COD',
showDetail: false,
records: '',
row:{}
}
}
toDetail(text, record) {
this.setState({ row: record, showDetail: true})
}
handleChange(name, val) {
this.setState({
form: {
...this.state.form,
[name]: val
}
})
}
goBack() {
const { showDetail } = this.state;
this.setState({
showDetail: !showDetail
});
}
async load() {
try {
const { slist, records } = await http.post('s09/a1709_0030r/Search/doIndicate', { login_ymd: sessionStorage.getItem('login_ymd') });
this.setState({
records,
dataSource: slist
})
} catch (error) {
console.log(error);
}
}
componentDidMount() {
this.load()
}
render() {
const { dataSource, loading, columns, rowKey, showDetail, records, row } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
return (
<div style={{ width: 1000 }}>
{
showDetail ?
<Detail row={row} goBack={this.goBack.bind(this)} /> :
<>
<div>93 請求書支払先申請依頼確認確認</div>
<div style={{ marginTop: 20 }}>
<div className="layout_label" style={{ marginBottom: 10 }}>検索結果:{records}</div>
<Table {...setting} ></Table>
</div>
</>
}
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,244 @@
import React, { Component } from 'react';
import { Select, Table, Input, InputNumber } from 'antd';
import { http, postByJson } from '$http';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
constructor(props) {
super(props);
this.state = {
se_hanki: '',
se_buka_cod: '1000',
dataSource: [
{ number: '7217', pldenpyo_name: '事務用消耗品' },
{ number: '7218', pldenpyo_name: '消耗器具備品' },
{ number: '7219', pldenpyo_name: '旅費交通費' },
{ number: '7223', pldenpyo_name: '広告宣伝費' },
{ number: '7225', pldenpyo_name: '接待交際費' },
{ number: '7228', pldenpyo_name: '諸会費' },
{ number: '7229', pldenpyo_name: '会議費' },
{ number: '7233', pldenpyo_name: '図書費' },
{ number: '7234', pldenpyo_name: '教育費' },
],
dataSource1: [
{ number: '7814', pldenpyo_name: '消耗器具備品' },
{ number: '7815', pldenpyo_name: '事務用消耗品' },
{ number: '7822', pldenpyo_name: '旅費交通費' },
{ number: '7828', pldenpyo_name: '接待費' },
{ number: '7830', pldenpyo_name: '会議費' },
{ number: '7831', pldenpyo_name: '教育費' },
{ number: '7834', pldenpyo_name: '図書費' },
],
columns: [
{
title: '',
dataIndex: 'number',
key: 'number',
},
{
title: '勘定科目名称',
dataIndex: 'pldenpyo_name',
key: 'pldenpyo_name',
},
{
title: '半期予算',
dataIndex: 'lbl',
key: 'lbl',
},
{
title: '半期予算(変更)',
dataIndex: 'tx',
key: 'tx',
render: (text, record) => <InputNumber value={text} onChange={this.onInput.bind(this, record)} size="small" />,
}
],
columns1: [
{
title: '',
dataIndex: 'number',
key: 'number',
},
{
title: '勘定科目名称',
dataIndex: 'pldenpyo_name',
key: 'pldenpyo_name',
},
{
title: '半期予算',
dataIndex: 'lbl',
key: 'lbl',
},
{
title: '半期予算(変更)',
dataIndex: 'tx',
key: 'tx',
render: (text, record) => <InputNumber value={text} onChange={this.onInput1.bind(this, record)} size="small" />,
}
],
loading: false,
rowKey: 'number',
res: {}
}
}
onInput(record, value) {
let { dataSource } = this.state;
dataSource.forEach(item => {
if (item.number === record.number) {
item.tx = value
}
})
this.setState({ dataSource})
}
onInput1(record, value) {
let { dataSource1 } = this.state;
dataSource1.forEach(item => {
if (item.number === record.number) {
item.tx = value
}
})
this.setState({ dataSource1 })
}
handleChange(val) {
this.setState({
se_hanki: val
})
}
onGenderChange(val) {
this.setState({
se_buka_cod: val,
})
}
async fnCSV() {
window.open('http://222k09y748.iask.in/s09/a1709_0040r/Entry/doCsv')
}
async fnEntry() {
const { res, dataSource1, dataSource } = this.state;
let params = {
login_Ymd: sessionStorage.getItem('login_ymd'),
hd_hanki: res.hd_hanki,
se_hanki: res.se_hanki,
se_buka_cod: res.se_buka_cod,
hd_buka_cod: res.hd_buka_cod,
}
dataSource.forEach(item => {
if (!item.tx) return;
params['tx' + item.number] = item.tx+''
})
dataSource1.forEach(item => {
if (!item.tx) return;
params['tx' + item.number] = item.tx + ''
})
await postByJson('s09/a1709_0040r/Entry/doEntry', params);
}
async fnSearch() {
try {
const { se_hanki, se_buka_cod } = this.state;
const params = { se_hanki, se_buka_cod }
const res = await postByJson('s09/a1709_0040r/Entry/doSearch', params);
const dataSource = [
{ number: '7217', pldenpyo_name: '事務用消耗品', lbl: res.lbl_7217, tx: res.tx_7217 },
{ number: '7218', pldenpyo_name: '消耗器具備品', lbl: res.lbl_7218, tx: res.tx_7218 },
{ number: '7219', pldenpyo_name: '旅費交通費', lbl: res.lbl_7219, tx: res.tx_7219 },
{ number: '7223', pldenpyo_name: '広告宣伝費', lbl: res.lbl_7223, tx: res.tx_7223 },
{ number: '7225', pldenpyo_name: '接待交際費', lbl: res.lbl_7225, tx: res.tx_7225 },
{ number: '7228', pldenpyo_name: '諸会費', lbl: res.lbl_7228, tx: res.tx_7228 },
{ number: '7229', pldenpyo_name: '会議費', lbl: res.lbl_7229, tx: res.tx_7229 },
{ number: '7233', pldenpyo_name: '図書費', lbl: res.lbl_7233, tx: res.tx_7233 },
{ number: '7234', pldenpyo_name: '教育費', lbl: res.lbl_7234, tx: res.tx_7234 },
]
const dataSource1 = [
{ number: '7814', pldenpyo_name: '消耗器具備品', lbl: res.lbl_7814, tx: res.tx_7814 },
{ number: '7815', pldenpyo_name: '事務用消耗品', lbl: res.lbl_7815, tx: res.tx_7815 },
{ number: '7822', pldenpyo_name: '旅費交通費', lbl: res.lbl_7822, tx: res.tx_7822 },
{ number: '7828', pldenpyo_name: '接待費', lbl: res.lbl_7828, tx: res.tx_7828 },
{ number: '7830', pldenpyo_name: '会議費', lbl: res.lbl_7830, tx: res.tx_7830 },
{ number: '7831', pldenpyo_name: '教育費', lbl: res.lbl_7831, tx: res.tx_7831 },
{ number: '7834', pldenpyo_name: '図書費', lbl: res.lbl_7834, tx: res.tx_7834 },
]
this.setState({ res, dataSource, dataSource1})
} catch (error) {
}
}
async load() {
try {
const res = await http.post('s09/a1709_0040r/Entry/doIndicate', { login_Ymd: sessionStorage.getItem('login_ymd') })
this.setState({ res, se_hanki: res.se_hanki })
} catch (error) {
console.log(error);
}
}
componentDidMount() {
this.load()
}
render() {
const { dataSource, dataSource1, loading, columns, columns1, rowKey, se_buka_cod, se_hanki, res } = this.state
const { se_buka_cod_list = [], lbl_bukake_mei="" } = res
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
const setting1 = {
dataSource: dataSource1,
columns: columns1,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
return (
<div style={{ width: 1000 }}>
<div>94 半期予算データ入力</div>
<div style={{ display: 'flex', alignItems: 'center', margin: '20px 0 0 20px' }}>
<span className="layout_label">対象半期</span>
<Select size='small' value={se_hanki} style={{ width: 70 }} onChange={this.handleChange.bind(this)}>
<Option value="0">上期</Option>
<Option value="1">下期</Option>
</Select>
<span className="layout_label" style={{ marginLeft: 40 }}>対象部課</span>
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this)}
style={{ marginRight: 40 }}
value={se_buka_cod}
>
{
se_buka_cod_list.map(item => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
<AddButton onClick={this.fnSearch.bind(this)}>呼出</AddButton>&emsp;&emsp;
<AddButton onClick={this.fnEntry.bind(this)}>更新</AddButton>&emsp;&emsp;
<AddButton onClick={this.fnCSV.bind(this)}>CSV</AddButton>
</div>
<div style={{ marginTop: 50 }}>
<span className="layout_label">部門名称{lbl_bukake_mei}</span>
<div style={{ display: "flex" }}>
<Table {...setting} ></Table>&emsp;&emsp;&emsp;&emsp;
<Table {...setting1} ></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,68 @@
import React, { Component } from 'react';
import { Select, Table, Input } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
class Home extends Component {
state= {
selectValue: '1000'
}
onGenderChange() {
}
render() {
const { selectValue } = this.state;
const options = [
{ name: '1000 本社(役員)', value: '1000' }
]
return (
<div style={{ width: 1000 }}>
<div>95 全部門費用実績明細 (年度)</div>
<div style={{ display: 'flex', alignItems: 'center', margin: '20px 0 0 20px' }}>
<span className="layout_label">対象年度</span>
<Input size="small" disabled style={{ width: 60 }} />&nbsp;年度分
<span className="layout_label" style={{ marginLeft: 40 }}>対象部課</span>
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this)}
style={{ marginRight: 40 }}
value={selectValue}
>
{
options.map(item => {
return <Option key={item.value} value={item.value}>{item.name}</Option>
})
}
</Select>
<AddButton>CSV</AddButton>&emsp;&emsp;
<AddButton>印刷</AddButton>
</div>
<div style={{ display: 'flex', alignItems: 'center', margin: '20px 0 0 20px' }}>
<span className="layout_label">対象年月</span>
<Input size="small" disabled style={{ width: 60 }} />&nbsp;&nbsp;
<Input size="small" disabled style={{ width: 40 }} />&nbsp;月分
<span className="layout_label" style={{ marginLeft: 40 }}>対象勘定科目</span>
<Select
placeholder="Select a option"
onChange={this.onGenderChange.bind(this)}
style={{ marginRight: 40 }}
value={selectValue}
>
{
options.map(item => {
return <Option key={item.value} value={item.value}>{item.name}</Option>
})
}
</Select>
<AddButton>CSV</AddButton>&emsp;&emsp;
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,127 @@
import React, { Component } from 'react';
import { Select, Table, Input } from 'antd';
import { AddButton } from '$button'
import { http } from '$http';
const { Option } = Select
class Home extends Component {
state = {
dataSource: [],
columns: [
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
align: 'center'
},
{
title: '社員',
dataIndex: 'shain_NO',
key: 'shain_NO',
align: 'center'
},
{
title: '社員名称',
dataIndex: 'shain_MEI',
key: 'shain_MEI',
align: 'center'
},
{
title: '摘要',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI',
align: 'center',
width: 300
},
{
title: 'オーダーNo',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
align: 'center'
},
{
title: '伝票日付',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
align: 'center'
},
{
title: '金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
align: 'center'
},
],
loading: false,
hd_records: '',
lbl_karikata_kin: ''
}
async load() {
try {
const { slist, hd_records, lbl_karikata_kin } = await http.post('s09/a1709_0060p/search/doIndicate', { login_ymd: sessionStorage.getItem('login_ymd') });
this.setState({
hd_records,
dataSource: slist,
lbl_karikata_kin
})
} catch (error) {
console.log(error);
}
}
componentDidMount() {
this.load()
}
summary = (pageData ) => {
console.log(pageData);
const { lbl_karikata_kin } = this.state
return (
<>
<Table.Summary.Row style={{ backgroundColor:'#fafafa'}}>
<Table.Summary.Cell colSpan={6}>
<div style={{textAlign:'right'}}><strong>社員計</strong></div>
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
<strong>{lbl_karikata_kin}</strong>
</Table.Summary.Cell>
</Table.Summary.Row>
<Table.Summary.Row style={{ backgroundColor: '#fafafa' }}>
<Table.Summary.Cell colSpan={6}>
<div style={{ textAlign: 'right' }}><strong>金額計</strong></div>
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
<strong>{lbl_karikata_kin}</strong>
</Table.Summary.Cell>
</Table.Summary.Row>
</>
)
}
render() {
const { hd_records, dataSource, columns, loading } = this.state;
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: 'pldenpyo_NO',
pagination: false,
size: "small",
bordered: true
};
return (
<div style={{ width: 1000 }}>
<div>96 全部門概算リスト</div>
<div style={{padding:'10px 0 0 10px'}}><AddButton>印刷</AddButton></div>
<div style={{ marginTop: 50 }}>
<span className="layout_label">検索結果:{hd_records}</span>
<div>
<Table {...setting} summary={this.summary.bind(this)}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,178 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
import { http } from '$http';
const { Option } = Select
class Home extends Component {
constructor(props) {
super(props);
this.state = {
year: '',
months: '',
value: '000',
dataSource: [],
columns: [
{
title: '種別',
dataIndex: 'dendtshu_MEI',
key: 'dendtshu_MEI',
},
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
},
{
title: '社員名称',
dataIndex: 'shain_MEI',
key: 'shain_MEI',
},
{
title: '部課',
dataIndex: 'buka_COD',
key: 'buka_COD'
},
{
title: '伝票日付',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
},
{
title: '支払日',
dataIndex: 'sihairai_YMD',
key: 'sihairai_YMD',
},
{
title: '借方金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
},
{
title: 'オーダーNo',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
},
{
title: '摘要',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI'
},
{
title: '承認者',
dataIndex: 'sninsha_MEI',
key: 'sninsha_MEI',
},
],
loading: false,
rowKey: 'pldenpyo_NO',
res: {}
}
}
handleChange(name, val) {
this.setState({
[name]: val
})
}
onGenderChange() {
}
async fnDisp() {
try {
const { year, months, value } = this.state;
const params = {
login_ymd: sessionStorage.getItem('login_ymd'),
tyear: year,
tmonth: months,
status: value
}
const res = await http.post('s09/a1709_0070p/SearchList/doSearch', params);
this.setState({ res, year: res.se_tyear, months: res.se_tmonth, dataSource: res.slist })
} catch (error) {
console.log(error);
}
};
async load() {
try {
const { year, months, value } = this.state;
const params = {
login_ymd: sessionStorage.getItem('login_ymd'),
tyear: year,
tmonth: months,
status: value
}
const res = await http.post('s09/a1709_0070p/SearchList/doIndicate', params);
this.setState({ res, year: res.se_tyear, months: res.se_tmonth })
} catch (error) {
console.log(error);
}
}
componentDidMount() {
this.load()
}
render() {
const date = new Date();
const { dataSource, loading, columns, rowKey, value, res } = this.state;
const { se_tyear_list = [], se_tmonth_list = [], se_status_list = [] } = res;
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
return (
<div style={{ width: 1000 }}>
<div>97 全部門承認警告リスト</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 0 20px' }}>
対象半期&nbsp;
<Select size='small' defaultValue={date.getFullYear()} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'year')}>
{
se_tyear_list &&se_tyear_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>&nbsp;
<span style={{ padding: '0 6px ' }}>
<Select size='small' defaultValue={date.getMonth() + 1} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'months')}>
{
se_tmonth_list && se_tmonth_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>
</span>
<span style={{ marginLeft: 40 }}>状態</span>&nbsp;
<Select
onChange={this.onGenderChange.bind(this)}
style={{ marginRight: 40 }}
value={value}
>
{
se_status_list && se_status_list.map(item => {
return <Option key={item.value} value={item.value}>{item.label}</Option>
})
}
</Select>
<AddButton onClick={this.fnDisp.bind(this)}>一覧</AddButton>&emsp;&emsp;
<AddButton>印刷</AddButton>
</div>
<div style={{ marginTop: 50 }}>
<Table {...setting} ></Table>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,154 @@
import React, { Component } from 'react';
import { Select, Table, Radio } from 'antd';
import { AddButton } from '$button'
import { http } from '$http';
const { Option } = Select
import './index.scss'
class Home extends Component {
state = {
slist1: [],
slist2: [],
columns: [
{
title: '',
dataIndex: 'kamoku_COD',
key: 'kamoku_COD',
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '勘定科目名称',
dataIndex: 'kamoku_MEI',
key: 'kamoku_MEI',
},
{
title: '期予算',
dataIndex: 'kiyosan',
key: 'kiyosan',
},
{
title: '当月発生累計',
dataIndex: 'tougetu',
key: 'tougetu',
},
{
title: '実績累計',
dataIndex: 'jiseki',
key: 'jiseki',
},
{
title: '残予算',
dataIndex: 'zanyosan',
key: 'zanyosan',
},
{
title: '費消率',
dataIndex: 'hiritu',
key: 'hiritu',
}
],
loading: false,
rowKey: 'kamoku_COD',
activeValue: '',
depData: [],
res: {}
}
clickDep(item) {
this.setState({ activeValue: item.value });
}
toDetail = (text, record) => {
// this.setState({ showDetail: true, row: record })
}
async load() {
try {
const res = await http.post('s09/a1709_0080s/search/doIndicate', { login_Ymd: sessionStorage.getItem('login_ymd')});
this.setState({ res, depData: res.se_buka_cod_list, slist1: res.slist1, slist2: res.slist2, activeValue: res.hd_buka_list })
} catch (error) {
console.log(error);
}
}
componentDidMount() {
this.load()
}
summary = (pageData) => {
const { jiseki_kei1, zanyosan_kei1, hiritu_kei1} = this.state.res;
return (
<Table.Summary.Row style={{ backgroundColor: '#fafafa' }}>
<Table.Summary.Cell colSpan={4}>
<div style={{ textAlign: 'right' }}><strong>総計</strong></div>
</Table.Summary.Cell>
<Table.Summary.Cell >{jiseki_kei1}</Table.Summary.Cell>
<Table.Summary.Cell >{zanyosan_kei1}</Table.Summary.Cell>
<Table.Summary.Cell >{hiritu_kei1}</Table.Summary.Cell>
</Table.Summary.Row>
)
}
summary1 = (pageData) => {
const { jiseki_kei2, zanyosan_kei2, hiritu_kei2 } = this.state.res;
return (
<Table.Summary.Row style={{ backgroundColor: '#fafafa' }}>
<Table.Summary.Cell colSpan={4}>
<div style={{ textAlign: 'right' }}><strong>総計</strong></div>
</Table.Summary.Cell>
<Table.Summary.Cell >{jiseki_kei2}</Table.Summary.Cell>
<Table.Summary.Cell >{zanyosan_kei2}</Table.Summary.Cell>
<Table.Summary.Cell >{hiritu_kei2}</Table.Summary.Cell>
</Table.Summary.Row>
)
}
render() {
const { slist1, slist2, loading, columns, rowKey, depData, res, activeValue } = this.state;
const { buka_list } = res
const setting = {
dataSource: slist1,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
summary: this.summary
};
const setting1 = {
dataSource: slist2,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
return (
<div className="sw_a1709_0080">
<div>98 予算実績累計</div>
<div style={{ padding: 20 }}>
<div className="sw_a1709_0080_header">
<span>対象部門 &emsp;</span>
<div className="sw_a1709_0080_dep">
{
depData.map(item => {
return <div className={activeValue === item.value ? 'active' : ''} key={item.value} onClick={this.clickDep.bind(this, item)}>{item.label}</div>
})
}
</div>
&emsp;<AddButton>選択</AddButton>
</div>
<div style={{ marginTop: 20 }}>
部門名称{buka_list}
<Table {...setting} summary={this.summary.bind(this)}></Table>
<br/>
<Table {...setting1} summary={this.summary1.bind(this)}></Table>
</div>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,201 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
const { Option } = Select
import { http } from '$http';
class Home extends Component {
constructor(props) {
super(props);
this.state = {
se_tyear: '',
se_tmonth: '',
se_tday: '',
dataSource: [],
columns: [
{
title: 'No',
dataIndex: 'no',
key: 'no',
},
{
title: '伝票番号',
dataIndex: 'pldenpyo_no',
key: 'pldenpyo_no',
},
{
title: '計上日',
dataIndex: 'pldenpyo_ymd',
key: 'pldenpyo_ymd',
},
{
title: '支払日',
dataIndex: 'sihairai_ymd',
key: 'sihairai_ymd'
},
{
title: '支払先名称',
dataIndex: 'sihask_mei',
key: 'sihask_mei',
},
{
title: '金額',
dataIndex: 'karikata_kin',
key: 'karikata_kin',
},
{
title: '確認',
dataIndex: 'sihashu_kbn',
key: 'sihashu_kbn',
},
{
title: '手数料',
dataIndex: 'tesuryo_kin',
key: 'tesuryo_kin',
},
{
title: '支払金額',
dataIndex: 'shiharai_kin',
key: 'shiharai_kin'
}
],
loading: false,
res: {},
}
}
handleChange(name, val) {
this.setState({
[name]: val
})
}
onGenderChange() {
}
toDetail() {
}
async fnDisp() {
try {
const { se_tyear, se_tmonth, se_tday } = this.state;
const params = {
login_ymd: sessionStorage.getItem('login_ymd'),
se_tyear: '2013',
se_tmonth: '09',
se_tday: '10'
}
this.setState({ loading:true})
const res = await http.post('s09/a1709_0090s/search/doSearch', params);
const dataSource = res.slist.map(item => {
Object.keys(item).forEach(key => {
if (item[key] === '&nbsp;') {
item[key] = ''
}
})
return item
})
this.setState({ res, se_tyear: res.se_tyear, se_tmonth: res.se_tmonth, se_tday: res.se_tday, dataSource, loading: false })
} catch (error) {
console.log(error);
}
};
async load() {
try {
const params = {
login_ymd: sessionStorage.getItem('login_ymd')
}
const res = await http.post('s09/a1709_0090s/search/doIndicate', params);
this.setState({ res, se_tyear: res.se_tyear, se_tmonth: res.se_tmonth, se_tday: res.se_tday })
} catch (error) {
console.log(error);
}
}
componentDidMount() {
this.load()
}
summary = (pageData) => {
const { lbl_karikata_kin=0, lbl_tesuryo_kin=0, lbl_shiharai_kin=0 } = this.state.res
return (
<>
<Table.Summary.Row style={{ backgroundColor: '#fafafa' }}>
<Table.Summary.Cell colSpan={5}>
<div style={{ textAlign: 'right' }}><strong>金額計</strong></div>
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
<strong>{lbl_karikata_kin}</strong>
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
<strong></strong>
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
<strong>{lbl_tesuryo_kin}</strong>
</Table.Summary.Cell>
<Table.Summary.Cell style={{ textAlign: 'center' }}>
<strong>{lbl_shiharai_kin}</strong>
</Table.Summary.Cell>
</Table.Summary.Row>
</>
)
}
render() {
const { dataSource, loading, columns, se_tyear, se_tmonth, se_tday, res, } = this.state;
const { se_tyear_list = [], se_tmonth_list = [], se_tday_list = [], records=0 } = res
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
pagination: false,
size: "small",
bordered: true,
};
return (
<div style={{ width: 1000 }}>
<div>99 請求書支払合計</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 0 20px' }}>
支払対象日&nbsp;
<Select size='small' value={se_tyear} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'se_tyear')}>
{
se_tyear_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>&nbsp;
<span style={{ padding: '0 6px ' }}>
<Select size='small' value={se_tmonth} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'se_tmonth')}>
{
se_tmonth_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>
</span>
<span style={{ padding: '0 6px ',marginRight:50 }}>
<Select size='small' value={se_tday} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'se_tday')}>
{
se_tday_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>
</span>
<AddButton onClick={this.fnDisp.bind(this)}>一覧表示</AddButton>&emsp;&emsp;
<AddButton>印刷</AddButton>
</div>
<div style={{ marginTop: 50 }}>
<div className="layout_label">検索結果:{records}</div>
<Table {...setting} summary={this.summary.bind(this)} rowKey={(record, index) => index+1}></Table>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,232 @@
import React, { Component } from 'react';
import { Select, Table, Input } from 'antd';
import { AddButton } from '$button';
import { http, postByJson } from '$http';
import './index.scss'
const { Option } = Select
const options = [
{ name: '', value: '' },
{ name: '部課', value: '部課' },
{ name: '科目', value: '科目' },
{ name: '科目', value: '科目' },
{ name: 'オーダーNo', value: 'オーダーNo' },
{ name: '借方金額', value: '借方金額' },
{ name: '貸方金額', value: '貸方金額' },
{ name: '伝票日付', value: '伝票日付' },
{ name: '伝票番号', value: '伝票番号' },
{ name: '摘要', value: '摘要' },
{ name: '代表支払先', value: '代表支払先' },
{ name: '客先名称', value: '客先名称' },
]
class Home extends Component {
state = {
se_condition1: '',
se_condition2: '',
se_condition3: '',
tx_condition1: '',
tx_condition2: '',
tx_condition3: '',
loading: false,
dataSource: [],
records: 0,
columns: [
{
title: '部課',
dataIndex: 'buka_cod',
key: 'buka_cod',
align: 'center'
},
{
title: '科目',
dataIndex: 'kamoku_cod',
key: 'kamoku_cod',
align: 'center'
},
{
title: '得意先',
dataIndex: 'tokui_cod',
key: 'tokui_cod',
align: 'center'
},
{
title: 'オーダーNo',
dataIndex: 'seizo_ban',
key: 'seizo_ban',
align: 'center',
},
{
title: '借方金額',
dataIndex: 'karikata_kin',
key: 'karikata_kin',
align: 'center'
},
{
title: '貸方金額',
dataIndex: 'kasikata_kin',
key: 'kasikata_kin',
align: 'center'
},
{
title: '伝票日付',
dataIndex: 'denpyo_ymd',
key: 'denpyo_ymd',
align: 'center'
},
{
title: '伝票番号',
dataIndex: 'denpyo_no',
key: 'denpyo_no',
align: 'center'
},
{
title: '摘要',
dataIndex: 'tekiyo',
key: 'tekiyo',
align: 'center'
},
{
title: '代表支払先',
dataIndex: 'torihkpl_mei',
key: 'torihkpl_mei',
align: 'center'
},
{
title: '客先名称',
dataIndex: 'kyakupl_mei',
key: 'kyakupl_mei',
align: 'center'
},
]
}
onGenderChange(name, value) {
this.setState({ [name]: value})
}
changeInput(name, { target: { value }}) {
this.setState({ [name]: value })
}
async fnSearchList () {
const { se_condition1, se_condition2, se_condition3, tx_condition1, tx_condition2, tx_condition3 } = this.state;
const params = {
se_condition1, se_condition2, se_condition3,
tx_condition1, tx_condition2, tx_condition3
}
try {
const { records, slist} = await postByJson('s09/a1709_0120s/SearchList/doSearch', params)
this.setState({ records, dataSource: slist})
} catch (error) {
}
// await http.request({
// url: 's09/a1709_0120s/SearchList/doSearch',
// method: 'post',
// data: params,
// transformRequest: [function (data) {
// data = JSON.stringify(data)
// return data
// }],
// headers: {
// 'Content-Type': 'application/json;charset=UTF-8',
// 'Accept':'text/plain'
// }
// })
}
componentDidMount() {
}
render() {
const { se_condition1, se_condition2, se_condition3, tx_condition1, tx_condition2, tx_condition3, dataSource, columns, loading, records } = this.state;
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: 'pldenpyo_NO',
pagination: false,
size: "small",
bordered: true
};
return (
<div className="sw_a1709_0120" style={{ width: 1000 }}>
<div>9C データ検索</div>
<div className="sw_a1709_0120_search">
<div className="layout_label">検索対象</div>
<div style={{marginLeft:80}}>
<div>
<span className="layout_label">条件1</span>
<Select
size="small"
placeholder="Select a option"
onChange={this.onGenderChange.bind(this, 'se_condition1')}
style={{ marginRight: 20,width:100 }}
value={se_condition1}
>
{
options.map((item, i) => {
return <Option key={i} value={item.value}>{item.name}</Option>
})
}
</Select>
<span className="layout_label">値1</span>
<Input size="small" onChange={this.changeInput.bind(this,'tx_condition1')} disabled={!se_condition1} value={tx_condition1} style={{width:250}} />
</div>
<div style={{margin: '10px 0px'}}>
<span className="layout_label">条件2</span>
<Select
size="small"
placeholder="Select a option"
onChange={this.onGenderChange.bind(this,'se_condition2')}
style={{ marginRight: 20, width: 100 }}
value={se_condition2}
>
{
options.map((item, i) => {
return <Option key={i} value={item.value}>{item.name}</Option>
})
}
</Select>
<span className="layout_label">値2</span>
<Input size="small" onChange={this.changeInput.bind(this, 'tx_condition2')} disabled={!se_condition2} value={tx_condition2} style={{ width: 250 }} />
</div>
<div>
<span className="layout_label">条件3</span>
<Select
size="small"
placeholder="Select a option"
onChange={this.onGenderChange.bind(this,'se_condition3')}
style={{ marginRight: 20, width: 100 }}
value={se_condition3}
>
{
options.map((item, i) => {
return <Option key={i} value={item.value}>{item.name}</Option>
})
}
</Select>
<span className="layout_label">値3</span>
<Input size="small" onChange={this.changeInput.bind(this, 'tx_condition3')} disabled={!se_condition3} value={tx_condition3} style={{ width: 250 }} />
</div>
</div>
<div style={{marginLeft:170}}>
<AddButton onClick={this.fnSearchList.bind(this)}>検索</AddButton>&emsp;
<AddButton>CSV</AddButton>
</div>
</div>
<div style={{ marginTop: 20 }}>
<span className="layout_label">検索結果:{records}</span>
{
records === 1000 &&
<span style={{color:'red',marginLeft:10}}>最大表示件数1000件を超えました</span>
}
<Table {...setting} ></Table>
</div>
</div>
)
}
}
export default Home

View File

@@ -0,0 +1,157 @@
import React, { Component } from 'react';
import { Select, Table } from 'antd';
import { AddButton } from '$button'
import { http } from '$http';
const { Option } = Select
class Home extends Component {
constructor(props) {
super(props);
this.state = {
se_year_list: [],
se_month_list: [],
se_year: '',
se_month: '',
dataSource: [],
columns: [
{
title: '種別',
dataIndex: 'status',
key: 'status',
},
{
title: '伝票番号',
dataIndex: 'pldenpyo_NO',
key: 'pldenpyo_NO',
render: (text, record) => <a onClick={this.toDetail.bind(this, text, record)}>{text}</a>
},
{
title: '社員名称',
dataIndex: 'status',
key: 'status',
},
{
title: '部課',
dataIndex: 'status',
key: 'status'
},
{
title: '伝票日付',
dataIndex: 'pldenpyo_YMD',
key: 'pldenpyo_YMD',
},
{
title: '明細',
dataIndex: 'tekiyo_MEI',
key: 'tekiyo_MEI',
},
{
title: '支払日',
dataIndex: 'seizo_BAN',
key: 'seizo_BAN',
},
{
title: '借方金額',
dataIndex: 'karikata_KIN',
key: 'karikata_KIN',
},
{
title: 'オーダーNo',
dataIndex: 'status',
key: 'status'
},
{
title: '摘要',
dataIndex: 'status',
key: 'status'
},
{
title: '状態',
dataIndex: 'status',
key: 'status'
},
{
title: '承認者',
dataIndex: 'status',
key: 'status'
}
],
loading: false,
rowKey: 'pldenpyo_NO',
}
}
handleChange(name, val) {
this.setState({
[name]: val
})
}
onGenderChange() {
}
async load() {
try {
const { se_year_list, se_month_list, se_year, se_month } = await http.post('s09/a1709_0130s/Search/doIndicate', { login_ymd: sessionStorage.getItem('login_ymd') });
this.setState({
se_year_list,
se_month_list,
se_year,
se_month
})
} catch (error) {
console.log(error);
}
}
componentDidMount() {
this.load()
}
render() {
const { dataSource, loading, columns, rowKey, se_year_list, se_month_list, se_year, se_month } = this.state
const setting = {
dataSource: dataSource,
columns: columns,
loading: loading,
rowKey: rowKey,
pagination: false,
size: "small",
bordered: true,
};
return (
<div style={{ width: 1000 }}>
<div>9D 同一金額警告リスト</div>
<div style={{ display: 'flex', alignContent: 'center', margin: '20px 0 0 20px' }}>
対象年月&nbsp;
<Select size='small' value={se_year} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'year')}>
{
se_year_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>&nbsp;
<span style={{ padding: '0 6px ' }}>
<Select size='small' value={se_month} style={{ width: 70 }} onChange={this.handleChange.bind(this, 'months')}>
{
se_month_list.map(item => {
return (
<Option key={item.value} value={item.value}>{item.label}</Option>
)
})
}
</Select>
</span>
<AddButton>検索</AddButton>
</div>
<div style={{ marginTop: 50 }}>
{se_year}-{se_month}月分
<Table {...setting} ></Table>
</div>
</div>
)
}
}
export default Home

Some files were not shown because too many files have changed in this diff Show More