template-add-or-update.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <template>
  2. <div class="product-template">
  3. <el-dialog
  4. :title="!isModify ? '新增':'修改'"
  5. width="70%"
  6. :close-on-click-modal="false"
  7. :visible.sync="visible">
  8. <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
  9. <el-row class="my-row">
  10. <el-col :span="8">
  11. <el-form-item label="图号" prop="mapNumber">
  12. <el-input v-model="dataForm.mapNumber" :disabled="bizType === 3" placeholder="图号"></el-input>
  13. </el-form-item>
  14. </el-col>
  15. </el-row>
  16. <el-row class="my-row">
  17. <el-col :span="8">
  18. <el-form-item label="物料名称" prop="productName">
  19. <el-input v-model="dataForm.productName" :disabled="bizType === 3" placeholder="物料名称"></el-input>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="8">
  23. <el-form-item label="规格" prop="productSpecifications">
  24. <el-input v-model="dataForm.productSpecifications" :disabled="bizType === 3" placeholder="规格"></el-input>
  25. </el-form-item>
  26. </el-col>
  27. </el-row>
  28. <el-row class="my-row">
  29. <el-col :span="8">
  30. <el-form-item label="单位" prop="unitName">
  31. <el-input v-model="dataForm.unitName" :disabled="bizType === 3" placeholder="单位"></el-input>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="8">
  35. <el-form-item label="数量" prop="cnt">
  36. <el-input-number v-model="dataForm.cnt" :disabled="bizType === 3" ></el-input-number>
  37. </el-form-item>
  38. </el-col>
  39. </el-row>
  40. <el-row class="my-row" v-if="bizType === 2">
  41. <el-col :span="8">
  42. <el-form-item label="生产编号" prop="productNumber">
  43. <el-input v-model="dataForm.productNumber" placeholder="任务单编号" :disabled="bizType === 3" ></el-input>
  44. </el-form-item>
  45. </el-col>
  46. <el-col :span="8">
  47. <el-form-item label="批次号" prop="batchNumber">
  48. <el-input v-model="dataForm.batchNumber" placeholder="批次号" :disabled="bizType === 3" ></el-input>
  49. </el-form-item>
  50. </el-col>
  51. <el-col :span="8">
  52. <el-form-item label="生产要求" prop="produceRequire">
  53. <el-input v-model="dataForm.produceRequire" placeholder="生产要求" :disabled="bizType === 3" ></el-input>
  54. </el-form-item>
  55. </el-col>
  56. </el-row>
  57. <el-row class="my-row">
  58. <el-col :span="8">
  59. <el-form-item label="含税单价" prop="price">
  60. <el-input-number v-model="dataForm.price" :step="1" :min="0" :precision="1" :disabled="bizType === 3" ></el-input-number>
  61. </el-form-item>
  62. </el-col>
  63. <el-col :span="8">
  64. <el-form-item label="税率" prop="rate">
  65. <el-input-number style="width: 160px" v-model="dataForm.rate" :step="1" :precision="1" :disabled="bizType === 3" />&nbsp;%
  66. </el-form-item>
  67. </el-col>
  68. <el-col :span="8">
  69. <el-form-item label="含税总价" prop="amount">
  70. <span>{{ (dataForm.cnt * dataForm.price).toFixed(1) }}</span>
  71. </el-form-item>
  72. </el-col>
  73. </el-row>
  74. <el-row class="my-row">
  75. <el-form-item label="备注" prop="notes">
  76. <el-input type="textarea" v-model="dataForm.notes" placeholder="备注"></el-input>
  77. </el-form-item>
  78. </el-row>
  79. <el-row class="my-row">
  80. <el-col :span="8" v-if="bizType === 3">
  81. <el-form-item prop="productId" label="物料关联">
  82. <product-component v-model="dataForm.productId" :product-id="dataForm.productId" @productSelected="prodSelected"/>
  83. </el-form-item>
  84. </el-col>
  85. <el-col :span="8" v-if="bizType !== 1 && bizType !== 2">
  86. <el-form-item label="首件鉴定">
  87. <el-radio-group v-model="dataForm.appraisal">
  88. <el-radio :label="'1'">否</el-radio>
  89. <el-radio :label="'2'">是</el-radio>
  90. </el-radio-group>
  91. </el-form-item>
  92. </el-col>
  93. <el-col :span="8" v-if="bizType !== 1 && bizType !== 2">
  94. <el-form-item label="试制检查">
  95. <el-radio-group v-model="dataForm.inspect">
  96. <el-radio :label="'1'">否</el-radio>
  97. <el-radio :label="'2'">是</el-radio>
  98. </el-radio-group>
  99. </el-form-item>
  100. </el-col>
  101. </el-row>
  102. <el-row class="my-row" v-if="Number(dataForm.inspect) === 2">
  103. <el-col :span="8">
  104. <upload-component :display-star="false" :title="'试制前准备状态检查报告'" :accept="'*'" :file-obj-list="fileList1" @uploadSuccess="uploadSuccess1"/>
  105. </el-col>
  106. <el-col :span="8">
  107. <upload-component :display-star="false" :title="'试制前准备状态自查表'" :accept="'*'" :file-obj-list="fileList2" @uploadSuccess="uploadSuccess2"/>
  108. </el-col>
  109. </el-row>
  110. </el-form>
  111. <span slot="footer">
  112. <el-button @click="onChose">取消</el-button>
  113. <el-button type="primary" @click="dataFormSubmit()" v-reClick>确定</el-button>
  114. </span>
  115. </el-dialog>
  116. </div>
  117. </template>
  118. <script>
  119. import ProductComponent from '@/views/modules/common/product-component'
  120. import UploadComponent from '@/views/modules/common/upload-component'
  121. export default {
  122. name: 'template-add-or-update',
  123. components: {UploadComponent, ProductComponent},
  124. data () {
  125. return {
  126. visible: false,
  127. isModify: false,
  128. bizType: 1,
  129. dataForm: {
  130. },
  131. fileList1: [],
  132. fileList2: [],
  133. dataRule: {
  134. mapNumber: [{ required: true, message: '图号不能为空', trigger: 'blur' }],
  135. productName: [{ required: true, message: '物料名称不能为空', trigger: 'blur' }],
  136. productSpecifications: [{ required: true, message: '规格不能为空', trigger: 'blur' }],
  137. cnt: [{ required: true, message: '数量不能为空', trigger: 'blur' }]
  138. }
  139. }
  140. },
  141. methods: {
  142. onChose () {
  143. this.visible = false
  144. },
  145. // 初始化:type: 1 沟通物料明细/合同台账物料明细,2 任务单物料明细
  146. init (type, dataForm, techType) {
  147. this.bizType = techType ? 3 : type
  148. if (dataForm) {
  149. this.isModify = true
  150. this.dataForm = dataForm
  151. } else {
  152. this.dataForm = {
  153. recordId: Math.round(Math.random() * 1000000),
  154. appraisal: 1
  155. }
  156. }
  157. this.visible = true
  158. },
  159. // 表单提交
  160. dataFormSubmit () {
  161. this.$refs['dataForm'].validate((valid) => {
  162. if (valid) {
  163. // 处理附件
  164. let fList1 = this.fileList1
  165. if (fList1.length > 0) {
  166. this.dataForm.attachListInspection = []
  167. for (let i = 0; i < fList1.length; i++) {
  168. this.dataForm.attachListInspection.push({
  169. fileName: fList1[i].name,
  170. url: fList1[i].url
  171. })
  172. }
  173. }
  174. let fList2 = this.fileList2
  175. if (fList2.length > 0) {
  176. this.dataForm.attachListExamine = []
  177. for (let i = 0; i < fList2.length; i++) {
  178. this.dataForm.attachListExamine.push({
  179. fileName: fList2[i].name,
  180. url: fList2[i].url
  181. })
  182. }
  183. }
  184. this.visible = false
  185. this.$emit('addItem', this.dataForm)
  186. }
  187. })
  188. },
  189. prodSelected (item) {
  190. this.dataForm.productId = item.value
  191. this.dataForm.relatedProduct = item.label
  192. },
  193. // 试制前准备状态自查表
  194. uploadSuccess1 (fileList) {
  195. this.fileList1 = fileList
  196. },
  197. // 试制前准备状态检查报告
  198. uploadSuccess2 (fileList) {
  199. this.fileList2 = fileList
  200. }
  201. }
  202. }
  203. </script>
  204. <style scoped>
  205. </style>