add.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. <!-- @desc:工序撤销 @auth:寇珊珊 @time:2023年3月21日15:21:08 -->
  2. <template>
  3. <div class="main-div" ref="mainDiv">
  4. <!--加载中-->
  5. <loading :loading="loading" v-if="!modalVisible"></loading>
  6. <DkPaxeButton :total="editKeys?editKeys.length:0"
  7. :current="editIndex"
  8. v-if="editKeys && editKeys.length > 1"
  9. @pageChange="editPageChange"></DkPaxeButton>
  10. <DkCollapse ref="collapse" @on-change="changeCollapse">
  11. <DkPanel prop="essentialInformation">
  12. <!--添加行按钮-->
  13. <DkButton slot="content" type="success" @click="addRow" size="small" :disabled="addRowFlag"
  14. style="float: left;position: absolute; top: 9px;left: 120px;">{{ $v('saveDetail') }}
  15. </DkButton>
  16. <div style="clear:both"></div>
  17. <!-- 下拉区域 -->
  18. <DkForm slot="content" ref="formInline" v-model="formData" style="width: 95%">
  19. <!--产品条码-->
  20. <DkFormItem prop="barCode">
  21. <InputPop ref="barCode" v-model="formData.barCode" @on-enter="onBarCode"
  22. @on-blur="onBarCode"/>
  23. </DkFormItem>
  24. <!--产品型号-->
  25. <DkFormItem prop="modelCode" :label="$t('moldingModelCode')" >
  26. <InputPop ref="modelCode" v-model="formData.modelCode" :readonly="true"/>
  27. </DkFormItem>
  28. <!--注浆日期-->
  29. <DkFormItem prop="moldingDate">
  30. <InputPop ref="moldingDate" v-model="formData.moldingDate" :readonly="true"/>
  31. </DkFormItem>
  32. <!--完成工序-->
  33. <DkFormItem prop="pdtFlowNodeName" :label="$t('reasonPdtFlowNodeName')">
  34. <InputPop ref="pdtFlowNodeName" v-model="formData.pdtFlowNodeName" :readonly="true"/>
  35. </DkFormItem>
  36. <!--完成时间-->
  37. <DkFormItem prop="finishTime">
  38. <InputPop ref="finishTime" v-model="formData.finishTime" :readonly="true"/>
  39. </DkFormItem>
  40. <!--所在载具-->
  41. <DkFormItem prop="carrierCode" :label="$t('reasonCarrierCode')">
  42. <InputPop ref="carrierCode" v-model="formData.carrierCode" :readonly="true"/>
  43. </DkFormItem>
  44. <!--商标-->
  45. <DkFormItem prop="logoName">
  46. <InputPop ref="logoName" v-model="formData.logoName" :readonly="true"/>
  47. </DkFormItem>
  48. <!--釉色-->
  49. <DkFormItem prop="colourName">
  50. <InputPop ref="colourName" v-model="formData.colourName" :readonly="true"/>
  51. </DkFormItem>
  52. <!--编码-->
  53. <DkFormItem prop="productCode">
  54. <InputPop ref="productCode" v-model="formData.productCode" :readonly="true"/>
  55. </DkFormItem>
  56. <!--名称-->
  57. <DkFormItem prop="productName">
  58. <InputPop ref="productName" v-model="formData.productName" :readonly="true"/>
  59. </DkFormItem>
  60. </DkForm>
  61. </DkPanel>
  62. <!--撤销信息-->
  63. <DkPanel prop="reverseMessage">
  64. <!-- 下拉区域 -->
  65. <DkForm slot="content" ref="formInline" v-model="LossReportingFormData" style="width: 95%">
  66. <!--撤销原因-->
  67. <DkFormItem :required="true" prop="undoReason">
  68. <InputPop ref="undoReason" v-model="LossReportingFormData.undoReason"/>
  69. </DkFormItem>
  70. </DkForm>
  71. </DkPanel>
  72. <!--明细-->
  73. <DkPanel prop="details">
  74. <div slot="content" :style="'height: ' + (tableHeight - 10) + 'px'">
  75. <!--撤销信息-->
  76. <EditTable slot="left" ref="submitTable" :data="detailList"
  77. :columns="detailColumns"
  78. :height="tableHeight-10"
  79. :freeze="false"
  80. :add-flag="false"
  81. @delRow="delSubmitTable"
  82. ></EditTable>
  83. </div>
  84. </DkPanel>
  85. </DkCollapse>
  86. <!-- 下部分按钮区域-->
  87. <DkSaveButton ref="saveButton" :loading="loading" @save="save" @close="close"></DkSaveButton>
  88. </div>
  89. </template>
  90. <script>
  91. import { formMixin } from '@/mixins/form'
  92. export default {
  93. name: 'process-node-reverse-add',
  94. mixins: [formMixin],
  95. data() {
  96. let self = this
  97. return {
  98. tableData: [],
  99. loading: false,
  100. tableHeight: 620,
  101. barCodeList: [],//产品条码集合
  102. // 画面表单数据
  103. formData: {
  104. barCode: '',
  105. ftyId: this.$store.state.user.ftyId,
  106. productId: null,
  107. productCode: null,
  108. productName: null,
  109. logoName: null,//商标
  110. colourName: null,//釉色
  111. moldingDate: null,//成型日期
  112. modelCode: null,//产品型号
  113. finishTime: null,//完成时间
  114. pdtFlowNodeName: null,//完成工序
  115. carrierCode: null,//所在载具
  116. },
  117. LossReportingFormData:{
  118. undoReason: null,//撤销原因
  119. },
  120. // 明细列表
  121. detailColumns: [
  122. // 产品条码
  123. { field: 'barCode', type: 'disabled', width: 'auto' },
  124. //产品型号
  125. { field: 'modelCode', type: 'disabled', title: self.$t('moldingModelCode'), width: 'auto' },
  126. // 成型日期
  127. { field: 'moldingDate', type: 'disabled', width: 'auto' },
  128. //完成时间
  129. { field: 'finishTime', type: 'disabled', width: 'auto' },
  130. //完成工序
  131. { field: 'pdtFlowNodeName', title: self.$t('reasonPdtFlowNodeName'), type: 'disabled', width: 'auto' },
  132. //所在载具
  133. { field: 'carrierCode', title: self.$t('reasonCarrierCode'), type: 'disabled', width: 'auto' },
  134. //商标
  135. { field: 'logoName', type: 'disabled', width: 'auto' },
  136. //釉色
  137. { field: 'colourName', type: 'disabled', width: 'auto' },
  138. //产品编码
  139. { field: 'productCode', type: 'disabled', width: 'auto' },
  140. //产品名称
  141. { field: 'productName', type: 'disabled', width: 'auto' },
  142. ],
  143. detailList: [],
  144. addRowFlag:true,//保存至明细可用标识
  145. }
  146. },
  147. methods: {
  148. /**
  149. * @desc : 产品条码失焦事件
  150. * @date : 2023/2/28 9:28
  151. * @author : 寇珊珊
  152. */
  153. onBarCode() {
  154. if (this.formData.barCode) {
  155. this.addRowFlag =false
  156. let param ={
  157. barCode:this.formData.barCode
  158. }
  159. this.excute(this.$service.collectService, this.$service.collectService.checkBarCodeNodeUndo,param).then(res => {
  160. if (res.code === this.$config.SUCCESS_CODE) {
  161. this.formData.productId = res.data.uniqueId
  162. this.formData.productCode = res.data.modelCode
  163. this.formData.productName = res.data.modelName
  164. this.formData.logoName = res.data.logoName
  165. this.formData.colourName = res.data.colourName
  166. this.formData.moldingDate = res.data.moldingDate
  167. this.formData.modelCode = res.data.moldlineItemCode
  168. this.formData.finishTime = res.data.finishTime
  169. this.formData.pdtFlowNodeName = res.data.pdtFlowNodeName
  170. this.formData.carrierCode = res.data.carrierCode
  171. } else {
  172. this.formData.barCode= null
  173. this.$Message.warning(res.message)
  174. }
  175. })
  176. }
  177. },
  178. /**
  179. * @desc : 删除提交行数据
  180. * @date : 2023/3/10 11:26
  181. * @author : 寇珊珊
  182. */
  183. delSubmitTable(row, rowIndex) {
  184. this.detailList.splice(rowIndex, 1)
  185. },
  186. /**
  187. * @desc : 添加行
  188. * @date : 2023/3/10 8:54
  189. * @author : 寇珊珊
  190. */
  191. addRow() {
  192. if(this.formData.barCode){
  193. this.addRowFlag=true
  194. //校验名称是否重复
  195. if (!this.validDataRow()) {
  196. return
  197. }
  198. this.barCodeList.push(this.formData.barCode)
  199. let list = []
  200. list.splice(0, 0, {})
  201. list[0].barCode = this.formData.barCode
  202. list[0].productId = this.formData.productId
  203. list[0].productCode = this.formData.productCode
  204. list[0].productName = this.formData.productName
  205. list[0].logoName = this.formData.logoName
  206. list[0].colourName = this.formData.colourName
  207. list[0].moldingDate = this.formData.moldingDate
  208. list[0].modelCode = this.formData.modelCode
  209. list[0].finishTime = this.formData.finishTime
  210. list[0].pdtFlowNodeName = this.formData.pdtFlowNodeName
  211. list[0].carrierCode = this.formData.carrierCode
  212. this.detailList.push(list[0])
  213. //清空表单
  214. this.clear(true)
  215. }
  216. },
  217. /**
  218. * @desc : 校验重复数据
  219. * @date : 2023/3/8 8:45
  220. * @author : 寇珊珊
  221. */
  222. validDataRow() {
  223. if (this.detailList.length > 0) {
  224. if (this.detailList.filter(it => it.barCode == this.formData.barCode).length > 0) {
  225. this.$Message.warning(this.$t('W_120'))
  226. return false
  227. }
  228. }
  229. return true
  230. },
  231. /**
  232. * @desc : 设置传参
  233. * @date : 2023/2/28 11:29
  234. * @author : 寇珊珊
  235. */
  236. setParams() {
  237. //明细长度为0产品条码有点击保存按钮直接将产品条码数据存入明细
  238. if (this.detailList.length == 0 && this.formData.barCode) {
  239. this.addRow()
  240. }
  241. if (!this.validData()) {
  242. return
  243. }
  244. this.params = {
  245. barCodeList: this.barCodeList,
  246. undoReason: this.LossReportingFormData.undoReason,
  247. }
  248. },
  249. /**
  250. * @desc : 保存校验
  251. * @date : 2023/4/6 10:33
  252. * @author : 寇珊珊
  253. */
  254. validData(){
  255. if(this.detailList.length > 0 &&this.formData.barCode){
  256. this.$Message.warning(this.$t('W_132'))
  257. return false
  258. }
  259. if (this.barCodeList.length <= 0) {
  260. this.$Message.warning(this.$t('W_115'))
  261. return false
  262. }
  263. return true
  264. },
  265. /**
  266. * @desc : 保存数据
  267. * @date : 2023/3/16 13:28
  268. * @author : 寇珊珊
  269. */
  270. saveData() {
  271. return this.excute(this.$service.collectService, this.$service.collectService.nodeUndo, this.params)
  272. },
  273. /**
  274. * @desc : 清空
  275. * @date : 2023/3/8 10:48
  276. * @author : 寇珊珊
  277. */
  278. clear(value) {
  279. if (!value) {
  280. this.detailList = []
  281. this.barCodeList = []
  282. this.LossReportingFormData.undoReason = null
  283. }
  284. this.formData.barCode = null
  285. this.formData.productId = null
  286. this.formData.productCode = null
  287. this.formData.productName = null
  288. this.formData.logoName = null
  289. this.formData.colourName = null
  290. this.formData.moldingDate = null
  291. this.formData.modelCode = null
  292. this.formData.finishTime = null
  293. this.formData.pdtFlowNodeName = null
  294. this.formData.carrierCode = null
  295. },
  296. },
  297. created() {
  298. this.typeData = this.$config.formMode.add;
  299. this.resizeTableFlag = true;
  300. },
  301. }
  302. </script>
  303. <style scoped>
  304. </style>