confirmOrder.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. <template>
  2. <div>
  3. <el-drawer
  4. :visible.sync="drawer"
  5. direction="rtl"
  6. append-to-body
  7. size="50%">
  8. <div slot="title">
  9. <div class="flex-align-center">
  10. <p><span style="font-size:14px">订单合计:</span><span style="color:red;font-size:16px;"><b>¥&nbsp;{{tool.formatAmount(total,2)}}</b></span></p>
  11. <label style="font-size:14px;margin-left:10px" for="">备注:</label>
  12. <input class="order__note__input" v-model="defaultData.remarks" type="text" placeholder="请输入订单备注">
  13. </div>
  14. </div>
  15. <div class="drawer__panel">
  16. <div>
  17. <div class="mt-10">
  18. <p class="normal-title normal-margin">品牌与领域</p>
  19. <div>
  20. <el-tag class="inline-16" effect="dark">{{data[0].brandname}}</el-tag><el-tag effect="dark">{{data[0].tradefield_shoppingcart}}</el-tag>
  21. </div>
  22. </div>
  23. <div class="mt-10">
  24. <p class="normal-title inline-16">支付信息</p>
  25. </div>
  26. <div class="reveive__panel normal-margin">
  27. <p class="flex-align-center"><small>结算企业:&nbsp;</small><b>{{defaultData.finance.enterprisename}}</b>&nbsp;<financeEnterprise v-if="data.type !== '项目订单'" ref="finance" @select="onSelect"></financeEnterprise></p>
  28. <div v-if="(data.type === '标准订单' || data.type === '特殊订单') && isusedrebate === 1">
  29. <el-checkbox v-model="checked" :true-label="1" :false-label="0">使用返利金</el-checkbox>
  30. <div v-if="checked" class="flex-align-center">
  31. <p class="inline-16"><b>返利金余额:{{tool.formatAmount(defaultData.rebatebalance,2)}}</b></p>
  32. <el-input class="inline-16" size="mini" style="width:150px" v-model="rebateamount" @blur="useRebate" placeholder="输入使用金额"></el-input>
  33. <small>(返利金最高使用比例{{data.order_rebate_userate}}%,本单上限:{{tool.formatAmount(data.amount * data.order_rebate_userate / 100,2)}})</small>
  34. </div>
  35. </div>
  36. </div>
  37. </div>
  38. <div class="flex-align-start normal-margin">
  39. <div style="flex:1;margin-right:10px">
  40. <div class="mt-10">
  41. <p class="normal-title inline-16">选择财务信息</p>
  42. <el-popover
  43. placement="bottom"
  44. title="选择公司"
  45. trigger="click"
  46. v-model="visible2">
  47. <el-table
  48. :data="financiallist"
  49. style="width: 100%"
  50. size="mini">
  51. <el-table-column
  52. prop="enterprisename"
  53. label="公司抬头"
  54. width="120">
  55. </el-table-column>
  56. <el-table-column
  57. prop="address"
  58. label="开票地址"
  59. width="120">
  60. </el-table-column>
  61. <el-table-column
  62. prop="bank"
  63. label="开户行"
  64. width="120">
  65. </el-table-column>
  66. <el-table-column
  67. prop="bankcardno"
  68. label="开户账号"
  69. width="120">
  70. </el-table-column>
  71. <el-table-column
  72. label="操作"
  73. width="90">
  74. <template slot-scope="scope">
  75. <el-button type="text" @click="(defaultData.fin_info = scope.row,visible2 = false)" size="mini">选 择</el-button>
  76. </template>
  77. </el-table-column>
  78. </el-table>
  79. <el-button slot="reference" type="text" size="mini">选择其他</el-button>
  80. </el-popover>
  81. </div>
  82. <div class="reveive__panel normal-margin">
  83. <p><small>抬头:&nbsp;</small><span class="inline-16"><b>{{defaultData.fin_info.enterprisename?defaultData.fin_info.enterprisename:''}}</b></span></p>
  84. <p><small>开票地址:&nbsp;</small>{{defaultData.fin_info.address}}</p>
  85. <p><small>开户行:&nbsp;</small> {{defaultData.fin_info.bank}} &emsp;<small>开户账号:&nbsp;</small> {{defaultData.fin_info.bankcardno}}</p>
  86. </div>
  87. </div>
  88. <div style="flex:1;">
  89. <div class="mt-10">
  90. <p class="normal-title inline-16">收货信息</p>
  91. <el-popover
  92. placement="bottom"
  93. title="选择地址"
  94. trigger="click"
  95. v-model="visible">
  96. <el-table
  97. :data="receiveAddresslist"
  98. style="width: 100%"
  99. size="mini">
  100. <el-table-column
  101. prop="name"
  102. label="联系人"
  103. width="90">
  104. </el-table-column>
  105. <el-table-column
  106. prop="phonenumber"
  107. label="电话"
  108. width="120">
  109. </el-table-column>
  110. <el-table-column
  111. label="地址"
  112. width="360">
  113. <template slot-scope="scope">
  114. {{scope.row.province}}{{scope.row.city}}{{scope.row.county}}{{scope.row.address}}
  115. </template>
  116. </el-table-column>
  117. <el-table-column
  118. label="操作"
  119. width="90">
  120. <template slot-scope="scope">
  121. <el-button type="text" @click="(defaultData.re_info = scope.row,visible = false)" size="mini">选 择</el-button>
  122. </template>
  123. </el-table-column>
  124. </el-table>
  125. <el-button slot="reference" type="text" size="mini">选择其他地址</el-button>
  126. </el-popover>
  127. </div>
  128. <div class="reveive__panel normal-margin">
  129. <p><span class="inline-16"><b>{{defaultData.re_info?defaultData.re_info.name:''}}</b></span><small>{{defaultData.re_info?defaultData.re_info.phonenumber:''}}</small></p>
  130. <small>{{defaultData.re_info?defaultData.re_info.province:''}}{{defaultData.re_info?defaultData.re_info.city:''}}{{defaultData.re_info?defaultData.re_info.county:''}}{{defaultData.re_info ?defaultData.re_info.address:'--'}}</small>
  131. </div>
  132. </div>
  133. </div>
  134. <div class="mt-10">
  135. <p class="normal-title">订单产品</p>
  136. </div>
  137. <div style="border:1px solid #f1f2f3">
  138. <el-table
  139. ref="multipleTable"
  140. :data="data"
  141. style="width: 100%;"
  142. :header-cell-style="{height:'50px',color:'#768093',fontWeight:'400'}"
  143. :cell-style="{height:'50px',color:'#768093',fontWeight:'400'}">
  144. <!-- <el-table-column
  145. type="selection"
  146. width="55"
  147. align="center">
  148. </el-table-column> -->
  149. <el-table-column
  150. align="center"
  151. label="产品图"
  152. width="80">
  153. <template slot-scope="scope">
  154. <previewImage class="image" :image="scope.row.attinfos[0]" :list="scope.row.attinfos" :deletebtn="false"></previewImage>
  155. </template>
  156. </el-table-column>
  157. <el-table-column
  158. prop="itemname"
  159. label="产品名称"
  160. width="180">
  161. </el-table-column>
  162. <el-table-column
  163. prop="itemno"
  164. label="产品编号"
  165. width="180">
  166. </el-table-column>
  167. <el-table-column
  168. label="型号/规格"
  169. width="180">
  170. <template slot-scope="scope">
  171. <p><span>{{scope.row.model}}</span>&nbsp;/&nbsp;<span>{{scope.row.spec}}</span></p>
  172. </template>
  173. </el-table-column>
  174. <el-table-column
  175. label="数量"
  176. width="150">
  177. <template slot-scope="scope">
  178. {{scope.row.qty}}
  179. </template>
  180. </el-table-column>
  181. <el-table-column
  182. prop="unit"
  183. label="计量单位"
  184. width="90">
  185. <template slot-scope="scope">
  186. <el-tag size="mini" type="info" effect="plain">{{scope.row.unitname}}</el-tag>
  187. </template>
  188. </el-table-column>
  189. <el-table-column
  190. prop="gradeprice"
  191. label="价格"
  192. width="90">
  193. <template slot-scope="scope">
  194. <p style="color:red;font-weight:500">¥&nbsp;{{tool.formatAmount(scope.row.gradeprice,2)}}</p>
  195. </template>
  196. </el-table-column>
  197. <el-table-column
  198. label="小计"
  199. width="150">
  200. <template slot-scope="scope">
  201. <p style="color:red;font-weight:500">¥&nbsp;{{tool.formatAmount(scope.row.gradeprice * scope.row.qty,2)}}</p>
  202. </template>
  203. </el-table-column>
  204. <el-table-column width="90">
  205. <template slot-scope="scope">
  206. <slot name="del" :data="scope.row"></slot>
  207. </template>
  208. </el-table-column>
  209. </el-table>
  210. </div>
  211. </div>
  212. <div class="fixed__btn__panel">
  213. <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
  214. <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">创建订单</el-button>
  215. </div>
  216. </el-drawer>
  217. </div>
  218. </template>
  219. <script>
  220. import previewImage from '@/components/previewImage/index.vue'
  221. import financeEnterprise from '@/template/orderCanUseFinance/index.vue'
  222. export default {
  223. props:['data','total','istool'],
  224. components:{
  225. previewImage,
  226. financeEnterprise
  227. },
  228. data () {
  229. return {
  230. visible:false,
  231. visible1:false,
  232. visible2:false,
  233. drawer:false,
  234. receiveAddresslist:[],
  235. accountlist:[],
  236. logisticcomlist:[],
  237. financiallist:[],
  238. defaultData:{
  239. re_info:{
  240. name:'',
  241. phonenumber:'',
  242. province:'',
  243. city:'',
  244. county:''
  245. },
  246. logist_info:{},
  247. fin_info:{
  248. enterprisename:"",
  249. address:"",
  250. bank:""
  251. },
  252. account_index:0,
  253. finance:{
  254. enterprisename:''
  255. }
  256. },
  257. agnetInfo:{}
  258. }
  259. },
  260. methods:{
  261. async queryAgentiInfo () {
  262. const res = await this.$api.requested({
  263. "id": "20221022165203",
  264. "content": {}
  265. })
  266. this.agnetInfo = res.data
  267. this.receiveAddress()
  268. this.queryFinancial()
  269. console.log(this.$refs['finance'].ENlist,'---')
  270. },
  271. // 收货信息:合作企业联系人
  272. async receiveAddress () {
  273. const res = await this.$api.requested({
  274. "id": "20221009155803",
  275. "content": {
  276. "sys_enterpriseid":this.agnetInfo.sys_enterpriseid,
  277. "where":{
  278. "condition":"",
  279. "workaddress":0
  280. }
  281. }
  282. })
  283. this.receiveAddresslist = res.data
  284. res.data[0]? this.defaultData.re_info = res.data[0]:''
  285. // this.defaultData.finance = this.$refs['finance'].ENlist[0]
  286. },
  287. // 财务信息
  288. async queryFinancial () {
  289. const res = await this.$api.requested({
  290. "id": "20221013160602",
  291. "content": {
  292. "sys_enterpriseid":this.agnetInfo.sys_enterpriseid,
  293. "pageNumber": 1,
  294. "pageSize": 100
  295. }
  296. })
  297. this.financiallist = res.data
  298. res.data[0]?this.defaultData.fin_info = res.data[0]: ''
  299. },
  300. // 提交订单
  301. async onSubmit() {
  302. const res = await this.$api.requested({
  303. "id": 20221128183202,
  304. "content": {
  305. "istool":this.istool,
  306. // "sa_accountclassid": this.accountlist[this.defaultData.account_index].sa_accountclassid, //营销账户类型ID
  307. "sys_enterprise_financeid": this.defaultData.fin_info.sys_enterprise_financeid, //合作企业财务信息ID(开票信息)
  308. // "sa_logiscompid": this.defaultData.logist_info.sa_logiscompid, //物流公司档案ID
  309. "rec_contactsid": this.defaultData.re_info.contactsid, //合作企业联系人表ID(收货信息)
  310. "remarks": this.defaultData.remarks, //可选
  311. "tradefield":this.data[0].tradefield_shoppingcart,
  312. "items": this.data.map(e=>{
  313. return {
  314. "sa_orderitemsid": 0, //写死0
  315. "itemid": e.itemid, //商品ID
  316. "sa_brandid": e.sa_brandid,
  317. "qty": e.qty //数量
  318. }
  319. })
  320. },
  321. })
  322. this.tool.showMessage(res,()=>{
  323. this.drawer = false
  324. let usertype = JSON.parse(sessionStorage.getItem('active_account')).usertype
  325. console.log(usertype,'---')
  326. switch (usertype) {
  327. case 1:
  328. this.$router.replace({path:'/ordersaler'})
  329. break;
  330. case 0:
  331. this.$router.replace({path:'/ordermag'})
  332. break;
  333. default:
  334. this.$store.dispatch('changeDetailDrawer',true)
  335. this.$router.push({path:'/orderdetail',query:{id:res.data.sa_orderid,rowindex:res.data.rowindex}})
  336. break;
  337. }
  338. })
  339. },
  340. // 选择结算企业
  341. onSelect (data) {
  342. this.defaultData.finance = data
  343. this.financiallist = data.finance
  344. data.finance.forEach(e => {
  345. if (e.isdefault === 1) {
  346. this.defaultData.fin_info = e
  347. } else {
  348. this.defaultData.fin_info = data.finance.length > 0 ?data.finance[0]:{}
  349. }
  350. });
  351. },
  352. },
  353. mounted () {
  354. this.queryAgentiInfo()
  355. }
  356. }
  357. </script>
  358. <style>
  359. </style>
  360. <style scoped>
  361. .reveive__panel{
  362. font-size: 14px;
  363. line-height: 30px;
  364. padding: 10px;
  365. background: #d9ecff;
  366. border: 1px dashed #0676e7;
  367. }
  368. .account__panel small,.reveive__panel small{
  369. color:#666
  370. }
  371. .account__panel{
  372. width: calc(33% - 26px);
  373. padding: 10px;
  374. margin-bottom:10px;
  375. border: 1px dashed #666;
  376. }
  377. .act{
  378. background: #d9ecff;
  379. border: 1px dashed #0676e7;
  380. }
  381. .image {
  382. width:40px;height:40px;margin:0px auto;
  383. }
  384. .order__note__input{
  385. border: none;
  386. outline: none;
  387. /* margin-left: 10px; */
  388. /* border-bottom: 1px solid #f1f2f3; */
  389. flex:1
  390. }
  391. </style>