edit.vue 15 KB

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