edit.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  1. <template>
  2. <div>
  3. <el-button :disabled="data.status !=='新建' && data.status !=='提交'" type="primary" size="mini" @click="onShow(drawer = true)">编 辑</el-button>
  4. <el-drawer
  5. :visible.sync="drawer"
  6. direction="rtl"
  7. append-to-body
  8. size="80%">
  9. <div slot="title">
  10. <div class="flex-align-center">
  11. <p ><span style="font-size:14px">订单合计:</span><span style="color:red;font-size:16px;"><b>¥&nbsp;{{tool.formatAmount(data.amount,2)}}</b></span></p>
  12. <!-- <label style="font-size:14px;margin-left:10px" for="">备注:</label>
  13. <input class="order__note__input" v-model="defaultData.remarks" type="text" placeholder="请输入订单备注"> -->
  14. <!-- <p>运费:{{data.amount > data.freefreightamount >= 0?'当前订单免运费':`订单满${data.freefreightamount}元免运费,当前还差${data.freefreightamount - data.amount}元`}}</p>-->
  15. </div>
  16. <div class="flex-align-center">
  17. <!-- <p ><span style="font-size:14px">订单合计:</span><span style="color:red;font-size:16px;"><b>¥&nbsp;{{tool.formatAmount(data.amount,2)}}</b></span></p>-->
  18. <!-- <label style="font-size:14px;margin-left:10px" for="">备注:</label>
  19. <input class="order__note__input" v-model="defaultData.remarks" type="text" placeholder="请输入订单备注"> -->
  20. <p style="font-size: 13px !important;color: #8888;font-weight: normal">{{data.amount > freefreightamount?'当前订单免运费':`订单满${freefreightamount}元免运费,当前还差${freefreightamount - data.amount}元`}}</p>
  21. </div>
  22. </div>
  23. <div class="drawer__panel">
  24. <div class="flex-align-center">
  25. <div v-if="data.sa_contractid" class="normal-margin">
  26. <p class="normal-title mt-10">合同信息</p>
  27. <div class="reveive__panel">
  28. <p>{{data.contract_title}}</p>
  29. </div>
  30. </div>
  31. <div class="normal-margin">
  32. <p class="normal-title mt-10">单据日期</p>
  33. <div class="reveive__panel">
  34. <el-date-picker
  35. v-model="defaultData.billdate"
  36. type="date"
  37. value-format="yyyy-MM-dd"
  38. placeholder="选择日期"
  39. size="mini">
  40. </el-date-picker>
  41. </div>
  42. </div>
  43. <div v-if="data.sa_contractid" class="normal-margin">
  44. <p class="normal-title mt-10">购买套数</p>
  45. <div class="reveive__panel">
  46. <el-input-number v-model="defaultData.toolcount" size="mini" label="购买套数"></el-input-number>
  47. </div>
  48. </div>
  49. </div>
  50. <div class="flex-align-center normal-margin">
  51. <div style="flex:1;margin-right:10px">
  52. <div class="mt-10">
  53. <p class="normal-title inline-16">收货信息</p>
  54. <el-popover
  55. placement="bottom"
  56. title="选择地址"
  57. trigger="click"
  58. v-model="visible">
  59. <el-table
  60. :data="receiveAddresslist"
  61. style="width: 100%"
  62. size="mini">
  63. <el-table-column
  64. prop="name"
  65. label="联系人"
  66. width="90">
  67. </el-table-column>
  68. <el-table-column
  69. prop="phonenumber"
  70. label="电话"
  71. width="120">
  72. </el-table-column>
  73. <el-table-column
  74. label="地址"
  75. width="360">
  76. <template slot-scope="scope">
  77. {{scope.row.province}}{{scope.row.city}}{{scope.row.county}}{{scope.row.address}}
  78. </template>
  79. </el-table-column>
  80. <el-table-column
  81. label="操作"
  82. width="90">
  83. <template slot-scope="scope">
  84. <el-button type="text" @click="(defaultData.re_info = scope.row,visible = false)" size="mini">选 择</el-button>
  85. </template>
  86. </el-table-column>
  87. </el-table>
  88. <el-button slot="reference" type="text" size="mini">选择其他地址</el-button>
  89. </el-popover>
  90. </div>
  91. <div class="reveive__panel normal-margin">
  92. <p><span class="inline-16"><b>{{defaultData.re_info.name}}</b></span><small>{{defaultData.re_info.phonenumber}}</small></p>
  93. <small>{{defaultData.re_info.province}}{{defaultData.re_info.city}}{{defaultData.re_info.county}}{{defaultData.re_info.address?defaultData.re_info.address:'--'}}</small>
  94. </div>
  95. </div>
  96. <!-- <div style="flex:1">
  97. <div class="mt-10">
  98. <p class="normal-title inline-16">选择账户</p>
  99. <el-popover
  100. placement="bottom"
  101. title="选择账户"
  102. trigger="click"
  103. v-model="visible3">
  104. <el-table
  105. :data="accountlist"
  106. style="width: 100%"
  107. size="mini">
  108. <el-table-column
  109. prop="accountname"
  110. label="账户名称"
  111. width="120">
  112. </el-table-column>
  113. <el-table-column
  114. prop="balance"
  115. label="账户余额"
  116. width="120">
  117. <template slot-scope="scope">
  118. ¥{{tool.formatAmount(scope.row.balance,2)}}
  119. </template>
  120. </el-table-column>
  121. <el-table-column
  122. label="操作"
  123. width="90">
  124. <template slot-scope="scope">
  125. <el-button type="text" @click="(defaultData.accountclass = scope.row,visible3 = false)" size="mini">选 择</el-button>
  126. </template>
  127. </el-table-column>
  128. </el-table>
  129. <el-button slot="reference" type="text" size="mini">选择其他账户</el-button>
  130. </el-popover>
  131. </div>
  132. <div class="reveive__panel normal-margin">
  133. <p><b>¥{{tool.formatAmount(defaultData.accountclass.balance,2)}}</b></p>
  134. <small>{{defaultData.accountclass.accountname}}</small>
  135. </div>
  136. </div> -->
  137. </div>
  138. <div class="mt-10">
  139. <p class="normal-title inline-16">选择财务信息</p>
  140. <el-popover
  141. placement="bottom"
  142. title="选择财务信息"
  143. trigger="click"
  144. v-model="visible2">
  145. <el-table
  146. :data="financiallist"
  147. style="width: 100%"
  148. size="mini">
  149. <el-table-column
  150. prop="enterprisename"
  151. label="公司抬头"
  152. width="120">
  153. </el-table-column>
  154. <el-table-column
  155. prop="address"
  156. label="开票地址"
  157. width="120">
  158. </el-table-column>
  159. <el-table-column
  160. prop="bank"
  161. label="开户行"
  162. width="120">
  163. </el-table-column>
  164. <el-table-column
  165. prop="bankcardno"
  166. label="开户账号"
  167. width="120">
  168. </el-table-column>
  169. <el-table-column
  170. label="操作"
  171. width="90">
  172. <template slot-scope="scope">
  173. <el-button type="text" @click="(defaultData.fin_info = scope.row,visible2 = false)" size="mini">选 择</el-button>
  174. </template>
  175. </el-table-column>
  176. </el-table>
  177. <el-button slot="reference" type="text" size="mini">选择其他</el-button>
  178. </el-popover>
  179. </div>
  180. <div class="reveive__panel normal-margin">
  181. <p><small>抬头:&nbsp;</small><span class="inline-16"><b>{{defaultData.fin_info.enterprisename}}</b></span></p>
  182. <p><small>开票地址:&nbsp;</small>{{defaultData.fin_info.address}}</p>
  183. <p><small>开户行:&nbsp;</small> {{defaultData.fin_info.bank}} &emsp;<small>开户账号:&nbsp;</small> {{defaultData.fin_info.bankcardno}}</p>
  184. </div>
  185. <!-- <div v-if="!data.sa_contractid" class="mt-10">
  186. <p class="normal-title inline-16">领域明细</p>
  187. </div>
  188. <div v-if="!data.sa_contractid" class="mt-10 flex-align-center">
  189. <div v-for="item in data.subvalues" :key="item.index" :style="defaultData.tradefieldmx === item?{background:'#d9ecff'}:{background:'#fff'}" class="reveive__panel normal-margin inline-16" @click="defaultData.tradefieldmx = item">
  190. <p>{{item}}</p>
  191. </div>
  192. </div> -->
  193. <div class="mt-10">
  194. <p class="normal-title inline-16">订单备注</p>
  195. </div>
  196. <div class="mt-10">
  197. <el-input v-model="defaultData.remarks" type="textarea" :autosize="{minRows:5,maxRows:10}" placeholder="请输入订单备注"></el-input>
  198. </div>
  199. <!-- <div v-if="data.sa_contractid" class="normal-margin">
  200. <p class="normal-title mt-10">购买套数</p>
  201. <el-input-number v-model="defaultData.toolcount" label="购买套数"></el-input-number>
  202. </div> -->
  203. <div>
  204. <div class="mt-10">
  205. <p class="normal-title inline-16">订单产品</p>
  206. <el-button v-if="!data.sa_contractid" type="text" size="mini" @click="addMoreProduct">{{setcol === 12?'关闭选择':'添加产品'}}</el-button>
  207. </div>
  208. <el-row :gutter="10">
  209. <el-col :span="setcol">
  210. <tool-list ref="prolist" :data="data" :type="data.status === '提交'?'':'edit'" @onSuccess="onDelSuccess"></tool-list>
  211. </el-col>
  212. <el-col :span="24 - setcol">
  213. <add-product ref="addpro" :data="data" @onConfirm="onConfirm"></add-product>
  214. </el-col>
  215. </el-row>
  216. </div>
  217. </div>
  218. <div class="fixed__btn__panel">
  219. <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
  220. <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">保存修改</el-button>
  221. </div>
  222. </el-drawer>
  223. </div>
  224. </template>
  225. <script>
  226. import previewImage from '@/components/previewImage/index.vue'
  227. import toolList from '../detail/tabs/toolList.vue'
  228. import addProduct from '@/template/toolBorrowingCanUseProduct/index.vue'
  229. export default {
  230. props:['data'],
  231. components:{
  232. previewImage,
  233. toolList,
  234. addProduct
  235. },
  236. data () {
  237. return {
  238. visible:false,
  239. visible1:false,
  240. visible2:false,
  241. visible3:false,
  242. drawer:false,
  243. receiveAddresslist:[],
  244. accountlist:[],
  245. logisticcomlist:[],
  246. financiallist:[],
  247. defaultData:{
  248. toolcount:0,
  249. re_info:{},
  250. logist_info:{},
  251. fin_info:{},
  252. accountclass:{},
  253. account_index:0,
  254. remarks:this.data.remarks,
  255. freightstatus:'到付',
  256. tradefieldmx:'',
  257. billdate:''
  258. },
  259. agnetInfo:{},
  260. total:0,
  261. setcol:24,
  262. freefreightamount:''
  263. }
  264. },
  265. created () {
  266. this.queryBasicInfo()
  267. },
  268. methods:{
  269. async queryBasicInfo () {
  270. const res = await this.$api.requested({
  271. "id":20220920084001,"content":{
  272. sys_enterpriseid:this.data.sys_enterpriseid
  273. },
  274. })
  275. this.freefreightamount = res.data.freefreightamount
  276. },
  277. onShow () {
  278. this.queryAgentiInfo()
  279. this.defaultData.freightstatus = this.data.freightstatus
  280. this.defaultData.tradefieldmx = this.data.tradefieldmx
  281. this.defaultData.billdate = this.data.billdate
  282. this.defaultData.toolcount = this.data.toolcount
  283. },
  284. async queryAgentiInfo () {
  285. const res = await this.$api.requested({
  286. "id": "20221022165203",
  287. "content": {
  288. sys_enterpriseid:this.data.sys_enterpriseid
  289. }
  290. })
  291. this.agnetInfo = res.data
  292. this.receiveAddress()
  293. this.queryAccount()
  294. this.queryLogisticcom()
  295. this.queryFinancial()
  296. },
  297. // 收货信息:合作企业联系人
  298. async receiveAddress () {
  299. const res = await this.$api.requested({
  300. "id": "20221009155803",
  301. "content": {
  302. "sys_enterpriseid":this.agnetInfo.sys_enterpriseid,
  303. "where":{
  304. "condition":"",
  305. "workaddress":1
  306. }
  307. }
  308. })
  309. this.receiveAddresslist = res.data
  310. this.defaultData.re_info = res.data[0] ? res.data[0] : {}
  311. console.log(res.data,this.defaultData.re_info)
  312. },
  313. // 账号信息
  314. async queryAccount () {
  315. const res = await this.$api.requested({
  316. "id": "20221008134803",
  317. "content": {
  318. "pageNumber": 1,
  319. "pageSize": 100,
  320. "where":{
  321. "isused":1
  322. }
  323. }
  324. })
  325. this.accountlist = res.data
  326. this.defaultData.accountclass = this.data.accountclass
  327. },
  328. // 物流企业
  329. async queryLogisticcom () {
  330. const res = await this.$api.requested({
  331. "id": "20221121135804",
  332. "content": {
  333. "pageNumber": 1,
  334. "pageSize": 100
  335. }
  336. })
  337. this.logisticcomlist = res.data
  338. this.defaultData.logist_info = this.data.logiscomp
  339. },
  340. // 财务信息
  341. async queryFinancial () {
  342. const res = await this.$api.requested({
  343. "id": "20221013160602",
  344. "content": {
  345. "sys_enterpriseid":this.agnetInfo.sys_enterpriseid,
  346. "pageNumber": 1,
  347. "pageSize": 100
  348. }
  349. })
  350. this.financiallist = res.data
  351. this.defaultData.fin_info = this.data.finance
  352. },
  353. async onSubmit() {
  354. const res = await this.$api.requested({
  355. "id": 20230116092702,
  356. "content": {
  357. "sa_orderid": this.$route.query.id,
  358. "sys_enterpriseid": this.data.sys_enterpriseid, //订货企业id
  359. // "sa_accountclassid": this.defaultData.accountclass.sa_accountclassid, //营销账户类型ID
  360. "sa_brandid": this.data.sa_brandid, //品牌ID
  361. "sa_contractid":this.data.sa_contractid, //合同ID,标准订单不传
  362. "sa_projectid": this.data.sa_projectid, //工程项目表ID,标准订单不传
  363. "sys_enterprise_financeid": this.defaultData.fin_info.sys_enterprise_financeid, //合作企业财务信息ID(开票信息)
  364. // "sa_logiscompid": this.defaultData.logist_info.sa_logiscompid, //物流公司档案ID
  365. "rec_contactsid": this.defaultData.re_info.contactsid, //合作企业联系人表ID(收货信息)
  366. "type": this.data.type, //订单类型
  367. "typemx":this.data.typemx, //明细分类,可选
  368. "remarks": this.defaultData.remarks, //可选
  369. // "saler_hrid":this.data.saler_hrid//销售人员hrid,业务员hrid
  370. "pay_enterpriseid":this.data.pay_enterpriseid,
  371. "tradefield":this.data.tradefield,
  372. "freightstatus":this.defaultData.freightstatus,
  373. "billdate":this.defaultData.billdate,
  374. "toolcount":this.defaultData.toolcount,
  375. },
  376. })
  377. this.tool.showMessage(res,()=>{
  378. console.log(this.data)
  379. this.$emit('onSuccess')
  380. // this.onConfirm()
  381. // this.drawer = false
  382. })
  383. },
  384. onDelSuccess () {
  385. this.$refs.addpro.listData()
  386. this.$emit('onSuccess')
  387. },
  388. addMoreProduct () {
  389. this.setcol === 12?this.setcol = 24 : this.setcol = 12
  390. },
  391. // 订单添加商品
  392. async onConfirm (data) {
  393. const res = await this.$api.requested({
  394. "id": 20230116101602,
  395. "content": {
  396. "sa_orderid": this.$route.query.id, //订单ID
  397. "sys_enterpriseid": this.data.sys_enterpriseid, //企业ID
  398. "type": "标准订单", //订单类型
  399. "items": data.map(e=>{
  400. return {
  401. sa_orderitemsid:0,
  402. itemid:e.itemid,
  403. qty:e.orderminqty,
  404. needdate:e.deliverydate
  405. }
  406. })
  407. },
  408. })
  409. this.tool.showMessage(res,()=>{
  410. this.setcol = 24
  411. this.$refs['prolist'].listData()
  412. this.$emit('onSuccess')
  413. })
  414. }
  415. },
  416. mounted () {
  417. }
  418. }
  419. </script>
  420. <style>
  421. </style>
  422. <style scoped>
  423. .reveive__panel{
  424. font-size: 14px;
  425. line-height: 30px;
  426. padding: 10px;
  427. background: #d9ecff;
  428. border: 1px dashed #0676e7;
  429. cursor: pointer;
  430. }
  431. .account__panel small,.reveive__panel small{
  432. color:#666
  433. }
  434. .account__panel{
  435. width: calc(25% - 26px);
  436. padding: 10px;
  437. margin-bottom:10px;
  438. border: 1px dashed #666;
  439. }
  440. .act{
  441. background: #d9ecff;
  442. border: 1px dashed #0676e7;
  443. }
  444. .image {
  445. width:40px;height:40px;margin:0px auto;
  446. }
  447. .order__note__input{
  448. border: none;
  449. outline: none;
  450. /* margin-left: 10px; */
  451. /* border-bottom: 1px solid #f1f2f3; */
  452. flex:1
  453. }
  454. </style>