warehouseReceiptRegulation.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. //贸易服务管理
  2. <template>
  3. <div class="container">
  4. <!-- <map-drag :class="{active:isActive}" :listData='mapInfo'></map-drag> -->
  5. <!-- <div class="bottom" :class="{active:isActive}">
  6. <div class="bottom-content">
  7. <div class="bottom-item" @click="startHacking">查看申请记录</div>
  8. <div class="bottom-item" @click="startHacking"><i class="el-icon-d-arrow-right icon"></i></div>
  9. <el-radio class="bottom-item" v-model="radio" label="1" @change="selectShowType(1)">默认地图</el-radio>
  10. </div>
  11. </div>
  12. <div class="top">
  13. <div class="top-content">
  14. <div class="top-item" @click="startHacking1">查看地图</div>
  15. <div class="top-item" @click="startHacking1"><i class="el-icon-d-arrow-left icon"></i></div>
  16. <el-radio class="top-item" v-model="radio" label="2" @change="selectShowType(2)">默认列表</el-radio>
  17. </div>
  18. </div> -->
  19. <div class="content2">
  20. <div class="header">
  21. <el-button :type="!searchType ? 'primary' : ''" @click="handlestatus()">全部</el-button>
  22. <el-button :type="searchType == 1 ? 'primary' : ''" @click="handlestatus(1)">待审核</el-button>
  23. <el-button :type="searchType == 2 ? 'primary' : ''" @click="handlestatus(2)">待审批</el-button>
  24. <el-button :type="searchType == 3 ? 'primary' : ''" @click="handlestatus(3)">待还</el-button>
  25. <el-button :type="searchType == 4 ? 'primary' : ''" @click="handlestatus(4)">已还</el-button>
  26. <el-input @keyup.enter.native="findList()" placeholder="可按业务编号、合同编号、仓库名查找" class="search-input" v-model="searchKeyWord"></el-input>
  27. <el-button type="primary" @click='findList'>查找</el-button>
  28. <el-button type="" @click='handle'>电子锁操作记录</el-button>
  29. <el-button type="primary" v-hasPermission=" `tradeServicesManagement.tradeService.add`" class="add" @click="add">添加</el-button>
  30. </div>
  31. <el-table :data="tradeServicesList" style="width: 100%; margin-top: 20px" ref="tradeServicesList" border
  32. height="calc(100% - 100px)">
  33. <el-table-column fixed type="index" label="序号">
  34. <template scope="scope">
  35. <span v-if="scope.$index < 9">0{{ scope.$index + 1 }}</span>
  36. <span v-else>{{ scope.$index + 1 }}</span>
  37. </template>
  38. </el-table-column>
  39. <el-table-column fixed prop="billNo" label="业务编号" width="130"></el-table-column>
  40. <el-table-column fixed prop="warehouseName" label="仓库名" width="130"></el-table-column>
  41. <el-table-column prop="goodsName" label="货名" width="130"></el-table-column>
  42. <el-table-column prop="weight" label="净重(吨)" width="100"></el-table-column>
  43. <el-table-column prop="dryOutWeight" label="折干重量(吨)" width="150"></el-table-column>
  44. <el-table-column prop="unitPrice" label="单价(元/吨)" width="100"></el-table-column>
  45. <el-table-column prop="totalValue" label="货值(元)" width="100"></el-table-column>
  46. <el-table-column prop="paymentAmount" label="发放金额(元)" width="150"></el-table-column>
  47. <el-table-column prop="amountDue" label="应还金额(元)" width="150"></el-table-column>
  48. <el-table-column prop="amountRepaid" label="已还金额(元)" width="150"></el-table-column>
  49. <el-table-column prop="amountToRepaid" label="待还金额(元)" width="150"></el-table-column>
  50. <el-table-column prop="approveStatus" label="状态" width="100">
  51. <template slot-scope="scope">
  52. <span v-if="scope.row.status == '待还款'">{{scope.row.status}}</span>
  53. <span v-else>{{scope.row.approveStatus?scope.row.approveStatus:scope.row.status}}</span>
  54. </template>
  55. </el-table-column>
  56. <el-table-column prop="address" label="操作" width="500">
  57. <template slot-scope="scope">
  58. <el-button size="mini" v-hasPermission=" `tradeServicesManagement.tradeService.view`" @click="lookBtnClick(scope.row, 2)">
  59. 查看</el-button>
  60. <el-button v-if="scope.row.taskId && scope.row.approveStatus=='待决策人审核'" size="mini" @click="toExamineBtnClick(scope.row, 2)">
  61. 审核</el-button>
  62. <el-button v-if="scope.row.taskId && scope.row.approveStatus=='待第三方审核'" size="mini" @click="toExamineBtnClick(scope.row, 2)">
  63. 审核</el-button>
  64. <el-button v-if="scope.row.taskId && scope.row.approveStatus=='待银行审批'" size="mini" @click="approveBtnClick(scope.row, 2)">
  65. 审批</el-button>
  66. <el-button v-hasPermission=" `tradeServicesManagement.tradeService.return`" size="mini" @click="repaymentBtnClick(scope.row, 2)" v-if="scope.row.status == '待还款'">
  67. 还款</el-button>
  68. <el-button v-hasPermission=" `tradeServicesManagement.tradeService.edit`" size="mini" @click="rowEditBtnClick(scope.row)" v-if="!scope.row.approveStatus&&scope.row.status=='已驳回'">修改</el-button>
  69. <el-button v-hasPermission=" `tradeServicesManagement.tradeService.delete`" size="mini" type="danger" @click="rowDeleteBtnClick(scope.row)" v-if="!scope.row.approveStatus&&scope.row.status=='已驳回'">删除</el-button>
  70. <el-button v-if="scope.row.lockedStatusFlag==1" size="mini" type="success" @click="rowhandleBtnClick(scope.row,0)" >电子锁(已开)</el-button>
  71. <el-button v-if="scope.row.lockedStatusFlag==0" size="mini" type="danger" @click="rowhandleBtnClick(scope.row,1)" >电子锁(已关)</el-button>
  72. </template>
  73. </el-table-column>
  74. </el-table>
  75. <div class="paging">
  76. <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
  77. :page-size="deptCircularPage.pageSize" layout="total, sizes, prev, pager, next, jumper"
  78. :total="deptBudgetTotal"></el-pagination>
  79. </div>
  80. </div>
  81. <el-dialog
  82. title="开锁"
  83. :visible.sync="dialogVisible"
  84. width="30%"
  85. :before-close="handleClose">
  86. <div>
  87. <el-form ref="form" :model="form" label-width="100px">
  88. <el-form-item label="开锁事由">
  89. <el-checkbox-group @change="checkchange" v-model="checkList">
  90. <el-checkbox label="出库"></el-checkbox>
  91. <el-checkbox label="入库"></el-checkbox>
  92. <el-checkbox label="巡检"></el-checkbox>
  93. </el-checkbox-group>
  94. </el-form-item>
  95. <el-form-item label="人员">
  96. <el-input v-model="form.lockName" placeholder="请输入人员"></el-input>
  97. </el-form-item>
  98. <el-form-item label="备注(选填)">
  99. <el-input type="textarea" v-model="form.lockRemark"></el-input>
  100. </el-form-item>
  101. </el-form>
  102. </div>
  103. <span slot="footer" class="dialog-footer">
  104. <el-button type="primary" @click="submit">提交</el-button>
  105. </span>
  106. </el-dialog>
  107. <el-dialog
  108. title="开锁"
  109. :visible.sync="dialogVisible1"
  110. width="30%"
  111. :before-close="handleClose1">
  112. <div>
  113. <div style="border-bottom:1px solid #ccc;padding:10px;" v-for="item in dataList">
  114. <div style="justify-content: space-between;" class="flex">
  115. <div>{{ item.dealMsg }}({{item.billType}})-{{ item.operateUser }}</div>
  116. <div>{{ item.createDate }}</div>
  117. </div>
  118. <div style="justify-content: space-between;" class="flex">
  119. <div>{{ item.dealMsgEn }}</div><div>{{ item. verifyUserDuty}}</div>
  120. </div>
  121. <div>{{ item.verifyRemark }}</div>
  122. </div>
  123. </div>
  124. </el-dialog>
  125. </div>
  126. </template>
  127. <script>
  128. import mapDrag from '@/components/mapdrag/warehouseReceiptMap'
  129. import {
  130. getList,
  131. getMapInfo,
  132. deleteTrageInfo,
  133. getDefault,
  134. setDefault,
  135. openlock
  136. } from '@/model/tradeServicesManagement/index'
  137. import {
  138. selectWarehouseSelf,
  139. } from '@/model/houseSelfCollect/index'
  140. import {
  141. billoperatehis,
  142. } from '@/model/contarct/index'
  143. export default {
  144. components: {
  145. mapDrag
  146. },
  147. data() {
  148. return {
  149. searchVal: '',
  150. searchKeyWord: '',
  151. isActive: false,
  152. radio: '',
  153. tradeServicesList: [],
  154. mapInfo: [],
  155. currentPage: 1,
  156. pageSize: 10,
  157. deptBudgetTotal: 0,
  158. deptCircularPage: {},
  159. searchType: '',
  160. warehouseList: [],
  161. compId: '',
  162. id:'',
  163. dialogVisible:false,
  164. form:{},
  165. dialogVisible1:false,
  166. dataList:[],
  167. checkList:[],
  168. currectData:{}
  169. }
  170. },
  171. activated() {
  172. let height = document.body.offsetHeight - 57
  173. document.querySelector('.container').setAttribute('style', 'height:' + height + 'px;')
  174. // let _showPage = localStorage.getItem('warehouseReceiptRegulation_selectShowType')
  175. getDefault({functionType:1}).toPromise().then((response) => {
  176. console.log('地图数据', response)
  177. if(response){
  178. this.id=response
  179. this.radio=response.enabled
  180. }
  181. // this.mapInfo = response.data.records
  182. })
  183. if (this.radio == "1") {
  184. this.isActive = false
  185. } else if (this.radio == "2") {
  186. this.isActive = true
  187. }
  188. this.compId = localStorage.getItem('ws-pf_compId')
  189. this.getMapInfo()
  190. // this.getWarehouseList()
  191. this.tradeServicesList = []
  192. localStorage.removeItem("pageUp")//删除出入库跳返回时数据刷新的问题
  193. // let i = localStorage.getItem('warehouseReceiptRegulation_selectShowType')
  194. // console.log(i)
  195. // console.log(1212121121)
  196. this.getList()
  197. },
  198. beforeCreate() {
  199. document.querySelector('body').setAttribute('style', 'overflow:hidden;')
  200. },
  201. mounted() {
  202. },
  203. methods: {
  204. handle(){
  205. billoperatehis({id:localStorage.getItem('ws-pf_compId')}).toPromise().then((response) => {
  206. this.dataList=response
  207. this.dialogVisible1 = true
  208. })
  209. },
  210. checkchange(e){
  211. console.log(e)
  212. this.form.lockReason=e.join('/')
  213. },
  214. submit(){
  215. openlock({flag:1,electronicLock:this.currectData.electronicLock,...this.form}).toPromise().then((response) => {
  216. this.$message.success('开锁成功')
  217. this.dialogVisible = false
  218. this.getList()
  219. })
  220. },
  221. handleClose(){
  222. this.dialogVisible = false
  223. },
  224. handleClose1(){
  225. this.dialogVisible1 = false
  226. },
  227. rowhandleBtnClick(row,status){
  228. if(status==0){
  229. this.$confirm('确定关闭电子锁?', '提示', {
  230. confirmButtonText: '确定',
  231. cancelButtonText: '取消',
  232. type: 'warning'
  233. })
  234. .then(() => {
  235. openlock({flag:2,electronicLock:row.electronicLock}).toPromise().then((response) => {
  236. this.$message.success('关锁成功')
  237. this.getList()
  238. })
  239. })
  240. }else{
  241. this.currectData=row
  242. this.dialogVisible=true
  243. }
  244. },
  245. getMapInfo() {
  246. getMapInfo().toPromise().then((response) => {
  247. // console.log('地图数据', response)
  248. this.mapInfo = response
  249. // this.mapInfo = response.data.records
  250. })
  251. },
  252. findList() {
  253. this.currentPage = 1
  254. this.pageSize = 10
  255. this.getList()
  256. },
  257. handlestatus(status) {
  258. this.searchType = status
  259. this.getList()
  260. },
  261. lookBtnClick(row, val2) {
  262. this.$router.push({
  263. name: 'warehouseReceiptLook',
  264. query:{id:row.id, workflowId: row.workflowId}
  265. })
  266. },
  267. toExamineBtnClick(row, val2) {
  268. this.$router.push({
  269. name: 'reviewWarehouseReceipt',
  270. query: { id: row.id}
  271. })
  272. },
  273. approveBtnClick(row, val2) {
  274. this.$router.push({
  275. name: 'approveWarehouseReceipt',
  276. query:{id:row.id,workflowId: row.workflowId}
  277. })
  278. },
  279. repaymentBtnClick(row, val2) {
  280. // let repayment = JSON.stringify(row)
  281. this.$router.push({
  282. name: 'repayment',
  283. query:{id:row.id,contractNo:row.contractNo}
  284. })
  285. },
  286. rowEditBtnClick(row) {
  287. this.$router.push({
  288. name: 'warehouseReceiptEdit',
  289. query: { id: row.id, workflowId: row.workflowId }
  290. })
  291. },
  292. rowDeleteBtnClick(row) {
  293. this.$confirm('确定删除本条申请?', '提示', {
  294. confirmButtonText: '确定',
  295. cancelButtonText: '取消',
  296. type: 'warning'
  297. })
  298. .then(() => {
  299. deleteTrageInfo({id:row.id}).toPromise().then((response) => {
  300. this.$message.success('删除成功')
  301. this.getList()
  302. })
  303. })
  304. },
  305. handleSizeChange(val) {
  306. console.log(`每页 ${val} 条`)
  307. this.pageSize = val
  308. this.getWarehouseList()
  309. this.getList()
  310. },
  311. handleCurrentChange(val) {
  312. this.currentPage = val
  313. console.log(`当前页: ${val}`)
  314. this.getList()
  315. },
  316. startHacking() {
  317. this.isActive = true
  318. },
  319. startHacking1() {
  320. this.isActive = false
  321. },
  322. getWarehouseList() {
  323. selectWarehouseSelf({
  324. compId: this.compId
  325. })
  326. .toPromise()
  327. .then(response => {
  328. this.warehouseList = response
  329. })
  330. },
  331. getList(val, type) {
  332. // type=1 地图点击
  333. if (type == 1) {
  334. this.isActive = true
  335. this.searchKeyWord = val
  336. }
  337. var data={}
  338. if(this.$route.query.compId){
  339. data={
  340. compId: this.$route.query.compId,
  341. currentPage: this.currentPage,
  342. pageSize: this.pageSize,
  343. searchType: this.searchType,
  344. searchKeyWord: this.searchKeyWord,
  345. bankId: this.$route.query.bankId,
  346. warehouseId: this.$route.query.warehouseId,
  347. }
  348. }else{
  349. data={
  350. compId: this.compId,
  351. currentPage: this.currentPage,
  352. pageSize: this.pageSize,
  353. searchType: this.searchType,
  354. searchKeyWord: this.searchKeyWord,
  355. }
  356. }
  357. getList(data)
  358. .toPromise()
  359. .then((response) => {
  360. this.tradeServicesList = response.records
  361. this.deptBudgetTotal = response.total
  362. })
  363. },
  364. selectShowType(e) {
  365. // this.isActive=!this.isActive
  366. if(this.radio == 1){
  367. this.radio = 2
  368. }else{
  369. this.radio = 1
  370. }
  371. var data={}
  372. if(this.id!=''){
  373. data={functionType:1,enabled:0,id:this.id}
  374. }else{
  375. data={
  376. functionType:1,enabled:1,
  377. }
  378. }
  379. setDefault(data).toPromise()
  380. .then(response => {
  381. this.getList()
  382. })
  383. },
  384. add() {
  385. this.$router.push({
  386. name: 'warehouseReceiptAdd'
  387. })
  388. }
  389. }
  390. }
  391. </script>
  392. <style lang="scss" scoped>
  393. .icon {
  394. transform: rotate(90deg);
  395. margin: 0 10px;
  396. }
  397. .active {
  398. height: 0 !important;
  399. overflow: hidden;
  400. }
  401. .bottom,
  402. .top {
  403. display: flex;
  404. justify-items: flex-end;
  405. height: 5%;
  406. align-content: center;
  407. .bottom-content,
  408. .top-content {
  409. display: flex;
  410. justify-content: flex-end;
  411. width: 100%;
  412. padding-right: 25px;
  413. }
  414. .bottom-item,
  415. .top-item {
  416. display: flex;
  417. align-items: center;
  418. }
  419. }
  420. .content2 {
  421. // background: pink;
  422. padding: 20px;
  423. height: calc(100% - 44px);
  424. .header {
  425. position: relative;
  426. .add {
  427. position: absolute;
  428. right: 0;
  429. }
  430. }
  431. .search-input {
  432. width: 300px;
  433. margin-left: 10px;
  434. }
  435. }
  436. .paging {
  437. margin-top: 10px;
  438. text-align: center;
  439. }
  440. /deep/.el-table .cell{
  441. text-align: center;
  442. }
  443. </style>