detail.vue 69 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664
  1. <template>
  2. <div>
  3. <basicDetails
  4. ref="details"
  5. :titleText="mainData.title"
  6. :editData="mainData"
  7. :mainAreaData="mainAreaData"
  8. turnPageId="20221121201502"
  9. idname="sa_contractid"
  10. typeTask="合同"
  11. ownertable="sa_contract"
  12. :tabs="tabs"
  13. :statusCheck="[{key:'status',value:'已提交'},{key:'status',value:'审核'},{key:'status',value:'已终止'}]"
  14. :attachmentDisabled="mainData.status == '已提交' || mainData.status == '审核' || mainData.status == '已终止' || mainData.status == '已过期'"
  15. @pageChange="pageChange"
  16. @onEditSuccess="editSuccess">
  17. <div slot="tags">
  18. </div>
  19. <div slot="customOperation">
  20. <editBtn class="inline-16" :modelList="modelList" v-if="tool.checkAuth($route.name,'update')" :disabled="mainData.status != '新建' || !isLeader" @onSuccess="queryMainData($route.query.id);$refs.billno && $refs.billno.listData()" :data="mainData" />
  21. <el-button
  22. type="primary"
  23. size="mini"
  24. @click="changeBill"
  25. v-if="mainData.status == '审核' && ($route.query.type == '经销项目' || $route.query.type == '直销项目') && (tool.checkAuth($route.name,'changeBillMag') || tool.checkAuth($route.name,'changeBillSaler') || tool.checkAuth($route.name,'changeBillOrder'))"
  26. >{{$t('一键转单')}}</el-button>
  27. <revoke class="inline-16" @onSuccess="queryMainData($route.query.id)" :data="mainData" v-if="tool.checkAuth($route.name,'revoke') && mainData.status === '已提交' && isLeader" ></revoke>
  28. <submit-check class="inline-16" :disabled="!isLeader" ref="submit" :data="mainData" @onSuccess="queryMainData($route.query.id)" />
  29. <reverseCheck class="inline-16" @onSuccess="queryMainData($route.query.id)" :data="mainData" v-if="tool.checkAuth($route.name,'reverseCheck') && mainData.status === '审核'" />
  30. <contractOver class="inline-16" v-if="tool.checkAuth($route.name,'contractOver') && mainData.status == '审核' && isLeader" :disabled="!isLeader" :id="mainData.sa_contractid" @onSuccess="queryMainData($route.query.id)" />
  31. <copyTo class="inline-16" v-if="tool.checkAuth($route.name,'copy')"></copyTo>
  32. <Del class="inline-16" :idName="20221121202502" :id="mainData.sa_contractid" idKey="sa_contractids" v-if="tool.checkAuth($route.name,'toVoid') && (mainData.status == '新建' || mainData.status == '已终止' || mainData.status == '已过期') && isLeader"/>
  33. </div>
  34. <div slot="slot0" >
  35. <div v-if="mainData.type == '项目'">
  36. <!--项目产品明细折扣表-->
  37. <productBillno :data="mainData" :isLeader="isLeader" ref="billno" @priceChange="queryMainData($route.query.id)" @delSuccess="queryMainData" @onSuccess="productAdd" >
  38. <template v-slot:edit="scope">
  39. </template>
  40. <template v-slot:del="scope">
  41. </template>
  42. <template v-slot:cooperate="scope">
  43. <el-button :disabled="mainData.status !== '新建'" size="small" :type="mainData.status === '新建'?'primary':''" @click="cooperateVisible = true" v-if="tool.checkAuth($route.name,'productBillManage') && isLeader">{{$t('同步合作协议')}}</el-button>
  44. <el-dialog :title="$t('同步合作协议')" :visible.sync="cooperateVisible" append-to-body width="725px">
  45. <span style="color: #8C8C8C;font-size: 14px">{{$t('请选择同步更新经销商/直销客户合作协议产品的方式')}}:</span>
  46. <el-form :model="cooperateForm" style="margin-top: 20px">
  47. <el-radio v-model="cooperateForm.isadd" label="1" style="margin-bottom: 20px">
  48. <span style="font-size: 16px;color: #333333;white-space:normal;">{{$t('同步添加合作协议产品')}}</span><br><br>
  49. <div style="font-size: 14px;color: #8C8C8C;padding-left:20px;white-space:normal;">
  50. {{$t('将协议中所有产品添加到表体,若表体已存在产品,则协议中相同产品的信息及其折扣价格覆盖更新到表体。')}}
  51. </div>
  52. </el-radio>
  53. <el-radio v-model="cooperateForm.isadd" label="0">
  54. <span style="font-size: 16px;color: #333333;white-space:normal;">{{$t('仅更新合作协议的产品折扣价格')}}</span><br><br>
  55. <div style="font-size: 14px;color: #8C8C8C;padding-left:20px;white-space:normal;">
  56. {{$t('将协议中与表体相同的产品信息及其折扣价格覆盖更新到表体,不添加协议产品。')}}
  57. </div>
  58. </el-radio>
  59. </el-form>
  60. <div slot="footer" class="dialog-footer">
  61. <el-button size="small" @click="cooperateVisible = false" class="normal-btn-width">{{$t(`取 消`)}}</el-button>
  62. <el-button size="small" type="primary" @click="onCooperate" class="normal-btn-width">{{$t(`确 定`)}}</el-button>
  63. </div>
  64. </el-dialog>
  65. </template>
  66. </productBillno>
  67. </div>
  68. <div v-if="mainData.type == '框架' || mainData.type == '直销' ">
  69. <!--产品明细折扣表-->
  70. <productDetailList :data="mainData" :isLeader="isLeader" ref="productDetailList" @priceChange="queryMainData($route.query.id)" @closeDrawer="queryMainData($route.query.id)">
  71. <importFile
  72. v-if="tool.checkAuth($route.name,'exportProduct') && isLeader && mainData.status === '新建'"
  73. slot="export"
  74. ref="importFile"
  75. class="inline-16"
  76. :bindData="{ownertable:'sa_contract',ownerid:$route.query.id,usetype:'default'}"
  77. :errorUrl="errorUrl"
  78. @clearUrl="errorUrl = null"
  79. @onSuccess="bindImportOrder"
  80. ></importFile>
  81. <template v-slot:cooperate="scope">
  82. <el-button class="inline-16" :disabled="mainData.status !== '新建'" size="small" :type="mainData.status === '新建'?'primary':''" @click="cooperateVisible = true" v-if="tool.checkAuth($route.name,'productDetailManage') && isLeader && mainData.type == '居间'">{{$t('同步协议')}}</el-button>
  83. <el-dialog :title="$t(`同步协议`)" :visible.sync="cooperateVisible" append-to-body width="703px" center>
  84. <span style="font-size: 14px;color: #8C8C8C;margin: 20px 0 0 22px;padding-top: 20px">
  85. {{$t('是否添加关联的项目或客户合同中的产品明细同步更新到列表')}}
  86. </span>
  87. <div slot="footer" class="dialog-footer">
  88. <el-button size="small" @click="cooperateVisible = false" class="normal-btn-width">{{$t(`取 消`)}}</el-button>
  89. <el-button size="small" type="primary" @click="onCooperate" class="normal-btn-width">{{$t(`确 定`)}}</el-button>
  90. </div>
  91. </el-dialog>
  92. </template>
  93. </productDetailList>
  94. </div>
  95. <div v-if="mainData.type == '居间'">
  96. <!-- 详细信息 -->
  97. <BaseInfo v-if="siteid === 'HY'" :detailInfo="detailInfo"/>
  98. <!--产品明细折扣表-->
  99. <productDetailList v-else :data="mainData" :isLeader="isLeader" ref="productDetailList" @priceChange="queryMainData($route.query.id)" @closeDrawer="queryMainData($route.query.id)">
  100. <importFile
  101. v-if="tool.checkAuth($route.name,'exportProduct') && isLeader && mainData.status === '新建'"
  102. slot="export"
  103. ref="importFile"
  104. class="inline-16"
  105. :bindData="{ownertable:'sa_contract',ownerid:$route.query.id,usetype:'default'}"
  106. :errorUrl="errorUrl"
  107. @clearUrl="errorUrl = null"
  108. @onSuccess="bindImportOrder"
  109. ></importFile>
  110. <template v-slot:cooperate="scope">
  111. <el-button class="inline-16" :disabled="mainData.status !== '新建'" size="small" :type="mainData.status === '新建'?'primary':''" @click="cooperateVisible = true" v-if="tool.checkAuth($route.name,'productDetailManage') && isLeader && mainData.type == '居间'">{{$t('同步协议')}}</el-button>
  112. <el-dialog :title="$t(`同步协议`)" :visible.sync="cooperateVisible" append-to-body width="703px" center>
  113. <span style="font-size: 14px;color: #8C8C8C;margin: 20px 0 0 22px;padding-top: 20px">
  114. {{$t('是否添加关联的项目或客户合同中的产品明细同步更新到列表')}}
  115. </span>
  116. <div slot="footer" class="dialog-footer">
  117. <el-button size="small" @click="cooperateVisible = false" class="normal-btn-width">{{$t(`取 消`)}}</el-button>
  118. <el-button size="small" type="primary" @click="onCooperate" class="normal-btn-width">{{$t(`确 定`)}}</el-button>
  119. </div>
  120. </el-dialog>
  121. </template>
  122. </productDetailList>
  123. </div>
  124. <div v-if="mainData.type == '工具借用'">
  125. <!--工具清单-->
  126. <toolList :data="mainData" :isLeader="isLeader" ref="toolList" v-if="mainData.type == '工具借用'" @priceChange="queryMainData($route.query.id)">
  127. <template v-slot:edit="scope">
  128. </template>
  129. </toolList>
  130. </div>
  131. </div>
  132. <div slot="slot1" >
  133. <!-- 居间 -->
  134. <div v-if="mainData.type === '居间'">
  135. <contactList v-if="siteid === 'HY' && mainData && tool.checkAuth($route.name,'contact')" :data="mainData"></contactList>
  136. <linkedOrder v-else-if="siteid === 'HY' && mainData && tool.checkAuth($route.name,'linkedOrder')"></linkedOrder>
  137. <productClassList v-else :data="mainData" :isLeader="isLeader" ref="classList" @priceChange="queryMainData($route.query.id)">
  138. <addClass class="inline-16" v-if="tool.checkAuth($route.name,'productClassManage')" :disabled="mainData.status != '新建' || !isLeader" :typeName="mainData.type" slot="addProduct" @onSuccess="$refs.classList.listData()" ref="addProduct" @closeDrawer="closeDrawer"/>
  139. <template v-slot:edit="scope">
  140. </template>
  141. <template v-slot:cooperate="scope">
  142. <el-button class="inline-16" :disabled="mainData.status !== '新建'" size="small" :type="mainData.status === '新建'?'primary':''" @click="cooperateVisible = true" v-if="tool.checkAuth($route.name,'productClassManage') && isLeader && mainData.type == '居间'">{{$t('同步协议')}}</el-button>
  143. <el-dialog :title="$t(`同步协议`)" :visible.sync="cooperateVisible" append-to-body width="703px" center>
  144. <span style="font-size: 14px;color: #8C8C8C;margin: 20px 0 0 22px;padding-top: 20px">
  145. {{$t('是否添加关联的项目或客户合同中的产品类别同步更新到列表')}}
  146. </span>
  147. <div slot="footer" class="dialog-footer">
  148. <el-button size="small" @click="cooperateVisible = false" class="normal-btn-width">{{$t(`取 消`)}}</el-button>
  149. <el-button size="small" type="primary" @click="onCooperateItem" class="normal-btn-width">{{$t(`确 定`)}}</el-button>
  150. </div>
  151. </el-dialog>
  152. </template>
  153. </productClassList>
  154. </div>
  155. <div v-if="mainData.type == '框架' || mainData.type == '直销' ">
  156. <!--产品类别折扣表-->
  157. <productClassList :data="mainData" :isLeader="isLeader" ref="classList" @priceChange="queryMainData($route.query.id)" >
  158. <addClass class="inline-16" v-if="tool.checkAuth($route.name,'productClassManage')" :disabled="mainData.status != '新建' || !isLeader" :typeName="mainData.type" slot="addProduct" @onSuccess="$refs.classList.listData()" ref="addProduct" @closeDrawer="closeDrawer"/>
  159. <template v-slot:edit="scope">
  160. </template>
  161. <template v-slot:cooperate="scope">
  162. <el-button class="inline-16" :disabled="mainData.status !== '新建'" size="small" :type="mainData.status === '新建'?'primary':''" @click="cooperateVisible = true" v-if="tool.checkAuth($route.name,'productClassManage') && isLeader && mainData.type == '居间'">{{$t('同步协议')}}</el-button>
  163. <el-dialog :title="$t(`同步协议`)" :visible.sync="cooperateVisible" append-to-body width="703px" center>
  164. <span style="font-size: 14px;color: #8C8C8C;margin: 20px 0 0 22px;padding-top: 20px">
  165. {{$t('是否添加关联的项目或客户合同中的产品类别同步更新到列表')}}
  166. </span>
  167. <div slot="footer" class="dialog-footer">
  168. <el-button size="small" @click="cooperateVisible = false" class="normal-btn-width">{{$t(`取 消`)}}</el-button>
  169. <el-button size="small" type="primary" @click="onCooperateItem" class="normal-btn-width">{{$t(`确 定`)}}</el-button>
  170. </div>
  171. </el-dialog>
  172. </template>
  173. </productClassList>
  174. </div>
  175. <div v-if="mainData.type == '项目'">
  176. <!-- 产品类别折扣 -->
  177. <itemClass ref="itemClass" :data="mainData" :isLeader="isLeader" >
  178. <template v-slot:cooperate="scope">
  179. <addClass class="inline-16" v-if="tool.checkAuth($route.name,'productClassManage') && mainData.status === '新建' && isLeader" :disabled="mainData.status != '新建' || !isLeader" :typeName="mainData.type" slot="addProduct" @onSuccess="$refs.itemClass.listData()" title="自产品类别添加" ref="addProduct" @closeDrawer="closeDrawer"/>
  180. <el-button :disabled="mainData.status !== '新建'" size="small" :type="mainData.status === '新建'?'primary':''" @click="cooperateVisible = true" v-if="tool.checkAuth($route.name,'productClassManage') && isLeader">{{$t('同步合作协议')}}</el-button>
  181. <el-dialog :title="$t('同步合作协议')" :visible.sync="cooperateVisible" append-to-body width="725px">
  182. <span style="color: #8C8C8C;font-size: 14px">{{$t('请选择同步更新经销商/直销客户合作协议产品类别的方式')}}:</span>
  183. <el-form :model="cooperateForm" style="margin-top: 20px">
  184. <el-radio v-model="cooperateForm.isadd" label="1" style="margin-bottom: 20px">
  185. <span style="font-size: 16px;color: #333333;white-space:normal;">{{$t('同步添加合作协议产品类别及其折扣')}}</span><br><br>
  186. <div style="font-size: 14px;color: #8C8C8C;padding-left:20px;white-space:normal;">
  187. {{$t('将协议中所有产品类别及其折扣添加到表体,若表体已存在产品类别,则协议中相同产品类别的折扣覆盖更新到表体。')}}
  188. </div>
  189. </el-radio>
  190. <el-radio v-model="cooperateForm.isadd" label="0">
  191. <span style="font-size: 16px;color: #333333;white-space:normal;">{{$t('仅更新合作协议的产品类别折扣')}}</span><br><br>
  192. <span style="font-size: 14px;color: #8C8C8C;padding-left:20px;white-space:normal;">
  193. {{$t('将协议中与表体相同的产品类别的折扣价格覆盖更新到表体,不添加协议的产品类别。')}}
  194. </span>
  195. </el-radio>
  196. </el-form>
  197. <div slot="footer" class="dialog-footer">
  198. <el-button size="small" @click="cooperateVisible = false" class="normal-btn-width">{{$t(`取 消`)}}</el-button>
  199. <el-button size="small" type="primary" @click="onCooperateItem" class="normal-btn-width">{{$t(`确 定`)}}</el-button>
  200. </div>
  201. </el-dialog>
  202. </template>
  203. </itemClass>
  204. </div>
  205. <div v-if="mainData.type === '工具借用'">
  206. <BaseInfo :detailInfo="detailInfo"/>
  207. </div>
  208. </div>
  209. <div slot="slot2">
  210. <div v-if="Object.keys(mainData).length > 0 && (mainData.type == '框架' || mainData.type == '直销')" >
  211. <!--业绩目标-->
  212. <taskTarget ref="taskTarget" :data="mainData">
  213. <template v-slot:addTarget="scope">
  214. <add-target :disabled="mainData.status != '新建' || !isLeader" v-if="tool.checkAuth($route.name,'taskTargetManage')" :data="mainData" @onSuccess="successYear"></add-target>
  215. </template>
  216. <template v-slot:edit="scope">
  217. <edit-target class="inline-16" :disabled="mainData.status != '新建' || !isLeader" v-if="tool.checkAuth($route.name,'taskTargetManage')" :data="scope.data" :salerId="mainData" @onSuccess="$refs.taskTarget.queryData()"/>
  218. </template>
  219. <template v-slot:delete="scope">
  220. <del-target @onSuccess="$refs.taskTarget.queryData()" class="inline-16" :disabled="mainData.status != '新建' || !isLeader" v-if="tool.checkAuth($route.name,'taskTargetManage')" :id="scope.data.sa_salestargetbillid"></del-target>
  221. </template>
  222. </taskTarget>
  223. </div>
  224. <div v-if="mainData.type == '项目'">
  225. <!-- 备用金 -->
  226. <priceDifference v-if="siteid == 'HY' && tool.checkAuth($route.name,'brokerageFeeEntrySet')" :data="mainData"></priceDifference>
  227. <!-- 详细信息 -->
  228. <BaseInfo v-else :detailInfo="detailInfo"/>
  229. </div>
  230. <div v-if="mainData.type == '居间'">
  231. <div v-if="siteid == 'HY' && tool.checkAuth($route.name,'linkedOrder')">
  232. <linkedOrder></linkedOrder>
  233. </div>
  234. <BaseInfo v-else :detailInfo="detailInfo"/>
  235. </div>
  236. <div v-if="mainData.type == '工具借用'">
  237. <div v-if="tool.checkAuth($route.name,'linkedOrder')">
  238. <linkedOrder></linkedOrder>
  239. </div>
  240. </div>
  241. </div>
  242. <div slot="slot3">
  243. <div v-if="mainData.type === '居间' && siteid !== 'HY'">
  244. <contactList v-if="mainData && tool.checkAuth($route.name,'contact')" :data="mainData"></contactList>
  245. <linkedOrder v-else-if="tool.checkAuth($route.name,'linkedOrder')"></linkedOrder>
  246. </div>
  247. <div v-if="mainData.type == '框架' || mainData.type == '直销'">
  248. <priceDifference v-if="siteid == 'HY' && tool.checkAuth($route.name,'brokerageFeeEntrySet')" :data="mainData"></priceDifference>
  249. <BaseInfo v-else :detailInfo="detailInfo"/>
  250. </div>
  251. <div v-if="mainData.type == '项目' && siteid == 'HY'">
  252. <linkedOrder v-if="tool.checkAuth($route.name,'linkedOrder') && !tool.checkAuth($route.name,'brokerageFeeEntrySet')"></linkedOrder>
  253. <BaseInfo v-else :detailInfo="detailInfo"/>
  254. </div>
  255. <div v-if="mainData.type == '项目' && siteid !== 'HY'">
  256. <linkedOrder v-if="tool.checkAuth($route.name,'linkedOrder')"></linkedOrder>
  257. </div>
  258. </div>
  259. <div slot="slot4">
  260. <div v-if="mainData.type == '框架' || mainData.type == '直销'">
  261. <linkedOrder v-if="tool.checkAuth($route.name,'linkedOrder') && tool.checkAuth($route.name,'brokerageFeeEntrySet') && siteid != 'HY'"></linkedOrder>
  262. <BaseInfo v-else :detailInfo="detailInfo"/>
  263. </div>
  264. <div v-if="mainData.type == '项目'">
  265. <linkedOrder v-if="tool.checkAuth($route.name,'linkedOrder')"></linkedOrder>
  266. </div>
  267. <div v-if="mainData.type == '居间'">
  268. <linkedOrder v-if="tool.checkAuth($route.name,'linkedOrder')"></linkedOrder>
  269. </div>
  270. </div>
  271. <div slot="slot5">
  272. <linkedOrder></linkedOrder>
  273. </div>
  274. </basicDetails>
  275. </div>
  276. </template>
  277. <script>
  278. import Del from '../components/delete'
  279. import editBtn from '../components/editContract'
  280. import SubmitCheck from '../components/submitCheck'
  281. import productBillno from '../components/productList/productBillno.vue'
  282. import productDetailList from '../components/productDetailList/productDetailList.vue'
  283. import addProduct from '../components/productList/addProduct'
  284. import addProductDetail from '../components/productDetailList/addProduct.vue'
  285. import addTool from '../components/toolList/addTool'
  286. import toolList from '../components/toolList/toolList.vue'
  287. import addClass from '../components/productClassList/addProduct'
  288. import productClassList from '../components/productClassList/productClassList.vue'
  289. import contractClause from '../components/contractClause/contractClause'
  290. import editTarget from '../components/taskTarget/editTarget'
  291. import addTarget from '../components/taskTarget/addTarget'
  292. import taskTarget from '../components/taskTarget/taskTarget'
  293. import delTarget from '../components/taskTarget/delTarget'
  294. import contractOver from '../components/contractOver'
  295. import reverseCheck from '../components/reverseCheck'
  296. import revoke from "@/HDrpManagement/contractManage/components/revoke";
  297. import BaseInfo from '@/HDrpManagement/projectChange/modules/modules/baseInfo/baseInfo'
  298. import itemClass from '../components/itemClass/index.vue'
  299. import importFile from '../components/importFile'
  300. import copyTo from '../components/copyTo'
  301. import priceDifference from '../components/priceDifference/index'
  302. import contactList from '../components/contactList/index'
  303. import linkedOrder from "../components/linkedOrder";
  304. import { Loading } from 'element-ui';
  305. export default {
  306. name: "detail",
  307. data() {
  308. return {
  309. mainData:{},
  310. mainAreaData:{},
  311. modelList:[],
  312. isLeader:false,
  313. detailInfo:{},
  314. message:'确定删除当前条款吗?',
  315. errorUrl:null,
  316. cooperateVisible:false,
  317. cooperateForm:{
  318. "sa_contractid": "",
  319. "isadd":''
  320. },
  321. siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid,
  322. tabs:[]
  323. }
  324. },
  325. components:{
  326. Del,
  327. SubmitCheck,
  328. editBtn,
  329. productBillno,
  330. addProduct,
  331. productDetailList,
  332. addProductDetail,
  333. addTool,
  334. toolList,
  335. addClass,
  336. productClassList,
  337. contractClause,
  338. editTarget,
  339. taskTarget,
  340. contractOver,
  341. reverseCheck,
  342. addTarget,
  343. delTarget,
  344. BaseInfo,
  345. revoke,
  346. itemClass,
  347. importFile,
  348. copyTo,
  349. priceDifference,
  350. contactList,
  351. linkedOrder
  352. },
  353. provide () {
  354. return {
  355. detailData:() => this.mainData,
  356. }
  357. },
  358. watch: {
  359. mainData: {
  360. async handler (val) {
  361. const res = await this.$api.requested({
  362. "id": 20220930103501,
  363. "content": {
  364. "ownertable":"sa_contract",
  365. "ownerid":this.$route.query.id
  366. }
  367. })
  368. const agent = await this.$api.requested({
  369. "id":20230329122604,
  370. "content": {
  371. "ownertable":"sa_contract",
  372. "ownerid":this.$route.query.id
  373. }
  374. })
  375. if (this.mainData.leader && this.mainData.leader.length > 0){
  376. if (JSON.parse(window.sessionStorage.getItem('active_account')).userid === this.mainData.leader[0].userid){
  377. this.isLeader = true
  378. }else {
  379. let flag = 0
  380. for (var i=0;i<res.data[0].team.length;i++){
  381. if (res.data[0].team[i].userid === JSON.parse(window.sessionStorage.getItem('active_account')).userid){
  382. if (res.data[0].team[i].editable === 1){
  383. flag =1
  384. break
  385. }else {
  386. flag = 0
  387. break
  388. }
  389. }
  390. }
  391. console.log(agent.data.editable,'agent.data.editable')
  392. flag === 0 ?agent.data.editable === 0?this.isLeader = false:this.isLeader = true:this.isLeader = true
  393. this.$refs.details.$refs.group.editdataleader = agent.data.editdataleader
  394. console.log(this.isLeader,'isLeader')
  395. }
  396. }
  397. },
  398. deep:true,
  399. immediate:true
  400. }
  401. },
  402. methods:{
  403. tabsSet(){
  404. if (this.mainData.type == '项目'){
  405. if (this.siteid == 'HY'){
  406. if (this.tool.checkAuth(this.$route.name,'brokerageFeeEntrySet') && !this.tool.checkAuth(this.$route.name,'linkedOrder')){
  407. this.tabs = ['产品明细折扣','产品类别折扣','备用金','详细信息']
  408. }else if (this.tool.checkAuth(this.$route.name,'linkedOrder') && !this.tool.checkAuth(this.$route.name,'brokerageFeeEntrySet')){
  409. this.tabs = ['产品明细折扣','产品类别折扣','详细信息','关联订单']
  410. }else if (this.tool.checkAuth(this.$route.name,'linkedOrder') && this.tool.checkAuth(this.$route.name,'brokerageFeeEntrySet')){
  411. this.tabs = ['产品明细折扣','产品类别折扣','备用金','详细信息','关联订单']
  412. }else {
  413. this.tabs = ['产品明细折扣','产品类别折扣','详细信息']
  414. }
  415. }else {
  416. if (this.tool.checkAuth(this.$route.name,'linkedOrder')){
  417. this.tabs = ['产品明细折扣','产品类别折扣','详细信息','关联订单']
  418. }else {
  419. this.tabs = ['产品明细折扣','产品类别折扣','详细信息']
  420. }
  421. }
  422. }else if (this.mainData.type == '框架' || this.mainData.type == '直销' ){
  423. if (this.siteid == 'HY'){
  424. if (this.tool.checkAuth(this.$route.name,'brokerageFeeEntrySet') && !this.tool.checkAuth(this.$route.name,'linkedOrder')){
  425. this.tabs = ['产品明细折扣','产品类别折扣','业绩目标','备用金','详细信息']
  426. }else if (this.tool.checkAuth(this.$route.name,'linkedOrder') && !this.tool.checkAuth(this.$route.name,'brokerageFeeEntrySet')){
  427. this.tabs = ['产品明细折扣','产品类别折扣','业绩目标','详细信息','关联订单']
  428. }else if (this.tool.checkAuth(this.$route.name,'linkedOrder') && this.tool.checkAuth(this.$route.name,'brokerageFeeEntrySet')){
  429. this.tabs = ['产品明细折扣','产品类别折扣','业绩目标','备用金','详细信息','关联订单']
  430. }else {
  431. this.tabs = ['产品明细折扣','产品类别折扣','业绩目标','详细信息']
  432. }
  433. }else {
  434. if (this.tool.checkAuth(this.$route.name,'linkedOrder')){
  435. this.tabs = ['产品明细折扣','产品类别折扣','业绩目标','详细信息','关联订单']
  436. }else {
  437. this.tabs = ['产品明细折扣','产品类别折扣','业绩目标','详细信息']
  438. }
  439. }
  440. }else if (this.mainData.type == '居间'){
  441. if (this.siteid == 'HY'){
  442. if (this.tool.checkAuth(this.$route.name,'contact') && !this.tool.checkAuth(this.$route.name,'linkedOrder')){
  443. this.tabs = ['详细信息','联系人']
  444. }else if (this.tool.checkAuth(this.$route.name,'linkedOrder') && !this.tool.checkAuth(this.$route.name,'contact')){
  445. this.tabs = ['详细信息','关联订单']
  446. }else if (this.tool.checkAuth(this.$route.name,'linkedOrder') && this.tool.checkAuth(this.$route.name,'contact')){
  447. this.tabs = ['详细信息','联系人','关联订单']
  448. }else {
  449. this.tabs = ['详细信息']
  450. }
  451. }else {
  452. if (this.tool.checkAuth(this.$route.name,'contact') && !this.tool.checkAuth(this.$route.name,'linkedOrder')){
  453. this.tabs = ['产品明细折扣','产品类别折扣','详细信息','联系人']
  454. }else if (this.tool.checkAuth(this.$route.name,'linkedOrder') && !this.tool.checkAuth(this.$route.name,'contact')){
  455. this.tabs = ['产品明细折扣','产品类别折扣','详细信息','关联订单']
  456. }else if (this.tool.checkAuth(this.$route.name,'linkedOrder') && this.tool.checkAuth(this.$route.name,'contact')){
  457. this.tabs = ['产品明细折扣','产品类别折扣','详细信息','联系人','关联订单']
  458. }else {
  459. this.tabs = ['产品明细折扣','产品类别折扣','详细信息']
  460. }
  461. }
  462. }else {
  463. if (this.tool.checkAuth(this.$route.name,'linkedOrder')){
  464. this.tabs = ['工具清单','详细信息','关联订单']
  465. }else {
  466. this.tabs = ['工具清单','详细信息']
  467. }
  468. }
  469. },
  470. editSuccess(){
  471. this.queryMainData(this.$route.query.id)
  472. },
  473. async queryMainData(id) {
  474. const res = await this.$api.requested({
  475. "id":20221121195102,
  476. "content": {
  477. "nocache":true,
  478. "sa_contractid": this.$route.query.id
  479. }
  480. })
  481. this.mainData = res.data
  482. console.log(this.$refs.details.param.content,'param')
  483. let listqueryid = sessionStorage.getItem('listqueryid')
  484. this.mainData.type == '项目'
  485. ? this.mainData.typemx == '直销'
  486. ? this.$router.replace({path:'/contractDetail',query:{id:this.$route.query.id,rowindex:this.$route.query.rowindex,type:'直销项目',tabIndex:this.$route.query.tabIndex,listqueryid:listqueryid,fieldname:'sa_contractid'}}) : this.$router.replace({path:'/contractDetail',query:{id:this.$route.query.id,rowindex:this.$route.query.rowindex,type:'经销项目',tabIndex:this.$route.query.tabIndex,listqueryid:listqueryid,fieldname:'sa_contractid'}})
  487. : this.$router.replace({path:'/contractDetail',query:{id:this.$route.query.id,rowindex:this.$route.query.rowindex,type:this.mainData.type,tabIndex:this.$route.query.tabIndex,listqueryid:listqueryid,fieldname:'sa_contractid'}})
  488. this.changeDataStructure()
  489. this.tabsSet()
  490. },
  491. changeDataStructure() {
  492. let that = this
  493. this.mainData.type == '项目'
  494. ? this.mainData.typemx == '直销'
  495. ? this.mainAreaData = [
  496. /* 直销信息 */
  497. {
  498. label:'合同编号',
  499. value:this.mainData.billno
  500. },
  501. {
  502. label:'合同标题',
  503. value:this.mainData.title
  504. },
  505. {
  506. label:'合同类型',
  507. value:this.mainData.type == '项目' ? this.mainData.typemx == '直销' ? this.$t('直销项目协议') : this.$t('经销项目协议') : ''
  508. },
  509. {
  510. label:'合同模板',
  511. value:this.mainData.type == '项目' ? this.mainData.typemx == '直销' ? this.$t('直销项目协议模板') : this.$t('经销项目协议模板') : ''
  512. },
  513. {
  514. label:'客户',
  515. value:this.mainData.enterprisename
  516. },
  517. {
  518. label:'项目名称',
  519. value:this.mainData.projectname
  520. },
  521. {
  522. label:'项目编号',
  523. value:this.mainData.projectnum?this.mainData.projectnum:'--'
  524. },
  525. {
  526. label:'业务员',
  527. value:this.mainData.salername
  528. },
  529. {
  530. label:'合同有效期',
  531. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  532. style:function () {
  533. let style = {color:'#3874f6'}
  534. return style
  535. }
  536. },
  537. {
  538. label:'签约日期',
  539. value:this.mainData.signdate
  540. },
  541. {
  542. label:'签约金额(元)',
  543. value:this.mainData.signamount?this.tool.formatAmount(this.mainData.signamount,2):0,
  544. style:function () {
  545. let style = {color:'#3874f6'}
  546. return style
  547. }
  548. },
  549. /*{
  550. label:'收货人',
  551. value:this.mainData.name
  552. },
  553. {
  554. label:'收货人电话',
  555. value:this.mainData.phonenumber
  556. },
  557. {
  558. label:'创建时间',
  559. value:this.mainData.createdate
  560. },
  561. {
  562. label:'创建人',
  563. value:this.mainData.createby
  564. },*/
  565. {
  566. label:'折扣(%)',
  567. value:this.mainData.discountrate !== 0?Math.round((this.mainData.discountrate * 100)*100)/100:'--'
  568. },
  569. {
  570. label:'状态',
  571. value:this.mainData.status,
  572. style:function () {
  573. let style = that.tool.getStatusColor(that.mainData.status)
  574. return style
  575. }
  576. },
  577. /* {
  578. label:'合同描述',
  579. value:this.mainData.remarks
  580. },*/
  581. ] : this.mainAreaData = [
  582. /* 经销信息 */
  583. {
  584. label:'合同编号',
  585. value:this.mainData.billno
  586. },
  587. {
  588. label:'合同标题',
  589. value:this.mainData.title
  590. },
  591. {
  592. label:'合同类型',
  593. value:this.mainData.type == '项目' ? this.mainData.typemx == '直销' ? this.$t('直销项目协议') : this.$t('经销项目协议') : ''
  594. },
  595. {
  596. label:'经销商',
  597. value:this.mainData.enterprisename
  598. },
  599. {
  600. label:'项目名称',
  601. value:this.mainData.projectname
  602. },
  603. {
  604. label:'项目编号',
  605. value:this.mainData.projectnum
  606. },
  607. {
  608. label:'合同有效期',
  609. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  610. style:function () {
  611. let style = {color:'#3874f6'}
  612. return style
  613. }
  614. },
  615. {
  616. label:'签约日期',
  617. value:this.mainData.signdate
  618. },
  619. {
  620. label:'签约金额(元)',
  621. value:this.mainData.signamount?this.tool.formatAmount(this.mainData.signamount,2):0
  622. },
  623. {
  624. label:'折扣(%)',
  625. value:this.mainData.discountrate !== 0?Math.round((this.mainData.discountrate * 100)*100)/100:'--'
  626. },
  627. {
  628. label:'业务员',
  629. value:this.mainData.salername
  630. },
  631. {
  632. label:'状态',
  633. value:this.mainData.status,
  634. style:function () {
  635. let style = that.tool.getStatusColor(that.mainData.status)
  636. return style
  637. }
  638. },
  639. /* {
  640. label:'合同模板',
  641. value:this.mainData.type == '项目' ? this.mainData.typemx == '直销' ? '直销项目协议模板' : '经销项目协议模板' : ''
  642. },
  643. {
  644. label:'创建时间',
  645. value:this.mainData.createdate
  646. },
  647. {
  648. label:'创建人',
  649. value:this.mainData.createby
  650. },
  651. {
  652. label:'合同描述',
  653. value:this.mainData.remarks
  654. },*/
  655. ] : this.mainData.type == '框架'
  656. ? this.mainAreaData = [
  657. /* 合作协议 */
  658. {
  659. label:'合同编号',
  660. value:this.mainData.billno
  661. },
  662. {
  663. label:'合同标题',
  664. value:this.mainData.title
  665. },
  666. {
  667. label:'合同类型',
  668. value:'经销商合作协议'
  669. },
  670. {
  671. label:'经销商',
  672. value:this.mainData.enterprisename
  673. },
  674. {
  675. label:'折扣(%)',
  676. value:this.mainData.discountrate !== 0?Math.round((this.mainData.discountrate * 100)*100)/100:'--'
  677. },
  678. {
  679. label:'合同有效期',
  680. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  681. style:function () {
  682. let style = {color:'#3874f6'}
  683. return style
  684. }
  685. },
  686. {
  687. label:'签约日期',
  688. value:this.mainData.signdate
  689. },
  690. // {
  691. // label:'签约金额(元)',
  692. // value:this.mainData.signamount?this.tool.formatAmount(this.mainData.signamount,2):0.00
  693. // },
  694. {
  695. label:'业务员',
  696. value:this.mainData.salername
  697. },
  698. {
  699. label:'状态',
  700. value:this.mainData.status,
  701. style:function () {
  702. let style = that.tool.getStatusColor(that.mainData.status)
  703. return style
  704. }
  705. },
  706. /* {
  707. label:'合同模板',
  708. value:'经销商合作协议模板'
  709. },
  710. {
  711. label:'创建时间',
  712. value:this.mainData.createdate
  713. },
  714. {
  715. label:'创建人',
  716. value:this.mainData.createby
  717. },
  718. {
  719. label:'合同描述',
  720. value:this.mainData.remarks
  721. },*/
  722. ] : this.mainData.type == '直销'
  723. ? this.mainAreaData = [
  724. /* 直销客户协议 */
  725. {
  726. label:'合同编号',
  727. value:this.mainData.billno
  728. },
  729. {
  730. label:'合同标题',
  731. value:this.mainData.title
  732. },
  733. {
  734. label:'合同类型',
  735. value:'直销客户合作协议'
  736. },
  737. {
  738. label:'客户',
  739. value:this.mainData.enterprisename
  740. },
  741. {
  742. label:'折扣(%)',
  743. value:this.mainData.discountrate !== 0?Math.round((this.mainData.discountrate * 100)*100)/100:'--'
  744. },
  745. {
  746. label:'合同有效期',
  747. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  748. style:function () {
  749. let style = {color:'#3874f6'}
  750. return style
  751. }
  752. },
  753. {
  754. label:'签约日期',
  755. value:this.mainData.signdate
  756. },
  757. {
  758. label:'业务员',
  759. value:this.mainData.salername
  760. },
  761. {
  762. label:'状态',
  763. value:this.mainData.status,
  764. style:function () {
  765. let style = that.tool.getStatusColor(that.mainData.status)
  766. return style
  767. }
  768. },
  769. ]:
  770. this.mainData.type == '工具借用'
  771. ? this.mainAreaData = [
  772. /* 工具借用 */
  773. {
  774. label:'合同编号',
  775. value:this.mainData.billno
  776. },
  777. {
  778. label:'合同标题',
  779. value:this.mainData.title
  780. },
  781. {
  782. label:'合同模板',
  783. value:'工具借用协议模板'
  784. },
  785. {
  786. label:'客户',
  787. value:this.mainData.enterprisename
  788. },
  789. {
  790. label:'合同类型',
  791. value:'工具借用协议'
  792. },
  793. {
  794. label:'业务员',
  795. value:this.mainData.salername
  796. },
  797. {
  798. label:'合同有效期',
  799. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  800. style:function () {
  801. let style = {color:'#3874f6'}
  802. return style
  803. }
  804. },
  805. {
  806. label:'签约日期',
  807. value:this.mainData.signdate
  808. },
  809. {
  810. label:'单套价格(元)',
  811. value:this.mainData.signamount?this.tool.formatAmount(this.mainData.signamount,2):0
  812. },
  813. {
  814. label:'创建时间',
  815. value:this.mainData.createdate
  816. },
  817. {
  818. label:'创建人',
  819. value:this.mainData.createby
  820. },
  821. {
  822. label:'状态',
  823. value:this.mainData.status,
  824. style:function () {
  825. let style = that.tool.getStatusColor(that.mainData.status)
  826. return style
  827. }
  828. },
  829. {
  830. label:'合同描述',
  831. value:this.mainData.remarks
  832. },
  833. ] : this.mainAreaData = [
  834. /* 居间协议 */
  835. {
  836. label:'合同编号',
  837. value:this.mainData.billno
  838. },
  839. {
  840. label:'合同标题',
  841. value:this.mainData.title
  842. },
  843. {
  844. label:'合同类型',
  845. value:'居间协议'
  846. },
  847. {
  848. label:'居间商',
  849. value:this.mainData.ascription_enterprisename
  850. },
  851. {
  852. label:'合同',
  853. value:this.mainData.ascription_title
  854. },
  855. {
  856. label:'项目名称',
  857. value:this.mainData.projectname
  858. },
  859. {
  860. label:'项目编号',
  861. value:this.mainData.projectnum
  862. },
  863. {
  864. label:'客户名称',
  865. value:this.mainData.enterprisename
  866. },
  867. {
  868. label:'合同有效期',
  869. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  870. style:function () {
  871. let style = {color:'#3874f6'}
  872. return style
  873. }
  874. },
  875. {
  876. label:'签约日期',
  877. value:this.mainData.signdate
  878. },
  879. {
  880. label:this.mainData.calculatemodel == 1 ? this.$t('订单金额比例(%)') : this.$t('居间产品折扣(%)'),
  881. value:this.mainData.calculatemodel == 1 ? Math.round((this.mainData.orderratio * 100)*100)/100 : Math.round((this.mainData.productdiscount *100)*100)/100,
  882. style:function () {
  883. let style = {color:'#3874f6'}
  884. return style
  885. }
  886. },
  887. /* {
  888. label:'合同模板',
  889. value:'居间协议模板'
  890. },*/
  891. {
  892. label:'状态',
  893. value:this.mainData.status,
  894. style:function () {
  895. let style = that.tool.getStatusColor(that.mainData.status)
  896. return style
  897. }
  898. },
  899. /* {
  900. label:'业务员',
  901. value:this.mainData.salername
  902. },
  903. {
  904. label:'创建时间',
  905. value:this.mainData.createdate
  906. },
  907. {
  908. label:'创建人',
  909. value:this.mainData.createby
  910. },
  911. {
  912. label:'合同描述',
  913. value:this.mainData.remarks
  914. },*/
  915. ]
  916. this.mainData.type == '项目'
  917. ? this.mainData.typemx == '直销'
  918. ? this.detailInfo = {
  919. baseInfo : [
  920. /* 直销信息 */
  921. {
  922. label:'合同编号',
  923. value:this.mainData.billno
  924. },
  925. {
  926. label:'合同标题',
  927. value:this.mainData.title
  928. },
  929. {
  930. label:'合同模板',
  931. value:this.mainData.type == '项目' ? this.mainData.typemx == '直销' ? this.$t('直销项目协议模板') : this.$t('经销项目协议模板') : ''
  932. },
  933. {
  934. label:'合同类型',
  935. value:this.mainData.type == '项目' ? this.mainData.typemx == '直销' ? this.$t('直销项目协议') : this.$t('经销项目协议') : ''
  936. },
  937. {
  938. label:'客户',
  939. value:this.mainData.enterprisename
  940. },
  941. {
  942. label:'项目名称',
  943. value:this.mainData.projectname
  944. },
  945. {
  946. label:'项目编号',
  947. value:this.mainData.projectnum
  948. },
  949. {
  950. label:'项目地址',
  951. value:this.mainData.projectname ? this.mainData.province + this.mainData.city + this.mainData.county + this.mainData.address:'--'
  952. },
  953. {
  954. label:'收货人',
  955. value:this.mainData.name
  956. },
  957. {
  958. label:'收货人电话',
  959. value:this.mainData.phonenumber
  960. },
  961. {
  962. label:'合同有效期',
  963. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  964. style:function () {
  965. let style = {color:'#3874f6'}
  966. return style
  967. }
  968. },
  969. {
  970. label:'签约日期',
  971. value:this.mainData.signdate
  972. },
  973. {
  974. label:'签约金额(元)',
  975. value:this.mainData.signamount?this.tool.formatAmount(this.mainData.signamount,2):0
  976. },
  977. {
  978. label:'折扣(%)',
  979. value:this.mainData.discountrate !== 0?Math.round((this.mainData.discountrate * 100)*100)/100:'--'
  980. },
  981. {
  982. label:'领域',
  983. value:this.mainData.tradefield ? this.mainData.tradefield : '--'
  984. },
  985. {
  986. label:'品牌',
  987. value:this.mainData.brandname
  988. },
  989. {
  990. label:'付款条件',
  991. value:this.mainData.paytype
  992. },
  993. {
  994. label:'发货日期提醒(天)',
  995. value:this.mainData.reminddays
  996. },
  997. {
  998. label:'业务员',
  999. value:this.mainData.salername
  1000. },
  1001. {
  1002. label:'状态',
  1003. value:this.mainData.status,
  1004. style:function () {
  1005. let style = that.tool.getStatusColor(that.mainData.status)
  1006. return style
  1007. }
  1008. },
  1009. {
  1010. label:'合同描述',
  1011. value:this.mainData.remarks
  1012. },
  1013. ],
  1014. systemInfo: [
  1015. {label:'创建人',value:this.mainData.createby},
  1016. {label:'创建时间',value:this.mainData.createdate},
  1017. {label:'最近编辑人',value:this.mainData.changeby},
  1018. {label:'最近编辑时间',value:this.mainData.changedate},
  1019. {label:'提交人',value:this.mainData.submitby},
  1020. {label:'提交时间',value:this.mainData.submitdate},
  1021. {label:'审核人',value:this.mainData.checkby},
  1022. {label:'审核时间',value:this.mainData.checkdate},
  1023. /* {label:'作废原因',value:this.mainData.leader[0].leadernum == 0?'0':this.mainData.leader[0].leadernum},*/
  1024. {label:'转手次数',value:this.mainData.leader?this.mainData.leader[0].leadernum:"--"}
  1025. ]
  1026. }
  1027. : this.detailInfo = {
  1028. baseInfo : [
  1029. /* 经销信息 */
  1030. {
  1031. label:'合同编号',
  1032. value:this.mainData.billno
  1033. },
  1034. {
  1035. label:'合同标题',
  1036. value:this.mainData.title
  1037. },
  1038. {
  1039. label:'合同模板',
  1040. value:this.mainData.type == '项目' ? this.mainData.typemx == '直销' ? this.$t('直销项目协议模板') : this.$t('经销项目协议模板') : ''
  1041. },
  1042. {
  1043. label:'合同类型',
  1044. value:this.mainData.type == '项目' ? this.mainData.typemx == '直销' ? this.$t('直销项目协议') : this.$t('经销项目协议') : ''
  1045. },
  1046. {
  1047. label:'项目名称',
  1048. value:this.mainData.projectname
  1049. },
  1050. {
  1051. label:'项目编号',
  1052. value:this.mainData.projectnum
  1053. },
  1054. {
  1055. label:'合同有效期',
  1056. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  1057. style:function () {
  1058. let style = {color:'#3874f6'}
  1059. return style
  1060. }
  1061. },
  1062. {
  1063. label:'签约日期',
  1064. value:this.mainData.signdate
  1065. },
  1066. {
  1067. label:'签约金额(元)',
  1068. value:this.mainData.signamount?this.tool.formatAmount(this.mainData.signamount,2):0
  1069. },
  1070. {
  1071. label:'折扣(%)',
  1072. value:this.mainData.discountrate !== 0?Math.round((this.mainData.discountrate * 100)*100)/100:'--'
  1073. },
  1074. {
  1075. label:'领域',
  1076. value:this.mainData.tradefield ? this.mainData.tradefield : '--'
  1077. },
  1078. {
  1079. label:'品牌',
  1080. value:this.mainData.brandname
  1081. },
  1082. {
  1083. label:'付款条件',
  1084. value:this.mainData.paytype
  1085. },
  1086. {
  1087. label:'发货日期提醒(天)',
  1088. value:this.mainData.reminddays
  1089. },
  1090. {
  1091. label:'业务员',
  1092. value:this.mainData.salername
  1093. },
  1094. /* {
  1095. label:'经销商',
  1096. value:this.mainData.enterprisename
  1097. },*/
  1098. {
  1099. label:'状态',
  1100. value:this.mainData.status,
  1101. style:function () {
  1102. let style = that.tool.getStatusColor(that.mainData.status)
  1103. return style
  1104. }
  1105. },
  1106. {
  1107. label:'合同描述',
  1108. value:this.mainData.remarks
  1109. },
  1110. ],
  1111. systemInfo: [
  1112. {label:'创建人',value:this.mainData.createby},
  1113. {label:'创建时间',value:this.mainData.createdate},
  1114. {label:'最近编辑人',value:this.mainData.changeby},
  1115. {label:'最近编辑时间',value:this.mainData.changedate},
  1116. {label:'提交人',value:this.mainData.submitby},
  1117. {label:'提交时间',value:this.mainData.submitdate},
  1118. {label:'审核人',value:this.mainData.checkby},
  1119. {label:'审核时间',value:this.mainData.checkdate},
  1120. {label:'转手次数',value:this.mainData.leader?this.mainData.leader[0].leadernum:"--"}
  1121. ]
  1122. }
  1123. : this.mainData.type == '框架'
  1124. ? this.detailInfo ={
  1125. baseInfo : [
  1126. /* 合作协议 */
  1127. {
  1128. label:'合同编号',
  1129. value:this.mainData.billno
  1130. },
  1131. {
  1132. label:'合同标题',
  1133. value:this.mainData.title
  1134. },
  1135. {
  1136. label:'合同模板',
  1137. value:'经销商合作协议模板'
  1138. },
  1139. {
  1140. label:'合同类型',
  1141. value:'经销商合作协议'
  1142. },
  1143. {
  1144. label:'经销商',
  1145. value:this.mainData.enterprisename
  1146. },
  1147. {
  1148. label:'折扣(%)',
  1149. value:this.mainData.discountrate !== 0?Math.round((this.mainData.discountrate * 100)*100)/100:'--'
  1150. },
  1151. {
  1152. label:'合同有效期',
  1153. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  1154. style:function () {
  1155. let style = {color:'#3874f6'}
  1156. return style
  1157. }
  1158. },
  1159. {
  1160. label:'签约日期',
  1161. value:this.mainData.signdate
  1162. },
  1163. {
  1164. label:'签约金额(元)',
  1165. value:this.mainData.signamount?this.tool.formatAmount(this.mainData.signamount,2):0
  1166. },
  1167. {
  1168. label:'折扣(%)',
  1169. value:this.mainData.discountrate !== 0?Math.round((this.mainData.discountrate * 100)*100)/100:'--'
  1170. },
  1171. {
  1172. label:'领域',
  1173. value:this.mainData.tradefield ? this.mainData.tradefield : '--'
  1174. },
  1175. {
  1176. label:'品牌',
  1177. value:this.mainData.brandname
  1178. },
  1179. {
  1180. label:'付款条件',
  1181. value:this.mainData.paytype
  1182. },
  1183. {
  1184. label:'发货日期提醒(天)',
  1185. value:this.mainData.reminddays
  1186. },
  1187. {
  1188. label:'业务员',
  1189. value:this.mainData.salername
  1190. },
  1191. {
  1192. label:'状态',
  1193. value:this.mainData.status,
  1194. style:function () {
  1195. let style = that.tool.getStatusColor(that.mainData.status)
  1196. return style
  1197. }
  1198. },
  1199. {
  1200. label:'合同描述',
  1201. value:this.mainData.remarks
  1202. },
  1203. ],
  1204. systemInfo: [
  1205. {label:'创建人',value:this.mainData.createby},
  1206. {label:'创建时间',value:this.mainData.createdate},
  1207. {label:'最近编辑人',value:this.mainData.changeby},
  1208. {label:'最近编辑时间',value:this.mainData.changedate},
  1209. {label:'提交人',value:this.mainData.submitby},
  1210. {label:'提交时间',value:this.mainData.submitdate},
  1211. {label:'审核人',value:this.mainData.checkby},
  1212. {label:'审核时间',value:this.mainData.checkdate},
  1213. {label:'转手次数',value:this.mainData.leader?this.mainData.leader[0].leadernum:"--"}
  1214. ]
  1215. }
  1216. : this.mainData.type == '直销'
  1217. ? this.detailInfo ={
  1218. baseInfo : [
  1219. /* 直销客户协议 */
  1220. {
  1221. label:'合同编号',
  1222. value:this.mainData.billno
  1223. },
  1224. {
  1225. label:'合同标题',
  1226. value:this.mainData.title
  1227. },
  1228. {
  1229. label:'合同模板',
  1230. value:'直销客户合作协议模板'
  1231. },
  1232. {
  1233. label:'合同类型',
  1234. value:'直销客户合作协议'
  1235. },
  1236. {
  1237. label:'客户',
  1238. value:this.mainData.enterprisename
  1239. },
  1240. {
  1241. label:'合同有效期',
  1242. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  1243. style:function () {
  1244. let style = {color:'#3874f6'}
  1245. return style
  1246. }
  1247. },
  1248. {
  1249. label:'签约日期',
  1250. value:this.mainData.signdate
  1251. },
  1252. {
  1253. label:'签约金额(元)',
  1254. value:this.mainData.signamount?this.tool.formatAmount(this.mainData.signamount,2):0
  1255. },
  1256. {
  1257. label:'折扣(%)',
  1258. value:this.mainData.discountrate !== 0?Math.round((this.mainData.discountrate * 100)*100)/100:'--'
  1259. },
  1260. {
  1261. label:'领域',
  1262. value:this.mainData.tradefield ? this.mainData.tradefield : '--'
  1263. },
  1264. {
  1265. label:'品牌',
  1266. value:this.mainData.brandname
  1267. },
  1268. {
  1269. label:'付款条件',
  1270. value:this.mainData.paytype
  1271. },
  1272. {
  1273. label:'发货日期提醒(天)',
  1274. value:this.mainData.reminddays
  1275. },
  1276. {
  1277. label:'业务员',
  1278. value:this.mainData.salername
  1279. },
  1280. {
  1281. label:'状态',
  1282. value:this.mainData.status,
  1283. style:function () {
  1284. let style = that.tool.getStatusColor(that.mainData.status)
  1285. return style
  1286. }
  1287. },
  1288. {
  1289. label:'合同描述',
  1290. value:this.mainData.remarks
  1291. },
  1292. ],
  1293. systemInfo: [
  1294. {label:'创建人',value:this.mainData.createby},
  1295. {label:'创建时间',value:this.mainData.createdate},
  1296. {label:'最近编辑人',value:this.mainData.changeby},
  1297. {label:'最近编辑时间',value:this.mainData.changedate},
  1298. {label:'提交人',value:this.mainData.submitby},
  1299. {label:'提交时间',value:this.mainData.submitdate},
  1300. {label:'审核人',value:this.mainData.checkby},
  1301. {label:'审核时间',value:this.mainData.checkdate},
  1302. {label:'转手次数',value:this.mainData.leader?this.mainData.leader[0].leadernum:"--"}
  1303. ]
  1304. }:this.mainData.type == '工具借用'
  1305. ? this.detailInfo = {
  1306. baseInfo : [
  1307. /* 工具借用 */
  1308. {
  1309. label:'合同编号',
  1310. value:this.mainData.billno
  1311. },
  1312. {
  1313. label:'合同标题',
  1314. value:this.mainData.title
  1315. },
  1316. {
  1317. label:'合同模板',
  1318. value:'工具借用协议模板'
  1319. },
  1320. {
  1321. label:'客户',
  1322. value:this.mainData.enterprisename
  1323. },
  1324. {
  1325. label:'合同类型',
  1326. value:'工具借用协议'
  1327. },
  1328. {
  1329. label:'业务员',
  1330. value:this.mainData.salername
  1331. },
  1332. {
  1333. label:'合同有效期',
  1334. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  1335. style:function () {
  1336. let style = {color:'#3874f6'}
  1337. return style
  1338. }
  1339. },
  1340. {
  1341. label:'签约日期',
  1342. value:this.mainData.signdate
  1343. },
  1344. {
  1345. label:'单套价格(元)',
  1346. value:this.mainData.signamount?this.tool.formatAmount(this.mainData.signamount,2):0
  1347. },
  1348. {
  1349. label:'状态',
  1350. value:this.mainData.status,
  1351. style:function () {
  1352. let style = that.tool.getStatusColor(that.mainData.status)
  1353. return style
  1354. }
  1355. },
  1356. {
  1357. label:'合同描述',
  1358. value:this.mainData.remarks
  1359. },
  1360. ],
  1361. systemInfo: [
  1362. {label:'创建人',value:this.mainData.createby},
  1363. {label:'创建时间',value:this.mainData.createdate},
  1364. {label:'最近编辑人',value:this.mainData.changeby},
  1365. {label:'最近编辑时间',value:this.mainData.changedate},
  1366. {label:'提交人',value:this.mainData.submitby},
  1367. {label:'提交时间',value:this.mainData.submitdate},
  1368. {label:'审核人',value:this.mainData.checkby},
  1369. {label:'审核时间',value:this.mainData.checkdate},
  1370. {label:'转手次数',value:this.mainData.leader?this.mainData.leader[0].leadernum:"--"}
  1371. ]
  1372. }
  1373. : this.detailInfo = {
  1374. baseInfo : [
  1375. /* 居间协议 */
  1376. {
  1377. label:'合同编号',
  1378. value:this.mainData.billno
  1379. },
  1380. {
  1381. label:'合同标题',
  1382. value:this.mainData.title
  1383. },
  1384. {
  1385. label:'合同模板',
  1386. value:'居间协议模板'
  1387. },
  1388. {
  1389. label:'合同类型',
  1390. value:'居间协议'
  1391. },
  1392. {
  1393. label:'居间商',
  1394. value:this.mainData.ascription_enterprisename
  1395. },
  1396. {
  1397. label:'合同',
  1398. value:this.mainData.ascription_title
  1399. },
  1400. {
  1401. label:'项目名称',
  1402. value:this.mainData.projectname
  1403. },
  1404. {
  1405. label:'项目编号',
  1406. value:this.mainData.projectnum
  1407. },
  1408. {
  1409. label:'客户名称',
  1410. value:this.mainData.enterprisename
  1411. },
  1412. {
  1413. label:'合同有效期',
  1414. value:`${this.mainData.begdate}至${this.mainData.enddate}`,
  1415. style:function () {
  1416. let style = {color:'#3874f6'}
  1417. return style
  1418. }
  1419. },
  1420. {
  1421. label:'签约日期',
  1422. value:this.mainData.signdate
  1423. },
  1424. {
  1425. label:this.mainData.calculatemodel == 1 ? this.$t('订单金额比例(%)') : this.$t('居间产品折扣(%)'),
  1426. value:this.mainData.calculatemodel == 1 ? Math.round((this.mainData.orderratio * 100)*100)/100 : Math.round((this.mainData.productdiscount *100)*100)/100,
  1427. style:function () {
  1428. let style = {color:'#3874f6'}
  1429. return style
  1430. }
  1431. },
  1432. {
  1433. label:'业务员',
  1434. value:this.mainData.salername
  1435. },
  1436. {
  1437. label:'状态',
  1438. value:this.mainData.status,
  1439. style:function () {
  1440. let style = that.tool.getStatusColor(that.mainData.status)
  1441. return style
  1442. }
  1443. },
  1444. {
  1445. label:'合同描述',
  1446. value:this.mainData.remarks
  1447. },
  1448. ],
  1449. systemInfo: [
  1450. {label:'创建人',value:this.mainData.createby},
  1451. {label:'创建时间',value:this.mainData.createdate},
  1452. {label:'最近编辑人',value:this.mainData.changeby},
  1453. {label:'最近编辑时间',value:this.mainData.changedate},
  1454. {label:'提交人',value:this.mainData.submitby},
  1455. {label:'提交时间',value:this.mainData.submitdate},
  1456. {label:'审核人',value:this.mainData.checkby},
  1457. {label:'审核时间',value:this.mainData.checkdate},
  1458. {label:'转手次数',value:this.mainData.leader?this.mainData.leader[0].leadernum:"--"}
  1459. ]
  1460. }
  1461. },
  1462. changeBill (data) {
  1463. this.$confirm(this.$t('确定把当前合同转为订单吗')+'?',this.$t('提示'),{
  1464. confirmButtonText:this.$t('确定'),
  1465. cancelButtonText:this.$t('取消'),
  1466. type:'warning'
  1467. }).then(() => {
  1468. Loading.service({ fullscreen: true ,text:this.$t('刷新中...')});
  1469. this.$axios({
  1470. method:'POST',
  1471. url:'/yos/rest/index',
  1472. data: {
  1473. "accesstoken":JSON.parse(sessionStorage.getItem('active_account')).token,
  1474. "id":20230322153702,
  1475. "content": {
  1476. "sa_contractid": this.$route.query.id
  1477. }
  1478. }
  1479. }).then((res) => {
  1480. Loading.service().close()
  1481. this.tool.showMessage(res.data,() => {
  1482. this.oldRoute = {path:this.$route.path,query:this.$route.query}
  1483. this.$store.dispatch('setHistoryRouter',this.oldRoute)
  1484. if (this.tool.checkAuth(this.$route.name,'changeBillMag')) {
  1485. this.$router.push({
  1486. path:'/orderdetail',
  1487. query:{
  1488. id:res.data.data.sa_orderid,
  1489. }
  1490. })
  1491. } else if (this.tool.checkAuth(this.$route.name,'changeBillSaler')) {
  1492. this.$router.push({
  1493. path:'/saler_orderDetails',
  1494. query:{
  1495. id:res.data.data.sa_orderid,
  1496. }
  1497. })
  1498. } else if (this.tool.checkAuth(this.$route.name,'changeBillOrder')) {
  1499. this.$router.push({
  1500. path:'/agent_orderDetails',
  1501. query:{
  1502. id:res.data.data.sa_orderid,
  1503. }
  1504. })
  1505. }
  1506. })
  1507. })
  1508. })
  1509. },
  1510. async bindImportOrder (id) {
  1511. const res = await this.$api.requested({
  1512. "id": 20230314133404,
  1513. "content": {
  1514. "sa_contractid":this.$route.query.id,
  1515. "attachmentid":id
  1516. }
  1517. })
  1518. if (res.data !== '成功') {
  1519. this.errorUrl = res.data
  1520. }
  1521. this.tool.showMessage(res,() => {
  1522. this.$refs.productDetailList.listData()
  1523. })
  1524. },
  1525. // 监听切换数据,上一页,下一页
  1526. pageChange (id,rowindex,tabIndex) {
  1527. /*this.flag = false
  1528. tabIndex = this.$route.query.tabIndex
  1529. this.$router.replace({path:'/contractDetail',query:{id:id,rowindex:rowindex,tabIndex:tabIndex}})*/
  1530. this.queryMainData(id)
  1531. },
  1532. onSuccess(){
  1533. this.visible = false
  1534. this.queryMainData(this.$route.query.id)
  1535. this.$emit('onSuccess')
  1536. },
  1537. successYear(year){
  1538. this.$refs.taskTarget.year = year
  1539. this.$refs.taskTarget.queryData()
  1540. },
  1541. closeDrawer(){
  1542. this.$refs.classList.listData()
  1543. },
  1544. productAdd(){
  1545. this.queryMainData()
  1546. },
  1547. /*同步合作协议*/
  1548. async onCooperate(){
  1549. if (this.$route.query.type === '居间'){
  1550. const res = await this.$api.requested({
  1551. "id":20240518155604,
  1552. "content": {
  1553. "sa_contractid": this.$route.query.id
  1554. },
  1555. })
  1556. this.tool.showMessage(res,()=>{
  1557. this.cooperateVisible = false
  1558. this.$refs.productDetailList.params.content.pageNumber = 1
  1559. this.$refs.productDetailList.listData()
  1560. this.queryMainData()
  1561. })
  1562. }else {
  1563. const res = await this.$api.requested({
  1564. "id": 20231204153904,
  1565. "content": {
  1566. "sa_contractid": this.$route.query.id,
  1567. "isadd":this.cooperateForm.isadd
  1568. }
  1569. })
  1570. this.tool.showMessage(res,()=>{
  1571. this.cooperateVisible = false
  1572. this.$refs.billno.params.content.pageNumber = 1
  1573. this.$refs.billno.listData()
  1574. this.queryMainData()
  1575. })
  1576. }
  1577. },
  1578. async onCooperateItem(){
  1579. if (this.$route.query.type === '居间'){
  1580. const res = await this.$api.requested({
  1581. "id": 20240518160504,
  1582. "content": {
  1583. "sa_contractid": this.$route.query.id,
  1584. }
  1585. })
  1586. this.tool.showMessage(res,()=>{
  1587. this.cooperateVisible = false
  1588. this.$refs.classList.params.content.pageNumber = 1
  1589. this.$refs.classList.listData()
  1590. this.queryMainData()
  1591. })
  1592. }else {
  1593. const res = await this.$api.requested({
  1594. "id": 20231208154904,
  1595. "content": {
  1596. "sa_contractid": this.$route.query.id,
  1597. "isadd":this.cooperateForm.isadd
  1598. }
  1599. })
  1600. this.tool.showMessage(res,()=>{
  1601. this.cooperateVisible = false
  1602. this.$refs.itemClass.param.content.pageNumber = 1
  1603. this.$refs.itemClass.listData()
  1604. this.queryMainData()
  1605. })
  1606. }
  1607. }
  1608. // async getModelList () {
  1609. // let res = await this.$api.requested({
  1610. // "id": 20221121155801,
  1611. // "content": {
  1612. // "pageNumber": 1,
  1613. // "pageSize": 999999,
  1614. // "where":{
  1615. // "condition":""
  1616. // }
  1617. // }
  1618. // })
  1619. // this.modelList = res.data
  1620. // console.log(this.modelList);
  1621. // },
  1622. },
  1623. mounted () {
  1624. this.queryMainData(this.$route.query.id)
  1625. // this.getModelList()
  1626. },
  1627. created() {
  1628. /*this.queryMainData(this.$route.query.id)*/
  1629. }
  1630. }
  1631. </script>
  1632. <style scoped>
  1633. </style>