purchaseForm.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
  1. <template>
  2. <el-form
  3. ref="form"
  4. :model="dataForm"
  5. :rules="rules"
  6. class="el-form-box"
  7. label-width="120px"
  8. >
  9. <headerTitle title="对账单信息"></headerTitle>
  10. <el-row>
  11. <el-col :span="8">
  12. <el-form-item label="查询维度" prop="queryDimension">
  13. <el-select
  14. disabled
  15. clearable
  16. class="ele-block"
  17. v-model="dataForm.queryDimension"
  18. placeholder="请选择"
  19. >
  20. <el-option label="按发货单" :value="1" />
  21. <el-option label="按调拨单" :value="2" />
  22. <el-option label="按收货单" :value="3" />
  23. </el-select>
  24. </el-form-item>
  25. </el-col>
  26. <el-col :span="8" class="el-col-form">
  27. <el-form-item label="来源类型" prop="sourceType">
  28. <el-select
  29. :disabled="dialogType == 'view'"
  30. clearable
  31. class="ele-block"
  32. v-model="dataForm.sourceType"
  33. @change="handleChange"
  34. placeholder="请选择"
  35. >
  36. <el-option label="供应商" :value="1" />
  37. <!-- <el-option label="项目" :value="2"/> -->
  38. <el-option label="合同" :value="4" />
  39. <el-option label="采购订单" :value="3" />
  40. </el-select>
  41. </el-form-item>
  42. </el-col>
  43. <el-col :span="8">
  44. <el-form-item
  45. label="选择供应商"
  46. prop="contactId"
  47. v-if="dataForm.sourceType == 1"
  48. >
  49. <el-input
  50. :disabled="dialogType == 'view'"
  51. v-model="dataForm.contactName"
  52. @click.native="handleGetCus"
  53. ></el-input>
  54. </el-form-item>
  55. <!-- <el-form-item label="选择项目" prop="projectId" v-if="dataForm.sourceType ==2">-->
  56. <!-- <el-input :disabled="dialogType=='view'" v-model="dataForm.projectId" @click.native="handleGetOrd"></el-input>-->
  57. <!-- </el-form-item>-->
  58. <el-form-item
  59. label="选择订单"
  60. prop="sourceName"
  61. v-if="dataForm.sourceType == 3"
  62. >
  63. <el-input
  64. :disabled="dialogType == 'view'"
  65. v-model="dataForm.sourceName"
  66. @click.native="handleGetOrd"
  67. ></el-input>
  68. </el-form-item>
  69. <el-form-item
  70. label="选择合同"
  71. prop="contractId"
  72. v-if="dataForm.sourceType == 4"
  73. >
  74. <el-input
  75. :disabled="dialogType == 'view'"
  76. v-model="dataForm.sourceName"
  77. @click.native="handleGetContract"
  78. ></el-input>
  79. </el-form-item>
  80. </el-col>
  81. </el-row>
  82. <el-row>
  83. <el-col :span="8">
  84. <el-form-item label="查询方式" prop="dateType">
  85. <el-select
  86. :disabled="dialogType == 'view'"
  87. clearable
  88. class="ele-block"
  89. v-model="dataForm.dateType"
  90. @change="reloadTableData"
  91. placeholder="请选择"
  92. >
  93. <el-option label="按年度" :value="1" />
  94. <el-option label="按季度" :value="2" />
  95. <el-option label="按月度" :value="3" />
  96. <el-option label="按时间段" :value="4" />
  97. </el-select>
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="8" v-if="![2].includes(dataForm.dateType)">
  101. <el-form-item
  102. label="选择年度"
  103. prop="year"
  104. v-if="[1].includes(dataForm.dateType)"
  105. >
  106. <el-date-picker
  107. :disabled="dialogType == 'view'"
  108. v-model="dataForm.year"
  109. value-format="yyyy"
  110. type="year"
  111. style="width: 100%"
  112. @change="reloadTableData"
  113. placeholder="选择年"
  114. >
  115. </el-date-picker>
  116. </el-form-item>
  117. <el-form-item
  118. label="选择月度"
  119. prop="month"
  120. v-if="[3].includes(dataForm.dateType)"
  121. >
  122. <el-date-picker
  123. :disabled="dialogType == 'view'"
  124. v-model="dataForm.month"
  125. value-format="yyyy-MM"
  126. type="month"
  127. @change="reloadTableData"
  128. style="width: 100%"
  129. >
  130. </el-date-picker>
  131. </el-form-item>
  132. <el-form-item
  133. label="选择时间段"
  134. prop="dateTimeRange"
  135. v-if="[4].includes(dataForm.dateType)"
  136. >
  137. <el-date-picker
  138. :disabled="dialogType == 'view'"
  139. v-model="dataForm.dateTimeRange"
  140. value-format="yyyy-MM-dd"
  141. type="daterange"
  142. @change="reloadTableData"
  143. range-separator="至"
  144. start-placeholder="开始日期"
  145. end-placeholder="结束日期"
  146. style="width: 100%"
  147. >
  148. </el-date-picker>
  149. </el-form-item>
  150. </el-col>
  151. <el-col :span="8" v-if="[2].includes(dataForm.dateType)">
  152. <el-form-item
  153. label="选择年度"
  154. prop="year"
  155. v-if="[1, 2].includes(dataForm.dateType)"
  156. >
  157. <el-date-picker
  158. :disabled="dialogType == 'view'"
  159. v-model="dataForm.year"
  160. value-format="yyyy"
  161. type="year"
  162. @change="reloadTableData"
  163. style="width: 100%"
  164. placeholder="选择年"
  165. >
  166. </el-date-picker>
  167. </el-form-item>
  168. </el-col>
  169. <el-col :span="8" v-if="[2].includes(dataForm.dateType)">
  170. <el-form-item
  171. label="选择季度"
  172. prop="quarter"
  173. v-if="[2].includes(dataForm.dateType)"
  174. >
  175. <el-select
  176. :disabled="dialogType == 'view'"
  177. clearable
  178. @change="reloadTableData"
  179. class="ele-block"
  180. v-model="dataForm.quarter"
  181. placeholder="请选择"
  182. >
  183. <el-option label="一季度" value="一季度" />
  184. <el-option label="二季度" value="二季度" />
  185. <el-option label="三季度" value="三季度" />
  186. <el-option label="四季度" value="四季度" />
  187. </el-select>
  188. </el-form-item>
  189. </el-col>
  190. </el-row>
  191. <el-row>
  192. <el-col :span="8">
  193. <el-form-item prop="accountStatementPrice" label="对账金额">
  194. <el-input disabled v-model="accountStatementPrice"></el-input>
  195. </el-form-item>
  196. </el-col>
  197. <el-col :span="8">
  198. <el-form-item prop="relatedOrderNumber" label="关联订单编码">
  199. <el-input disabled v-model="relatedOrderNumber"></el-input>
  200. </el-form-item>
  201. </el-col>
  202. <el-col :span="8" v-if="dialogType == 'view'">
  203. <el-form-item prop="createUserName" label="对账人">
  204. <el-input disabled v-model="dataForm.createUserName"></el-input>
  205. </el-form-item>
  206. </el-col>
  207. <el-col :span="8" v-if="dialogType == 'view'">
  208. <el-form-item prop="createTime" label="对账时间">
  209. <el-input disabled v-model="dataForm.createTime"></el-input>
  210. </el-form-item>
  211. </el-col>
  212. </el-row>
  213. <el-row v-if="dialogType == 'view'">
  214. <el-col :span="8">
  215. <el-form-item prop="repliedFiles" label="回执附件">
  216. <fileMain v-model="dataForm.repliedFiles" type="view"></fileMain>
  217. </el-form-item>
  218. </el-col>
  219. </el-row>
  220. <el-row v-if="dialogType !== 'view'">
  221. <el-col :span="24">
  222. <el-button style="float: right" @click="handleSearch" type="primary"
  223. >查询</el-button
  224. >
  225. </el-col>
  226. </el-row>
  227. <!-- <supplierList
  228. ref="supplierListRef"
  229. :classType="2"
  230. @changeParent="getCusInfo"
  231. ></supplierList> -->
  232. <orderListDialog
  233. ref="orderListDialogRef"
  234. @changeParent="getOrderInfo"
  235. ></orderListDialog>
  236. <!-- <contractListDialog
  237. ref="selectContractRef"
  238. @changeParent="changeContract"
  239. :type="2"
  240. :isAdd="true"
  241. ></contractListDialog> -->
  242. </el-form>
  243. </template>
  244. <script xmlns:el-col="http://www.w3.org/1999/html">
  245. import parentList from "./supplierList.vue";
  246. import OrderListDialog from "./orderListDialog.vue";
  247. import { getFile } from '@/api/system/file';
  248. // import supplierList from '@/views/purchasingManage/supplierManage/components/parentList.vue';
  249. // import fileMain from '@/components/addDoc/index.vue';
  250. // import contractListDialog from '@/views/saleManage/saleOrder/components/contractListDialog.vue';
  251. export default {
  252. name: 'saleForm',
  253. components: {
  254. // fileMain,
  255. // supplierList,
  256. OrderListDialog,
  257. parentList,
  258. // contractListDialog
  259. },
  260. props: ['dataForm', 'datasource', 'dialogType','recorpayList'],
  261. computed: {
  262. //计算未对账金额
  263. accountStatementPrice() {
  264. return this.dataForm?.amountTotalPrice || 0;
  265. },
  266. //计算相关订单号
  267. relatedOrderNumber() {
  268. return this.dataForm?.sourceName || '';
  269. }
  270. },
  271. data() {
  272. return {
  273. monthByDays: {},
  274. quarterList: {
  275. 一季度: ['-01-01 00:00:00', '-03-31 23:59:59'],
  276. 二季度: ['-04-01 00:00:00', '-06-30 23:59:59'],
  277. 三季度: ['-07-01 00:00:00', '-09-30 23:59:59'],
  278. 四季度: ['-10-01 00:00:00', '-12-31 23:59:59']
  279. },
  280. startTime: '-01-01 00:00:00',
  281. endTime: '23:59:59',
  282. rules: {
  283. sourceType: { required: true, message: '请选择', trigger: 'change' },
  284. contactId: { required: true, message: '请选择', trigger: 'change' },
  285. projectId: { required: true, message: '请选择', trigger: 'change' },
  286. // orderId: { required: true, message: '请选择', trigger: 'change' },
  287. dateType: { required: true, message: '请选择', trigger: 'change' },
  288. year: { required: true, message: '请选择', trigger: 'change' },
  289. quarter: { required: true, message: '请选择', trigger: 'change' },
  290. month: { required: true, message: '请选择', trigger: 'change' },
  291. dateTimeRange: {
  292. required: true,
  293. message: '请选择',
  294. trigger: 'change'
  295. },
  296. contractId: { required: true, message: '请选择', trigger: 'change' },
  297. queryDimension: { required: true, message: '请选择', trigger: 'change' },
  298. }
  299. };
  300. },
  301. methods: {
  302. //查询
  303. handleSearch() {
  304. //
  305. switch (this.dataForm.dateType) {
  306. case 1:
  307. this.dataForm.dateValue = this.dataForm.year;
  308. this.dataForm.startDate = this.dataForm.year + this.startTime;
  309. this.dataForm.endDate = this.dataForm.year + '-12-31 23:59:59';
  310. break;
  311. case 2:
  312. this.dataForm.dateValue =
  313. this.dataForm.year + '年-' + this.dataForm.quarter;
  314. this.dataForm.startDate =
  315. this.dataForm.year + this.quarterList[this.dataForm.quarter][0];
  316. this.dataForm.endDate =
  317. this.dataForm.year + this.quarterList[this.dataForm.quarter][1];
  318. break;
  319. case 3:
  320. this.dataForm.dateValue = this.dataForm.month;
  321. this.dataForm.startDate = this.dataForm.month + '-01 00:00:00';
  322. let data = this.dataForm.month.split('-');
  323. let days = new Date(data[0], data[1], 0).getDate();
  324. this.dataForm.endDate =
  325. this.dataForm.month + '-' + days + ' 23:59:59';
  326. break;
  327. default:
  328. this.dataForm.dateValue = '';
  329. this.dataForm.startDate =
  330. this.dataForm.dateTimeRange[0] + ' 00:00:00';
  331. this.dataForm.endDate =
  332. this.dataForm.dateTimeRange[1] + ' 23:59:59';
  333. }
  334. this.$refs.form.validate((validate) => {
  335. if (!validate) return;
  336. this.$emit('handleSearch', this.dataForm);
  337. });
  338. },
  339. //
  340. getDays() {},
  341. //获取客户信息
  342. handleGetCus() {
  343. let item = { id: this.dataForm.contactId };
  344. this.$refs.supplierListRef.open(item);
  345. },
  346. //选择客户信息回调
  347. getCusInfo(obj) {
  348. let params = Object.assign({}, this.dataForm, {
  349. contactId: obj.id,
  350. contactName: obj.name,
  351. sourceName: obj.name,
  352. sourceId: obj.id
  353. });
  354. this.$emit('update:dataForm', params);
  355. this.reloadTableData();
  356. },
  357. //获取订单信息
  358. handleGetOrd() {
  359. let item = { id: this.dataForm.orderId };
  360. this.$refs.orderListDialogRef.open(item);
  361. },
  362. //选择订单信息回调
  363. getOrderInfo(obj) {
  364. let params = Object.assign({}, this.dataForm, {
  365. orderId: obj.id,
  366. orderNo: obj.orderNo,
  367. contactId: obj.partbId,
  368. contactName: obj.partbName,
  369. sourceName: obj.orderNo,
  370. sourceId: obj.id
  371. });
  372. this.$emit('update:dataForm', params);
  373. this.reloadTableData();
  374. },
  375. //获取合同信息
  376. handleGetContract() {
  377. this.$refs.selectContractRef.open();
  378. },
  379. changeContract(obj) {
  380. let params = Object.assign({}, this.dataForm, {
  381. contractId: obj.id,
  382. contractName: obj.contractName,
  383. sourceId: obj.id,
  384. sourceName: obj.contractName,
  385. contactId: obj.partbId,
  386. contactName: obj.partbName
  387. });
  388. this.$emit('update:dataForm', params);
  389. this.reloadTableData();
  390. },
  391. //切换来源类型重置数据
  392. handleChange() {
  393. let params = Object.assign(
  394. {},
  395. {
  396. ...this.dataForm,
  397. orderNo: '',
  398. orderId: '',
  399. contactId: '',
  400. contactName: '',
  401. sourceName: '',
  402. sourceId: '',
  403. amountPayablePrice: '',
  404. amountReceivablePrice: '',
  405. amountTotalPrice: '',
  406. amountPayablePass: '',
  407. amountReceivablePass: ''
  408. }
  409. );
  410. this.$emit('update:dataForm', params);
  411. this.reloadTableData();
  412. },
  413. reloadTableData() {
  414. this.$emit('update:datasource', []);
  415. this.$emit('update:recorpayList', []);
  416. // let params = Object.assign(
  417. // {},
  418. // {
  419. // ...this.dataForm,
  420. // amountPayablePrice: '',
  421. // amountReceivablePrice: '',
  422. // amountTotalPrice: '',
  423. // amountPayablePass: '',
  424. // amountReceivablePass: ''
  425. // }
  426. // );
  427. // this.$emit('update:dataForm', params);
  428. },
  429. downloadFile(file) {
  430. getFile({ objectName: file.storePath }, file.name);
  431. }
  432. },
  433. mounted() {
  434. // const year = new Date().getFullYear(); // 获取当前年份
  435. // for (let i = 0; i < 12; i++) {
  436. // // 获取指定月份的天数
  437. // this.monthByDays[i + 1] = new Date(year, i + 1, 0).getDate()
  438. // }
  439. }
  440. };
  441. </script>
  442. <style scoped lang="scss"></style>