changeApply.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. import React, { Component } from "react";
  2. import { Form, Select, Input, Button, message } from "antd";
  3. import $ from "jquery/src/ajax";
  4. import PicturesWall from "./picturesWall";
  5. import Rizhi from "./rizhi";
  6. import {moneyVerify} from "@/tools.js"
  7. const FormItem = Form.Item;
  8. const formItemLayout = {
  9. labelCol: { span: 8 },
  10. wrapperCol: { span: 14 }
  11. };
  12. class ChangeApply extends Component {
  13. constructor(props) {
  14. super(props);
  15. this.state = {
  16. data: {},
  17. voucherUrl: [],
  18. dataSource: []
  19. };
  20. this.departmentList = this.departmentList.bind(this);
  21. this.changeApply = this.changeApply.bind(this);
  22. this.getVoucherUrl = this.getVoucherUrl.bind(this);
  23. }
  24. componentDidMount() {
  25. // console.log("看一下",this.props);
  26. }
  27. //变更申请
  28. changeApply() {
  29. if(moneyVerify(this.state.data.totalAmount)) {
  30. return false
  31. }
  32. if (moneyVerify(this.state.data.settlementAmount)) {
  33. return false;
  34. }
  35. if(moneyVerify(this.state.data.changeAmount)) {
  36. return false
  37. }
  38. let theorgCodeUrl = [];
  39. if (this.state.voucherUrl.length) {
  40. let picArr = [];
  41. this.state.voucherUrl.map(function(item) {
  42. if (item.response && item.response.data && item.response.data.length) {
  43. picArr.push(item.response.data);
  44. }
  45. });
  46. theorgCodeUrl = picArr.join(",");
  47. }
  48. Object.assign(this.state.data, {
  49. id: this.props.orderData.id, //订单编号
  50. changeType: 0,
  51. voucherUrl: theorgCodeUrl.length ? theorgCodeUrl : "",
  52. consultantExamine: [],
  53. managerExamine: []
  54. });
  55. $.ajax({
  56. method: "post",
  57. dataType: "json",
  58. crossDomain: false,
  59. url: globalConfig.context + "/api/admin/orderChange/updateOrderChange",
  60. data: this.state.data
  61. }).done(
  62. function(data) {
  63. this.setState({
  64. loading: false
  65. });
  66. if (!data.error.length) {
  67. message.success("变更成功!");
  68. this.props.onCancel();
  69. } else {
  70. message.warning(data.error[0].message);
  71. }
  72. }.bind(this)
  73. );
  74. }
  75. // componentDidMount() {
  76. // window.setTimeout(() => {
  77. // this.loadDataChange();
  78. // }, 10);
  79. // }
  80. // loadDataChange() {
  81. // console.log(this.props);
  82. // $.ajax({
  83. // method: "get",
  84. // dataType: "json",
  85. // crossDomain: false,
  86. // url: globalConfig.context + "/api/admin/orderChange/orderChangeLogList",
  87. // data: {
  88. // changeId: this.props.data.id
  89. // },
  90. // success: function(data) {
  91. // if (data.error.length || data.data.list == "") {
  92. // if (data.error && data.error.length) {
  93. // message.warning(data.error[0].message);
  94. // }
  95. // } else {
  96. // this.setState({
  97. // dataSource: data.data
  98. // });
  99. // }
  100. // }.bind(this)
  101. // });
  102. // }
  103. departmentList() {
  104. $.ajax({
  105. method: "get",
  106. dataType: "json",
  107. crossDomain: false,
  108. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  109. data: {},
  110. success: function(data) {
  111. let thedata = data.data;
  112. let theArr = [];
  113. if (!thedata) {
  114. if (data.error && data.error.length) {
  115. message.warning(data.error[0].message);
  116. }
  117. } else {
  118. thedata.map(function(item, index) {
  119. theArr.push({
  120. key: index,
  121. name: item.name,
  122. id: item.id
  123. });
  124. });
  125. }
  126. this.setState({
  127. departmentArr: theArr
  128. });
  129. }.bind(this)
  130. });
  131. }
  132. getVoucherUrl(e) {
  133. this.setState({
  134. voucherUrl: e
  135. });
  136. }
  137. componentWillReceiveProps(nextProps) {
  138. this.setState({
  139. data: nextProps.orderData,
  140. voucherUrl: nextProps.voucherUrl
  141. });
  142. }
  143. componentWillMount() {
  144. this.departmentList();
  145. }
  146. render() {
  147. const { TextArea } = Input;
  148. const data = this.state.data;
  149. let departmentArr = this.state.departmentArr || [];
  150. return (
  151. <div>
  152. <div className="clearfix">
  153. <FormItem className="half-item" {...formItemLayout} label="客户名称">
  154. <span>{data.userName}</span>
  155. </FormItem>
  156. </div>
  157. <div className="clearfix">
  158. <FormItem className="half-item" {...formItemLayout} label="合同编号">
  159. <span>{data.contractNo}</span>
  160. </FormItem>
  161. </div>
  162. <div className="clearfix">
  163. <FormItem
  164. className="half-item"
  165. {...formItemLayout}
  166. label="申请变更部门"
  167. >
  168. <Select
  169. placeholder="请输入变更部门"
  170. style={{ width: 240 }}
  171. value={data.depName}
  172. onChange={e => {
  173. let data = this.state.data;
  174. data.depName = e;
  175. this.setState({ data });
  176. }}
  177. >
  178. {departmentArr.map(function(item) {
  179. return (
  180. <Select.Option key={item.id} value={item.name}>
  181. {item.name}
  182. </Select.Option>
  183. );
  184. })}
  185. </Select>
  186. </FormItem>
  187. <FormItem className="half-item" {...formItemLayout} label="申请人">
  188. <Input
  189. placeholder="请输入申请人"
  190. ref="signTotalAmount"
  191. value={data.applicant}
  192. onChange={e => {
  193. let data = this.state.data;
  194. data.applicant = e.target.value;
  195. this.setState({ data });
  196. }}
  197. style={{ width: "240px" }}
  198. />
  199. </FormItem>
  200. </div>
  201. <div className="clearfix">
  202. <FormItem
  203. labelCol={{ span: 4 }}
  204. wrapperCol={{ span: 18 }}
  205. label="变更类型"
  206. >
  207. <Select
  208. placeholder="选择合同变更类型"
  209. style={{ width: 200 }}
  210. onChange={e => {
  211. let data = this.state.data;
  212. data.type = e;
  213. this.setState({ data });
  214. }}
  215. value={data.type}
  216. >
  217. <Option value={0}>退单退款</Option>
  218. <Option value={1}>项目及金额变更</Option>
  219. <Option value={2}>仅项目变更</Option>
  220. <Option value={3}>仅金额变更</Option>
  221. <Option value={4}>重报</Option>
  222. <Option value={5}>赠送</Option>
  223. </Select>
  224. </FormItem>
  225. </div>
  226. <div className="clearfix">
  227. <FormItem
  228. labelCol={{ span: 4 }}
  229. wrapperCol={{ span: 18 }}
  230. label="合同额(万元)"
  231. >
  232. <Input
  233. placeholder="请输入合同额"
  234. ref="signTotalAmount"
  235. value={data.totalAmount}
  236. onChange={e => {
  237. let data = this.state.data;
  238. data.totalAmount = e.target.value;
  239. this.setState({ data });
  240. }}
  241. style={{ width: "240px" }}
  242. />
  243. </FormItem>
  244. <FormItem
  245. labelCol={{ span: 4 }}
  246. wrapperCol={{ span: 18 }}
  247. label="已收款(万元)"
  248. >
  249. <Input
  250. placeholder="请输入已收款"
  251. ref="signTotalAmount"
  252. value={data.settlementAmount}
  253. onChange={e => {
  254. let data = this.state.data;
  255. data.settlementAmount = e.target.value;
  256. this.setState({ data });
  257. }}
  258. style={{ width: "240px" }}
  259. />
  260. </FormItem>
  261. <FormItem
  262. labelCol={{ span: 4 }}
  263. wrapperCol={{ span: 18 }}
  264. label="申请退款(万元)"
  265. >
  266. <Input
  267. placeholder="请输入申请退款"
  268. ref="signTotalAmount"
  269. value={data.changeAmount}
  270. onChange={e => {
  271. let data = this.state.data;
  272. data.changeAmount = e.target.value;
  273. this.setState({ data });
  274. }}
  275. style={{ width: "240px" }}
  276. />
  277. </FormItem>
  278. </div>
  279. <div className="clearfix">
  280. <FormItem
  281. style={{ height: "auto" }}
  282. labelCol={{ span: 4 }}
  283. wrapperCol={{ span: 18 }}
  284. label="变更原因"
  285. >
  286. <TextArea
  287. rows={4}
  288. placeholder="因企业政府补助费用与营销员签单承诺费用不一"
  289. ref="signTotalAmount"
  290. style={{ width: "95%" }}
  291. value={data.remarks}
  292. onChange={e => {
  293. let data = this.state.data;
  294. data.remarks = e.target.value;
  295. this.setState({ data });
  296. }}
  297. />
  298. </FormItem>
  299. </div>
  300. {/* 备注 */}
  301. <div className="clearfix">
  302. <FormItem
  303. style={{ height: "auto" }}
  304. labelCol={{ span: 4 }}
  305. wrapperCol={{ span: 18 }}
  306. label="备注"
  307. >
  308. <TextArea
  309. rows={4}
  310. placeholder="请输入备注信息"
  311. ref="signTotalAmount"
  312. style={{ width: "95%" }}
  313. value={data.startRemarks}
  314. onChange={e => {
  315. let data = this.state.data;
  316. data.startRemarks = e.target.value;
  317. this.setState({ data });
  318. }}
  319. />
  320. </FormItem>
  321. </div>
  322. <div className="clearfix">
  323. <FormItem
  324. labelCol={{ span: 4 }}
  325. wrapperCol={{ span: 18 }}
  326. label="变更凭证"
  327. >
  328. <PicturesWall
  329. fileList={this.getVoucherUrl}
  330. pictureUrl={this.state.voucherUrl}
  331. url="/api/admin/orderChange/uploadFile"
  332. sign="order_change_file"
  333. />
  334. <Rizhi changeId={data.id} />
  335. <p>图片建议:要清晰。</p>
  336. </FormItem>
  337. </div>
  338. {/* <ul
  339. style={{
  340. width: "868px",
  341. overflow: "hidden",
  342. paddingLeft: "90px",
  343. marginBottom: "20px"
  344. }}
  345. >
  346. {this.state.dataSource.map((item, index) => (
  347. <li
  348. key={index}
  349. style={{
  350. width: "100%",
  351. height: "auto",
  352. wordBreak: "break-all",
  353. color: "black",
  354. marginBottom: "10px"
  355. }}
  356. >{`${item.aname}: ${item.remarks}`}</li>
  357. ))}
  358. </ul> */}
  359. <div className="clearfix">
  360. <Button
  361. type="primary"
  362. style={{ float: "right", marginRight: 40 }}
  363. onClick={this.changeApply}
  364. >
  365. 发起变更申请
  366. </Button>
  367. </div>
  368. </div>
  369. );
  370. }
  371. }
  372. export default ChangeApply;