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.

258 lines
8.8 KiB

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