editContract.vue 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891
  1. <template>
  2. <div >
  3. <el-button @click="editBtn" :type="disabled?'':'primary'" :disabled="disabled" size="mini">编 辑</el-button>
  4. <el-drawer size="40%" :with-header="false" append-to-body :visible.sync="drawer" v-if="form.sa_contractid">
  5. <p class="normal-title normal-panel" style="border-bottom:1px solid #cccccc;padding:16px">编辑{{$route.query.type == '框架' ? '经销商合作' : $route.query.type}}合同</p>
  6. <div class="container normal-panel">
  7. <!--合作协议-->
  8. <el-row v-if="$route.query.type == '框架'">
  9. <el-form :model="form" :rules="rules" ref="form" label-position="right" label-width="140px" size="small">
  10. <el-col :span="24">
  11. <el-form-item label="合同标题:" prop="title">
  12. <el-input type="text" size="small" v-model="form.title"></el-input>
  13. </el-form-item>
  14. </el-col>
  15. <el-col :span="24">
  16. <el-form-item label="经销商:" prop="enterprisename">
  17. <el-popover
  18. placement="bottom"
  19. trigger="manual"
  20. v-model="agentVisible"
  21. width="400">
  22. <selectAgent ref="member" :param="agentListPrams" :radio="true" @onSelect="agentChange" @onCancel="agentVisible = false"></selectAgent>
  23. <el-input readonly type="text" slot="reference" size="small" @focus="showChange('agentVisible')" v-model="form.enterprisename"></el-input>
  24. </el-popover>
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="24">
  28. <el-form-item label="业务员:" prop="salername">
  29. <el-input disabled type="text" size="small" v-model="form.salername"></el-input>
  30. </el-form-item>
  31. </el-col>
  32. <el-col :span="24">
  33. <el-form-item label="折扣(%):" prop="discountrate">
  34. <el-input type="text" size="small" v-model="form.discountrate"></el-input>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="24">
  38. <el-form-item label="付款条件:" prop="paytype">
  39. <el-select v-model="form.paytype" placeholder="请选择">
  40. <el-option
  41. v-for="item in payTypeData"
  42. :key="item.value"
  43. :label="item.label"
  44. :value="item.value">
  45. </el-option>
  46. </el-select>
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="24">
  50. <el-form-item label="发货日期提醒(天):" prop="reminddays" >
  51. <el-input type="text" size="small" v-model="form.reminddays" placeholder="请输入发货日期提醒天数"></el-input>
  52. </el-form-item>
  53. </el-col>
  54. <el-col :span="24">
  55. <el-form-item label="合同有效期:" prop="begdate">
  56. <el-input style="display:none" v-model="form.begdate"></el-input>
  57. <time-select ref="timeSelect" class="inline-16" @clearSelect="clearTime" @timeChange="timeChange"></time-select>
  58. </el-form-item>
  59. </el-col>
  60. <el-col :span="24">
  61. <el-form-item label="签约日期:" prop="signdate">
  62. <el-date-picker
  63. v-model="form.signdate"
  64. type="date"
  65. value-format="yyyy-MM-dd"
  66. placeholder="选择日期">
  67. </el-date-picker>
  68. </el-form-item>
  69. </el-col>
  70. <el-col :span="24">
  71. <el-form-item label="合同模板:">
  72. <el-input disabled type="text" size="small" :value="$route.query.type == '框架' ? '经销合作' : $route.query.type"></el-input>
  73. </el-form-item>
  74. </el-col>
  75. <el-col :span="24">
  76. <el-form-item label="合同描述:" prop="remarks">
  77. <el-input type="textarea" size="small" v-model="form.remarks"></el-input>
  78. </el-form-item>
  79. </el-col>
  80. </el-form>
  81. </el-row>
  82. <!--经销项目-->
  83. <el-row v-if="$route.query.type == '经销项目'">
  84. <el-form :model="form" :rules="rules" ref="form" label-position="right" label-width="140px" size="small">
  85. <el-col :span="24">
  86. <el-form-item label="合同标题:" prop="title">
  87. <el-input type="text" size="small" v-model="form.title"></el-input>
  88. </el-form-item>
  89. </el-col>
  90. <el-col :span="24">
  91. <el-form-item label="经销商:" prop="enterprisename">
  92. <el-popover
  93. placement="bottom"
  94. trigger="manual"
  95. v-model="agentVisible"
  96. width="400">
  97. <selectAgent ref="member" :param="agentListPrams" :radio="true" @onSelect="agentChange" @onCancel="agentVisible = false"></selectAgent>
  98. <el-input readonly type="text" slot="reference" size="small" @focus="showChange('agentVisible')" v-model="form.enterprisename"></el-input>
  99. </el-popover>
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="24">
  103. <el-form-item label="项目名称:" prop="sa_projectid">
  104. <el-popover
  105. placement="bottom"
  106. trigger="manual"
  107. v-model="projectVisible"
  108. width="600">
  109. <seleteProject ref="project" type="1" :sys_enterpriseid='form.sys_enterpriseid' @onSelect="projectChange" @onCanel="projectVisible=false"></seleteProject>
  110. <el-input readonly type="text" slot="reference" size="small" @focus="showChange('projectVisible')" v-model="form.projectname"></el-input>
  111. </el-popover>
  112. </el-form-item>
  113. </el-col>
  114. <el-col :span="24">
  115. <el-form-item label="项目编号:" prop="">
  116. <el-input disabled type="text" size="small" v-model="form.projectnum" ></el-input>
  117. </el-form-item>
  118. </el-col>
  119. <el-col :span="24">
  120. <el-form-item label="业务员:" prop="salername">
  121. <el-input disabled type="text" size="small" v-model="form.salername"></el-input>
  122. </el-form-item>
  123. </el-col>
  124. <el-col :span="24">
  125. <el-form-item label="折扣(%):" prop="discountrate" >
  126. <el-input type="text" size="small" v-model="form.discountrate" placeholder="请输入折扣"></el-input>
  127. </el-form-item>
  128. </el-col>
  129. <el-col :span="24">
  130. <el-form-item label="付款条件:" prop="paytype">
  131. <el-select v-model="form.paytype" placeholder="请选择">
  132. <el-option
  133. v-for="item in payTypeData"
  134. :key="item.value"
  135. :label="item.label"
  136. :value="item.value">
  137. </el-option>
  138. </el-select>
  139. </el-form-item>
  140. </el-col>
  141. <el-col :span="24">
  142. <el-form-item label="发货日期提醒(天):" prop="reminddays" >
  143. <el-input type="text" size="small" v-model="form.reminddays" placeholder="请输入发货日期提醒天数"></el-input>
  144. </el-form-item>
  145. </el-col>
  146. <el-col :span="24">
  147. <el-form-item label="合同有效期:" prop="begdate">
  148. <input type="text" style="display:none" v-model="form.begdate">
  149. <time-select ref="timeSelect" class="inline-16" @clearSelect="clearTime" @timeChange="timeChange"></time-select>
  150. </el-form-item>
  151. </el-col>
  152. <el-col :span="24">
  153. <el-form-item label="签约日期:" prop="signdate">
  154. <el-date-picker
  155. v-model="form.signdate"
  156. type="date"
  157. value-format="yyyy-MM-dd"
  158. placeholder="选择日期">
  159. </el-date-picker>
  160. </el-form-item>
  161. </el-col>
  162. <el-col :span="24">
  163. <el-form-item label="签约金额(元):">
  164. <el-input type="text" disabled size="small" placeholder="产品清单总额(自动计算)" v-model="form.signamount"></el-input>
  165. </el-form-item>
  166. </el-col>
  167. <el-col :span="24">
  168. <el-form-item label="合同模板:">
  169. <el-input disabled type="text" size="small" :value="$route.query.type == '框架' ? '经销合作' : $route.query.type"></el-input>
  170. </el-form-item>
  171. </el-col>
  172. <el-col :span="24">
  173. <el-form-item label="合同描述:" prop="hrid">
  174. <el-input type="textarea" size="small" v-model="form.remarks"></el-input>
  175. </el-form-item>
  176. </el-col>
  177. </el-form>
  178. </el-row>
  179. <!--直销项目-->
  180. <el-row v-if="$route.query.type == '直销项目'">
  181. <el-form :model="form" :rules="rules" ref="form" label-position="right" label-width="140px" size="small">
  182. <el-col :span="24">
  183. <el-form-item label="合同标题:" prop="title">
  184. <el-input type="text" size="small" v-model="form.title"></el-input>
  185. </el-form-item>
  186. </el-col>
  187. <el-col :span="24">
  188. <el-form-item label="客户" prop="enterprisename">
  189. <el-popover
  190. placement="bottom"
  191. trigger="manual"
  192. v-model="accountVisible"
  193. width="400">
  194. <selectAgent ref="member" :param="agentListPrams" :radio="true" @onSelect="accountChange" @onCancel="accountVisible = false"></selectAgent>
  195. <el-input readonly type="text" slot="reference" size="small" @focus="showChange('accountVisible')" v-model="form.enterprisename"></el-input>
  196. </el-popover>
  197. </el-form-item>
  198. </el-col>
  199. <el-col :span="24">
  200. <el-form-item label="项目:" prop="sa_projectid">
  201. <el-popover
  202. placement="bottom"
  203. trigger="manual"
  204. v-model="projectVisible"
  205. width="600">
  206. <seleteProject ref="project" type="1" @onSelect="projectChange" @onCanel="projectVisible=false"></seleteProject>
  207. <el-input readonly type="text" slot="reference" size="small" @focus="showChange('projectVisible')" v-model="form.projectname"></el-input>
  208. </el-popover>
  209. </el-form-item>
  210. </el-col>
  211. <el-col :span="24">
  212. <el-form-item label="项目地址:" prop="">
  213. <el-input disabled type="text" size="small" v-model="address"></el-input>
  214. </el-form-item>
  215. </el-col>
  216. <el-col :span="24">
  217. <el-form-item label="业务员:" prop="salername">
  218. <el-input disabled type="text" size="small" v-model="form.salername"></el-input>
  219. </el-form-item>
  220. </el-col>
  221. <el-col :span="24">
  222. <el-form-item label="折扣(%):" prop="discountrate" >
  223. <el-input type="text" size="small" v-model="form.discountrate" placeholder="请输入折扣"></el-input>
  224. </el-form-item>
  225. </el-col>
  226. <el-col :span="24">
  227. <el-form-item label="付款条件:" prop="paytype">
  228. <el-select v-model="form.paytype" placeholder="请选择">
  229. <el-option
  230. v-for="item in payTypeData"
  231. :key="item.value"
  232. :label="item.label"
  233. :value="item.value">
  234. </el-option>
  235. </el-select>
  236. </el-form-item>
  237. </el-col>
  238. <el-col :span="24">
  239. <el-form-item label="发货日期提醒(天):" prop="reminddays" >
  240. <el-input type="text" size="small" v-model="form.reminddays" placeholder="请输入发货日期提醒天数"></el-input>
  241. </el-form-item>
  242. </el-col>
  243. <el-col :span="24">
  244. <el-form-item label="收货人:" prop="projectname">
  245. <el-popover
  246. placement="bottom"
  247. trigger="manual"
  248. v-model="receiptVisible"
  249. width="600">
  250. <seleteReceipt ref="receipt" type="1" @onSelect="receiptChange" @onCanel="receiptVisible = false"></seleteReceipt>
  251. <el-input readonly type="text" slot="reference" size="small" @focus="showChange('receiptVisible')" v-model="form.name"></el-input>
  252. </el-popover>
  253. </el-form-item>
  254. </el-col>
  255. <el-col :span="24">
  256. <el-form-item label="收货人电话:" prop="">
  257. <el-input disabled type="text" size="small" v-model="form.phonenumber"></el-input>
  258. </el-form-item>
  259. </el-col>
  260. <el-col :span="24">
  261. <el-form-item label="签约日期:" prop="signdate">
  262. <el-date-picker
  263. v-model="form.signdate"
  264. value-format="yyyy-MM-dd"
  265. type="date"
  266. placeholder="选择日期">
  267. </el-date-picker>
  268. </el-form-item>
  269. </el-col>
  270. <el-col :span="24">
  271. <el-form-item label="合同有效期:" prop="begdate">
  272. <input type="text" style="display:none" v-model="form.begdate">
  273. <time-select ref="timeSelect" class="inline-16" @clearSelect="clearTime" @timeChange="timeChange"></time-select>
  274. </el-form-item>
  275. </el-col>
  276. <el-col :span="24">
  277. <el-form-item label="签约金额(元):">
  278. <el-input type="text" disabled size="small" placeholder="产品清单总额(自动计算)" v-model="form.signamount"></el-input>
  279. </el-form-item>
  280. </el-col>
  281. <el-col :span="24">
  282. <el-form-item label="合同模板:">
  283. <el-input disabled type="text" size="small" :value="$route.query.type == '框架' ? '经销合作' : $route.query.type"></el-input>
  284. </el-form-item>
  285. </el-col>
  286. <el-col :span="24">
  287. <el-form-item label="合同描述:" prop="hrid">
  288. <el-input type="textarea" size="small" v-model="form.remarks"></el-input>
  289. </el-form-item>
  290. </el-col>
  291. </el-form>
  292. </el-row>
  293. <!--工具使用协议-->
  294. <el-row v-if="$route.query.type == '工具借用'">
  295. <el-form :model="form" :rules="rules" ref="form" label-position="right" label-width="100px" size="small">
  296. <el-col :span="24">
  297. <el-form-item label="合同标题:" prop="title">
  298. <el-input type="text" size="small" v-model="form.title"></el-input>
  299. </el-form-item>
  300. </el-col>
  301. <el-col :span="24">
  302. <el-form-item label="客户" prop="enterprisename">
  303. <el-popover
  304. placement="bottom"
  305. trigger="manual"
  306. v-model="accountVisible"
  307. width="400">
  308. <selectAgent ref="member" :param="agentListPrams" :radio="true" @onSelect="accountChange" @onCancel="accountVisible = false"></selectAgent>
  309. <el-input readonly type="text" slot="reference" size="small" @focus="showChange('accountVisible')" v-model="form.enterprisename"></el-input>
  310. </el-popover>
  311. </el-form-item>
  312. </el-col>
  313. <el-col :span="24">
  314. <el-form-item label="业务员:" prop="salername">
  315. <el-input disabled type="text" size="small" v-model="form.salername"></el-input>
  316. </el-form-item>
  317. </el-col>
  318. <el-col :span="24">
  319. <el-form-item label="签约日期:" prop="signdate">
  320. <el-date-picker
  321. v-model="form.signdate"
  322. value-format="yyyy-MM-dd"
  323. type="date"
  324. placeholder="选择日期">
  325. </el-date-picker>
  326. </el-form-item>
  327. </el-col>
  328. <el-col :span="24">
  329. <el-form-item label="合同有效期:" prop="begdate">
  330. <input type="text" style="display:none" v-model="form.begdate">
  331. <time-select ref="timeSelect" class="inline-16" @clearSelect="clearTime" @timeChange="timeChange"></time-select>
  332. </el-form-item>
  333. </el-col>
  334. <el-col :span="24">
  335. <el-form-item label="单套价格(元):">
  336. <el-input type="text" readonly size="small" placeholder="系统自动计算" v-model="form.signamount"></el-input>
  337. </el-form-item>
  338. </el-col>
  339. <el-col :span="24">
  340. <el-form-item label="合同模板:">
  341. <el-input disabled type="text" size="small" :value="$route.query.type == '框架' ? '经销合作' : $route.query.type"></el-input>
  342. </el-form-item>
  343. </el-col>
  344. <el-col :span="24">
  345. <el-form-item label="合同描述:" prop="hrid">
  346. <el-input type="textarea" size="small" v-model="form.remarks"></el-input>
  347. </el-form-item>
  348. </el-col>
  349. </el-form>
  350. </el-row>
  351. <!--居间协议-->
  352. <el-row v-if="$route.query.type == '居间'">
  353. <el-form :model="form" :rules="rules" ref="form" label-position="right" label-width="135px" size="small">
  354. <el-col :span="24">
  355. <el-form-item label="合同标题:" prop="title">
  356. <el-input type="text" size="small" v-model="form.title"></el-input>
  357. </el-form-item>
  358. </el-col>
  359. <el-col :span="24">
  360. <el-form-item label="居间商:" prop="sys_enterpriseid">
  361. <el-popover
  362. placement="bottom"
  363. trigger="manual"
  364. v-model="accountVisible"
  365. width="400">
  366. <selectAgent ref="member" :param="agentListPrams" :radio="true" @onSelect="accountChange" @onCancel="accountVisible = false"></selectAgent>
  367. <el-input readonly type="text" slot="reference" size="small" @focus="showChange('accountVisible')" v-model="form.enterprisename"></el-input>
  368. </el-popover>
  369. </el-form-item>
  370. </el-col>
  371. <el-col :span="24">
  372. <el-form-item label="项目合同:" prop="ascription_title">
  373. <el-popover
  374. placement="bottom"
  375. trigger="manual"
  376. v-model="concratVisible"
  377. width="600">
  378. <seleteProjectContract ref="projectContract" @onSelect="concratChange" @onCanel="concratVisible=false"></seleteProjectContract>
  379. <el-input readonly type="text" slot="reference" size="small" @focus="showChange('concratVisible')" v-model="form.ascription_title"></el-input>
  380. </el-popover>
  381. </el-form-item>
  382. </el-col>
  383. <el-col :span="24">
  384. <el-form-item label="项目名称:" prop="sa_projectid">
  385. <el-input disabled type="text" size="small" v-model="form.projectname"></el-input>
  386. </el-form-item>
  387. </el-col>
  388. <el-col :span="24">
  389. <el-form-item label="项目编号:" prop="projectnum">
  390. <el-input disabled type="text" size="small" v-model="form.projectnum"></el-input>
  391. </el-form-item>
  392. </el-col>
  393. <el-col :span="24">
  394. <el-form-item label="业务员:" prop="salername">
  395. <el-input disabled type="text" size="small" v-model="form.salername"></el-input>
  396. </el-form-item>
  397. </el-col>
  398. <el-col :span="24">
  399. <el-form-item label="签约日期:" prop="signdate">
  400. <el-date-picker
  401. v-model="form.signdate"
  402. value-format="yyyy-MM-dd"
  403. type="date"
  404. placeholder="选择日期">
  405. </el-date-picker>
  406. </el-form-item>
  407. </el-col>
  408. <el-col :span="24">
  409. <el-form-item label="计算方式">
  410. <el-radio-group v-model="form.calculatemodel">
  411. <el-radio :label="1">按订单金额比例计算</el-radio>
  412. <el-radio :label="2">按居间产品折扣计算</el-radio>
  413. </el-radio-group>
  414. </el-form-item>
  415. </el-col>
  416. <el-col :span="24" v-if="form.calculatemodel==1">
  417. <el-form-item label="订单金额比例(%):" prop="orderratio" >
  418. <el-input type="text" size="small" v-model.number="form.orderratio"></el-input>
  419. </el-form-item>
  420. </el-col>
  421. <el-col :span="24" v-if="form.calculatemodel==2">
  422. <el-form-item label="居间产品折扣(%):" prop="productdiscount">
  423. <el-input type="text" size="small" v-model.number="form.productdiscount"></el-input>
  424. </el-form-item>
  425. </el-col>
  426. <el-col :span="24">
  427. <el-form-item label="合同有效期:" prop="begdate">
  428. <input type="text" style="display:none" v-model="form.begdate">
  429. <time-select ref="timeSelect" class="inline-16" @clearSelect="clearTime" @timeChange="timeChange"></time-select>
  430. </el-form-item>
  431. </el-col>
  432. <el-col :span="24">
  433. <el-form-item label="合同模板:">
  434. <el-input disabled type="text" size="small" :value="$route.query.type == '框架' ? '经销合作' : $route.query.type"></el-input>
  435. </el-form-item>
  436. </el-col>
  437. <el-col :span="24">
  438. <el-form-item label="合同描述:" prop="hrid">
  439. <el-input type="textarea" size="small" v-model="form.remarks"></el-input>
  440. </el-form-item>
  441. </el-col>
  442. </el-form>
  443. </el-row>
  444. </div>
  445. <div class="fixed__btn__panel">
  446. <el-button size="small" @click="onCancel" class="normal-btn-width">取 消</el-button>
  447. <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
  448. </div>
  449. </el-drawer>
  450. </div>
  451. </template>
  452. <script>
  453. import selectPople from './selectSaler'
  454. import selectAgent from './selectAgent'
  455. import seleteProject from './seleteProject'
  456. import selectModel from './seleteModel'
  457. import TimeSelect from './TimeSelect'
  458. import seleteProjectContract from './seleteProjectContract'
  459. import seleteReceipt from './seleteReceipt'
  460. import { log } from '@antv/g2plot/lib/utils'
  461. export default {
  462. props:['data','disabled'],
  463. name: '',
  464. components:{selectPople,TimeSelect,seleteProject,selectAgent,selectModel,seleteProjectContract,seleteReceipt},
  465. data () {
  466. var checkNumber = (rule, value, callback) => {
  467. if (typeof +value != 'number') {
  468. return callback(new Error('请填写数字'));
  469. }
  470. callback()
  471. }
  472. var NumberSize = (rule, value, callback) => {
  473. if (+value > 100 || +value <= 1 && value) {
  474. return callback(new Error('折扣范围(1-100)'));
  475. }
  476. callback()
  477. }
  478. var checkTimer = (rule, value, callback) => {
  479. if (new Date(this.form.enddate).getTime() > new Date(value).getTime() && new Date(this.form.begdate).getTime() < new Date(value).getTime()) {
  480. callback()
  481. } {
  482. return callback(new Error('签约日期必须在合同有效期内'));
  483. }
  484. }
  485. return {
  486. drawer:false,
  487. agentVisible:false,
  488. salerVisible:false,
  489. projectVisible:false,
  490. accountVisible:false,
  491. modelVisible:false,
  492. concratVisible:false,
  493. receiptVisible:false,
  494. payTypeData:[],
  495. address:'',
  496. /* 新建居间项目时 所关联的居间商 */
  497. form: {
  498. "sa_contractid": 0,
  499. "sys_enterpriseid": "",
  500. "enterprisename":'',
  501. "projectname":'',
  502. "projectnum":'',
  503. "begdate": "",
  504. "enddate": "",
  505. "sa_projectid": "", //可选
  506. "type": "", //可选
  507. "discountrate": '', //可选
  508. "saler_hrid": '', //可选
  509. "signdate": "", //可选
  510. "signby": "", //可选
  511. "kickback": "", //可选
  512. "remarks": "", //可选
  513. "title": "",
  514. "signamount":'',
  515. "salername":'',
  516. "enterprisename":'',
  517. "sys_printmodelid": '',//可选
  518. "typemx":"",//可选
  519. "calculatemodel":1,
  520. "productdiscount":'',
  521. "orderratio":'',
  522. "ascription_title":'',
  523. 'ascription_contractid':'',
  524. 'name':'',
  525. "rec_contactsid":'',//收货联系人
  526. 'phonenumber':'',
  527. 'paytype':'',
  528. 'reminddays':''
  529. },
  530. rules: {
  531. title: [
  532. { required: true, message: '请填写标题', trigger: 'blur' },
  533. ],
  534. sys_enterpriseid: [
  535. { required: true, message: '请选择经销商', trigger: 'blur' },
  536. ],
  537. ascription_title: [
  538. { required: true, message: '请选择项目合同', trigger: 'change' },
  539. ],
  540. begdate: [
  541. { required: true, message: '请选择生效日期', trigger: 'blur' },
  542. ],
  543. sa_projectid: [
  544. { required: true, message: '请选择项目', trigger: 'change' },
  545. ],
  546. signamount: [
  547. { required: true, message: '请填写签约金额', trigger: 'change' },
  548. { validator:checkTimer, trigger:'change'}
  549. ],
  550. salername: [
  551. { required: true, message: '请选择业务员', trigger: 'change' },
  552. ],
  553. paytype: [
  554. { required: true, message: '请选择付款条件', trigger: 'change' },
  555. ],
  556. reminddays: [
  557. { required: true, message: '请设置发货日期提醒天数', trigger: 'blur' },
  558. ],
  559. enterprisename: [
  560. { required: true, message: '请选择', trigger: 'change' },
  561. ],
  562. signdate: [
  563. { required: true, message: '请填写签约时间', trigger: 'change' },
  564. ],
  565. productdiscount: [
  566. { message: '必须为数字', type:'number', trigger: 'change' },
  567. { required: true, message: '请填写折扣', trigger: 'blur' },
  568. ],
  569. orderratio: [
  570. { message: '必须为数字', type:'number', trigger: 'change' },
  571. { required: true, message: '请填写折扣', trigger: 'blur' },
  572. ],
  573. enterprisename: [
  574. { required: true, message: '请选择经销商', trigger: 'change' },
  575. ],
  576. discountrate: [
  577. { validator: checkNumber, trigger: 'blur'},
  578. { validator: NumberSize, trigger: 'blur'}
  579. ],
  580. },
  581. salerListParams: {
  582. "id": 20221122153902,
  583. "content": {
  584. "pageNumber": 1,
  585. "pageSize": 20,
  586. "where": {
  587. "condition": ""
  588. }
  589. },
  590. },
  591. agentListPrams: {
  592. "id": 20220920083901,
  593. "content": {
  594. "pageNumber": 1,
  595. "pageSize": 20,
  596. "where": {
  597. "condition": "",
  598. "type":1,
  599. }
  600. }
  601. },
  602. accountListPrams: {
  603. "id": 20220920083901,
  604. "content": {
  605. "pageNumber": 1,
  606. "pageSize": 20,
  607. "where": {
  608. "condition": "",
  609. "type":2,
  610. }
  611. }
  612. }
  613. };
  614. },
  615. computed: {
  616. },
  617. watch: {
  618. drawer (val) {
  619. if(!val) {
  620. this.showChange(false)
  621. } else {
  622. if(this.$refs.project) {
  623. this.$refs.project.params.content.type = this.$route.query.type == '经销项目' ? '2' : '1'
  624. this.$refs.project.queryEnterpriseArchives()
  625. }
  626. }
  627. }
  628. },
  629. created () {
  630. },
  631. mounted () {
  632. },
  633. methods: {
  634. editBtn () {
  635. this.form = Object.assign({},this.form,this.data)
  636. this.form.productdiscount = this.form.productdiscount * 100
  637. this.form.orderratio = this.form.orderratio * 100
  638. this.form.discountrate = this.form.discountrate * 100
  639. this.address = this.form.province + this.form.city + this.form.county + this.form.address
  640. this.drawer = true
  641. this.$nextTick(() => {
  642. this.$refs.timeSelect.time = [this.form.begdate,this.form.enddate]
  643. this.payTypeList()
  644. })
  645. console.log(this.form);
  646. },
  647. async onSubmit () {
  648. this.$refs.form.validate(async val => {
  649. if (val) {
  650. if(this.$route.query.type == '居间') {
  651. /* 当合同关系发生改变时 */
  652. if (this.form.sys_enterpriseid != this.data.sys_enterpriseid || this.form.ascription_contractid != this.data.ascription_contractid) {
  653. /* 项目商机中是否存在该居间商 */
  654. let isChange = this.$refs.projectContract.ENlist
  655. .find(item => item.sa_contractid == this.form.ascription_contractid).parties
  656. .some(item2 => item2.sys_enterpriseid == this.form.sys_enterpriseid),
  657. contract = this.$refs.projectContract.ENlist
  658. .find(item => item.sa_contractid == this.form.ascription_contractid)
  659. if (isChange) {
  660. this.$confirm('当前项目已存在此居间商,不可编辑','提示',{
  661. cancelButtonText:'取消',
  662. showConfirmButton:false
  663. }).then(() => {
  664. })
  665. } else {
  666. if (this.$route.query.type == '直销项目') {
  667. this.form.type = '项目'
  668. this.form.typemx = '直销'
  669. } else if (this.$route.query.type == '经销项目') {
  670. this.form.type = '项目'
  671. this.form.typemx = '经销'
  672. } else {
  673. this.form.type = this.$route.query.type
  674. }
  675. this.form.discountrate ? this.form.discountrate = (parseInt(this.form.discountrate) / 100).toFixed(4) : ''
  676. this.form.productdiscount ? this.form.productdiscount = (parseInt(this.form.productdiscount) / 100).toFixed(4) : ''
  677. this.form.orderratio ? this.form.orderratio = (parseInt(this.form.orderratio) / 100).toFixed(4) : ''
  678. let res = await this.$api.requested({
  679. "id":20221121185302,
  680. "content": this.form
  681. })
  682. this.tool.showMessage(res,() => {
  683. this.$refs.form.resetFields()
  684. this.drawer = false
  685. this.$emit('onSuccess')
  686. })
  687. }
  688. } else {
  689. this.form.orderratio ? this.form.orderratio = (parseInt(this.form.orderratio) / 100).toFixed(4) : ''
  690. this.form.productdiscount ? this.form.productdiscount = (parseInt(this.form.productdiscount) / 100).toFixed(4) : ''
  691. let res = await this.$api.requested({
  692. "id":20221121185302,
  693. "content": this.form
  694. })
  695. this.tool.showMessage(res,() => {
  696. this.$refs.form.resetFields()
  697. this.drawer = false
  698. this.$emit('onSuccess')
  699. })
  700. }
  701. } else {
  702. if (this.$route.query.type == '直销项目') {
  703. this.form.type = '项目'
  704. this.form.typemx = '直销'
  705. } else if (this.$route.query.type == '经销项目') {
  706. this.form.type = '项目'
  707. this.form.typemx = '经销'
  708. } else {
  709. this.form.type = this.$route.query.type
  710. }
  711. this.form.discountrate ? this.form.discountrate = (parseInt(this.form.discountrate) / 100).toFixed(4) : ''
  712. this.form.productdiscount ? this.form.productdiscount = (parseInt(this.form.productdiscount) / 100).toFixed(4) : ''
  713. this.form.orderratio ? this.form.orderratio = (parseInt(this.form.orderratio) / 100).toFixed(4) : ''
  714. let res = await this.$api.requested({
  715. "id":20221121185302,
  716. "content": this.form
  717. })
  718. this.tool.showMessage(res,() => {
  719. this.$refs.form.resetFields()
  720. this.drawer = false
  721. this.$emit('onSuccess')
  722. })
  723. }
  724. }
  725. })
  726. },
  727. showChange (key) {
  728. console.log(key,"编辑")
  729. this.agentVisible = false
  730. this.salerVisible = false
  731. this.projectVisible = false
  732. this.accountVisible = false
  733. this.modelVisible = false
  734. this.concratVisible = false
  735. /* key ? this[key] = true : ''
  736. if (key === 'projectVisible'){
  737. this.$refs.project.params.content.sys_enterpriseid = this.form.sys_enterpriseid
  738. this.$refs.project.queryEnterpriseArchives()
  739. this.$refs.form.validateField("enterprisename")
  740. this.$refs.form.validateField("sys_enterpriseid")
  741. }*/
  742. if (key === 'projectVisible'){
  743. if (this.form.sys_enterpriseid !== ''){
  744. console.log("执行",key)
  745. this.$refs.project.params.content.sys_enterpriseid = this.form.sys_enterpriseid
  746. this.$refs.project.queryEnterpriseArchives()
  747. key ? this[key] = true : ''
  748. }else {
  749. this.$refs.form.validateField("enterprisename")
  750. this.$refs.form.validateField("sys_enterpriseid")
  751. }
  752. }else if (key === 'receiptVisible'){
  753. if (this.form.sys_enterpriseid !== ''){
  754. this.$refs.receipt.params.content.sys_enterpriseid = this.form.sys_enterpriseid
  755. this.$refs.receipt.queryReceipts()
  756. key ? this[key] = true : ''
  757. }else {
  758. this.$refs.form.validateField("enterprisename")
  759. this.$refs.form.validateField("sys_enterpriseid")
  760. }
  761. }else {
  762. key ? this[key] = true : ''
  763. }
  764. },
  765. onCancel () {
  766. this.drawer = false
  767. this.$refs.form.resetFlieds()
  768. },
  769. agentChange (data) {
  770. this.form.sys_enterpriseid = data[0].sys_enterpriseid
  771. this.form.enterprisename = data[0].enterprisename
  772. this.agentVisible = false
  773. },
  774. salerChange (data) {
  775. this.form.saler_hrid = data[0].hrid
  776. this.form.salername = data[0].name
  777. this.salerVisible = false
  778. },
  779. projectChange (data) {
  780. if (this.$route.query.type == '直销项目' || this.$route.query.type == '经销项目') {
  781. this.$confirm('变更项目并保存后,将清空"产品清单"并重新拉取,确定执行吗?','提示',{
  782. "confirmButtonText":"确定",
  783. "cancelButtonText":"取消",
  784. "type":"warning"
  785. }).then (() => {
  786. this.form.projectname = data.projectname
  787. this.form.projectnum = data.projectnum
  788. this.form.sa_projectid = data.sa_projectid
  789. this.address = data.province + data.city + data.county + data.address
  790. this.projectVisible = false
  791. })
  792. }
  793. },
  794. receiptChange (data) {
  795. this.form.name = data.name
  796. this.form.phonenumber = data.phonenumber
  797. this.form.rec_contactsid = data.contactsid
  798. this.receiptVisible = false
  799. },
  800. accountChange (data) {
  801. this.form.enterprisename = data[0].enterprisename
  802. this.form.sys_enterpriseid = data[0].sys_enterpriseid
  803. this.accountVisible = false
  804. },
  805. centerChange (data) {
  806. this.form.enterprisename = data[0].enterprisename
  807. this.form.sys_enterpriseid = data[0].sys_enterpriseid
  808. this.agentVisible = false
  809. },
  810. modelChange (data) {
  811. this.form.modelname = data.modelname
  812. this.form.sys_printmodelid = data.sys_printmodelid
  813. this.modelVisible = false
  814. },
  815. concratChange (data) {
  816. this.form.ascription_title = data.projectname
  817. this.form.ascription_contractid = data.sa_contractid
  818. this.form.projectname = data.projectname
  819. this.form.projectnum = data.projectnum
  820. this.form.sa_projectid = data.sa_projectid
  821. this.concratVisible = false
  822. },
  823. clearTime () {
  824. this.form.begdate = ''
  825. this.form.enddate = ''
  826. },
  827. timeChange (time) {
  828. this.form.begdate = time[0]
  829. this.form.enddate = time[1]
  830. },
  831. /*获取付款条件*/
  832. async payTypeList(){
  833. const res = await this.$api.requested({
  834. id: "20230110100103",
  835. content: {
  836. pageNumber: 1,
  837. pageSize:50,
  838. where: {condition: ""},
  839. }
  840. })
  841. console.log(res,'res')
  842. this.payTypeData = res.data.map((item,index)=>{
  843. if (item.point === '订单审核'){
  844. return {
  845. label:item.ruleno + '\xa0 \xa0 \xa0 \xa0' + item.point + '\xa0 \xa0 \xa0 \xa0' + "立账额度" + (item.amountrate * 100) +'% ' + '\xa0 \xa0 \xa0 \xa0' + '后置天数' + item.days + '天',
  846. value:item.ruleno + '' + item.point + '' + "立账额度" + (item.amountrate * 100) +'% ' + '' + '后置天数' + item.days + '天',
  847. }
  848. }else {
  849. return {
  850. label:item.ruleno + '\xa0 \xa0 \xa0 \xa0' + item.point + '\xa0 \xa0 \xa0 \xa0' + '后置天数' + item.days + '天',
  851. value:item.ruleno + '' + item.point + '' + '后置天数' + item.days + '天',
  852. }
  853. }
  854. })
  855. /* res.data.forEach((item,index)=>{
  856. if (item.point === '订单审核'){
  857. this.payTypeData[index] = item.ruleno + ' ' + item.point + ' ' + "立账额度" + (item.amountrate * 100) +'% ' + '后置天数' + item.days
  858. }else {
  859. this.payTypeData[index] = item.ruleno + ' ' + item.point + ' ' + '后置天数' + item.days
  860. }
  861. })*/
  862. console.log(this.payTypeData,'处理后数据')
  863. }
  864. },
  865. };
  866. </script>
  867. <style scoped>
  868. * {
  869. box-sizing: border-box;
  870. }
  871. .header_info {
  872. background: #ffffff;
  873. padding: 16px 16px 0 16px;
  874. margin-bottom: 16px;
  875. }
  876. /deep/.el-select,.el-input,.el-date-editor {
  877. width: 100% !important;
  878. }
  879. </style>