You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

239 lines
8.2 KiB

2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
  1. <script>
  2. import dayjs from 'dayjs'
  3. import {
  4. removeExternalPartManufacturer,
  5. saveExternalPartManufacturer, updateExternalPartManufacturer
  6. } from '../../../../api/part/externalPartManufacturer'
  7. import Manufacturer from '../../manufacturer/manufacturerInformation.vue'
  8. let manufacturer = {
  9. manufacturerNo: "",
  10. manufacturerName: "",
  11. newManufacturerNo:"",
  12. }
  13. export default {
  14. name: 'linkedManufacturer',
  15. components: {Manufacturer},
  16. props:{
  17. dataList:{
  18. type:Array,
  19. default:()=>[],
  20. },
  21. part:{
  22. type:Object,
  23. default:()=>{},
  24. },
  25. height:{
  26. type:Number,
  27. default:350,
  28. },
  29. columnList:{
  30. type:Array,
  31. default:()=>[],
  32. },
  33. visible:{
  34. type:Boolean,
  35. default:true,
  36. }
  37. },
  38. data(){
  39. return{
  40. manufacturerVisible:false,
  41. saveVisible: false,
  42. saveManufacturer:{
  43. ...manufacturer,
  44. },
  45. manufacturerRules:{
  46. manufacturerNo: [{ required: true, message: 'Please input Manufacturer No', trigger: ['blur','change']}],
  47. manufacturerName: [{ required: true, message: 'Please input Manufacturer Name', trigger: ['blur','change']}],
  48. newManufacturerNo: [{ required: true, message: 'Please input Manufacturer Name', trigger: ['blur','change']}],
  49. },
  50. }
  51. },
  52. watch:{
  53. "saveManufacturer.manufacturerNo"(newVal,oldVal){
  54. this.saveManufacturer.manufacturerNo = newVal.toUpperCase();
  55. },
  56. "saveManufacturer.newManufacturerNo"(newVal,oldVal){
  57. this.saveManufacturer.newManufacturerNo = newVal.toUpperCase();
  58. }
  59. },
  60. methods:{
  61. manufacturerRowClick(row){
  62. if (this.saveManufacturer.site){
  63. this.saveManufacturer.newManufacturerNo = row.manufacturerNo
  64. }else {
  65. this.saveManufacturer.manufacturerNo = row.manufacturerNo
  66. }
  67. this.saveManufacturer.manufacturerName = row.manufacturerName
  68. this.manufacturerVisible = false
  69. },
  70. saveExternalPartManufacturer(){
  71. this.$refs.saveForm.validate((valid,obj) => {
  72. if (valid){
  73. let params = {
  74. ...this.saveManufacturer,
  75. partNo: this.part.partNo,
  76. site: this.part.site,
  77. createBy: this.$store.state.user.name,
  78. createTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
  79. }
  80. saveExternalPartManufacturer(params).then(({data})=>{
  81. if (data && data.code === 0){
  82. this.$emit('refresh')
  83. this.saveVisible = false
  84. this.$message.success(data.msg)
  85. }else {
  86. this.$message.warning(data.msg)
  87. }
  88. }).catch((error)=>{
  89. this.$message.error(error)
  90. })
  91. }else {
  92. for (let i = 0; i < Object.keys(obj).length; i++) {
  93. this.$message.warning(obj[Object.keys(obj)[i]][0].message)
  94. break
  95. }
  96. }
  97. })
  98. },
  99. removeExternalPartManufacturer(row){
  100. removeExternalPartManufacturer(row).then(({data})=>{
  101. if (data && data.code === 0){
  102. this.$emit('refresh')
  103. this.saveVisible = false
  104. this.$message.success(data.msg)
  105. }else {
  106. this.$message.warning(data.msg)
  107. }
  108. }).catch((error)=>{
  109. this.$message.error(error)
  110. })
  111. },
  112. closeSavePartManufacturer(){
  113. this.saveManufacturer = {
  114. ...manufacturer,
  115. }
  116. this.$refs.saveForm.resetFields()
  117. },
  118. handleUpdate(row){
  119. this.saveManufacturer = {
  120. ...row,
  121. newManufacturerNo: row.manufacturerNo,
  122. }
  123. this.saveVisible = true
  124. },
  125. updateExternalPartManufacturer(){
  126. this.$refs.saveForm.validate((valid,obj) => {
  127. if (valid){
  128. let params = {
  129. ...this.saveManufacturer,
  130. updateBy: this.$store.state.user.name,
  131. updateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
  132. }
  133. updateExternalPartManufacturer(params).then(({data})=>{
  134. if (data && data.code === 0){
  135. this.$emit('refresh')
  136. this.saveVisible = false
  137. this.$message.success(data.msg)
  138. }else {
  139. this.$message.warning(data.msg)
  140. }
  141. }).catch((error)=>{
  142. this.$message.error(error)
  143. })
  144. }else {
  145. for (let i = 0; i < Object.keys(obj).length; i++) {
  146. this.$message.warning(obj[Object.keys(obj)[i]][0].message)
  147. break
  148. }
  149. }
  150. })
  151. }
  152. }
  153. }
  154. </script>
  155. <template>
  156. <div>
  157. <div v-if="visible">
  158. <el-button type="primary" @click="saveVisible=true">New Manufacturer</el-button>
  159. </div>
  160. <el-table :data="dataList" style="width: 100%;margin-top: 5px" :height="height" border>
  161. <el-table-column
  162. v-if="visible"
  163. header-align="center"
  164. align="center"
  165. width="100"
  166. fixed="left"
  167. label="Actions">
  168. <template slot-scope="scope">
  169. <el-link style="cursor:pointer;" @click="handleUpdate(scope.row)">Edit</el-link>
  170. <el-link style="cursor:pointer;" @click="removeExternalPartManufacturer(scope.row)">Delete</el-link>
  171. </template>
  172. </el-table-column>
  173. <el-table-column
  174. v-for="(item,index) in columnList" :key="index"
  175. :sortable="item.columnSortable"
  176. :prop="item.columnProp"
  177. :header-align="item.headerAlign"
  178. :show-overflow-tooltip="item.showOverflowTooltip"
  179. :align="item.align"
  180. :fixed="item.fixed===''?false:item.fixed"
  181. :min-width="item.columnWidth"
  182. :label="item.columnLabel">
  183. <template slot-scope="scope">
  184. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  185. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  186. style="width: 100px; height: 80px"/></span>
  187. </template>
  188. </el-table-column>
  189. </el-table>
  190. <el-dialog v-drag :close-on-click-modal="false" :title="`Linked Manufacturer`" width="400px" @close="closeSavePartManufacturer" :visible.sync="saveVisible">
  191. <el-form :model="saveManufacturer" label-position="top" ref="saveForm" :rules="manufacturerRules" label-width="100px">
  192. <el-row :gutter="10">
  193. <el-col :span="8">
  194. <el-form-item label="Part No">
  195. <el-input v-model="part.partNo" readonly disabled></el-input>
  196. </el-form-item>
  197. </el-col>
  198. <el-col :span="16">
  199. <el-form-item label="Part Description">
  200. <el-input v-model="part.partDesc" readonly disabled></el-input>
  201. </el-form-item>
  202. </el-col>
  203. <el-col :span="8" v-if="saveManufacturer.site">
  204. <el-form-item label="Manufacturer No" :show-message="false" prop="newManufacturerNo">
  205. <span slot="label" style="cursor:pointer;" @click="manufacturerVisible=true"><a herf="#">Manufacturer No</a></span>
  206. <el-input v-model="saveManufacturer.newManufacturerNo" ></el-input>
  207. </el-form-item>
  208. </el-col>
  209. <el-col :span="8" v-else>
  210. <el-form-item label="Manufacturer No" :show-message="false" prop="manufacturerNo">
  211. <span slot="label" style="cursor:pointer;" @click="manufacturerVisible=true"><a herf="#">Manufacturer No</a></span>
  212. <el-input v-model="saveManufacturer.manufacturerNo" ></el-input>
  213. </el-form-item>
  214. </el-col>
  215. <el-col :span="24">
  216. <el-form-item label="Manufacturer Name" :show-message="false" prop="manufacturerName">
  217. <el-input v-model="saveManufacturer.manufacturerName" disabled></el-input>
  218. </el-form-item>
  219. </el-col>
  220. </el-row>
  221. </el-form>
  222. <div slot="footer" class="dialog-footer">
  223. <el-button type="primary" v-if="saveManufacturer.site" @click="updateExternalPartManufacturer">Save</el-button>
  224. <el-button type="primary" v-else @click="saveExternalPartManufacturer">Save</el-button>
  225. <el-button @click="saveVisible=false">Cancel</el-button>
  226. </div>
  227. </el-dialog>
  228. <el-dialog v-drag title="Linked Manufacturer" :visible.sync="manufacturerVisible">
  229. <manufacturer v-if="manufacturerVisible" @rowClick="manufacturerRowClick" :component-height="300" :is-component="true"></manufacturer>
  230. </el-dialog>
  231. </div>
  232. </template>
  233. <style scoped>
  234. </style>