orderAdd.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859
  1. <template>
  2. <div>
  3. <!-- 页面主体内容 -->
  4. <div class="planAddContent" v-show="contentShow">
  5. <Card style="width:100%" :bordered="false" :dis-hover="true">
  6. <p slot="title">采购订单详情</p>
  7. <div slot="extra">
  8. <Button
  9. @click="submitCgdd"
  10. v-if="(orderType == 'edit') && (form.spzt == '1' || form.spzt == '4')"
  11. >提交</Button>
  12. <Button @click="addCgdd" v-if="form.spzt == '1' || form.spzt == '' || form.spzt == '4'">保存</Button>
  13. <Button @click="cancel">取消</Button>
  14. </div>
  15. <Row class="mainCont">
  16. <Col span="4" class-name="tables">订购编号</Col>
  17. <Col span="4" class-name="tables">
  18. <!-- <span v-if="orderType == 'add'">保存成功后生成</span>
  19. <span v-else>{{ form.dgbh }}</span>-->
  20. {{ orderType == 'add' ? '保存成功后生成' : form.dgbh }}
  21. </Col>
  22. <Col span="4" class-name="tables">标题</Col>
  23. <Col span="4" class-name="tables">
  24. <span v-if="orderType == 'add'">保存成功后生成</span>
  25. <span v-else>{{ form.bt }}</span>
  26. </Col>
  27. <Col span="4" class-name="tables">总价(元)</Col>
  28. <Col span="4" class-name="tables">{{ form.totalPrice }}</Col>
  29. <Col span="4" class-name="tables">关联区域</Col>
  30. <Col span="4" class-name="tables">
  31. <Select
  32. v-model="form.glqy"
  33. style="width: 95%"
  34. v-if="orderType == 'add'"
  35. @on-change="ssqyChange"
  36. >
  37. <Option
  38. v-for="item in glqyList"
  39. :value="item.areaId + ',' + item.areaName"
  40. :key="item.areaId"
  41. :disabled="form.spzt == '2' || form.spzt == '3'"
  42. >{{ item.areaName }}</Option>
  43. </Select>
  44. <span v-else>{{ form.glqy.split(',')[1] }}</span>
  45. </Col>
  46. <Col span="4" class-name="tables">关联项目</Col>
  47. <Col span="4" class-name="tables">
  48. <Select v-model="form.glxm" style="width: 95%" v-if="orderType == 'add'">
  49. <Option
  50. v-for="item in glxmList"
  51. :value="item.projectId + ',' + item.projectName"
  52. :key="item.projectId"
  53. :disabled="form.spzt == '2' || form.spzt == '3'"
  54. >{{ item.projectName }}</Option>
  55. </Select>
  56. <span v-else>s{{ form.glxm.split(',')[1] }}</span>
  57. </Col>
  58. <Col span="4" class-name="tables">单据类型</Col>
  59. <Col span="4" class-name="tables">
  60. <Select v-model="form.djlx" style="width: 95%">
  61. <Option
  62. v-for="item in djlxList"
  63. :value="item.value"
  64. :key="item.value"
  65. :disabled="form.spzt == '2' || form.spzt == '3'"
  66. >{{ item.label }}</Option>
  67. </Select>
  68. </Col>
  69. <Col span="4" class-name="tables">采购人</Col>
  70. <Col span="4" class-name="tables">{{ form.cgr }}</Col>
  71. <Col span="4" class-name="tables">采购人联系方式</Col>
  72. <Col span="4" class-name="tables">
  73. <Input
  74. v-model="form.cgrlxfs"
  75. :disabled="form.spzt == '2' || form.spzt == '3'"
  76. placeholder="请输入"
  77. style="width: 95%"
  78. />
  79. </Col>
  80. <Col span="4" class-name="tables">下单日期</Col>
  81. <Col span="4" class-name="tables">
  82. <DatePicker
  83. style="width: 95%"
  84. format="yyyy-MM-dd HH:mm:ss"
  85. :value="form.xdrq"
  86. @on-change="form.xdrq=$event"
  87. type="datetime"
  88. placeholder="请选择"
  89. :disabled="form.spzt == '2' || form.spzt == '3'"
  90. ></DatePicker>
  91. </Col>
  92. <Col span="4" class-name="tables">交货时间</Col>
  93. <Col span="4" class-name="tables">
  94. <DatePicker
  95. :disabled="form.xdrq == '' || form.spzt != '1'"
  96. style="width: 95%"
  97. format="yyyy-MM-dd HH:mm:ss"
  98. :value="form.jhsj"
  99. :options="jhsjOptions"
  100. @on-change="form.jhsj=$event"
  101. type="datetimerange"
  102. placeholder="请选择"
  103. ></DatePicker>
  104. </Col>
  105. <Col span="4" class-name="tables">交货地点</Col>
  106. <Col span="4" class-name="tables">{{ form.jhdd }}</Col>
  107. <Col span="4" class-name="tables">收货人</Col>
  108. <Col span="4" class-name="tables">
  109. <Input
  110. v-model="form.shr"
  111. :disabled="form.spzt == '2' || form.spzt == '3'"
  112. placeholder="请输入"
  113. style="width: 95%"
  114. />
  115. </Col>
  116. <Col span="4" class-name="tables">收货人联系方式</Col>
  117. <Col span="4" class-name="tables">
  118. <Input
  119. v-model="form.shrlxfs"
  120. :disabled="form.spzt == '2' || form.spzt == '3'"
  121. placeholder="请输入"
  122. style="width: 95%"
  123. />
  124. </Col>
  125. <Col span="4" class-name="tables">供应商</Col>
  126. <Col span="12" class-name="tables">
  127. <Select
  128. v-model="form.gys"
  129. @on-change="gysChange"
  130. filterable
  131. style="width: 95%"
  132. v-if="orderType == 'add'"
  133. >
  134. <Option
  135. v-for="item in gysList"
  136. :disabled="form.spzt == '2' || form.spzt == '3'"
  137. :value="item.gpId"
  138. :key="item.gpId"
  139. >{{ item.gpName }}</Option>
  140. </Select>
  141. <span v-else>{{ form.gysmc }}</span>
  142. </Col>
  143. <Col span="4" class-name="tables">供方负责人</Col>
  144. <Col span="4" class-name="tables">{{ form.gffzr }}</Col>
  145. <Col span="4" class-name="tables">供应商联系电话</Col>
  146. <Col span="4" class-name="tables">{{ form.gyslxdh }}</Col>
  147. <Col span="4" class-name="tables">关联申购计划</Col>
  148. <Col span="4" class-name="tables">{{ form.glsgjh }}</Col>
  149. <!-- <Col span="4" class-name="tables"></Col>
  150. <Col span="4" class-name="tables"></Col>-->
  151. <Col span="4" class-name="tables">审批状态</Col>
  152. <Col span="4" class-name="tables">
  153. <span v-if="form.spzt == ''">-</span>
  154. <span v-if="form.spzt == '1'">未提交</span>
  155. <span v-if="form.spzt == '2'">审核中</span>
  156. <span v-if="form.spzt == '3'">审核通过</span>
  157. <span v-if="form.spzt == '4'">审核拒绝</span>
  158. </Col>
  159. <Col span="4" class-name="tables">审批通过时间</Col>
  160. <Col span="4" class-name="tables">-</Col>
  161. <Col span="4" class-name="tables">订单状态</Col>
  162. <Col span="4" class-name="tables">
  163. <span v-if="form.ddzt == ''">-</span>
  164. <span v-if="form.ddzt == '1'">未下单</span>
  165. <span v-if="form.ddzt == '2'">待下单</span>
  166. <span v-if="form.ddzt == '3'">已下单</span>
  167. <span v-if="form.ddzt == '4'">入库中</span>
  168. <span v-if="form.ddzt == '5'">已入库</span>
  169. <span v-if="form.ddzt == '6'">已取消</span>
  170. </Col>
  171. </Row>
  172. <Row class="uplCont" type="flex" justify="center" style="align-items: stretch">
  173. <Col span="4" class-name="upl">附件</Col>
  174. <Col span="10" class-name="uplf">
  175. <Upload
  176. :headers="uploadHeaders"
  177. style="width: 80%"
  178. multiple
  179. type="drag"
  180. :disabled="form.spzt == '2' || form.spzt == '3'"
  181. action="/purchase/common/uploadFile"
  182. :before-upload="beforeUpload"
  183. :on-success="uploadFilesSuccess"
  184. :show-upload-list="false"
  185. :on-progress="upFilesLoading"
  186. >
  187. <!-- :default-file-list="xzwgForm.filesList" -->
  188. <div style="padding: 5px 0">
  189. <Icon type="md-cloud-upload" size="36" style="color: #3399ff"></Icon>
  190. <span>点击或将文件拖拽到这里上传</span>
  191. </div>
  192. </Upload>
  193. </Col>
  194. <Col span="10" class="upl" style="padding: 5px">
  195. <div v-for="(item, index) in form.filesList" :key="index">
  196. <a href="javascript:;">{{ item.fullName }}</a>
  197. <span style="float: right; cursor:pointer" @click="form.filesList.splice(index, 1)">x</span>
  198. </div>
  199. <p v-if="uploading" style="text-align: center">上传中...</p>
  200. </Col>
  201. </Row>
  202. <Row class="mainCont">
  203. <Col span="4" class-name="tables">说明</Col>
  204. <Col span="20" class-name="tables">
  205. <Input
  206. v-model="form.sm"
  207. :disabled="form.spzt == '2' || form.spzt == '3'"
  208. placeholder="请输入"
  209. style="width: 99%"
  210. />
  211. </Col>
  212. </Row>
  213. <Spin size="large" fix v-if="spinShow"></Spin>
  214. </Card>
  215. <Card style="width:100%" :bordered="false" :dis-hover="true">
  216. <p slot="title">采购明细</p>
  217. <div slot="extra">
  218. <Button type="primary" @click="mxAddShow" :disabled="orderType == 'add'">新增明细</Button>
  219. </div>
  220. <Table
  221. :columns="tableColumn"
  222. style="width: 100%"
  223. :data="tableData"
  224. :loading="tableLoading"
  225. @on-select="tableOnSelect"
  226. >
  227. <template slot-scope="{ row, index }" slot="purchaseNum">
  228. <Input
  229. :disabled="form.spzt == '2'"
  230. v-model="tableData[index].purchaseNum"
  231. placeholder="请输入"
  232. style="width: 95%"
  233. />
  234. </template>
  235. <template slot-scope="{ row, index }" slot="price">
  236. <Input
  237. :disabled="form.spzt == '2' || form.spzt == '3'"
  238. v-model="tableData[index].price"
  239. placeholder="请输入"
  240. style="width: 95%"
  241. />
  242. </template>
  243. <template slot-scope="{ row, index }" slot="totalPrice">
  244. <div>{{ tableData[index].price * tableData[index].purchaseNum }}</div>
  245. </template>
  246. <template slot-scope="{ row, index }" slot="plannedArrivalTime">
  247. <DatePicker
  248. :disabled="form.spzt == '2' || form.spzt == '3'"
  249. :transfer="true"
  250. format="yyyy-MM-dd HH:mm:ss"
  251. type="datetime"
  252. :value="tableData[index].plannedArrivalTime"
  253. @on-change="tableData[index].plannedArrivalTime=$event"
  254. placeholder="请选择"
  255. style="width: 95%"
  256. ></DatePicker>
  257. </template>
  258. <template slot-scope="{ row, index }" slot="isNumControl">
  259. <RadioGroup v-model="tableData[index].isNumControl">
  260. <Radio :label="1" :disabled="form.spzt == '2' || form.spzt == '3'">
  261. <span>是</span>
  262. </Radio>
  263. <Radio :label="2" :disabled="form.spzt == '2' || form.spzt == '3'">
  264. <span>否</span>
  265. </Radio>
  266. </RadioGroup>
  267. </template>
  268. <template slot-scope="{ row, index }" slot="isTimeControl">
  269. <RadioGroup v-model="tableData[index].isTimeControl">
  270. <Radio :label="1" :disabled="form.spzt == '2' || form.spzt == '3'">
  271. <span>是</span>
  272. </Radio>
  273. <Radio :label="2" :disabled="form.spzt == '2' || form.spzt == '3'">
  274. <span>否</span>
  275. </Radio>
  276. </RadioGroup>
  277. </template>
  278. <template slot-scope="{ row, index }" slot="cz">
  279. <div>
  280. <a href="javascript:;" v-if="form.spzt != '2'" @click="deleteRow(index)">删除</a>
  281. </div>
  282. </template>
  283. </Table>
  284. </Card>
  285. <!-- <Modal v-model="plszShow" title="批量设置" @on-ok="plszOk" @on-cancel="plszCancel">
  286. <Row class="mainCont">
  287. <Col span="12" class-name="tables">入库仓库</Col>
  288. <Col span="12" class-name="tables">
  289. <Select v-model="plrkck" style="width: 95%" :transfer="true">
  290. <Option v-for="item in ckList" :value="item.value" :key="item.value">{{ item.label }}</Option>
  291. </Select>
  292. </Col>
  293. <Col span="12" class-name="tables">计划到货时间</Col>
  294. <Col span="12" class-name="tables">
  295. <DatePicker
  296. :transfer="true"
  297. format="yyyy-MM-dd"
  298. type="date"
  299. :value="pldhsj"
  300. @on-change="pldhsj=$event"
  301. placeholder="请选择"
  302. style="width: 95%"
  303. ></DatePicker>
  304. </Col>
  305. </Row>
  306. </Modal>-->
  307. </div>
  308. <!-- 计划明细新增 -->
  309. <orderMxAdd ref="mxAdd" @plAdd="plAdd" @return="contentShow = true" v-show="!contentShow" />
  310. </div>
  311. </template>
  312. <script>
  313. import {
  314. addPurchaseOrder,
  315. findPurchaseOrder,
  316. editPurchaseOrder,
  317. getLabelByCode,
  318. getProjectList,
  319. submitPurchaseOrder
  320. } from "@/service/getData";
  321. import orderMxAdd from "./orderMxAdd";
  322. export default {
  323. props: ["gysList", "glqyList"],
  324. components: {
  325. orderMxAdd
  326. },
  327. data() {
  328. return {
  329. orderType: "add",
  330. orderId: "",
  331. uploadHeaders: {
  332. token: localStorage.token,
  333. userId: localStorage.user_id
  334. },
  335. spinShow: false,
  336. contentShow: true,
  337. form: {
  338. dgbh: "", //订购编号
  339. bt: "", //标题
  340. glqy: "", //关联区域
  341. glxm: "", //关联项目
  342. cgr: localStorage.user_name, //采购人
  343. cgrlxfs: "", //采购人联系方式
  344. xdrq: "", //下单日期
  345. jhsj: [], //交货时间
  346. jhdd: "", //交货地点
  347. shr: "", //收货人
  348. shrlxfs: "", //收货人联系方式
  349. djlx: "", //单据类型
  350. gys: "", //供应商
  351. gysmc: "", //供应商名称
  352. gffzr: "", //供方负责人
  353. gyslxdh: "", //供应商联系电话
  354. totalPrice: 0, //总价
  355. sm: "", //说明
  356. spzt: 1, //审批状态
  357. sptgsj: "", //审批通过时间
  358. ddzt: "", //订单状态
  359. glsgjh: "", //关联申购计划
  360. filesList: []
  361. },
  362. jhsjOptions: {
  363. disabledDate: date => {
  364. return date && date.valueOf() < new Date(this.form.xdrq);
  365. }
  366. },
  367. // glqyList: [{ label: "test", value: 1 }],
  368. glxmList: [],
  369. cgrList: [{ label: "test", value: 1 }],
  370. djlxList: [],
  371. // gysList: [{ label: "test", value: 1 }],
  372. gffzrList: [{ label: "test", value: 1 }],
  373. uploading: false,
  374. // 批量设置
  375. plszShow: false,
  376. plrkck: "",
  377. pldhsj: "",
  378. // table
  379. tableColumn: [
  380. {
  381. title: "申购计划",
  382. key: "applyRuleCode",
  383. tooltip: "true",
  384. width: 100
  385. },
  386. {
  387. title: "物料编码",
  388. key: "code",
  389. tooltip: "true",
  390. width: 100
  391. },
  392. {
  393. title: "物料分类",
  394. key: "firstClassName",
  395. tooltip: "true",
  396. width: 100
  397. },
  398. {
  399. title: "物料名称",
  400. key: "materialName",
  401. tooltip: "true",
  402. width: 100
  403. },
  404. {
  405. title: "品牌",
  406. key: "brandName",
  407. tooltip: "true",
  408. width: 100
  409. },
  410. {
  411. title: "规格型号",
  412. key: "specs",
  413. tooltip: "true",
  414. width: 100
  415. },
  416. {
  417. title: "单位",
  418. key: "unit",
  419. tooltip: "true",
  420. width: 100
  421. },
  422. {
  423. title: "计划数量",
  424. key: "amount",
  425. tooltip: "true",
  426. width: 100
  427. },
  428. {
  429. title: "已下订数量",
  430. key: "billedAmount",
  431. tooltip: "true",
  432. width: 100
  433. },
  434. {
  435. title: "累计入库数量",
  436. key: "warehousedNum",
  437. tooltip: "true",
  438. width: 120
  439. },
  440. {
  441. title: "待采购数量",
  442. key: "applySurplusNum",
  443. tooltip: "true",
  444. width: 120
  445. },
  446. {
  447. title: "采购数量",
  448. slot: "purchaseNum",
  449. tooltip: "true",
  450. width: 100
  451. },
  452. {
  453. title: "单价(元)",
  454. slot: "price",
  455. tooltip: "true",
  456. width: 100
  457. },
  458. {
  459. title: "总价(元)",
  460. slot: "totalPrice",
  461. tooltip: "true",
  462. width: 100
  463. },
  464. {
  465. title: "入库仓库",
  466. key: "storehouseName",
  467. tooltip: "true",
  468. width: 130
  469. },
  470. {
  471. title: "计划到货时间",
  472. slot: "plannedArrivalTime",
  473. tooltip: "true",
  474. width: 150
  475. },
  476. {
  477. title: "数量管控",
  478. slot: "isNumControl",
  479. tooltip: "true",
  480. width: 100
  481. },
  482. {
  483. title: "时间管控",
  484. slot: "isTimeControl",
  485. tooltip: "true",
  486. width: 100
  487. },
  488. {
  489. title: "操作",
  490. slot: "cz",
  491. tooltip: "true",
  492. fixed: "right",
  493. width: 60
  494. }
  495. ],
  496. tableData: [],
  497. tableSelect: [],
  498. deleteIds: [],
  499. tableLoading: false
  500. };
  501. },
  502. created() {
  503. getLabelByCode({ dictCode: "billType" }).then(res => {
  504. if (res.status == 200) {
  505. this.djlxList = res.data;
  506. } else {
  507. this.$Message.error(res.message);
  508. }
  509. });
  510. },
  511. methods: {
  512. //批量设置弹窗
  513. plszOpen() {
  514. this.plszShow = true;
  515. },
  516. plszOk() {},
  517. plszCancel() {},
  518. //表单上传
  519. beforeUpload() {},
  520. upFilesLoading() {
  521. this.uploading = true;
  522. },
  523. uploadFilesSuccess(response, file, fileList) {
  524. this.uploading = false;
  525. this.form.filesList.push({
  526. fileName: response.data.fileName,
  527. resPath: response.data.filePath,
  528. fileDetailType: ""
  529. });
  530. },
  531. //供应商切换
  532. gysChange(val) {
  533. let gys = this.gysList.filter(a => a.gpId == val)[0];
  534. this.form.gffzr = gys.gpcName;
  535. this.form.gyslxdh = gys.gpcPhone;
  536. },
  537. //所属区域切换
  538. ssqyChange() {
  539. let postData = {
  540. areaId: this.form.glqy.split(",")[0],
  541. userId: localStorage.user_id
  542. };
  543. getProjectList(postData).then(res => {
  544. this.form.glxm = "";
  545. this.glxmList = res.items;
  546. });
  547. },
  548. //获取采购订单详情
  549. getCgddXq(id) {
  550. this.orderId = id;
  551. let postData = {
  552. orderId: id
  553. };
  554. this.spinShow = true;
  555. findPurchaseOrder(postData).then(res => {
  556. this.spinShow = false;
  557. if (res.status == 200) {
  558. let data = res.data;
  559. let tableArr = [];
  560. this.form.dgbh = data.orderCode;
  561. this.form.bt = data.title;
  562. this.form.glqy = data.areaId + "," + data.areaName;
  563. this.form.glxm = data.projectId + "," + data.projectName;
  564. this.form.djlx = data.type;
  565. this.form.cgr = data.purchaserName;
  566. this.form.cgrlxfs = data.purchaserTel;
  567. this.form.xdrq = data.orderTime;
  568. this.form.jhsj = [data.deliveryStartTime, data.deliveryEndTime];
  569. this.form.shr = data.receivedName;
  570. this.form.shrlxfs = data.receivedTel;
  571. this.form.gys = data.gpId;
  572. this.form.gffzr = data.gpcName;
  573. this.form.gyslxdh = data.gpcPhone;
  574. this.form.spzt = data.approvalState;
  575. this.form.sm = data.instruction;
  576. this.form.ddzt = data.orderState;
  577. this.form.gysmc = data.gpName;
  578. this.form.jhdd = data.deliveryPlace;
  579. this.orderType = "edit";
  580. for (let item in data.detailList) {
  581. tableArr.push({
  582. applyDetailId: data.detailList[item].applyDetailId,
  583. applyRuleId: data.detailList[item].applyRuleId,
  584. applyRuleCode: data.detailList[item].applyRuleCode,
  585. code: data.detailList[item].detailList[0].code,
  586. firstClassName:
  587. data.detailList[item].detailList[0].firstClassName,
  588. materialName: data.detailList[item].detailList[0].materialName,
  589. brandName: data.detailList[item].detailList[0].brandName,
  590. specs: data.detailList[item].detailList[0].specs,
  591. unit: data.detailList[item].detailList[0].unit,
  592. amount: data.detailList[item].detailList[0].amount,
  593. billedAmount: data.detailList[item].detailList[0].billedAmount,
  594. inventory: data.detailList[item].detailList[0].inventory,
  595. storehouseName:
  596. data.detailList[item].detailList[0].storehouseName,
  597. price: data.detailList[item].price,
  598. totalPrice: 0,
  599. purchaseNum: data.detailList[item].purchaseNum,
  600. plannedArrivalTime: data.detailList[item].plannedArrivalTime,
  601. isNumControl: data.detailList[item].isNumControl,
  602. isTimeControl: data.detailList[item].isTimeControl,
  603. applySurplusNum: data.detailList[item].applySurplusNum,
  604. warehousedNum: data.detailList[item].warehousedNum,
  605. remark: data.detailList[item].remark
  606. });
  607. console.log(tableArr);
  608. this.tableData = tableArr;
  609. }
  610. let postData = {
  611. areaId: data.areaId,
  612. userId: localStorage.user_id
  613. };
  614. getProjectList(postData).then(res => {
  615. this.glxmList = res.items;
  616. });
  617. } else {
  618. this.$Message.error(res.message);
  619. }
  620. });
  621. },
  622. //编辑采购订单
  623. editCgdd() {
  624. let gpName = this.gysList.filter(a => a.gpId == this.form.gys);
  625. let postData = {
  626. areaId: this.form.glqy.split(",")[0],
  627. areaName: this.form.glqy.split(",")[1],
  628. projectId: this.form.glxm.split(",")[0],
  629. projectName: this.form.glxm.split(",")[1],
  630. purchaserId: localStorage.user_id,
  631. purchaserName: localStorage.user_name,
  632. purchaserTel: this.form.cgrlxfs,
  633. receivedName: this.form.shr,
  634. receivedTel: this.form.shrlxfs,
  635. orderTime: this.form.xdrq,
  636. deliveryStartTime: this.form.jhsj[0],
  637. deliveryEndTime: this.form.jhsj[1],
  638. deliveryPlace: this.form.jhdd,
  639. type: this.form.djlx,
  640. instruction: this.form.sm,
  641. attachmentList: this.form.filesList,
  642. gpId: this.form.gys, //供应商ID
  643. gpNmae: gpName.length ? gpName[0].gpName : "", //供应商Name
  644. orderId: this.orderId,
  645. deleteId: this.deleteIds.join(","),
  646. attachmentList: this.form.filesList,
  647. detailList: this.tableData
  648. };
  649. this.spinShow = true;
  650. this.tableLoading = true;
  651. editPurchaseOrder(postData).then(res => {
  652. this.spinShow = false;
  653. this.tableLoading = false;
  654. if (res.status == 200) {
  655. this.$Message.success("编辑采购订单成功!");
  656. this.getCgddXq(this.orderId);
  657. } else {
  658. this.$Message.error(res.message);
  659. }
  660. });
  661. },
  662. submitCgdd() {
  663. let gpName = this.gysList.filter(a => a.gpId == this.form.gys);
  664. let postData = {
  665. orderId: this.orderId
  666. };
  667. submitPurchaseOrder(postData).then(res => {
  668. if (res.status == 200) {
  669. this.$Message.success("提交采购订单成功!");
  670. } else {
  671. this.$Message.error(res.message);
  672. }
  673. });
  674. },
  675. //新增采购订单
  676. addCgdd() {
  677. if (this.orderType == "edit") {
  678. this.editCgdd();
  679. return false;
  680. }
  681. let gpName = this.gysList.filter(a => a.gpId == this.form.gys);
  682. let postData = {
  683. areaId: this.form.glqy.split(",")[0],
  684. areaName: this.form.glqy.split(",")[1],
  685. projectId: this.form.glxm.split(",")[0],
  686. projectName: this.form.glxm.split(",")[1],
  687. purchaserId: localStorage.user_id,
  688. purchaserName: localStorage.user_name,
  689. purchaserTel: this.form.cgrlxfs,
  690. receivedName: this.form.shr,
  691. receivedTel: this.form.shrlxfs,
  692. orderTime: this.form.xdrq,
  693. deliveryStartTime: this.form.jhsj[0],
  694. deliveryEndTime: this.form.jhsj[1],
  695. deliveryPlace: this.form.jhdd,
  696. type: this.form.djlx,
  697. instruction: this.form.sm,
  698. attachmentList: this.form.filesList,
  699. gpId: this.form.gys, //供应商ID
  700. gpNmae: gpName.length ? gpName[0].gpName : "" //供应商Name
  701. };
  702. this.spinShow = true;
  703. addPurchaseOrder(postData).then(res => {
  704. this.spinShow = false;
  705. if (res.status == 200) {
  706. this.$Message.success("新增采购订单成功!");
  707. this.orderId = res.data.orderId;
  708. this.form.dgbh = res.data.orderCode;
  709. this.form.bt = res.data.title;
  710. this.form.jhdd = res.data.deliveryPlace;
  711. this.orderType = "edit";
  712. } else {
  713. this.$Message.error(res.message);
  714. }
  715. });
  716. },
  717. //新增明细
  718. mxAddShow() {
  719. this.contentShow = false;
  720. this.$refs.mxAdd.orderId = this.orderId;
  721. this.$refs.mxAdd.approvalState = this.form.spzt;
  722. this.$refs.mxAdd.orderState = this.form.ddzt;
  723. this.$refs.mxAdd.areaId = this.form.glqy;
  724. this.$refs.mxAdd.projectId = this.form.glxm;
  725. this.$refs.mxAdd.getTableData();
  726. this.$refs.mxAdd.getCk();
  727. },
  728. //列表方法
  729. getTableData() {
  730. this.spinShow = false;
  731. },
  732. //删除采购明细
  733. deleteRow(index) {
  734. if (this.deleteIds.indexOf(this.tableData[index].applyDetailId) == -1) {
  735. this.deleteIds.push(this.tableData[index].applyDetailId);
  736. }
  737. this.tableData.splice(index, 1);
  738. },
  739. //批量添加
  740. plAdd(list) {
  741. console.log(list);
  742. for (let item in list) {
  743. if (this.deleteIds.indexOf(list[item].applyDetailId) != -1) {
  744. this.deleteIds.splice(
  745. this.deleteIds.indexOf(list[item].applyDetailId),
  746. 1
  747. );
  748. }
  749. if (
  750. this.tableData.filter(
  751. a => a.applyDetailId == list[item].applyDetailId
  752. ).length > 0
  753. ) {
  754. } else {
  755. this.tableData.push(list[item]);
  756. }
  757. }
  758. },
  759. tableOnSelect(selection, row) {},
  760. //取消、返回
  761. cancel() {
  762. this.form.dgbh = "";
  763. this.form.bt = "";
  764. this.form.glqy = "";
  765. this.form.glxm = "";
  766. this.form.djlx = "";
  767. this.form.cgr = "";
  768. this.form.cgrlxfs = "";
  769. this.form.xdrq = "";
  770. this.form.jhsj = [];
  771. this.form.shr = "";
  772. this.form.shrlxfs = "";
  773. this.form.gys = "";
  774. this.form.gffzr = "";
  775. this.form.gyslxdh = "";
  776. this.form.sm = "";
  777. this.form.filesList = [];
  778. this.form.spzt = 1;
  779. this.tableData = [];
  780. this.deleteIds = [];
  781. this.orderType = "add";
  782. this.spinShow = false;
  783. this.$emit("return");
  784. }
  785. },
  786. watch: {
  787. tableData: {
  788. handler(val, name) {
  789. let total = 0;
  790. let str = "";
  791. for (let item in val) {
  792. total += val[item].price * val[item].purchaseNum;
  793. str += val[item].applyRuleCode + ",";
  794. }
  795. this.form.totalPrice = total;
  796. this.form.glsgjh = str.replace(/\,$/, "");
  797. },
  798. deep: true
  799. }
  800. }
  801. };
  802. </script>
  803. <style lang="scss" scoped>
  804. button {
  805. min-width: 80px;
  806. }
  807. .uplCont {
  808. border-left: 1px solid #e4e4e4;
  809. .upl {
  810. flex: auto;
  811. border-right: 1px solid #e4e4e4;
  812. &:nth-child(1) {
  813. background: #f8f9fb;
  814. display: flex;
  815. align-items: center;
  816. justify-content: center;
  817. }
  818. }
  819. .uplf {
  820. display: flex;
  821. align-items: center;
  822. justify-content: center;
  823. min-height: 80px;
  824. }
  825. }
  826. .mainCont .tables {
  827. min-height: 50px;
  828. border-right: 1px solid #e4e4e4;
  829. border-bottom: 1px solid #e4e4e4;
  830. display: flex;
  831. align-items: center;
  832. justify-content: center;
  833. word-break: break-all;
  834. &:nth-child(2n + 1) {
  835. background: #f8f9fb;
  836. }
  837. }
  838. .mainCont {
  839. border-left: 1px solid #e4e4e4;
  840. border-top: 1px solid #e4e4e4;
  841. }
  842. ivu-card-head-inner,
  843. .ivu-card-head p {
  844. display: inline-block;
  845. width: 100%;
  846. height: 20px;
  847. line-height: 20px;
  848. font-size: 14px;
  849. color: #17233d;
  850. font-weight: 700;
  851. overflow: hidden;
  852. text-overflow: ellipsis;
  853. white-space: nowrap;
  854. font-weight: normal;
  855. }
  856. </style>