index.vue 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4. <!-- <el-form-item label="业务编号" prop="fBillno">-->
  5. <!-- <el-input-->
  6. <!-- v-model="queryParams.fBillno"-->
  7. <!-- placeholder="请输入业务编号"-->
  8. <!-- clearable-->
  9. <!-- size="small"-->
  10. <!-- @keyup.enter.native="handleQuery"-->
  11. <!-- />-->
  12. <!-- </el-form-item>-->
  13. <el-form-item label="客户名称" prop="fCorpid">
  14. <el-select
  15. v-model="queryParams.fCorpid"
  16. filterable
  17. remote
  18. clearable
  19. style="width: 200px"
  20. @keyup.enter.native="handleQuery"
  21. :remote-method="corpsRemoteMethod"
  22. placeholder="请输入客户名称"
  23. >
  24. <el-option
  25. v-for="(dict, index) in fMblnoOptions"
  26. :key="index.fId"
  27. :label="dict.fName"
  28. :value="dict.fId"
  29. ></el-option>
  30. </el-select>
  31. </el-form-item>
  32. <!-- <el-form-item label="货物品名" prop="fGoodsid">-->
  33. <!-- <el-select-->
  34. <!-- v-model="queryParams.fGoodsid"-->
  35. <!-- filterable-->
  36. <!-- remote-->
  37. <!-- clearable-->
  38. <!-- style="width: 200px"-->
  39. <!-- :remote-method="goodsRemoteMethod"-->
  40. <!-- @keyup.enter.native="handleQuery"-->
  41. <!-- placeholder="请输入货物品名"-->
  42. <!-- >-->
  43. <!-- <el-option-->
  44. <!-- v-for="(dict, index) in goodsOptions"-->
  45. <!-- :key="index.fId"-->
  46. <!-- :label="dict.fName"-->
  47. <!-- :value="dict.fId"-->
  48. <!-- ></el-option>-->
  49. <!-- </el-select>-->
  50. <!-- </el-form-item>-->
  51. <el-form-item label="制单部门" prop="fDeptid">
  52. <el-input
  53. v-model="queryParams.fDeptid"
  54. placeholder="请输入制单部门"
  55. clearable
  56. size="small"
  57. @keyup.enter.native="handleQuery"
  58. />
  59. </el-form-item>
  60. <el-form-item label="有效期起" prop="fBegindate">
  61. <el-date-picker clearable size="small" style="width: 200px"
  62. v-model="queryParams.fBegindate"
  63. type="date"
  64. value-format="yyyy-MM-dd"
  65. placeholder="选择有效期起"
  66. >
  67. </el-date-picker>
  68. </el-form-item>
  69. <el-form-item label="有效期至" prop="fEnddate">
  70. <el-date-picker clearable size="small" style="width: 200px"
  71. v-model="queryParams.fEnddate"
  72. type="date"
  73. value-format="yyyy-MM-dd"
  74. placeholder="选择有效期至"
  75. >
  76. </el-date-picker>
  77. </el-form-item>
  78. <el-form-item label="协议编号" prop="fContractno">
  79. <el-input
  80. v-model="queryParams.fContractno"
  81. placeholder="请输入协议编号"
  82. clearable
  83. size="small"
  84. @keyup.enter.native="handleQuery"
  85. />
  86. </el-form-item>
  87. <el-form-item>
  88. <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  89. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  90. </el-form-item>
  91. </el-form>
  92. <el-row :gutter="10" class="mb8">
  93. <el-col :span="1.5">
  94. <el-button
  95. type="primary"
  96. icon="el-icon-plus"
  97. size="mini"
  98. @click="handleAdd()"
  99. v-hasPermi="['agreement:agreementStorage:add']"
  100. >新增
  101. </el-button>
  102. </el-col>
  103. <el-col :span="1.5">
  104. <el-button
  105. type="warning"
  106. icon="el-icon-download"
  107. size="mini"
  108. @click="handleExport"
  109. v-hasPermi="['agreement:agreementStorage:export']"
  110. >导出
  111. </el-button>
  112. </el-col>
  113. <el-col :span="1.5">
  114. <el-button
  115. type="info"
  116. icon="el-icon-download"
  117. size="mini"
  118. :disabled="single"
  119. @click="handleUpdate(null,2)"
  120. v-hasPermi="['agreement:agreementStorage:export']"
  121. >复制新增
  122. </el-button>
  123. </el-col>
  124. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  125. </el-row>
  126. <el-table v-loading="loading" :data="agreementList" @selection-change="handleSelectionChange">
  127. <el-table-column type="selection" width="55" align="center"/>
  128. <el-table-column label="合同编号" align="center" prop="fContractno" show-overflow-tooltip/>
  129. <el-table-column label="客户名称" align="center" prop="fCorpid" show-overflow-tooltip/>
  130. <!-- <el-table-column label="货物品名" align="center" prop="fGoodsid"/>-->
  131. <el-table-column label="有效期起" align="center" prop="fBegindate" width="180">
  132. <template slot-scope="scope">
  133. <span>{{ parseTime(scope.row.fBegindate, '{y}-{m}-{d}') }}</span>
  134. </template>
  135. </el-table-column>
  136. <el-table-column label="有效期至" align="center" prop="fEnddate" width="180">
  137. <template slot-scope="scope">
  138. <span>{{ parseTime(scope.row.fEnddate, '{y}-{m}-{d}') }}</span>
  139. </template>
  140. </el-table-column>
  141. <!-- <el-table-column label="状态" align="center" prop="fId" />-->
  142. <el-table-column label="是否启用" align="center" prop="fStatus">
  143. <template slot-scope="scope">
  144. <el-switch
  145. v-model="scope.row.fStatus"
  146. active-value="0"
  147. inactive-value="1"
  148. @change="handleStatusChange(scope.row)"
  149. ></el-switch>
  150. </template>
  151. </el-table-column>
  152. <el-table-column label="状态" align="center" prop="fBillstatus">
  153. <template slot-scope="scope">
  154. <span v-if="scope.row.fBillstatus === '1'">保存</span>
  155. <span v-else-if="scope.row.fBillstatus === '2'">暂存</span>
  156. <span v-else-if="scope.row.fBillstatus === '3'">审批驳回</span>
  157. <span v-else-if="scope.row.fBillstatus === '4'">提交审核</span>
  158. <span v-else-if="scope.row.fBillstatus === '5'">审核中</span>
  159. <span v-else-if="scope.row.fBillstatus === '6'">审核完成</span>
  160. </template>
  161. </el-table-column>
  162. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  163. <template slot-scope="scope">
  164. <el-button
  165. size="mini"
  166. type="text"
  167. icon="el-icon-view"
  168. @click="check_s(scope.row,0)"
  169. v-hasPermi="['agreement:agreementStorage:edit']"
  170. >查看
  171. </el-button>
  172. <el-button
  173. size="mini"
  174. type="text"
  175. icon="el-icon-view"
  176. @click="check(scope.row,1)"
  177. v-hasPermi="['agreement:agreementStorage:edit']"
  178. v-if="scope.row.fBillstatus === '4' || scope.row.fBillstatus === '5'"
  179. >审批进度
  180. </el-button>
  181. <el-button
  182. size="mini"
  183. type="text"
  184. icon="el-icon-edit"
  185. @click="handleUpdate(scope.row,1)"
  186. v-hasPermi="['agreement:agreementStorage:edit']"
  187. v-if="scope.row.fBillstatus < 4"
  188. >修改
  189. </el-button>
  190. <el-button
  191. size="mini"
  192. type="text"
  193. icon="el-icon-delete"
  194. @click="handleDelete(scope.row)"
  195. v-if="scope.row.fBillstatus < 4"
  196. v-hasPermi="['agreement:agreementStorage:remove']"
  197. >删除
  198. </el-button>
  199. </template>
  200. </el-table-column>
  201. </el-table>
  202. <pagination
  203. v-show="total>0"
  204. :total="total"
  205. :page.sync="queryParams.pageNum"
  206. :limit.sync="queryParams.pageSize"
  207. @pagination="getList"
  208. />
  209. <!-- 添加或修改仓储费对话框 -->
  210. <el-dialog :title="title" :visible.sync="open" width="65%" append-to-body :show-close="colseButton"
  211. :close-on-click-modal="false"
  212. >
  213. <el-form ref="form" :model="form" :rules="rules" label-width="80px"
  214. style="display: flex;flex-wrap: wrap;"
  215. >
  216. <el-form-item label="客户名称" prop="fCorpid">
  217. <el-select
  218. :disabled="notChange"
  219. v-model="form.fCorpid"
  220. filterable
  221. remote
  222. clearable
  223. style="width: 200px"
  224. @keyup.enter.native="handleQuery"
  225. :remote-method="corpsRemoteMethod"
  226. placeholder="请输入客户名称"
  227. >
  228. <el-option
  229. v-for="(dict, index) in fMblnoOptions"
  230. :key="index.fId"
  231. :label="dict.fName"
  232. :value="dict.fId"
  233. ></el-option>
  234. </el-select>
  235. </el-form-item>
  236. <el-form-item label="制单部门">
  237. <el-input v-model="deptName" :disabled="true" placeholder="请输入制单部门" style="width: 200px"/>
  238. </el-form-item>
  239. <el-form-item label="有效期起" prop="fBegindate">
  240. <el-date-picker clearable size="small" style="width: 200px"
  241. v-model="form.fBegindate"
  242. type="date"
  243. :disabled="notChange"
  244. value-format="yyyy-MM-dd"
  245. placeholder="选择有效期起"
  246. >
  247. </el-date-picker>
  248. </el-form-item>
  249. <el-form-item label="有效期至" prop="fEnddate">
  250. <el-date-picker clearable size="small" style="width: 200px"
  251. v-model="form.fEnddate"
  252. :disabled="notChange"
  253. type="date"
  254. value-format="yyyy-MM-dd"
  255. placeholder="选择有效期至"
  256. >
  257. </el-date-picker>
  258. </el-form-item>
  259. <el-form-item label="合同编号" prop="fContractno">
  260. <el-input v-model="form.fContractno" :disabled="notChange" placeholder="请输入合同编号" style="width: 200px"/>
  261. </el-form-item>
  262. <el-form-item label="商品类别" prop="tPackages">
  263. <el-select v-model="form.tPackages" :disabled="notChange" placeholder="请选择商品类别">
  264. <el-option
  265. v-for="dict in fTypeidOptions"
  266. :key="dict.dictValue"
  267. :label="dict.dictLabel"
  268. :value="dict.dictValue"
  269. style="width: 210px;"
  270. ></el-option>
  271. </el-select>
  272. </el-form-item>
  273. </el-form>
  274. <el-button type="primary" @click="submit" :disabled="notChange">请 核</el-button>
  275. <div class="dialogTableTitle flex a-center jlr">
  276. <h2>标题</h2>
  277. <el-button @click="getList_s()" :disabled="notChange">新增</el-button>
  278. </div>
  279. <el-table v-loading="loading_s" :data="agreementitemsList" @selection-change="handleSelectionChange">
  280. <!-- <el-table-column type="selection" width="55" align="center"/>-->
  281. <el-table-column label="行号" align="center" type="index"/>
  282. <el-table-column
  283. prop="fFeeunitid"
  284. header-align="center"
  285. align="center"
  286. width="180px"
  287. label="计价单位"
  288. >
  289. <template slot-scope="scope">
  290. <el-select
  291. v-model="scope.row.fFeeunitid"
  292. placeholder="请选择计价单位"
  293. @change="changeFeeUnit(scope.row)"
  294. clearable
  295. :disabled="browseStatus"
  296. >
  297. <el-option
  298. v-for="(dict, index) in jFeetunitOptions"
  299. :key="index.dictValue"
  300. :label="dict.dictLabel"
  301. :value="dict.dictValue"
  302. />
  303. </el-select>
  304. </template>
  305. </el-table-column>
  306. <el-table-column label="开始天数" align="center">
  307. <template slot-scope="scope">
  308. <el-input
  309. v-model="scope.row.fFromdays"
  310. placeholder="请输入开始天数"
  311. oninput='value = value.replace(/[^\d.]/g,"")'
  312. clearable
  313. size="small"
  314. :disabled="notChange"
  315. />
  316. </template>
  317. </el-table-column>
  318. <el-table-column label="结束天数" align="center">
  319. <template slot-scope="scope">
  320. <el-input
  321. v-model="scope.row.fEndays"
  322. placeholder="请输入结束天数"
  323. oninput='value = value.replace(/[^\d.]/g,"")'
  324. clearable
  325. size="small"
  326. :disabled="notChange"
  327. />
  328. </template>
  329. </el-table-column>
  330. <el-table-column label="单价" align="center">
  331. <el-input
  332. slot-scope="scope"
  333. v-model="scope.row.fPrice"
  334. placeholder="请输入单价"
  335. oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")'
  336. clearable
  337. size="small"
  338. :disabled="notChange"
  339. />
  340. </el-table-column>
  341. <el-table-column label="录入人" align="center">
  342. <el-input
  343. slot-scope="scope"
  344. v-model="scope.row.createBy"
  345. :disabled="true"
  346. placeholder="默认录入人"
  347. clearable
  348. size="small"
  349. />
  350. </el-table-column>
  351. <el-table-column label="录入时间" align="center">
  352. <el-input
  353. slot-scope="scope"
  354. v-model="scope.row.createTime"
  355. placeholder="默认录入时间"
  356. :disabled="true"
  357. clearable
  358. size="small"
  359. />
  360. </el-table-column>
  361. <el-table-column
  362. prop="fFeeid"
  363. header-align="center"
  364. align="center"
  365. width="180px"
  366. label="费用名称"
  367. >
  368. <template slot-scope="scope">
  369. <el-select
  370. v-model="scope.row.fFeeid"
  371. filterable
  372. remote
  373. :disabled="browseStatus"
  374. :remote-method="fWRemoteMethod"
  375. placeholder="费用名称"
  376. >
  377. <el-option
  378. v-for="(dict, index) in fWbuOptions"
  379. :key="index.fId"
  380. :label="dict.fName"
  381. :value="dict.fId"
  382. ></el-option>
  383. </el-select>
  384. </template>
  385. </el-table-column>
  386. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  387. <template slot-scope="scope">
  388. <el-button
  389. size="mini"
  390. type="text"
  391. icon="el-icon-delete"
  392. :disabled="browseStatus"
  393. @click.native.prevent="deleteRow(scope.$index, agreementitemsList)"
  394. >删除
  395. </el-button>
  396. </template>
  397. </el-table-column>
  398. </el-table>
  399. <div slot="footer" class="dialog-footer">
  400. <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
  401. <approval-comments v-if="addOrUpdateVisib" ref="ApprovalComments" @refreshDataList="returnData"></approval-comments>
  402. <el-button v-if="approve === true" @click="goApproval">审批</el-button>
  403. <el-button type="danger" @click="backApproval" v-if="form.fBillstatus === '4' && operator === lander">撤销审批</el-button>
  404. <el-button type="info" v-if="form.fBillstatus >= 3" @click="addOrUpdateHandle()">查看审批流</el-button>
  405. <el-button type="success" @click="backrRconciliation" v-if="form.fBillstatus === '6'">撤销请核</el-button>
  406. <el-button type="primary" @click="submitForm" :disabled="notChange">保 存</el-button>
  407. <el-button v-if="cancelButton === true" @click="cancel">取 消</el-button>
  408. <el-button v-if="cancelButton === false" @click="homePage">取消</el-button>
  409. </div>
  410. </el-dialog>
  411. </div>
  412. </template>
  413. <script>
  414. import moment from 'moment'
  415. import {
  416. RevocationApproval,
  417. backFee,
  418. PleaseCheck,
  419. listAgreements,
  420. getAgreement,
  421. delAgreement,
  422. addAgreement,
  423. updateAgreement_s,
  424. exportAgreement,
  425. listAgreementitems,
  426. queryUserVal
  427. } from '@/api/warehouseBusiness/agreement'
  428. import { listCorps } from '@/api/basicdata/corps'
  429. import { listGoods } from '@/api/basicdata/goods'
  430. import { delWarehousebills } from '@/api/warehouseBusiness/warehouseInStock'
  431. import { listGoodsTransfer } from '@/api/warehouseBusiness/goodsTransfer'
  432. import { listFees } from '@/api/basicdata/fees'
  433. import { changeUserStatus } from '@/api/system/user'
  434. import AddOrUpdate from '@/views/viewApproval'
  435. import ApprovalComments from '@/views/startApproval'
  436. import Global from '@/layout/components/global'
  437. // import { listUser, queryUserVal } from '@/api/system/user'
  438. export default {
  439. name: 'Agreement',
  440. components: {
  441. AddOrUpdate,
  442. ApprovalComments
  443. },
  444. data() {
  445. return {
  446. addOrEdid:1,
  447. idCopy:'',
  448. colseButton:true,
  449. cancelButton:true,
  450. // 审批状态
  451. approve:false,
  452. addOrUpdateVisible: false,
  453. addOrUpdateVisib:false,
  454. notChange: false,
  455. dataList: '',
  456. value_s: [],
  457. // 遮罩层
  458. loading: true,
  459. loading_s: false,
  460. browseStatus: false,
  461. // 计价单位
  462. jFeetunitOptions: [],
  463. agreementId: 310,
  464. goodsOptions: [],
  465. fTypeidOptions: [],
  466. // 选中数组
  467. ids: [],
  468. deptName: '',
  469. // 客户(客户数据)
  470. fMblnoOptions: [],
  471. fFeeunitidOptions: [],
  472. fWbuOptions: [],
  473. // 非单个禁用
  474. single: true,
  475. // 非多个禁用
  476. multiple: true,
  477. // 显示搜索条件
  478. showSearch: true,
  479. // 总条数
  480. total: 0,
  481. // 仓储费表格数据
  482. agreementList: [],
  483. // 弹出层标题
  484. title: '',
  485. add: '',
  486. // 是否显示弹出层
  487. open: false,
  488. // 结算方式,也可以从表t_stltypes中下拉选择,存储id,显示name字典
  489. fStltypeidOptions: [],
  490. // 货物类别,存储t_packages,f_id 显示名称,可以多选t_packages 中的no或 name,模糊查找选择后,存储f_id,显示name字典
  491. tPackagesOptions: [],
  492. // 贸易方式,对应t_trademodels 字典
  493. fTrademodeidOptions: [],
  494. // 仓储费明细表表格数据
  495. agreementitemsList: [],
  496. // 操作人
  497. operator: '',
  498. lander: '',
  499. // 查询参数
  500. queryParams: {
  501. pageNum: 1,
  502. pageSize: 10,
  503. fBillno: null,
  504. fDeptid: null,
  505. fContractno: null,
  506. fCorpid: null,
  507. fStltypeid: null,
  508. fGoodsid: null,
  509. fFeetypeid: null,
  510. tPackages: null,
  511. fTrademodeid: null,
  512. fFreedays: null,
  513. fBegindate: null,
  514. fEnddate: null,
  515. fBillstatus: null,
  516. fStatus: null
  517. },
  518. // 表单参数
  519. form: {},
  520. // 表单校验
  521. rules: {
  522. fBillno: [
  523. {
  524. required: true,
  525. message: ' ',
  526. trigger: 'blur'
  527. }
  528. ],
  529. fCorpid: [
  530. { required: true, message: ' ', trigger: 'blur' }
  531. ],
  532. tPackages:[
  533. { required: true, message: ' ', trigger: 'blur' }
  534. ],
  535. fBegindate:[
  536. { required: true, message: ' ', trigger: 'blur' }
  537. ],
  538. fEnddate:[
  539. { required: true, message: ' ', trigger: 'blur' }
  540. ]
  541. }
  542. }
  543. },
  544. created() {
  545. this.getList()
  546. this.getDicts('data_settlement_method').then(response => {
  547. this.fStltypeidOptions = response.data
  548. })
  549. this.getDicts('data_package_unit').then(response => {
  550. this.tPackagesOptions = response.data
  551. })
  552. this.getDicts('data_trademodes').then(response => {
  553. this.fTrademodeidOptions = response.data
  554. })
  555. this.getDicts('data_goods_category').then(response => {
  556. this.fTypeidOptions = response.data
  557. })
  558. this.getDicts("data_unitfees").then(response => {
  559. this.jFeetunitOptions = response.data;
  560. });
  561. this.register()
  562. },
  563. activated(){
  564. this.Jump()
  565. },
  566. methods: {
  567. //复制新增按钮
  568. handleCopy(){
  569. getAgreement().then(response => {
  570. })
  571. },
  572. homepaGe(){
  573. let view = {
  574. fullPath: "/agreement/agreementStorage",
  575. hash: "",
  576. matched: Array(2),
  577. meta: Object,
  578. name: "AgreementStorage",
  579. params: Object,
  580. path: "/agreement/agreementStorage",
  581. query: Object,
  582. title: "仓储费协议"
  583. }
  584. this.$router.push({ path: '/index'})
  585. this.$store.dispatch('tagsView/delView', view).then(({ visitedViews }) => {
  586. if (this.isActive(view)) {
  587. this.toLastView(visitedViews, view)
  588. }
  589. })
  590. Global.$emit("removeCache", "closeSelectedTag", view);
  591. },
  592. homePage() {
  593. this.open = false
  594. let view = {
  595. fullPath: "/agreement/agreementStorage",
  596. hash: "",
  597. matched: Array(2),
  598. meta: Object,
  599. name: "AgreementStorage",
  600. params: Object,
  601. path: "/agreement/agreementStorage",
  602. query: Object,
  603. title: "仓储费协议"
  604. }
  605. this.$router.push({ path: '/index' })
  606. this.$store.dispatch('tagsView/delView', view).then(({ visitedViews }) => {
  607. if (this.isActive(view)) {
  608. this.toLastView(visitedViews, view)
  609. }
  610. })
  611. Global.$emit("removeCache", "closeSelectedTag", view);
  612. },
  613. Jump(){
  614. this.approval = this.$route.query.data
  615. if(this.approval) {
  616. this.approval = JSON.parse(this.approval)
  617. this.colseButton = false
  618. this.hide = false
  619. this.open = true
  620. this.notChange = true
  621. this.approve = true
  622. this.cancelButton = false
  623. this.reset()
  624. getAgreement(this.approval.billId).then(response => {
  625. this.deptName = response.data.dept.deptName
  626. this.form = response.data.tWarehouseAgreement
  627. this.fMblnoOptions = response.data.corps
  628. this.agreementitemsList = response.data.tWarehouseAgreementitems
  629. for (let item in this.agreementitemsList) {
  630. this.$set(this.agreementitemsList[item], 'fFeeunitid', this.agreementitemsList[item].fFeeunitid + '')
  631. // this.fWRemoteMethod(this.agreementitemsList[item].fFeeid)
  632. }
  633. this.fWbuOptions = response.data.feesList
  634. // this.add = row
  635. this.open = true
  636. this.browseStatus = true
  637. })
  638. }
  639. },
  640. goApproval(){
  641. this.addOrUpdateVisib = true
  642. this.$nextTick(() => {
  643. this.$refs.ApprovalComments.init(this.form.fId,this.agreementId)
  644. })
  645. },
  646. returnData(){
  647. this.addOrUpdateVisib = false
  648. this.open = false
  649. this.homepaGe()
  650. },
  651. getDataList(){
  652. this.addOrUpdateVisible = false
  653. },
  654. // 查看审批流
  655. addOrUpdateHandle() {
  656. this.addOrUpdateVisible = true
  657. this.addOrUpdateVisib = false
  658. let id = '448'
  659. let actId = '110'
  660. this.$nextTick(() => {
  661. this.$refs.addOrUpdate.init(this.form.fId, this.agreementId)
  662. })
  663. },
  664. register() {
  665. queryUserVal().then((response) => {
  666. this.lander = response.user.userName
  667. })
  668. },
  669. check_s(row, res) {
  670. this.notChange = true
  671. this.browseStatus = true
  672. this.register()
  673. getAgreement(row.fId).then(response => {
  674. this.deptName = response.data.dept.deptName
  675. this.form = response.data.tWarehouseAgreement
  676. this.operator = this.form.createBy
  677. this.fMblnoOptions = response.data.corps
  678. this.agreementitemsList = response.data.tWarehouseAgreementitems
  679. for (let item in this.agreementitemsList) {
  680. this.$set(this.agreementitemsList[item], 'fFeeunitid', this.agreementitemsList[item].fFeeunitid + '')
  681. }
  682. this.fWbuOptions = response.data.feesList
  683. this.add = row
  684. this.title = '修改仓储费'
  685. })
  686. getAgreement(row.fId).then(response => {
  687. this.deptName = response.data.dept.deptName
  688. this.form = response.data.tWarehouseAgreement
  689. this.fMblnoOptions = response.data.corps
  690. this.agreementitemsList = response.data.tWarehouseAgreementitems
  691. for (let item in this.agreementitemsList) {
  692. this.$set(this.agreementitemsList[item], 'fFeeunitid', this.agreementitemsList[item].fFeeunitid + '')
  693. }
  694. this.fWbuOptions = response.data.feesList
  695. this.add = row
  696. this.open = true
  697. })
  698. },
  699. // 查看按钮
  700. check(row, res) {
  701. this.notChange = true
  702. this.browseStatus = true
  703. this.register()
  704. getAgreement(row.fId).then(response => {
  705. this.deptName = response.data.dept.deptName
  706. this.form = response.data.tWarehouseAgreement
  707. this.operator = this.form.createBy
  708. this.fMblnoOptions = response.data.corps
  709. this.agreementitemsList = response.data.tWarehouseAgreementitems
  710. for (let item in this.agreementitemsList) {
  711. this.$set(this.agreementitemsList[item], 'fFeeunitid', this.agreementitemsList[item].fFeeunitid + '')
  712. }
  713. this.fWbuOptions = response.data.feesList
  714. this.add = row
  715. this.title = '修改仓储费'
  716. })
  717. this.open = true
  718. },
  719. //撤销审批
  720. backApproval() {
  721. let data = {
  722. id: this.form.fId,
  723. actId: this.agreementId,
  724. billId: this.form.fId
  725. }
  726. RevocationApproval(data).then(data => {
  727. if (data.code === 200) {
  728. this.$message.success('撤销成功')
  729. this.open = false
  730. this.getList()
  731. }
  732. })
  733. },
  734. // 撤销请核
  735. backrRconciliation() {
  736. let formData = new window.FormData()
  737. // 附件数据
  738. formData.append('agreement', JSON.stringify(this.form))
  739. formData.append('agreementitems', JSON.stringify(this.agreementitemsList))
  740. backFee(formData).then(response => {
  741. this.msgSuccess('撤销成功')
  742. this.open = false
  743. this.getList()
  744. })
  745. },
  746. // 请核按钮
  747. submit() {
  748. if (this.agreementitemsList.length <= 0) {
  749. this.$message.error('仓储费协议明细为空,无法操作')
  750. return false
  751. }
  752. for (let agr = 0; agr < this.agreementitemsList.length; agr ++) {
  753. if (!this.agreementitemsList[agr].fFeeunitid) {
  754. this.$message.error('请维护仓储费明细计价单位')
  755. return false
  756. }
  757. if (!this.agreementitemsList[agr].fFromdays) {
  758. this.$message.error('请维护仓储费明细开始天数')
  759. return false
  760. }
  761. if (!this.agreementitemsList[agr].fEndays) {
  762. this.$message.error('请维护仓储费明细结束天数')
  763. return false
  764. }
  765. if (!this.agreementitemsList[agr].fPrice) {
  766. this.$message.error('请维护仓储费明细单价')
  767. return false
  768. }
  769. if (!this.agreementitemsList[agr].fFeeid) {
  770. this.$message.error('请维护仓储费明细费用名称')
  771. return false
  772. }
  773. }
  774. this.$refs['form'].validate(valid => {
  775. if (valid) {
  776. let formData = new window.FormData()
  777. formData.append('agreement', JSON.stringify(this.form))
  778. formData.append('agreementitems', JSON.stringify(this.agreementitemsList))
  779. PleaseCheck(formData).then(response => {
  780. this.msgSuccess('请核成功')
  781. this.open = false
  782. this.getList()
  783. })
  784. }
  785. })
  786. },
  787. // 仓储费状态修改
  788. handleStatusChange(row) {
  789. if(row.fBillstatus == '6'){
  790. let text = row.fStatus === '0' ? '启用' : '停用'
  791. this.$confirm('确认要"' + text + '""' + row.fCorpid + '"用户吗?', '警告', {
  792. confirmButtonText: '确定',
  793. cancelButtonText: '取消',
  794. type: 'warning'
  795. }).then(function() {
  796. return updateAgreement_s(row.fId, row.fStatus)
  797. }).then(() => {
  798. this.msgSuccess(text + '成功')
  799. }).catch(function() {
  800. row.fStatus = row.fStatus === '0' ? '1' : '0'
  801. })
  802. }else{
  803. row.fStatus = 0
  804. this.$message.error('审核完成时才能启用');
  805. }
  806. },
  807. /** 创建仓储费明细表列表 */
  808. getList_s() {
  809. queryUserVal().then((response) => {
  810. this.agreementitemsList.push({
  811. //行号
  812. fLineno: '',
  813. //计价单位
  814. fFeeunitid: '',
  815. //费用名称
  816. fFeeid: '',
  817. //开始天数
  818. fFromdays: '',
  819. //结束天数
  820. fEndays: '',
  821. //单价
  822. fPrice: '',
  823. //录入人
  824. createBy: response.user.userName,
  825. //创建时间
  826. createTime: moment(Date.parse(new Date())).format('YYYY-MM-DD HH:mm:ss')
  827. })
  828. // this.$set("deptName", response.dept.deptName);
  829. this.deptName = response.dept.deptName
  830. this.form.fDeptid = response.dept.deptId
  831. this.agreementitemsList.createBy = response.user.userName
  832. // this.$set(this.agreementitemsList, "createBy", response.user.userName);
  833. //格式化时间戳
  834. // this.$set(this.agreementitemsList, "createTime", moment(Date.parse(new Date())).format("YYYY-MM-DD HH:mm:ss"));
  835. })
  836. listAgreementitems(this.queryParams).then(response => {
  837. })
  838. },
  839. /* 远程模糊查询商品 */
  840. goodsRemoteMethod(name) {
  841. if (name == null || name === '') {
  842. return false
  843. }
  844. let queryParams = { pageNum: 1, pageSize: 10, fName: name }
  845. listGoods(queryParams).then((response) => {
  846. this.goodsOptions = response.rows
  847. })
  848. },
  849. // 计价单位
  850. fFeeunitidFormat(row, column) {
  851. return this.selectDictLabel(this.fFeeunitidOptions, row.fFeeunitid)
  852. },
  853. /** 查询仓储费列表 */
  854. getList() {
  855. this.loading = true
  856. listAgreements(this.queryParams).then(response => {
  857. this.agreementList = response.rows
  858. this.total = response.total
  859. this.loading = false
  860. })
  861. },
  862. // 远程模糊查询费用名称
  863. fWRemoteMethod(name) {
  864. this.fWbuOptions = []
  865. if (name == null || name === '') {
  866. return false
  867. }
  868. let queryParams = { pageNum: 1, pageSize: 10, fName: name }
  869. listFees(queryParams).then((response) => {
  870. this.fWbuOptions = response.rows
  871. })
  872. },
  873. // 结算方式,也可以从表t_stltypes中下拉选择,存储id,显示name字典翻译
  874. fStltypeidFormat(row, column) {
  875. return this.selectDictLabel(this.fStltypeidOptions, row.fStltypeid)
  876. },
  877. // 货物类别,存储t_packages,f_id 显示名称,可以多选t_packages 中的no或 name,模糊查找选择后,存储f_id,显示name字典翻译
  878. tPackagesFormat(row, column) {
  879. return this.selectDictLabel(this.tPackagesOptions, row.tPackages)
  880. },
  881. // 贸易方式,对应t_trademodels 字典翻译
  882. fTrademodeidFormat(row, column) {
  883. return this.selectDictLabel(this.fTrademodeidOptions, row.fTrademodeid)
  884. },
  885. // 取消按钮
  886. cancel() {
  887. this.open = false
  888. this.reset()
  889. this.getList()
  890. this.agreementitemsList = []
  891. },
  892. handleClose() {
  893. this.open = false
  894. this.reset()
  895. this.getList()
  896. this.agreementitemsList = []
  897. },
  898. // 表单重置
  899. reset() {
  900. this.form = {
  901. fId: null,
  902. fBillno: null,
  903. fDeptid: null,
  904. fContractno: null,
  905. fCorpid: null,
  906. fStltypeid: null,
  907. fGoodsid: null,
  908. fFeetypeid: null,
  909. tPackages: null,
  910. fTrademodeid: null,
  911. fFreedays: null,
  912. fBegindate: null,
  913. fEnddate: null,
  914. fBillstatus: null,
  915. delFlag: null,
  916. createBy: null,
  917. createTime: null,
  918. updateBy: null,
  919. updateTime: null,
  920. remark: null
  921. }
  922. this.resetForm('form')
  923. },
  924. /** 搜索按钮操作 */
  925. handleQuery() {
  926. this.queryParams.pageNum = 1
  927. this.getList()
  928. },
  929. // 变更计价单位
  930. changeFeeUnit(row) {
  931. if (!row.fFeeUnitid) {
  932. return false
  933. }
  934. if (row.fFeeUnitid === '0') {
  935. this.$set(row, 'fQty', this.fCntqty)
  936. } else if (row.fFeeUnitid === '1') {
  937. this.$set(row, 'fQty', this.fGrossweight)
  938. }
  939. if (row.fUnitprice) {
  940. this.$set(
  941. row,
  942. 'fAmount',
  943. parseFloat(Number(row.fUnitprice) * Number(row.fQty)).toFixed(2)
  944. )
  945. }
  946. },
  947. /** 重置按钮操作 */
  948. resetQuery() {
  949. this.resetForm('queryForm')
  950. this.handleQuery()
  951. },
  952. // 多选框选中数据
  953. handleSelectionChange(selection) {
  954. this.ids = selection.map(item => item.fId)
  955. this.idCopy = this.ids[0]
  956. this.single = selection.length !== 1
  957. this.multiple = !selection.length
  958. },
  959. /** 新增按钮操作 */
  960. handleAdd() {
  961. this.reset()
  962. // this.agreementitemsList = {
  963. // fFeeunitid:'',
  964. // fFromdays:'',
  965. // fEndays:'',
  966. // fPrice:'',
  967. // fFeeid:''
  968. // }
  969. this.open = true
  970. this.browseStatus = false
  971. this.notChange = false
  972. this.title = '添加仓储费'
  973. queryUserVal().then((response) => {
  974. // this.$set("deptName", response.dept.deptName);
  975. this.deptName = response.dept.deptName
  976. this.form.fDeptid = response.dept.deptId
  977. // this.agreementitemsList.createBy = response.user.userName
  978. // this.$set(this.agreementitemsList, "createBy", response.user.userName);
  979. //格式化时间戳
  980. // this.$set(this.agreementitemsList, "createTime", moment(Date.parse(new Date())).format("YYYY-MM-DD HH:mm:ss"));
  981. })
  982. },
  983. /** 修改按钮操作 */
  984. handleUpdate(row,num) {
  985. if (num === 2){
  986. getAgreement(this.idCopy).then(response => {
  987. this.deptName = response.data.dept.deptName
  988. this.form = response.data.tWarehouseAgreement
  989. this.form.fId = null
  990. this.form.fBillstatus = ''
  991. this.fMblnoOptions = response.data.corps
  992. this.agreementitemsList = response.data.tWarehouseAgreementitems
  993. for (let item in this.agreementitemsList) {
  994. this.$set(this.agreementitemsList[item], 'fFeeunitid', this.agreementitemsList[item].fFeeunitid + '')
  995. // this.fWRemoteMethod(this.agreementitemsList[item].fFeeid)
  996. }
  997. this.fWbuOptions = response.data.feesList
  998. this.add = row
  999. this.open = true
  1000. this.title = '新增仓储费'
  1001. })
  1002. }else {
  1003. this.notChange = false
  1004. this.browseStatus = false
  1005. const fId = row.fId || this.ids
  1006. getAgreement(fId).then(response => {
  1007. this.deptName = response.data.dept.deptName
  1008. this.form = response.data.tWarehouseAgreement
  1009. this.fMblnoOptions = response.data.corps
  1010. this.agreementitemsList = response.data.tWarehouseAgreementitems
  1011. for (let item in this.agreementitemsList) {
  1012. this.$set(this.agreementitemsList[item], 'fFeeunitid', this.agreementitemsList[item].fFeeunitid + '')
  1013. // this.fWRemoteMethod(this.agreementitemsList[item].fFeeid)
  1014. }
  1015. this.fWbuOptions = response.data.feesList
  1016. this.add = row
  1017. this.open = true
  1018. this.title = '修改仓储费'
  1019. })
  1020. }
  1021. },
  1022. /** 远程模糊查询用户 */
  1023. corpsRemoteMethod(name) {
  1024. if (name == null || name === '') {
  1025. return false
  1026. }
  1027. let queryParams = { pageNum: 1, pageSize: 10, fName: name, type: 1 }
  1028. listCorps(queryParams).then((response) => {
  1029. this.fMblnoOptions = response.rows
  1030. this.KHblnoOptions = response.rows
  1031. })
  1032. },
  1033. debounce(fn, delay) {
  1034. let timerId = null;
  1035. return function () {
  1036. let self = this;
  1037. let args = arguments;
  1038. timerId && clearTimeout(timerId);
  1039. timerId = setTimeout(function () {
  1040. fn.apply(self, args);
  1041. }, delay || 1000);
  1042. }
  1043. },
  1044. /** 保存按钮 */
  1045. submitForm() {
  1046. if(this.addOrEdid == 2){
  1047. this.$set(this.form, 'fId', null)
  1048. }
  1049. this.$refs['form'].validate(valid => {
  1050. if (valid) {
  1051. let formData = new window.FormData()
  1052. formData.append('agreement', JSON.stringify(this.form))
  1053. formData.append('agreementitems', JSON.stringify(this.agreementitemsList))
  1054. addAgreement(formData).then(response => {
  1055. this.msgSuccess('操作成功')
  1056. this.$set(this.form, 'fId', response.data.tWarehouseAgreement.fId)
  1057. this.$set(this.form, 'fBillsStatus', response.data.tWarehouseAgreement.fBillsStatus)
  1058. })
  1059. }
  1060. })
  1061. },
  1062. /** 删除按钮操作 */
  1063. handleDelete(row) {
  1064. const fIds = row.fId || this.ids
  1065. this.$confirm('是否确认删除仓储费编号为"' + fIds + '"的数据项?', '警告', {
  1066. confirmButtonText: '确定',
  1067. cancelButtonText: '取消',
  1068. type: 'warning'
  1069. }).then(function() {
  1070. return delAgreement(fIds)
  1071. }).then(() => {
  1072. this.getList()
  1073. this.msgSuccess('删除成功')
  1074. })
  1075. },
  1076. /** 导出按钮操作 */
  1077. handleExport() {
  1078. const queryParams = this.queryParams
  1079. this.$confirm('是否确认导出所有仓储费数据项?', '警告', {
  1080. confirmButtonText: '确定',
  1081. cancelButtonText: '取消',
  1082. type: 'warning'
  1083. }).then(function() {
  1084. return exportAgreement(queryParams)
  1085. }).then(response => {
  1086. this.download(response.msg)
  1087. })
  1088. },
  1089. deleteRow(index, rows) {
  1090. rows.splice(index, 1)
  1091. }
  1092. }
  1093. }
  1094. </script>