applyTurn.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717
  1. <template>
  2. <div class="applyTurn_container">
  3. <div class="card_cont">
  4. <div class="info">
  5. <h3 class="tit">客户信息</h3>
  6. <ul class="info_list">
  7. <li>
  8. 客户名称:{{companyInfo.CompanyName}}
  9. </li>
  10. <li>
  11. 社会信用码:{{companyInfo.CreditCode}}
  12. </li>
  13. <li>
  14. 地址:{{companyInfo.Address}}
  15. </li>
  16. <li>
  17. 客户类型:{{companyInfo.CompanyType}}
  18. </li>
  19. <li>
  20. 客户状态:{{companyInfo.Status}}
  21. </li>
  22. <li>
  23. 客户来源:{{companyInfo.Source}}
  24. </li>
  25. <li>
  26. 行业:{{companyInfo.IndustryName}}
  27. </li>
  28. <li>
  29. 所属销售:{{companyInfo.SellerName}}
  30. </li>
  31. <li>
  32. 备注:{{companyInfo.Reasons}}
  33. </li>
  34. </ul>
  35. </div>
  36. </div>
  37. <!-- 合同列表 -->
  38. <div class="card_cont">
  39. <div class="apply_info">
  40. <h3 style="fontSize:16px;">申请信息</h3>
  41. <div class="info_cont">
  42. <span v-if="!isRaiSellerShow" style="display:block;marginBottom:30px;color:#333;paddingLeft:10px;">申请内容:试用转正式</span>
  43. <el-form
  44. @submit.native.prevent
  45. inline
  46. :model="formData"
  47. :rules="formRule"
  48. hide-required-asterisk
  49. ref="formData"
  50. label-width="100px"
  51. class="demo-ruleForm">
  52. <el-form-item label="合同类型" prop="contract_type" style="width:100%" v-if="formData.contract_type && !isRaiCompany">
  53. <el-radio style="margin-right:5px" v-model="formData.contract_type" :label="formData.contract_type"/>
  54. <el-tooltip
  55. style="cursor: pointer;"
  56. effect="dark"
  57. placement="top-start"
  58. v-if="formData.contract_type=='续约合同'||formData.contract_type=='新签合同'">
  59. <div slot="content" v-if="formData.contract_type=='续约合同'">
  60. 1、有正式转试用记录的客户,在申请转正时提交的合同<br>
  61. 2、所有客户在续约申请时提交的合同
  62. </div>
  63. <div slot="content" v-if="formData.contract_type=='新签合同'">
  64. 没有正式转试用记录的客户,在申请转正时提交的合同
  65. </div>
  66. <i class="el-icon-info"></i>
  67. </el-tooltip>
  68. </el-form-item>
  69. <el-form-item label-width="140px" label="请输入合同编号" style="width:100%" prop="CreditCode" v-if="isRaiSellerShow"
  70. :rules="{required: true, message: '请输入合同编号', trigger: 'blur'}">
  71. <i style="color:#f00;fontSize:20px;position:absolute;left:-128px;top:10%;">*</i>
  72. <el-autocomplete
  73. style="width:360px;"
  74. v-model="formData.CreditCode"
  75. :fetch-suggestions="querySearchCreditCode"
  76. placeholder="请复制申请用印时生成的合同编号"
  77. @select="handleSelectCreditCode"
  78. ></el-autocomplete>
  79. </el-form-item>
  80. <el-form-item label="合同期限" prop="term" style="marginRight:60px;" :rules="{ required: true, message: '合同期限不能为空', trigger: 'blur' }">
  81. <i style="color:#f00;fontSize:20px;position:absolute;left:-90px;top:10%;">*</i>
  82. <el-date-picker
  83. v-model="formData.term"
  84. type="daterange"
  85. range-separator="至"
  86. start-placeholder="开始日期"
  87. end-placeholder="结束日期"
  88. @change="dateChange"
  89. :disabled="isRaiSellerShow"
  90. value-format="yyyy-MM-dd"
  91. style="width:400px;">
  92. </el-date-picker>
  93. </el-form-item>
  94. <!-- <el-form-item label="合同期限" prop="term" :rules="{ required: true, message: '合同期限不能为空', trigger: 'change' }" style="marginRight:60px;" v-if="isXClassCustom">
  95. <i style="color:#f00;fontSize:20px;position:absolute;left:-90px;top:10%;">*</i>
  96. <div class="quarters-content">
  97. <el-checkbox-group v-model="selectedQuarters" @input="checkboxInputHandler">
  98. <el-checkbox v-for="quarter in quarters" :key="quarter.value" :label="quarter.label" :disabled="isDisabled(quarter)" >
  99. {{ quarter.label }}
  100. </el-checkbox>
  101. </el-checkbox-group>
  102. <div v-if="selectedQuarters.length > 0" class="quarters-text">
  103. {{ selectedDateRange }}
  104. </div>
  105. </div>
  106. </el-form-item> -->
  107. <el-form-item label="合同金额" prop="amount" style="marginRight:60px;">
  108. <i style="color:#f00;fontSize:20px;position:absolute;left:-90px;top:10%;">*</i>
  109. <el-input
  110. v-model.number="formData.amount"
  111. :placeholder="isRaiCompany ? '请输入实际付款金额(优惠后)':'请输入金额'"
  112. style="width:400px"
  113. :disabled="isRaiCompany"
  114. clearable></el-input>
  115. <span style="color:#666;">元</span>
  116. </el-form-item>
  117. <el-form-item label="付款方式" prop="payway" style="marginRight:60px;">
  118. <i style="color:#f00;fontSize:20px;position:absolute;left:-90px;top:10%;">*</i>
  119. <el-select v-model="formData.payway" placeholder="请选择付款方式" style="width:400px;" clearable>
  120. <el-option
  121. v-for="item in ['月付','季付','半年付','年付','两年付','三年付']"
  122. :key="item"
  123. :label="item"
  124. :value="item">
  125. </el-option>
  126. </el-select>
  127. </el-form-item>
  128. <el-form-item label="付款渠道" prop="payfrom">
  129. <i style="color:#f00;fontSize:20px;position:absolute;left:-90px;top:10%;">*</i>
  130. <el-input
  131. v-model="formData.payfrom"
  132. placeholder="填写代支付的渠道名称,没有可以填无"
  133. style="width:400px"
  134. clearable></el-input>
  135. </el-form-item>
  136. <el-form-item label="套餐类型" prop="setmeal" style="display:block;" :rules="{ required: true, message: '请选择套餐',trigger: 'change' }" v-if="companyInfo.CompanyType=='ficc' || isRoleType== 'ficc'">
  137. <i style="color:#f00;fontSize:20px;position:absolute;left:-90px;top:10%;">*</i>
  138. <el-radio-group v-model="formData.setmeal" @change="setmealChange">
  139. <el-radio :label="1">大套餐</el-radio>
  140. <el-radio :label="2">小套餐</el-radio>
  141. </el-radio-group>
  142. </el-form-item>
  143. <el-form-item class="textarea_item" style="width:97%;paddingLeft:26px;" prop="CheckList">
  144. <label style="display:block;marginBottom:10px;fontSize:16px;position:relative;color:#666;">
  145. <i style="color:#f00;fontSize:20px;position:absolute;left:-15px;top:10%;">*</i>
  146. 权限设置
  147. </label>
  148. <template v-if="(companyInfo.CompanyType=='权益' || isRoleType== '权益') && !isXClassCustom" >
  149. <raiPermissionbox ref="raiPermissionboxRef" v-for="item in authList" :key="item.ClassifyName" :allData="item.Items" :formData.sync="formData" :raiCheckList.sync="raiCheckList"></raiPermissionbox>
  150. </template>
  151. <ul class="menu_lists" style="width:100%" v-else>
  152. <li v-for="item in authList" :key="item.ClassifyName" class="menu_item">
  153. <el-checkbox :indeterminate="item.isIndeterminate" v-model="item.checkAll" :disabled="setSelectVarietyDisabled(item)" @change="handleCheckAll(item)" style="marginRight:30px;fontWeight:bold;minWidth:90px;">{{item.ClassifyName+':'}}</el-checkbox>
  154. <el-checkbox-group v-model="item.CheckList" @change="handleChecked(item)">
  155. <el-checkbox v-for="list in item.Items" :label="list.ChartPermissionId" :key="list.ChartPermissionId" class="list_item" :disabled="list.IsPublic==1 || list.disabled">{{list.PermissionName}}</el-checkbox>
  156. </el-checkbox-group>
  157. </li>
  158. </ul>
  159. </el-form-item>
  160. <el-form-item prop="imglist" style="width:97%;paddingLeft:26px;" class="textarea_item">
  161. <label style="display:block;marginBottom:10px;fontSize:16px;position:relative;color:#666;">
  162. <i style="color:#f00;fontSize:20px;position:absolute;left:-15px;top:10%;">*</i>
  163. 上传合同附件<span style="fontSize:12px;color:#f00;">(建议上传盖章后的合同,支持png、jpg、pdf格式)</span>
  164. <input type="file" name="file" @change="fileSelected()" id="file" class="true-file" style="display:none;">
  165. <el-button type="primary" size="medium" @click.native="clickinput('')" style="marginLeft:20px;" :loading="uploadloading">点击上传</el-button>
  166. </label>
  167. <ul class="img_cont">
  168. <li v-for="(img,index) in formData.imglist" :key="img" class="img_item">
  169. <!-- <el-image :src="img" alt="" style="background:#aaa;width:240px;height:180px;" :preview-src-list="formData.imglist" :id="'img'+index"/> -->
  170. <pdf ref="pdf" :src="img" style="width:240px;height:180px;overflow:hidden" v-if="img.indexOf('.pdf')!=-1" @click.native="preview('img'+index,index,img)"></pdf>
  171. <el-image :src="img" alt="" style="background:#aaa;width:240px;height:180px;" :id="'img'+index" v-else @click.native="preview('img'+index,index,img)"/>
  172. <i class="el-icon-zoom-in" style="position:absolute;right:12px;top:12px;color:#fff;" @click="preview('img'+index,index,img)"></i>
  173. <span style="position:absolute;right:12px;bottom:12px;color:#409EFF;fontSize:16px;cursor:pointer;" @click.stop="clickinput(index+1)">重新上传</span>
  174. </li>
  175. </ul>
  176. </el-form-item>
  177. </el-form>
  178. </div>
  179. </div>
  180. <div class="bot_cont">
  181. <!-- <span style="color:#409EFF;fontSize:16px;cursor:pointer;" @click="addHandle">+添加合同信息</span> -->
  182. <div style="display:flex;justify-content:center;margin:80px 0 30px;">
  183. <el-button type="primary" style="width:80px;marginRight:24px;" @click="saveHandle">提交</el-button>
  184. <el-button type="primary" plain style="width:80px;" @click="cancelHandle">取消</el-button>
  185. </div>
  186. </div>
  187. <!-- 图片预览 -->
  188. <imgPreview
  189. :isShowToggle="isShowToggle"
  190. :isPreview="isPreviewimg"
  191. :arr="formData.imglist"
  192. :actIndex="preAct"
  193. @close="closePreview"
  194. @togglePre="togglePre"></imgPreview>
  195. </div>
  196. </div>
  197. </template>
  198. <script>
  199. import { customInterence } from '@/api/api.js'
  200. import imgPreview from '@/components/imgPreview.vue'
  201. import pdf from 'vue-pdf'
  202. import {CalculationDate} from '@/utils/CalculationDate'
  203. import JurisdictionCheck from '../compontents/jurisdictionCheck.vue';
  204. import raiPermissionbox from './components/raiPermissionbox'
  205. import quartersMixin from './mixins/quartersMixin'
  206. export default {
  207. name:'',
  208. mixins:[quartersMixin],
  209. components: {imgPreview,pdf ,JurisdictionCheck,raiPermissionbox},
  210. computed:{
  211. isXClassCustom(){
  212. return this.companyInfo.Status.includes('永续') || this.companyInfo.Status.includes('X类试用')
  213. },
  214. isRaiCompany(){
  215. return this.companyInfo.CompanyType == '权益' || this.isRoleType== '权益'
  216. },
  217. isRaiSellerShow() {
  218. return localStorage.getItem('Role') === 'rai_seller';
  219. },
  220. },
  221. data () {
  222. return {
  223. companyInfo:JSON.parse(sessionStorage.getItem('companyInfo')) || {},//客户基本信息
  224. isRoleType:localStorage.getItem('RoleType'),
  225. formData:{
  226. contract_type:'',
  227. term:'',
  228. amount:'',
  229. payway:'',
  230. payfrom:'',
  231. imglist:[],//合同列表图片
  232. setmeal:'',
  233. qyBigServeCheck:0,
  234. CreditCode:''
  235. },
  236. hasNoChild:false, // 医药、消费、科技、智造是否没有主客观
  237. authList:[],//权限列表
  238. formRule:{
  239. amount:[
  240. { required: true, message: '合同金额不能为空', trigger: 'blur' },
  241. { type: 'number', message: '合同金额必须为数字'}
  242. ],
  243. payway:[
  244. { required: true, message: '付款方式不能为空', trigger: 'blur' },
  245. ],
  246. payfrom:[
  247. { required: true, message: '付款渠道不能为空', trigger: 'blur' },
  248. ],
  249. imglist:[
  250. { required: true, message: '合同附件不能为空', trigger: 'blur' },
  251. ]
  252. },
  253. img_replace:'',//重新上传的img
  254. isPreviewimg:false,
  255. preAct:"",
  256. isShowToggle:false,//是否显示切换
  257. diff_time:'',
  258. equityCheckData:[], //权益复选框
  259. citiesEquity:[], //
  260. citiesListEquity:[], //
  261. citiesListpitchOn:[],
  262. raiCheckList:[], //权益复选框
  263. };
  264. },
  265. methods: {
  266. setSelectVarietyDisabled(item){
  267. //return item.ClassifyName === '宏观经济' || item.disabled
  268. return item.Items.some(_e=>_e.IsPublic==1)||item.disabled
  269. },
  270. /* 重新申请获取上次申请的合同信息并回显 */
  271. getLastContract() {
  272. customInterence.reapplyDetail({
  273. CompanyApprovalId:parseInt(this.companyInfo.CompanyApprovalId)
  274. }).then(res => {
  275. if(res.Ret === 200) {
  276. /* 处理日期 */
  277. let date_arr = [];
  278. date_arr.push(res.Data.Item.StartDate);
  279. date_arr.push(res.Data.Item.EndDate);
  280. this.formData = {
  281. contract_type:res.Data.Item.ContractType,
  282. term:date_arr,
  283. amount:res.Data.Item.Money,
  284. payway:res.Data.Item.PayMethod,
  285. payfrom:res.Data.Item.PayChannel,
  286. imglist:res.Data.Item.ImgUrl.split('#'),//合同列表图片
  287. setmeal:res.Data.Item.PackageType,
  288. qyBigServeCheck:res.Data.Item.RaiPackageType
  289. }
  290. this.selectedQuarters = res.Data.Item.Quarter.split(',')
  291. let newArr = [];
  292. /* 处理权限列表 */
  293. if(this.isRaiCompany && !this.isXClassCustom ) {
  294. res.Data.Item.PermissionList.length&&res.Data.Item.PermissionList.forEach(item => {
  295. this.raiCheckList = item.CheckList || []
  296. newArr.push(item)
  297. })
  298. } else {
  299. res.Data.Item.PermissionList.forEach(item => {
  300. item.CheckList=item.CheckList||[]
  301. item.Items=item.Items||[]
  302. let obj = {
  303. checkAll:item.CheckList&&item.CheckList.length===item.Items.length?true:false,
  304. isIndeterminate:item.CheckList&&item.CheckList.length>0 && item.CheckList.length<item.Items.length,
  305. ...item,
  306. }
  307. newArr.push(obj)
  308. })
  309. }
  310. this.authList = newArr;
  311. this.formData.setmeal == '1' && this.setmealChange()
  312. }}
  313. )},
  314. /* 获取基本权限信息 */
  315. getAuthBasic() {
  316. customInterence.authList({
  317. IsShowYanXuanKouDian:true,
  318. CompanyStatus:this.companyInfo.Status
  319. }).then(res => {
  320. let newArr = [];
  321. if(res.Ret === 200) {
  322. if(this.isRaiCompany && !this.isXClassCustom) {
  323. res.Data.List.length&&res.Data.List.forEach(item => {
  324. newArr.push(item)
  325. })
  326. }else {
  327. res.Data.List.length&&res.Data.List.forEach(item => {
  328. item.CheckList=item.CheckList||[]
  329. item.Items=item.Items||[]
  330. let obj = {
  331. checkAll:item.CheckList&&item.CheckList.length===item.Items.length?true:false,
  332. isIndeterminate:item.CheckList&&item.CheckList.length>0 && item.CheckList.length<item.Items.length,
  333. ...item,
  334. }
  335. newArr.push(obj)
  336. })
  337. }
  338. this.authList = newArr;
  339. // console.log(this.authList,'this.authList');
  340. }
  341. })
  342. },
  343. /* 获取历史合同 */
  344. getDealList() {
  345. customInterence.historydeal({
  346. CompanyId: Number(this.companyInfo.CompanyId),
  347. CompanyType: this.companyInfo.CompanyType
  348. }).then(res => {
  349. if(res.Ret === 200) {
  350. this.formData.contract_type = res.Data.List ? '续约合同' :'新签合同';
  351. }
  352. })
  353. },
  354. /* 提交 */
  355. saveHandle() {
  356. this.$refs.formData.validate((valid) => {
  357. if (valid) {
  358. /* 处理权限列表 */
  359. let checkArr = [];
  360. let PointsArr = []
  361. let isPoints = true;
  362. if((this.companyInfo.CompanyType === '权益' || this.isRoleType == '权益') && !this.isXClassCustom){
  363. checkArr = this.raiCheckList
  364. this.authList.forEach(item => {
  365. item.Items.forEach(key => {
  366. if (checkArr.includes(key.ChartPermissionId) && key.ShowInput) {
  367. if (!key.Points) return isPoints = false;
  368. PointsArr.push({
  369. ChartPermissionId: key.ChartPermissionId,
  370. Points: key.Points-0,
  371. });
  372. }
  373. })
  374. })
  375. }else {
  376. this.authList.forEach(item => {
  377. if(item.CheckList.length) {
  378. checkArr.push(item.CheckList)
  379. }
  380. })
  381. }
  382. if(!isPoints) return this.$message.warning('请输入点数!')
  383. if(!checkArr.length && this.companyInfo.CompanyType === '权益') {
  384. this.$message.warning('请选择权限!');
  385. return
  386. }else {
  387. let PermissionIds = [... new Set(checkArr.flat(2))].join(',');
  388. let params = {
  389. CompanyId:Number(this.companyInfo.CompanyId),
  390. CompanyApprovalId:this.companyInfo.CompanyApprovalId?parseInt(this.companyInfo.CompanyApprovalId):0,
  391. ContractType:this.formData.contract_type,
  392. StartDate:this.formData.term[0],
  393. EndDate:this.formData.term[1],
  394. ImgUrl:this.formData.imglist.join('#'),
  395. Money:Number(this.formData.amount),
  396. PayChannel:this.formData.payfrom,
  397. PayMethod:this.formData.payway,
  398. PermissionIds,
  399. PackageType:this.formData.setmeal ? this.formData.setmeal : 0,
  400. RaiPackageType:this.formData.qyBigServeCheck||0,
  401. PointsArr
  402. }
  403. customInterence.applyTurn(params).then(res => {
  404. if(res.Ret === 200) {
  405. this.$message.success(res.Msg);
  406. this.$router.push({path:`/${this.$route.meta.pathFrom}`})
  407. }
  408. })
  409. }
  410. }
  411. })
  412. },
  413. /* 取消 */
  414. cancelHandle() {
  415. //this.$router.go(-1);
  416. this.$router.push({path:`/${this.$route.meta.pathFrom}`})
  417. },
  418. /* 选择全选或取消全选 */
  419. handleCheckAll(item) {
  420. // 取到所有的子菜单id
  421. let ids = item.Items.map(item =>{
  422. return item.ChartPermissionId
  423. })
  424. item.CheckList = item.checkAll ? ids : [];
  425. item.isIndeterminate = false;
  426. },
  427. /* 复选框組选中时 */
  428. handleChecked(item) {
  429. let len = item.CheckList.length;
  430. item.checkAll = len === item.Items.length;
  431. item.isIndeterminate = len > 0 && len < item.Items.length;
  432. },
  433. /* 预览 */
  434. preview(id,index,img) {
  435. if(img.indexOf('.pdf') == -1) {
  436. this.preAct = index;
  437. /* 是否显示左右切换 */
  438. let bol = this.formData.imglist.some(item => {
  439. return item.indexOf('.pdf') != -1
  440. })
  441. // 有pdf或图片只有一张
  442. if(bol || this.formData.imglist.length<=1) {
  443. this.isShowToggle = false
  444. }else {
  445. this.isShowToggle = true
  446. }
  447. this.isPreviewimg = true;
  448. }else {
  449. window.open(img)
  450. }
  451. },
  452. clickinput(index){ //上传模拟点击
  453. this.img_replace = '';
  454. if(index) {
  455. this.img_replace = index;
  456. }
  457. $("#file").click();
  458. },
  459. fileSelected(){ //选择文件上传
  460. if( document.getElementById('file').files[0] ){
  461. let hostfile = document.getElementById('file').files[0];
  462. let size = Math.floor(hostfile.size / 1024 / 1024);
  463. if( size>200 ){
  464. this.$message.error('上传文件大小不能大于200M!');
  465. hostfile = {};
  466. return false
  467. }
  468. if( hostfile.name.toLowerCase().includes('.png') || hostfile.name.toLowerCase().includes('.jpg') || hostfile.name.toLowerCase().includes('.jpeg') || hostfile.name.toLowerCase().includes('.pdf') ){
  469. let form = new FormData();
  470. form.append('file',hostfile); //hostfile.name
  471. this.uploadloading=true;
  472. customInterence.upload(form).then((res) => {
  473. if( res.Ret === 200 ){
  474. /* 是替换还是新增 */
  475. if(this.img_replace) {
  476. this.formData.imglist.splice(this.img_replace-1,1,res.Data.ResourceUrl)
  477. }else {
  478. if(this.formData.imglist.length >= 4) {
  479. this.$message.warning('最多上传4张')
  480. }else {
  481. this.formData.imglist.push(res.Data.ResourceUrl)
  482. }
  483. }
  484. }
  485. this.uploadloading=false;
  486. $("#file").val('');
  487. hostfile = {};
  488. });
  489. }else{
  490. this.$message.error('上传文件格式不正确!');
  491. }
  492. }
  493. },
  494. closePreview() {
  495. this.isPreviewimg = false;
  496. },
  497. togglePre(type) {
  498. if(type==1) {
  499. this.preAct--;
  500. if(this.preAct < 0) {
  501. this.preAct = this.formData.imglist.length-1;
  502. }
  503. }else {
  504. this.preAct++;
  505. if(this.preAct > this.formData.imglist.length-1) {
  506. this.preAct = 0;
  507. }
  508. }
  509. },
  510. dateChange(e){
  511. if(parseInt((new Date() - new Date(this.formData.term[1]))/(1000*3600*24)) > 0) {
  512. this.$message.error('结束日期不能小于今天!')
  513. this.formData.term = []
  514. return
  515. }
  516. // console.log(new Date().getTime() - new Date(this.formData.term[0]).getTime());
  517. if(e){
  518. // this.diff_time = Number(
  519. // Number((
  520. // (new Date(this.formData.term[1]).getTime())
  521. // -(new Date(this.formData.term[0]).getTime())
  522. // )/(1000*60*60*24*365))
  523. // .toFixed(1).replace(/.0/,''));
  524. this.$alert(`你选择的合同期限是 ${CalculationDate(this.formData.term[0],this.formData.term[1])}`, '', {
  525. confirmButtonText: '确定'
  526. });
  527. }
  528. },
  529. //获取客户申请转正的合同类型接口
  530. getConstractType(){
  531. customInterence.applyTurnContractType({CompanyId:Number(this.companyInfo.CompanyId)}).then(res=>{
  532. if(res.Ret===200){
  533. this.formData.contract_type=res.Data.ContractType
  534. }
  535. })
  536. },
  537. //套餐的选择
  538. setmealChange(){
  539. if(this.formData.setmeal == '1'){
  540. this.authList.forEach(item => {
  541. if(item.ClassifyName != '市场策略') {
  542. item.Items.forEach(key => {
  543. item.CheckList.push(key.ChartPermissionId)
  544. key.Checked = true
  545. key.disabled = true
  546. })
  547. item.isIndeterminate = false
  548. item.checkAll = true
  549. item.disabled = true
  550. }
  551. })
  552. } else {
  553. this.authList.forEach(item => {
  554. if(item.Items.some(_e=>_e.IsPublic==1)){
  555. item.CheckList = []
  556. item.Items.forEach(_e=>{
  557. if(_e.IsPublic==1){
  558. item.CheckList.push(_e.ChartPermissionId)
  559. }
  560. _e.disabled=false
  561. })
  562. item.isIndeterminate = true
  563. }else {
  564. item.Items.forEach(key => {
  565. key.Checked = false
  566. key.disabled = false
  567. })
  568. item.CheckList = []
  569. item.isIndeterminate = false
  570. item.checkAll = false
  571. item.disabled = false
  572. }
  573. })
  574. this.$message.warning('请勾选品种')
  575. }
  576. },
  577. checkboxInputHandler(){
  578. this.formData.term = this.selectedQuarters ? [this.selectedDateRange.split(" ~ ")[0],this.selectedDateRange.split(" ~ ")[1]]:[]
  579. },
  580. // 获取合同编号
  581. async querySearchCreditCode(queryString, cb) {
  582. cb([])
  583. if(queryString) {
  584. const res = await customInterence.searchSealcodeSeal({
  585. KeyWord:queryString
  586. })
  587. if(res.Ret === 200) {
  588. if(res.Data.List.length) {
  589. const data = res.Data.List.map(item => {
  590. return {
  591. value: item.Code,
  592. ...item
  593. }
  594. })
  595. cb(data)
  596. }
  597. }
  598. }
  599. },
  600. // 选择合同编号
  601. handleSelectCreditCode(item) {
  602. this.formData.term = [item.StartDate,item.EndDate]
  603. this.formData.amount = item.Money
  604. }
  605. },
  606. created() {},
  607. mounted() {
  608. if(this.$route.query.isReapply) {
  609. this.getLastContract();
  610. }else {
  611. this.getAuthBasic();
  612. // this.getDealList();
  613. //修改为直接获取接口中数据
  614. this.getConstractType()
  615. }
  616. },
  617. }
  618. </script>
  619. <style lang='scss'>
  620. .applyTurn_container {
  621. min-width: 1570px;
  622. *{box-sizing: border-box;}
  623. /* reset */
  624. .el-form-item .el-checkbox-group {
  625. height: 40px;
  626. }
  627. .textarea_item .el-form-item__content {
  628. width: 100%;
  629. }
  630. /* */
  631. .card_cont {
  632. margin-bottom: 20px;
  633. border: 1px solid #ECECEC;
  634. padding: 30px;
  635. background: #fff;
  636. border-radius: 4px;
  637. box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
  638. .info {
  639. margin-top: 10px;
  640. font-size: 16px;
  641. color: #666;
  642. .tit {
  643. color: #333;
  644. font-size: 16px;
  645. margin-bottom: 30px;
  646. }
  647. .info_list {
  648. display: flex;
  649. flex-wrap: wrap;
  650. padding-left: 50px;
  651. padding-bottom: 20px;
  652. li {
  653. margin-right: 113px;
  654. margin-bottom: 20px;
  655. min-width: 250px;
  656. }
  657. }
  658. }
  659. .apply_info {
  660. font-size: 16px;
  661. .info_cont {
  662. padding-left: 30px;
  663. margin-top: 30px;
  664. }
  665. }
  666. .menu_lists {
  667. padding: 40px 18px;
  668. border: 1px dashed #AAB4CC;
  669. border-radius: 4px;
  670. .menu_item {
  671. display: flex;
  672. // align-items: center;
  673. margin-bottom: 40px;
  674. &:last-child {
  675. margin-bottom: 0;
  676. }
  677. .list_item {
  678. margin-right: 30px;
  679. &:last-child {
  680. margin-right: 0;
  681. }
  682. }
  683. }
  684. }
  685. .img_cont {
  686. width: 100%;
  687. display: flex;
  688. flex-wrap: wrap;
  689. .img_item {
  690. position: relative;
  691. margin-right: 23px;
  692. &:last-child {
  693. margin-right: 0;
  694. }
  695. }
  696. }
  697. }
  698. .quarters-content {
  699. position: relative;
  700. .quarters-text {
  701. position: absolute;
  702. left: 0;
  703. top: 20px;
  704. color: #f00;
  705. }
  706. }
  707. }
  708. </style>