edit.vue 14 KB

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