index.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <template>
  2. <div>
  3. <basicDetails
  4. ref="details"
  5. :titleText="mainData.billno"
  6. formPath="QuotedPrice"
  7. :editData="mainData"
  8. :mainAreaData="mainAreaData"
  9. turnPageId="20221020165103"
  10. delApiId="20221020165503"
  11. idname="sa_quotedpriceid"
  12. ownertable="sa_quotedprice"
  13. :statusCheck="[{key:'status',value:'审核'},{key:'status',value:'提交'}]"
  14. :tags="[]"
  15. :tabs="['产品清单','详细信息','历史报价']"
  16. @pageChange="pageChange"
  17. @onEditSuccess="queryMainData($route.query.id)">
  18. <div slot="tags">
  19. <!-- 使用此插槽可不传[tags] -->
  20. <!-- :tabs="['经销商团队','代理区域','营销类别','账户余额']" -->
  21. </div>
  22. <div slot="customOperation">
  23. <!-- 此区域提供了自定义操作按钮 -->
  24. <submit_to class="inline-16" v-if="tool.checkAuth($route.name,'submit') && mainData.status === '新建'" :sa_quotedpriceid="mainData.sa_quotedpriceid" @onSubmit="onSuccess"></submit_to>
  25. <toVoid class="inline-16" v-if="tool.checkAuth($route.name,'toVoid') && mainData.status === '新建'" :data="mainData.sa_quotedpriceid" ></toVoid>
  26. <copyTo class="inline-16" v-if="tool.checkAuth($route.name,'copyTo') && mainData.status === '新建'" :data="mainData.sa_quotedpriceid" ></copyTo>
  27. <examine_to class="inline-16" v-if="tool.checkAuth($route.name,'toExamine') && mainData.status === '提交'" :sa_quotedpriceid="mainData.sa_quotedpriceid" @onExamine="onSuccess"></examine_to>
  28. <deApprove class="inline-16" v-if="tool.checkAuth($route.name,'deApprove') && mainData.status !== '新建'" :sa_quotedpriceid="mainData.sa_quotedpriceid" @onDeApprove="onSuccess"></deApprove>
  29. </div>
  30. <div slot="slot1" class=" normal-panel">
  31. <detailed :data="mainData" v-if="flag"></detailed>
  32. </div>
  33. <div slot="slot0" class=" normal-panel">
  34. <productInventory ref="productList" :data="mainData" v-if="flag"></productInventory>
  35. </div>
  36. <div slot="slot2" class=" normal-panel">
  37. <historicalQuotation :data="mainData" v-if="flag"></historicalQuotation>
  38. </div>
  39. </basicDetails>
  40. </div>
  41. </template>
  42. <script>
  43. import detailed from './modules/detailed/index'
  44. import contacts from './modules/contacts/list'
  45. import address_manage from './modules/addressManage/list'
  46. import submit_to from './components/submitTo'
  47. import examine_to from './components/examineTo'
  48. import project_change from './modules/projectChange/index'
  49. import customer_assocalated from './modules/customerAssociated/index'
  50. import productInventory from './modules/productInventory/index'
  51. import toVoid from './components/toVoid'
  52. import historicalQuotation from './modules/historicalQuotation/index'
  53. import copyTo from "@/SDrpManagement/QuotedPrice/detail/components/copyTo";
  54. import deApprove from './components/deApprove'
  55. export default {
  56. name: "index",
  57. data(){
  58. return {
  59. mainData:[],
  60. mainAreaData:[],
  61. flag:false,
  62. totalPrice:0
  63. }
  64. },
  65. components:{
  66. detailed,
  67. contacts,
  68. address_manage,
  69. submit_to,
  70. examine_to,
  71. project_change,
  72. customer_assocalated,
  73. productInventory,
  74. toVoid,
  75. historicalQuotation,
  76. copyTo,
  77. deApprove
  78. },
  79. methods:{
  80. async queryMainData(id){
  81. const res = await this.$api.requested({
  82. "id": 20221020165203,
  83. "version":1,
  84. "content": {
  85. nocache:true,
  86. "sa_quotedpriceid":id
  87. }
  88. })
  89. this.mainData = res.data
  90. /*this.$refs.productList.productData()*/
  91. this.$nextTick(()=>{
  92. this.$refs.productList.productData()
  93. })
  94. this.productList()
  95. /* this.changeDataStructure()*/
  96. /* this.$refs.detailed.detailedList(this.mainData)*/
  97. this.flag = true
  98. },
  99. // 监听切换数据,上一页,下一页
  100. pageChange (id,rowindex) {
  101. this.flag = false
  102. this.$router.replace({path:'/quotedPriceDetail',query:{id:id,rowindex:rowindex}})
  103. this.queryMainData(id)
  104. },
  105. changeDataStructure(){
  106. this.mainAreaData = [
  107. {
  108. label:'客户名称',
  109. value:this.mainData.enterprisename
  110. },
  111. {
  112. label:'项目编号',
  113. value:this.mainData.projectnum
  114. },
  115. {
  116. label:'项目名称',
  117. value:this.mainData.projectname
  118. },
  119. {
  120. label:'报价日期',
  121. value:this.mainData.billdate
  122. },
  123. {
  124. label:'有效期',
  125. value:this.mainData.begdate?this.mainData.begdate + '至' + this.mainData.enddate:"--"
  126. },
  127. {
  128. label:'总金额',
  129. value:this.totalPrice + '元'
  130. },
  131. {
  132. label:'联系人',
  133. value:this.mainData.contactsname
  134. },
  135. {
  136. label:'手机号',
  137. value:this.mainData.contactsphonenumber
  138. },
  139. /*{
  140. label:'邮箱',
  141. value:this.mainData.email
  142. }*/
  143. ]
  144. },
  145. /*产品配置信息*/
  146. async productList(){
  147. const res = await this.$api.requested({
  148. "id": 20221021095503,
  149. "version":1,
  150. "content": {
  151. "sa_quotedpriceid":this.$route.query.id //sat_notice_classid<=0时 为新增
  152. }
  153. })
  154. console.log(res,"计算产品明细合计信息")
  155. this.totalPrice = 0
  156. res.data.forEach((item)=> {
  157. console.log(item,"类别数据")
  158. this.totalPrice = this.totalPrice + item.price * item.qty
  159. })
  160. console.log(this.totalPrice,'商品总价')
  161. /*this.queryMainData(this.$route.query.id)*/
  162. this.changeDataStructure()
  163. },
  164. onSuccess(){
  165. this.queryMainData(this.$route.query.id)
  166. console.log("执行")
  167. }
  168. },
  169. mounted() {
  170. console.log(this.$route.query.id)
  171. this.queryMainData(this.$route.query.id)
  172. }
  173. }
  174. </script>
  175. <style scoped>
  176. </style>