edit.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. <template>
  2. <div>
  3. <el-button type="primary" size="mini" @click="onShow">编 辑</el-button>
  4. <el-drawer title="编辑合作伙伴" direction="rtl" size="900px" append-to-body :visible.sync="dialogVisible" :show-close="false">
  5. <div class="drawer__panel">
  6. <el-row :gutter="20">
  7. <el-form :model="form" ref="form" :rules="rules" size="small" label-position="right" label-width="120px" class="demo-form-inline">
  8. <el-col :span="24">
  9. <p class="normal-title normal-margin">企业信息</p>
  10. </el-col>
  11. <el-col :span="12">
  12. <el-form-item label="企业名称:" prop="enterprisename">
  13. <el-popover
  14. placement="bottom"
  15. width="100%"
  16. v-model="visible">
  17. <div>
  18. <ul class="enterprisePanel">
  19. <li v-for="item in ENlist" :key="item.sys_enterpriseid" @click="chooseEnterprise(item)">
  20. <p>{{item.enterprisename}}</p>
  21. <small>{{item.province}}-{{item.city}}-{{item.county}}</small>
  22. </li>
  23. </ul>
  24. </div>
  25. <el-input readonly slot="reference" v-model="form.enterprisename" @focus="queryEnterpriseArchives" @input.native="onChange" placeholder="输入企业名称" clearable></el-input>
  26. </el-popover>
  27. </el-form-item>
  28. </el-col>
  29. <el-col :span="12">
  30. <el-form-item label="省市县:">
  31. <!-- <p class="enterpriseText">{{enterprise.province?enterprise.province:''}}</p>-->
  32. <el-input v-model="value" disabled></el-input>
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="12">
  36. <el-form-item label="联系人:">
  37. <el-input v-model="enterprise.contact" disabled></el-input>
  38. <!-- <p class="enterpriseText">{{enterprise.contact?enterprise.contact:''}}</p>-->
  39. </el-form-item>
  40. </el-col>
  41. <el-col :span="12">
  42. <el-form-item label="联系方式:">
  43. <el-input v-model="enterprise.phonenumber" disabled></el-input>
  44. <!-- <p class="enterpriseText">{{enterprise.phonenumber?enterprise.phonenumber:''}}</p>-->
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="24">
  48. <el-form-item label="详细地址:">
  49. <el-input v-model="enterprise.address" disabled></el-input>
  50. <!-- <p class="enterpriseText">{{enterprise.address?enterprise.address:''}}</p>-->
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="24">
  54. <p class="normal-title normal-margin">合作伙伴信息</p>
  55. </el-col>
  56. <el-col :span="12">
  57. <el-form-item label="合作状态:" prop="cooperationstatus">
  58. <el-select v-model="form.cooperationstatus" placeholder="请选择" style="width: 100%" @change="cooperationstatusChange" :disabled="data.cooperationstatus === '正式'">
  59. <el-option
  60. v-for="item in cooperationstatus"
  61. :key="item.label"
  62. :label="item.label"
  63. :value="item.label">
  64. </el-option>
  65. </el-select>
  66. </el-form-item>
  67. </el-col>
  68. <el-col :span="12">
  69. <el-form-item label="合作伙伴编号" prop="agentnum" v-if="form.cooperationstatus === '正式'" :rules="{required:true,message:'请输入合作伙伴编号',trigger:'blur'}">
  70. <el-input :disabled="true" v-model="form.agentnum" placeholder="输入合作伙伴编号"></el-input>
  71. </el-form-item>
  72. <el-form-item v-else label="合作伙伴编号" prop="agentnum">
  73. <el-input v-model="form.agentnum" placeholder="输入合作伙伴编号"></el-input>
  74. </el-form-item>
  75. </el-col>
  76. <el-col :span="12">
  77. <el-form-item style="height:51px" v-if="form.cooperationstatus === '正式'" label="erp编号:" prop="erpagentnum" :rules="{required:true,message:'请输入erp编号',trigger:'blur'}">
  78. <el-input v-model="form.erpagentnum" placeholder="输入erp编号"></el-input>
  79. </el-form-item>
  80. <el-form-item v-else label="erp编号:" prop="erpagentnum" style="height:51px" :rules="{required:false,message:'请输入erp编号',trigger:'blur'}">
  81. <el-input v-model="form.erpagentnum" placeholder="输入erp编号"></el-input>
  82. </el-form-item>
  83. </el-col>
  84. <el-col :span="12">
  85. <el-form-item label="合作伙伴类型:" prop="type">
  86. <el-select
  87. ref="sle"
  88. style="width:100%;"
  89. v-model="form.type"
  90. multiple
  91. placeholder="请选择合作伙伴类别"
  92. size="mini"
  93. >
  94. <el-option
  95. v-for="item in agent_type"
  96. :key="item.value"
  97. :label="item.value"
  98. :value="item.value"
  99. >
  100. <!-- <span style="float: left">{{ item.tag }}</span>-->
  101. <!-- <span style="float: right; color: #8492a6; font-size: 12px">{{ item.helptips?item.helptips:'暂无描述' }}</span>-->
  102. </el-option>
  103. </el-select>
  104. </el-form-item>
  105. </el-col>
  106. <el-col :span="12">
  107. <el-form-item label="签约日期">
  108. <el-date-picker
  109. style="width:100%"
  110. v-model="form.signdate"
  111. type="date"
  112. value-format="yyyy-MM-dd"
  113. placeholder="选择日期">
  114. </el-date-picker>
  115. </el-form-item>
  116. </el-col>
  117. <el-col :span="12">
  118. <el-form-item label="企业等级">
  119. <el-select size="small" style="width:100%" v-model="form.grade" placeholder="请选择">
  120. <el-option
  121. v-for="item in agent_level"
  122. :key="item.value"
  123. :label="item.remarks"
  124. :value="item.value">
  125. <span style="float: left">{{ item.value }}</span>
  126. <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?item.remarks:'暂无描述' }}</span>
  127. </el-option>
  128. </el-select>
  129. </el-form-item>
  130. </el-col>
  131. <el-col :span="12">
  132. <el-form-item label="可退货天数" prop="limitreturnday">
  133. <el-input v-model.number="form.limitreturnday" placeholder="请输入订单可退货天数"></el-input>
  134. </el-form-item>
  135. </el-col>
  136. <el-col :span="12">
  137. <el-form-item label="上级合作伙伴:">
  138. <selectAgent ref="agent" @selectAgent="selectAgent" :title="title"></selectAgent>
  139. </el-form-item>
  140. </el-col>
  141. <el-col :span="12" style="height:51px">
  142. <el-form-item label="开票节点" prop="invoicingpoint">
  143. <el-radio-group v-model="form.invoicingpoint">
  144. <el-radio :label="1">订单审核</el-radio>
  145. <el-radio :label="2">发货</el-radio>
  146. </el-radio-group>
  147. </el-form-item>
  148. </el-col>
  149. <el-col :span="12">
  150. <el-form-item style="height:51px" label="是否授权所有营销类别:" prop="saleclassauth" label-width="160px">
  151. <el-checkbox v-model="form.saleclassauth" :true-label="0" :false-label="1"></el-checkbox>
  152. </el-form-item>
  153. </el-col>
  154. <el-col :span="12">
  155. <el-form-item label="是否免运费">
  156. <el-radio-group v-model="radio" @change="radioChange">
  157. <el-radio :label="-1">不免费运费</el-radio>
  158. <el-radio :label="0">免运费</el-radio>
  159. <el-radio :label="1">其他</el-radio>
  160. </el-radio-group>
  161. </el-form-item>
  162. </el-col>
  163. <el-col :span="12" v-if="radio === 1">
  164. <el-form-item label="免运费额度" prop="freefreightamount">
  165. <el-input v-model.number="form.freefreightamount" placeholder="请输入免运费额度"></el-input>
  166. </el-form-item>
  167. </el-col>
  168. <el-col :span="12" style="height:51px">
  169. <el-form-item label="授权标准" prop="standardsauth">
  170. <el-radio-group v-model="form.standardsauth">
  171. <el-radio :label="1">关闭</el-radio>
  172. <el-radio :label="0">开启</el-radio>
  173. </el-radio-group>
  174. </el-form-item>
  175. </el-col>
  176. </el-form>
  177. </el-row>
  178. </div>
  179. <div class="fixed__btn__panel">
  180. <el-button size="small" @click="dialogVisible = false" class="normal-btn-width">取 消</el-button>
  181. <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width btn-warning">确 定</el-button>
  182. </div>
  183. </el-drawer>
  184. </div>
  185. </template>
  186. <script>
  187. import selectAgent from '@/components/selectAgent/index.vue'
  188. export default {
  189. props:['data','btnType'],
  190. data () {
  191. return {
  192. rules: {
  193. enterprisename: [
  194. { required: true, message: '请输入企业名称', trigger: ['blur', 'change'] },
  195. ],
  196. // agentnum: [
  197. // { required: true, message: '请输入经销商编号', trigger: 'blur' },
  198. // ],
  199. sa_saleareaids: [
  200. { required: true, message: '请输入合作伙伴编号', trigger: 'change' },
  201. ],
  202. type: [
  203. { required: true, message: '请选择合作伙伴类型', trigger: 'change' },
  204. ],
  205. cooperationstatus: [
  206. { required: true, message: '请选择合作状态', trigger: 'change' },
  207. ],
  208. // erpagentnum: [
  209. // { required: true, message: '请输入erp经销商编号', trigger: 'change' },
  210. // ],
  211. },
  212. fill:true,
  213. cooperationstatus:[
  214. {
  215. label:'正式'
  216. },
  217. {
  218. label:'意向'
  219. },
  220. ],
  221. dialogVisible:false,
  222. visible:false,
  223. form:{
  224. "enterprisename": "",
  225. "sa_agentsid": '',
  226. "parentid": "",
  227. "agentnum": "",
  228. "signdate": "",
  229. "grade": "",
  230. "sys_enterpriseid": '',
  231. "sa_saleareaids": [
  232. ],
  233. "type": [],
  234. 'cooperationstatus':'正式',
  235. "erpagentnum": "",
  236. "isservice": 0, //是否服务商,0或1
  237. "limitreturnday": "", //订单可退货天数
  238. "freefreightamount": "", //免运费额度
  239. "latitude": "", //纬度
  240. "longitude": "", //经度
  241. "invoicingpoint": 1, //开票节点(1:订单审核:2:发货)
  242. "saleclassauth": 1, //是否需要经营授权,默认1
  243. "grade":'',
  244. "standardsauth":''
  245. },
  246. ENlist:[],
  247. agent_level:[],
  248. arealist:[],
  249. agent_type:[],
  250. enterprise:{},
  251. timer:0,
  252. radio:-1,
  253. title:'选择上级合作伙伴',
  254. value:''
  255. }
  256. },
  257. components:{
  258. selectAgent
  259. },
  260. methods:{
  261. onShow () {
  262. this.dialogVisible = true
  263. this.cooperationstatus === '正式' ? this.fill = true : this.fill = false
  264. this.query_sysoptions()
  265. this.query_arealist()
  266. this.queryMain()
  267. },
  268. async queryMain() {
  269. const res = await this.$api.requested({
  270. "classname": "webmanage.sale.agents.agents",
  271. "method": "query_agentMain",
  272. "content": {
  273. "sa_agentsid": this.data.sa_agentsid
  274. }
  275. })
  276. this.$refs.agent.value.enterprisename = res.data.parent_enterprisename
  277. res.data.sa_saleareaids?res.data.sa_saleareaids = JSON.parse(res.data.sa_saleareaids):''
  278. this.form = Object.assign({},this.form,res.data)
  279. this.enterprise = Object.assign({},this.form,res.data)
  280. this.value = `${this.enterprise.province}-${this.enterprise.city}-${this.enterprise.county}`
  281. if (this.form.province) {
  282. this.form.province = [this.form.province,this.form.city,this.form.county]
  283. }
  284. if (!this.form.grade) this.form.grade = ''
  285. switch (this.form.freefreightamount) {
  286. case -1:
  287. this.radio = -1
  288. break;
  289. case 0:
  290. this.radio = 0
  291. break;
  292. default:
  293. this.radio = 1
  294. break;
  295. }
  296. },
  297. async queryEnterpriseArchives () {
  298. const res = await this.$api.requested({
  299. "id": 20220920083901,
  300. "content": {
  301. "pageNumber": 1,
  302. "pageSize": 20,
  303. "where": {
  304. "condition": this.form.enterprisename
  305. }
  306. }
  307. })
  308. this.ENlist = res.data
  309. },
  310. async query_arealist (callback) {
  311. const res = await this.$api.requested({
  312. "classname": "webmanage.sale.salearea.salearea",
  313. "method": "query_area",
  314. "content": {
  315. }
  316. })
  317. this.arealist = this.createList(res.data)
  318. },
  319. createList (array) {
  320. var that = this
  321. let arr = []
  322. function convertToElementTree(node) {
  323. if (node.subarea && node.subarea.length > 0) {
  324. for (var index = 0; index < node.subarea.length; index++) {
  325. convertToElementTree(node.subarea[index])
  326. }
  327. } else {
  328. node.subarea = null
  329. }
  330. return node;
  331. }
  332. array.forEach((element) => {
  333. arr.push(convertToElementTree(element))
  334. });
  335. return arr
  336. },
  337. async query_sysoptions () {
  338. const res = await this.$store.dispatch('optiontypeselect','agentgrade')
  339. this.agent_level = res.data
  340. const res1 = await this.$store.dispatch('optiontypeselect','agenttypemx')
  341. this.agent_type = res1.data
  342. },
  343. radioChange (val) {
  344. switch (val) {
  345. case -1:
  346. this.form.freefreightamount = -1
  347. break;
  348. case 0:
  349. this.form.freefreightamount = 0
  350. break;
  351. default:
  352. this.form.freefreightamount = ''
  353. break;
  354. }
  355. },
  356. onSubmit () {
  357. this.$refs['form'].validate(async (valid) => {
  358. if (!valid) return false
  359. const res = await this.$api.requested({
  360. "classname": "webmanage.sale.agents.agents",
  361. "method": "insertormodify_agent",
  362. "content": this.form
  363. })
  364. this.tool.showMessage(res,()=>{
  365. this.$emit('onSuccess')
  366. // this.$refs['form'].resetFields();
  367. this.dialogVisible = false
  368. })
  369. })
  370. },
  371. onChange () {
  372. this.visible = true
  373. this.debounce(this.queryEnterpriseArchives,1000)()
  374. },
  375. onCascaderChange (value) {
  376. this.form.sa_saleareaid = value.at(-1)
  377. },
  378. debounce (fn, wait) {
  379. return function () {
  380. if (this.timer !== null) clearTimeout(this.timer)
  381. this.timer = setTimeout(fn, wait)
  382. }
  383. },
  384. chooseEnterprise (item) {
  385. this.visible = false
  386. this.form.enterprisename = item.enterprisename
  387. this.form.enterpriseid = item.enterpriseid
  388. item.province = `${item.province}-${item.city}-${item.county}`
  389. this.enterprise = item
  390. },
  391. selectAgent (data) {
  392. this.form.parentid = data.sa_agentsid
  393. },
  394. cooperationstatusChange(){
  395. if (this.form.cooperationstatus === '正式'){
  396. this.fill = true
  397. }else {
  398. this.fill = false
  399. }
  400. }
  401. },
  402. }
  403. </script>
  404. <style>
  405. </style>
  406. <style scoped>
  407. .enterprisePanel {
  408. max-height: 400px;
  409. overflow-y: scroll;
  410. }
  411. .enterprisePanel li{
  412. padding: 10px;
  413. cursor: pointer;
  414. line-height: 25px;
  415. }
  416. .enterprisePanel li small{
  417. color: #999;
  418. }
  419. .enterprisePanel li:hover{
  420. background: #f1f2f3;
  421. }
  422. .enterpriseText{
  423. height: 34px;
  424. line-height: 34px;
  425. }
  426. .gz-form-row{
  427. display: flex;
  428. flex-wrap: wrap;
  429. }
  430. </style>