index1.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498
  1. <template>
  2. <div class="app-container">
  3. <div class="filter-container">
  4. <el-select v-model="table1.getdataListParm.parammaps.writeoffType" style="width: 140px;" placeholder="冲销类型" class="filter-item" @change="change_type">
  5. <el-option v-for="item in writeoffList" :key="item.id" :label="item.name" :value="item.name" />
  6. </el-select>
  7. <el-input v-model="table1.getdataListParm.parammaps.orderNumber" placeholder="设备管理平台单号" style="width: 200px;" class="filter-item" />
  8. <!-- <el-input v-if="table1.getdataListParm.parammaps.writeoffType == '备件入库'" v-model="table1.getdataListParm.parammaps.orderNumber" placeholder="入库单号" style="width: 200px;" class="filter-item" />
  9. <el-input v-if="table1.getdataListParm.parammaps.writeoffType == '备件出库'" v-model="table1.getdataListParm.parammaps.orderNumber" placeholder="出库单号" style="width: 200px;" class="filter-item" />
  10. <el-input v-if="table1.getdataListParm.parammaps.writeoffType == '备件退库'" v-model="table1.getdataListParm.parammaps.orderNumber" placeholder="退库单号" style="width: 200px;" class="filter-item" />
  11. <el-input v-if="table1.getdataListParm.parammaps.writeoffType == '备件退货'" v-model="table1.getdataListParm.parammaps.orderNumber" placeholder="退货单号" style="width: 200px;" class="filter-item" /> -->
  12. <el-select v-model="table1.getdataListParm.parammaps.hasTicket" style="width: 180px;" clearable placeholder="是否已开票" class="filter-item" v-if="table1.getdataListParm.parammaps.writeoffType == '备件入库' || table1.getdataListParm.parammaps.writeoffType == '备件退货'">
  13. <el-option v-for="item in invoicedReturnDocList" :key="item.id" :label="item.name" :value="item.id" />
  14. </el-select>
  15. <el-button class="filter-item" type="primary" icon="el-icon-search" @click="form_search">搜索</el-button>
  16. <div>
  17. <el-button v-if="isWriteoffAdd" class="filter-item" type="primary" icon="el-icon-edit" @click="form_add">新增</el-button>
  18. </div>
  19. </div>
  20. <el-table
  21. :key="table1.tableKey"
  22. v-loading="table1.listLoading"
  23. element-loading-text="给我一点时间"
  24. :data="table1.list"
  25. border
  26. fit
  27. highlight-current-row
  28. style="width: 100%;"
  29. :row-style="rowStyle"
  30. :cell-style="cellStyle"
  31. class="elTable"
  32. >
  33. <el-table-column label="序号" align="center" type="index" width="50px">
  34. <template slot-scope="scope">
  35. <span>{{ scope.$index + (table1.pageNum-1) * table1.pageSize + 1 }}</span>
  36. </template>
  37. </el-table-column>
  38. <el-table-column label="物料凭证号" min-width="150px" align="center" prop="materialCode" />
  39. <el-table-column label="物料凭证年度" min-width="150px" align="center" prop="proofYear" />
  40. <el-table-column label="凭证中的过账信息" min-width="150px" align="center" prop="chargeDate" />
  41. <el-table-column label="设备管理平台单号" min-width="150px" align="center" prop="orderNumber" />
  42. <el-table-column label="是否已开票" min-width="150px" align="center" show-overflow-tooltip v-if="table1.getdataListParm.parammaps.writeoffType == '备件入库' || table1.getdataListParm.parammaps.writeoffType == '备件退货'" >
  43. <template slot-scope="scope">
  44. <span v-if="scope.row.hasTicket == 1">是</span>
  45. <span v-if="scope.row.hasTicket == 0">否</span>
  46. <span v-if="scope.row.hasTicket == ''"> </span>
  47. </template>
  48. </el-table-column>
  49. <el-table-column label="设备管理平台行号" min-width="150px" align="center" prop="rowNumber" />
  50. <el-table-column label="操作" align="center" width="250" class-name="small-padding fixed-width" fixed="right">
  51. <template slot-scope="{row}">
  52. <el-button v-if="isWriteoffSee" type="primary" size="mini" @click="form_see(row)">查看</el-button>
  53. <!-- <el-button v-if="isWriteoffDel" type="danger" size="mini" @click="handleDelate(row)">删除</el-button> -->
  54. </template>
  55. </el-table-column>
  56. </el-table>
  57. <pagination v-show="table1.total>0" :total="table1.total" :page.sync="table1.getdataListParm.offset" :limit.sync="table1.getdataListParm.pagecount" @pagination="getList" />
  58. <!-- 弹出层新增or修改 -->
  59. <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" :close-on-click-modal="false" width="90%">
  60. <div class="app-container">
  61. <el-form ref="create" :rules="rules" :model="create.temp" label-position="right" label-width="140px" style="width: 90%;margin:0 auto;">
  62. <el-row>
  63. <el-col :span="8">
  64. <el-form-item label="设备管理平台单号:" prop="orderNumber">
  65. <el-input ref="orderNumber" v-model="create.temp.orderNumber" :disabled="dialogStatus=='see'" @blur="blurOrderNumber" />
  66. </el-form-item>
  67. </el-col>
  68. <el-col :span="8">
  69. <el-form-item label="冲销类型:" prop="NumberType">
  70. <el-select v-model="create.temp.NumberType" :disabled="dialogStatus=='see'" placeholder="" class="filter-item" style="width:100%" @change="changeWriteoff">
  71. <el-option v-for="item in writeoffList" :key="item.id" :label="item.name" :value="item.id" />
  72. </el-select>
  73. </el-form-item>
  74. </el-col>
  75. <el-col :span="8">
  76. <el-form-item label="是否已开票:" prop="hasTicket">
  77. <el-select v-model="create.temp.hasTicket" :disabled="dialogStatus=='see'" placeholder="" class="filter-item" style="width:100%">
  78. <el-option v-for="item in invoicedReturnDocList" :key="item.id" :label="item.name" :value="item.id" />
  79. </el-select>
  80. </el-form-item>
  81. </el-col>
  82. </el-row>
  83. <el-row>
  84. <el-col :span="8">
  85. <el-form-item label="物料凭证号:" prop="materialCode">
  86. <el-select v-model="create.temp.materialCode" disabled placeholder="" class="filter-item" style="width:100%">
  87. <el-option v-for="item in materialVoucherNoList" :key="item.id" :label="item.name" :value="item.id" />
  88. </el-select>
  89. </el-form-item>
  90. </el-col>
  91. <el-col :span="8">
  92. <el-form-item label="凭证中的过账日期:" prop="chargeDate">
  93. <el-date-picker v-model="create.temp.chargeDate" disabled :picker-options="pickerOptions" type="date" placeholder="" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width:100%" />
  94. </el-form-item>
  95. </el-col>
  96. <el-col :span="8">
  97. <el-form-item label="物料凭证年度:" prop="proofYear">
  98. <el-input ref="proofYear" v-model="create.temp.proofYear" disabled placeholder="" />
  99. </el-form-item>
  100. </el-col>
  101. </el-row>
  102. </el-form>
  103. <el-table
  104. :key="create.tableKey"
  105. v-loading="create.listLoading"
  106. element-loading-text="给我一点时间"
  107. :data="create.list"
  108. border
  109. fit
  110. highlight-current-row
  111. style="width: 100%;margin-bottom:30px"
  112. :row-style="rowStyle"
  113. :cell-style="cellStyle"
  114. class="elTable"
  115. @selection-change="handleSelectionChange"
  116. >
  117. <el-table-column type="selection" width="55" />
  118. <el-table-column label="行号" align="center" prop="rowNumber" width="50px" />
  119. <el-table-column label="备件编号" prop="partCode" align="center" min-width="90" />
  120. <el-table-column label="备件名称" prop="partName" align="center" min-width="90" />
  121. <el-table-column label="备件规格" prop="specification" align="center" min-width="90" />
  122. <el-table-column label="备件品牌" prop="partBrand" align="center" min-width="90" />
  123. <el-table-column label="供应商" prop="supplier" align="center" min-width="90" />
  124. <el-table-column label="库位" prop="warehouse" align="center" min-width="90" />
  125. <el-table-column label="变更数量" prop="changeCount" align="center" min-width="90" />
  126. <el-table-column label="单价" prop="unitPrice" align="center" min-width="90" />
  127. <el-table-column label="总价" prop="totalPrice" align="center" min-width="90" />
  128. </el-table>
  129. <div slot="footer" class="dialog-footer" style="bottom:10px">
  130. <el-button type="primary" v-if="dialogStatus=='create'" :disabled="isokDisable" @click="add_dialog_save()">保存并关闭</el-button>
  131. <el-button @click="dialogFormVisible = false;getList()">取消并关闭</el-button>
  132. </div>
  133. </div>
  134. </el-dialog>
  135. </div>
  136. </template>
  137. <script>
  138. // / 引入
  139. import { GetDataByName, GetDataByNames,postJson, PostDataByName, ExecDataByConfig, checkButtons, failproccess } from '@/api/common'
  140. import { parseTime } from '@/utils/index.js'
  141. import Pagination from '@/components/Pagination' // secondary package based on el-pagination
  142. import { MessageBox } from 'element-ui'
  143. import Cookies from 'js-cookie'
  144. export default {
  145. name: 'Writeoff',
  146. components: { Pagination },
  147. data() {
  148. return {
  149. requestParams: [
  150. { name: 'findAllProvider', offset: 0, pagecount: 0, params: [] },
  151. { name: 'findAllPasture', offset: 0, pagecount: 0, returntype: 'Map', parammaps: { 'id': Cookies.get('pastureid') }},
  152. { name: 'getPastureList', offset: 0, pagecount: 0, returntype: 'Map', parammaps: {}},
  153. { name: 'findAllDepart', offset: 0, pagecount: 0, parammaps: { 'pastureId': Cookies.get('pastureid'), 'eId': Cookies.get('employeid') }},
  154. { name: 'findAllEmploye', offset: 0, pagecount: 0, parammaps: { 'pastureId': Cookies.get('pastureid') }}
  155. ],
  156. writeoffList:[{id:1,name:'备件入库'},{id:2,name:'备件退货'},{id:3,name:'备件出库'},{id:4,name:'备件退库'}], //冲销类型
  157. invoicedReturnDocList:[{id:0,name:'否'},{id:1,name:'是'}],//是否已开票退货单
  158. materialVoucherNoList:[{id:0,name:'11111'},{id:1,name:'2222'}],//物料凭证号
  159. // table1:{
  160. // getdataListParm: {
  161. // name: 'getBigPartTransferList', page: 1, offset: 1, pagecount: 10, returntype: 'Map',
  162. // parammaps: {
  163. // pastureName: Cookies.get('pasturename'),
  164. // writeoffType:'',
  165. // OrderNumber:''
  166. // }
  167. // },
  168. // tableKey: 0, listLoading: false, total: 0, list: [],pageNum:0, pageSize:0
  169. // },
  170. table1:{
  171. getdataListParm: {
  172. name: 'getLaidProofList', page: 1, offset: 1, pagecount: 10, returntype: 'Map',
  173. parammaps: {
  174. pastureName: Cookies.get('pasturename'),
  175. writeoffType:'备件入库',
  176. orderNumber:'',
  177. hasTicket:''
  178. }
  179. },
  180. tableKey: 0, listLoading: false, total: 0, list: [],pageNum:0, pageSize:0
  181. },
  182. rowStyle: { maxHeight: 50 + 'px', height: 45 + 'px' },
  183. cellStyle: { padding: 0 + 'px' },
  184. dialogStatus: '',
  185. dialogFormVisible: false,
  186. textMap: { create: '新增', see: '查看' },
  187. rules: {
  188. orderNumber: [{ required: true, message: '必填', trigger: 'blur' }],
  189. NumberType: [{ required: true, message: '必填', trigger: 'blur' }],
  190. },
  191. create: {
  192. temp:{ applyDate: parseTime(new Date(), '{y}-{m}-{d}')},
  193. getdataListParm: {
  194. name: 'getPartTransferbybigid',
  195. returntype: 'Map',
  196. parammaps: {}
  197. },
  198. getdataListParm2: {
  199. name: 'getPartlaidByBigid',
  200. returntype: 'Map',
  201. parammaps: {bigid:""}
  202. },
  203. tableKey: 0, listLoading: false, total: 0, list: [], pageNum:0, pageSize:0
  204. },
  205. isokDisable: false,
  206. pickerOptions: {
  207. disabledDate(time) {
  208. return time.getTime() > Date.now()// 当天之前的时间可选
  209. }
  210. },
  211. isWriteoffAdd:[],
  212. isWriteoffSee:[],
  213. isWriteoffDel:[]
  214. }
  215. },
  216. created() {
  217. const that = this
  218. GetDataByName({ 'name': 'getUserPCButtons', 'parammaps': { 'jwt_username': Cookies.get('name') }}).then(response => {
  219. that.buttons = response.data.list
  220. that.get_auto_buttons()
  221. })
  222. this.get_select_list()
  223. this.getList()
  224. },
  225. methods: {
  226. get_auto_buttons() {
  227. // 新增
  228. const WriteoffAdd = 'customs:writeoff:add'
  229. const isWriteoffAdd = checkButtons(this.$store.state.user.buttons, WriteoffAdd)
  230. this.isWriteoffAdd= isWriteoffAdd
  231. // 查看
  232. const WriteoffSee = 'customs:writeoff:see'
  233. const isWriteoffSee = checkButtons(this.$store.state.user.buttons, WriteoffSee)
  234. this.isWriteoffSee = isWriteoffSee
  235. // 删除
  236. const WriteoffDel = 'customs:writeoff:del'
  237. const isWriteoffDel = checkButtons(this.$store.state.user.buttons, WriteoffDel)
  238. this.isWriteoffDel = isWriteoffDel
  239. },
  240. getList() {
  241. this.table1.listLoading = true
  242. GetDataByName(this.table1.getdataListParm).then(response => {
  243. if(response.data.list){
  244. console.log('table数据', response.data.list)
  245. this.table1.list = response.data.list
  246. this.table1.pageNum = response.data.pageNum
  247. this.table1.pageSize = response.data.pageSize
  248. }else{
  249. this.table1.list = []
  250. this.table1.pageNum = 0
  251. this.table1.pageSize = 0
  252. }
  253. if (response.data.total) {
  254. this.table1.total = response.data.total
  255. }
  256. setTimeout(() => {
  257. this.table1.listLoading = false
  258. }, 100)
  259. })
  260. },
  261. form_search() {
  262. console.log('点击了table搜索')
  263. this.table1.listLoading = true
  264. this.table1.getdataListParm.offset = 1
  265. this.getList()
  266. },
  267. form_add() {
  268. this.dialogStatus = 'create'
  269. this.dialogFormVisible = true
  270. this.create.temp = {'materialCode':'','proofYear':'','chargeDate':'','orderNumber':'','hasTicket':'','orderNumberId':'','NumberType':'','rowsNumber':[]}
  271. this.create.list = []
  272. },
  273. changeWriteoff(item){
  274. this.getTableFormList()
  275. },
  276. blurOrderNumber(){
  277. this.getTableFormList()
  278. },
  279. getTableFormList(){
  280. let url = 'authdata/sap/proof/detail'
  281. let data = {
  282. OrderNumber:this.create.temp.orderNumber,
  283. NumberType:this.create.temp.NumberType
  284. }
  285. if(this.create.temp.orderNumber == ''){
  286. this.$message({ title: '', message: '设备管理平台单号不能为空', type: 'warning', duration: 2000 })
  287. return
  288. }
  289. if(this.create.temp.NumberType == ''){
  290. this.$message({ title: '', message: '冲销类型不能为空', type: 'warning', duration: 2000 })
  291. return
  292. }
  293. postJson(url,data).then(response => {
  294. console.log(response.msg,'response===')
  295. if(response.msg !== 'fail' ){
  296. if(response.data){
  297. this.create.temp = response.data
  298. this.create.temp.rowsNumber = []
  299. if(response.data.parts){
  300. this.create.list = response.data.parts
  301. }else{
  302. this.create.list = []
  303. }
  304. }else{
  305. this.create.list = []
  306. this.create.temp = {}
  307. }
  308. }else{
  309. this.$notify({ title: '失败', message: response.message, type: 'warning', duration: 2000 })
  310. }
  311. }).catch((res)=>{
  312. // this.$message({ title: '', message: re, type: 'warning', duration: 2000 })
  313. })
  314. },
  315. handleSelectionChange(val) {
  316. this.create.temp.rowsNumber = []
  317. for(let i=0;i<val.length;i++){
  318. this.create.temp.rowsNumber.push(val[i].rowNumber)
  319. }
  320. console.log(this.create.temp.rowsNumber)
  321. },
  322. add_dialog_save() {
  323. this.isokDisable = true
  324. setTimeout(() => {
  325. this.isokDisable = false
  326. }, 1000)
  327. this.$refs['create'].validate(valid => {
  328. if (valid) {
  329. console.log('新增保存',this.create.temp.rowsNumber)
  330. let url = "authdata/sap/proof/off"
  331. let data = {
  332. materialCode:this.create.temp.materialCode,
  333. proofYear:this.create.temp.proofYear,
  334. chargeDate:this.create.temp.chargeDate,
  335. orderNumber:this.create.temp.orderNumber,
  336. hasTicket:this.create.temp.hasTicket,
  337. rowsNumber:this.create.temp.rowsNumber,//[]
  338. orderNumberId:this.create.temp.orderNumberId,
  339. NumberType:this.create.temp.NumberType
  340. }
  341. if(this.create.temp.rowsNumber.length == 0){
  342. this.$message({ message: '请选择需要冲销的备件', type: 'warning', duration: 2000 })
  343. return
  344. }
  345. postJson(url,data).then(response => {
  346. if(response.msg !== 'fail'){
  347. this.$notify({ title: '成功', message: '保存成功', type: 'success', duration: 2000 })
  348. this.dialogFormVisible = false
  349. }else{
  350. this.$notify({ title: '失败', message: response.message, type: 'warning', duration: 2000 })
  351. }
  352. })
  353. }
  354. })
  355. },
  356. change_type(item) {
  357. console.log(item)
  358. if(item == "备件入库"){
  359. this.table1.getdataListParm.name = 'getLaidProofList'
  360. this.table1.getdataListParm.parammaps.writeoffType = '备件入库'
  361. }
  362. if(item == "备件出库"){ this.table1.getdataListParm.name = 'getReturnProofList'
  363. this.table1.getdataListParm.parammaps.writeoffType = '备件出库'
  364. }
  365. if(item == "备件退库"){ this.table1.getdataListParm.name = 'getQuitProofList'
  366. this.table1.getdataListParm.parammaps.writeoffType = '备件退库'
  367. }
  368. if(item == "备件退货"){ this.table1.getdataListParm.name = 'getUseProofList'
  369. this.table1.getdataListParm.parammaps.writeoffType = '备件退货'
  370. }
  371. },
  372. // 查看
  373. form_see(row) {
  374. this.dialogStatus = 'see'
  375. this.create.temp = Object.assign({}, row)
  376. console.log('row',row)
  377. // this.create.getdataListParm.parammaps.id = this.create.temp.id
  378. // {id:1,name:'备件入库'},{id:2,name:'备件退货'},{id:3,name:'备件出库'},{id:4,name:'备件退库'}
  379. if(row.NumberType == 1){
  380. this.create.getdataListParm2.name = 'getPartlaidByBigid'
  381. }
  382. if(row.NumberType == 4){
  383. this.create.getdataListParm2.name = 'getPartquitByBigid'
  384. }
  385. if(row.NumberType == 2){
  386. this.create.getdataListParm2.name = 'getPartrefundByBigid'
  387. }
  388. if(row.NumberType == 3){
  389. this.create.getdataListParm2.name = 'getPartuseByBigid'
  390. }
  391. this.create.getdataListParm2.parammaps.bigid = row.id
  392. this.getDialogList2()
  393. // this.getDialogList()
  394. this.dialogFormVisible = true
  395. },
  396. getDialogList2() {
  397. GetDataByName(this.create.getdataListParm2).then(response => {
  398. if(response.data.list){
  399. this.create.list = response.data.list
  400. this.create.pageNum = response.data.pageNum
  401. this.create.pageSize = response.data.pageSize
  402. }else{
  403. this.create.list = []
  404. this.create.pageNum = 0
  405. this.create.pageSize = 0
  406. }
  407. if (response.data.total) {
  408. this.create.total = response.data.total
  409. }
  410. setTimeout(() => {
  411. this.create.listLoading = false
  412. }, 100)
  413. })
  414. },
  415. getDialogList() {
  416. GetDataByName(this.create.getdataListParm).then(response => {
  417. if(response.data.list){
  418. this.create.list = response.data.list
  419. this.create.pageNum = response.data.pageNum
  420. this.create.pageSize = response.data.pageSize
  421. }else{
  422. this.create.list = []
  423. this.create.pageNum = 0
  424. this.create.pageSize = 0
  425. }
  426. if (response.data.total) {
  427. this.create.total = response.data.total
  428. }
  429. setTimeout(() => {
  430. this.create.listLoading = false
  431. }, 100)
  432. })
  433. },
  434. get_select_list() {
  435. GetDataByNames(this.requestParams).then(response => {
  436. this.findAllProvider = response.data.findAllProvider.list
  437. this.findAllPasture = response.data.findAllPasture.list
  438. this.findAllPasture2 = response.data.getPastureList.list
  439. this.findAllDepart = response.data.findAllDepart.list
  440. this.findAllEmploye = response.data.findAllEmploye.list
  441. })
  442. },
  443. handleDelate(row){
  444. MessageBox.confirm('确认删除此条信息?', {
  445. confirmButtonText: '确认',
  446. cancelButtonText: '取消',
  447. type: 'warning'
  448. }).then(() => {
  449. console.log('删除')
  450. }).catch(() => {
  451. this.$message({ type: 'info', message: '已取消删除' })
  452. })
  453. }
  454. }
  455. }
  456. </script>
  457. <style lang="scss" scoped>
  458. .pagination-container{
  459. display: block !important;
  460. }
  461. </style>
  462. <style lang="scss">
  463. .el-step__head.is-success {
  464. color: #409EFF;
  465. border-color: #409EFF;
  466. }
  467. .el-step__title.is-success{
  468. color: #409EFF;
  469. }
  470. .el-step__head.is-process{
  471. color: #409EFF;
  472. border-color: #409EFF;
  473. .el-step__icon.is-text{
  474. background: #409EFF;
  475. color: #fff;
  476. }
  477. }
  478. .step-row{
  479. color: #000;
  480. }
  481. </style>