add.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <template>
  2. <div>
  3. <el-button size="small" type="primary" @click="onShow">{{$t(`新增关联商品`)}}</el-button>
  4. <el-drawer
  5. :title="$t(`新增关联商品`)"
  6. :visible.sync="drawer"
  7. :wrapperClosable="false"
  8. size="70%"
  9. @close="onClose"
  10. append-to-body
  11. >
  12. <div class="drawer__panel" style="margin-bottom: 0">
  13. <search class="inline-16" @searchActive="searchActive" :placeholder="placeholder"></search>
  14. <uploadAllData
  15. class="inline-16"
  16. :total="total"
  17. @handlePullApi="handlePullApi"
  18. @handleUploadApi="handleUploadApi"
  19. @onSuccess="onSuccess"
  20. ></uploadAllData>
  21. <div>
  22. <tablelayout :layout="tablecols" :data="productsList" :custom="true" :checkbox="true" height="calc(100vh - 292px)" @checkboxCallBack="checkboxCallBack">
  23. <template v-slot:customcol="scope">
  24. <div v-if="scope.column.columnname === 'province'">
  25. <span>{{scope.column.data.province}} - {{scope.column.data.city}} - {{scope.column.data.county}}</span>
  26. </div>
  27. <div v-else-if="scope.column.columnname === 'isonsale'" :style="{color:scope.column.data[scope.column.columnname] === 1?tool.getStatusColor('上架',true):tool.getStatusColor('下架',true)}">
  28. <span>{{scope.column.data.isonsale ? $t('上架') : $t('下架')}}</span>
  29. </div>
  30. <p v-else-if="scope.column.columnname === 'status'">
  31. <span :style="tool.getStatusColor(scope.column.data[[scope.column.columnname]])">{{$t(scope.column.data[[scope.column.columnname]])}}</span>
  32. </p>
  33. <p v-else-if="scope.column.columnname === 'itemclass'">
  34. <span v-if="JSON.stringify(scope.column.data.itemclass) !== '[]' && scope.column.data.itemclass">
  35. <span v-for="item in scope.column.data.itemclass" :key="item.index">
  36. <el-tag style="margin-right: 10px;margin-top: 5px;margin-bottom: 5px" type="success">{{$t(item.itemclassfullname)}}</el-tag>
  37. </span>
  38. </span>
  39. <span v-else>
  40. --
  41. </span>
  42. </p>
  43. <div v-else-if="scope.column.columnname === 'nominalpressure'">
  44. {{tool.nominalPressureSet(scope.column.data.nominalpressure)}}
  45. </div>
  46. <div v-else>{{scope.column.columnname === 'operation' || scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname] : '--'}}</div>
  47. </template>
  48. </tablelayout>
  49. </div>
  50. <div>
  51. <div style="margin-top: 10px;float: left">{{$t(`已选`)}} {{selected}} {{$t(`个商品,共`)}} {{total}} {{$t(`个商品`)}}</div>
  52. <div style="margin-top: 10px;text-align:right">
  53. <el-pagination
  54. background
  55. @size-change="handleSizeChange"
  56. @current-change="handleCurrentChange"
  57. :current-page="params.content.pageNumber"
  58. :page-sizes="[20, 50, 100, 200]"
  59. layout="total,sizes, prev, pager, next, jumper"
  60. :total="total">
  61. </el-pagination>
  62. </div>
  63. </div>
  64. <div class="dialog-footer">
  65. <el-button size="small" @click="drawer = false" class="normal-btn-width">{{$t(`取消`)}}</el-button>
  66. <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width btn-primary">{{$t(`确定`)}}</el-button>
  67. </div>
  68. </div>
  69. </el-drawer>
  70. </div>
  71. </template>
  72. <script>
  73. import tablelayout from '@/components/table/index2'
  74. import search from './search'
  75. import uploadAllData from '@/components/uploadAllData/index'
  76. export default {
  77. name: "add",
  78. props:["plm_technicalinfoid"],
  79. data(){
  80. return {
  81. drawer:false,
  82. add:false,
  83. placeholder:this.$t('商品名称'),
  84. form:{
  85. itemid:''
  86. },
  87. rules:{
  88. itemid: [
  89. { required: true, message: this.$t('档案名称不可为空'), trigger: 'blur' },
  90. ],
  91. },
  92. productsList:[],
  93. multipleSelection: [],
  94. tablecols:[],
  95. tableHieght:420,
  96. selected:0,
  97. total:0,
  98. currentPage:0,
  99. params:{
  100. "id": 20220923140602,
  101. "content": {
  102. "pageNumber":1,
  103. "pageSize":20,
  104. "where": {
  105. "condition": ""
  106. }
  107. }
  108. }
  109. }
  110. },
  111. components:{
  112. tablelayout,
  113. search,
  114. uploadAllData
  115. },
  116. mounted() {
  117. },
  118. created() {
  119. this.tablecols = this.tool.tabelCol(this.$route.name).addProductTable.tablecols
  120. },
  121. methods: {
  122. onShow(){
  123. this.drawer = true
  124. this.productsData()
  125. },
  126. onClose(){
  127. this.drawer = false
  128. this.form.itemid=''
  129. },
  130. async productsData(){
  131. const res = await this.$api.requested(this.params)
  132. console.log(res)
  133. this.productsList = res.data
  134. this.total = res.total
  135. this.currentPage = res.pageNumber
  136. },
  137. checkboxCallBack(val){
  138. console.log(val)
  139. this.multipleSelection = val;
  140. this.selected = val.length
  141. },
  142. /*拉取数据*/
  143. handlePullApi (pullApi) {
  144. pullApi.content = JSON.parse(JSON.stringify(this.params.content))
  145. pullApi.id = this.params.id
  146. },
  147. /*上传数据*/
  148. handleUploadApi (uploadApi,data) {
  149. uploadApi.id = 20220926102003
  150. let arr = data.map(e=>{
  151. return {
  152. plm_technicalinfo_itemid:0,
  153. itemid:e.itemid
  154. }
  155. })
  156. uploadApi.content = {
  157. "plm_technicalinfoid":this.plm_technicalinfoid,
  158. "iteminfos":arr
  159. }
  160. },
  161. async onSubmit(){
  162. console.log(this.multipleSelection)
  163. let arr = this.multipleSelection.map(e=>{
  164. return {
  165. plm_technicalinfo_itemid:0,
  166. itemid:e.itemid
  167. }
  168. })
  169. const res = await this.$api.requested({
  170. "id": "20220926102003",
  171. "version":1,
  172. "content": {
  173. "plm_technicalinfoid":this.plm_technicalinfoid,
  174. "iteminfos":arr
  175. }
  176. })
  177. this.tool.showMessage(res, () => {
  178. this.drawer = false
  179. this.$emit('addSuccess')
  180. })
  181. },
  182. onSuccess () {
  183. this.$emit('addSuccess')
  184. this.drawer = false
  185. },
  186. searchActive(data) {
  187. this.params.content.where.condition = data
  188. this.productsData()
  189. },
  190. handleSizeChange(val) {
  191. // console.log(`每页 ${val} 条`);
  192. this.params.content.pageSize = val
  193. this.productsData()
  194. },
  195. handleCurrentChange(val) {
  196. // console.log(`当前页: ${val}`);
  197. this.params.content.pageNumber = val
  198. this.productsData()
  199. },
  200. }
  201. }
  202. </script>
  203. <style scoped>
  204. </style>