ts_aimz_uni/pages/copyright/createProjectInfo/createProjectInfo.vue
2025-05-30 17:38:28 +08:00

1317 lines
49 KiB
Vue

<template>
<view class="page-container">
<view class="container-box">
<swiper indicator-dots style="height: 120rpx;" autoplay indicator-active-color="#fff">
<swiper-item>
<image :src="globalData.locImg+'/banner_1.png'" style="width: 100vw;height: 120rpx;"></image>
</swiper-item>
<swiper-item>
<image :src="globalData.locImg+'/banner_2.png'" style="width: 100vw;height: 120rpx;"></image>
</swiper-item>
</swiper>
<view class="info-box">
<rich-text
nodes="<span style='font-size:16px;font-weight:bold;'>系统全称</span><span style='font-size:12px;'> (软著名称)</span>"></rich-text>
<textarea :value="projectName" @input="inputProjectName" class="info-value"
placeholder="请输入系统全称(注:建议以'软件''平台''系统'等字眼结尾)" placeholder-style="font-size:14px;"></textarea>
<view class="info-btn" @click="doCommendProjectName">推荐</view>
</view>
<view class="content-box">
<!-- 第一部分 -->
<text style="box-title">基本信息</text>
<view class="item">
<text class="item-title star">产权联系人</text>
<view class="item-content">
<picker style="flex:1;" mode="selector" :range="contactList" range-key="name"
@change="doChangeContact">
<view style="display: flex;flex-direction: row;align-items: center;">
<view class="icon-user-default-blue size-48"></view>
<view style="display: flex;flex-direction: column;margin-left: 15rpx;flex:1;">
<text style="font-size: 24rpx;color:$text-color;">{{selectContact.name}}</text>
<text
style="font-size: 22rpx;margin-top: 5rpx;">{{phoneNum(selectContact.phone,3,4,'****')}}</text>
</view>
<view class="icon-arrow-solid mr-20"></view>
</view>
</picker>
<view style="display: flex;flex-direction: row;align-items: center;" @click="doCreateContact">
<view class="icon-add-circle-blue size-32"></view>
<view class="link ml-10">新建</view>
</view>
</view>
</view>
<view class="item">
<text class="item-title star">系统版本</text>
<input class="item-content" :class="version != '' ? 'v-select':''" placeholder="v1.0"
style="flex:1;" :value="version" @input="inputVersion" />
</view>
<view class="item">
<text class="item-title star">系统语言</text>
<view class="item-content">
<view class="language-sel" :class="selectLang != ''? 'v-select':''" @click="doShowLang">
{{selectLang}}
</view>
<view class="icon-arrow-solid"></view>
</view>
</view>
<view class="item">
<text class="item-title">开发完成时间</text>
<view class="item-content">
<picker mode="date" style="flex:1;" :value="completeDate" start="2010-01-01" end="2050-01-01"
@change="bindDateChange">
<view class="select-time" :class="completeDate ==''? 'value-hint':''">
{{completeDate != ''? completeDate:'请选择开发完成时间'}}
</view>
</picker>
<view style="display: flex;flex-direction: row;">
<view v-if="completeDate !=''" @click="clearTime" class="icon-clear"
style="height: 32rpx;width: 32rpx;margin-right: 10rpx;">
</view>
<view v-if="completeDate==''" class="icon-calendar-ind"
style="height: 32rpx;width: 32rpx;margin-right: 10rpx;">
</view>
</view>
</view>
</view>
</view>
<view class="content-box">
<text class="box-title">套餐与优惠</text>
<view class="item" v-if="canSelPackage">
<text class="item-title">套餐包</text>
<view class="item-content">
<text :class="!isEmpty(selectPackage) ? 'v-select':'v-normal'" style="flex: 1;"
@click="doShowPackage">{{selectPackage.packageName?selectPackage.packageName:'请选择套餐包'}}</text>
<view class="icon-arrow-solid mr-20"></view>
<text v-if="!isEmpty(selectPackage)" class="link" @click="clearSelectPackageOrCoupons">取消</text>
</view>
</view>
<view class="item" v-if="canSelCoupons">
<text class="item-title">优惠券</text>
<view class="item-content">
<text @click="doShowCoupons" style="flex: 1;"
:class="!isEmpty(selectCoupons)? 'v-select':'v-normal'">{{selectCoupons.couponId? selectCoupons.coupon.title : '请选择优惠券'}}</text>
<view class="icon-arrow-solid mr-20"></view>
<text class="link" v-if="!isEmpty(selectCoupons)" @click="clearSelectPackageOrCoupons">取消</text>
</view>
</view>
</view>
</view>
<view class="bottom-fixed-footer">
<view class="money">
<view>金额:<text class="price">{{price/100}}元</text></view>
<checkbox-group @change="doUrgent" v-if="isShowUrgent">
<checkbox :checked="isUrgent" color="#FFA900" class="round yellow"
style="transform: scale(0.7);transform-origin: left center;margin-left: 8rpx;"
:disabled="isUrgentDisable">
<text
style="color: $text-brown-color;padding-left: 8rpx;font-size:30rpx;">加急办理{{urgent/100}}元</text>
</checkbox>
</checkbox-group>
</view>
<view class="bottom-btn-green" @click="doCreateProject">保存并付款</view>
</view>
<view>
<!-- 推荐项目名称 -->
<uni-popup ref="commendDialog" type="bottom" background-color="#fff" border-radius="15rpx 15rpx 0rpx 0rpx">
<view class="bottom-dialog-container">
<view class="dialog-title-box">
<view class="icon-close size-48" @click="closeCommendDialog"></view>
<view class="dialog-title-txt has-icon">项目名称</view>
</view>
<textarea @input="inputProjectName" placeholder="请简单介绍您想创建的系统,我们会根据您的描述为您推荐系统全称"
class="commend-text-area"></textarea>
<scroll-view scroll-y style="height: 300rpx;">
<view class="project-box">
<block v-for="(item,index) in projectNameList" :key="index">
<view class="project-item" @click="doSelectProjectName" :data-value="item">{{item}}
</view>
</block>
</view>
</scroll-view>
<view class="bottom-btn-green" @click="doCreateFullName">生成</view>
</view>
</uni-popup>
<!-- 新建联系人 -->
<uni-popup ref="createContactDialog" type="bottom" background-color="#fff"
border-radius="15rpx 15rpx 0rpx 0rpx">
<view class="bottom-dialog-container">
<view class="dialog-title-box">
<view class="icon-close size-48" @click="closeCreateContact"></view>
<view class="dialog-title-txt has-icon">新建联系人</view>
</view>
<view class="form-box">
<view class="form-item">
<view class="form-item-title star">姓&emsp;&emsp;名</view>
<input :adjust-position="true" :cursor-spacing="50" :value="contactName" placeholder="请输入姓名"
class="form-item-content" @input="inputContactName" />
</view>
<view class="form-item">
<view class="form-item-title star">联系电话</view>
<input :adjust-position="true" :cursor-spacing="50" :value="contactPhone"
placeholder="请输入联系电话" class="form-item-content" @input="inputContactPhone" />
</view>
<view class="form-item">
<view class="form-item-title">联系邮箱</view>
<input :adjust-position="true" :cursor-spacing="50" :value="contactEmail"
placeholder="请输入联系邮箱" class="form-item-content" @input="inputContactEmail" />
</view>
<view class="form-item">
<view class="form-item-title">公&emsp;&emsp;司</view>
<input :adjust-position="true" :cursor-spacing="50" :value="contactCompany"
placeholder="请输入公司名称" class="form-item-content" @input="inputContactCompany" />
</view>
</view>
<view class="bottom-btn-green" @click="doSaveContact">保存</view>
</view>
</uni-popup>
<!-- 语言选择 -->
<uni-popup ref="selectLangDialog" type="bottom" background-color="#fff"
border-radius="15rpx 15rpx 0rpx 0rpx">
<view class="bottom-dialog-container">
<view class="dialog-title-box">
<view class="icon-close size-48" @click="closeLangDialog"></view>
<view class="dialog-title-txt has-icon">系统语言</view>
</view>
<view class="coupons-list-box">
<scroll-view scroll-y style="height: 400rpx;">
<radio-group style="display: flex;flex-direction: column;width: 100vw;"
@change="changeLang">
<block v-for="(item,index) in langList" :key="index">
<radio style="margin-top: 10rpx;" :checked="selectLang==item" :value="item">
<view style="margin-left: 20rpx;text-align: center;padding: 15rpx 0rpx;">{{item}}</view>
</radio>
</block>
</radio-group>
</scroll-view>
</view>
<view class="bottom-btn-green" @click="doConfirmLang">确定</view>
</view>
</uni-popup>
<!-- 套餐包弹窗 -->
<uni-popup ref="selPackageDialog" type="bottom" background-color="#fff"
border-radius="15rpx 15rpx 0rpx 0rpx">
<view class="bottom-dialog-container">
<view class="dialog-title-box">
<view class="icon-close size-48" @click="closePackage"></view>
<view class="dialog-title-txt has-icon">套餐包</view>
</view>
<view style="display: flex;flex-direction: column;padding: 20rpx;">
<scroll-view scroll-y style="height: 500rpx;">
<view class="coupons-list-box">
<radio-group @change="radioSelPackage">
<block v-for="(item,index) in packageList" :key="index">
<view class="tickets" @click="choosePackage" :data-value="item">
<view class="l-tickets">
<view class="ticket-title">
<view>套餐包</view>
<view>剩余{{item.packageTotalSurplusCount}}件</view>
</view>
<view class="ticket-content">{{item.packageInfoAppDTO.packageName}}
</view>
<view class="ticket-desc">{{item.packageInfoAppDTO.packageDescription}}
</view>
</view>
<view class="r-tickets">
<radio style="margin-left: 5px;" :value="index+''"
:checked="tempPackage.packageInfoId==item.packageInfoId">
</radio>
</view>
</view>
</block>
</radio-group>
</view>
</scroll-view>
</view>
<view class="bottom-btn-green" @click="doConfirmPackage">确定</view>
</view>
</uni-popup>
<!-- 优惠卷弹窗 -->
<uni-popup ref="selCouponsDialog" type="bottom" background-color="#fff"
border-radius="15rpx 15rpx 0rpx 0rpx">
<view class="bottom-dialog-container">
<view class="dialog-title-box">
<view class="icon-close size-48" @click="closeCoupons"></view>
<view class="dialog-title-txt has-icon">优惠卷</view>
</view>
<view style="display: flex;flex-direction: column;padding: 20rpx;">
<scroll-view scroll-y style="height: 500rpx;">
<view class="coupons-list-box">
<radio-group @change="radioSelCoupons">
<block v-for="(item,index) in couponsList" :key="index">
<view class="tickets" @click="chooseCoupons" :data-value="item">
<view class="l-tickets">
<view class="ticket-title">
<view
style="display: flex;flex-direction: row;justify-content: center;align-items: center;">
<view class="coupons-icon" style="width: 24px;height: 24px;">
</view>
<text>优惠卷</text>
</view>
<view>减{{item.coupon.amount/100}}元</view>
</view>
<view class="ticket-content">{{item.coupon.title}}</view>
<view class="ticket-desc">
有效期:{{item.coupon.useGmtStart}}至{{item.coupon.useGmtEnd}}</view>
</view>
<view class="r-tickets">
<radio style="margin-left: 5px;"
:value="index+''" :checked="tempCoupons.couponId==item.couponId">
</radio>
</view>
</view>
</block>
</radio-group>
</view>
</scroll-view>
</view>
<view class="bottom-btn-green" @click="doConfirmCoupons">确定</view>
</view>
</uni-popup>
<uni-popup type="message" ref="msg">
<uni-popup-message :type="msgType" :message="msgTxt" :duration="2000"></uni-popup-message>
</uni-popup>
</view>
</view>
</template>
<script>
import ProApi from '@/common/js/net/projectApi.js'
import UserApi from '@/common/js/net/UserApi.js'
import {
formatDate
} from '@/common/js/util.js'
import {
isEmpty,
objIsEmpty,
phoneNum
} from '@/common/js/conver.js'
import {
isValidPhone,
isValidEmail
} from '@/common/js/validator.js'
import {
inject
} from 'vue'
export default {
setup() {
const globalData = inject('globalData')
return {
globalData
}
},
data() {
return {
msgType: 'info',
msgTxt: '',
completeDate: '', //开发完成时间
version: "v1.0", //系统版本
type: 'ALL', //默认全托管 上级页面传递type参数 all全托管 material写材料
languageList: ['JAVA'],
currentLanguage: 'JAVA', //当前选中的语言
price: 0,
packageList: [], //套餐包
tempPackage: {}, //临时选中的优惠卷,没有点击确定按钮前
selectPackage: {}, //选中的套餐包
couponsList: [], //优惠卷
selectCoupons: {}, //选中的优惠卷
tempCoupons: {}, //临时选中的优惠卷,没有点击确定按钮
contactList: [], //联系人
selectContact: {}, //当前选中的联系人
contactPhone: '', //联系人电话
contactName: '', //联系人姓名
contactEmail: '', //联系人邮箱
contactCompany: '', //联系人公司
csaNo: '', //客服NO
projectName: '',
projectNameList: [],
isUrgent: false, //是否加急
canSelCoupons: true, //是否可以使用优惠卷
canSelPackage: true, //是否可以使用套餐包
langList: [], //项目语言
showLang: false, //显示选择语言
tempLang: '', //临时选中的语言
selectLang: '',
isShowUrgent: true, //是否加急
urgent: 0, //加急费用
isUrgentDisable: false, //是否禁用加急
proPrice: 0, //价格
transmitPId: '', //传递过来的套餐包ID
}
},
onLoad(options) {
uni.setNavigationBarTitle({
title: '创建软著',
})
uni.setNavigationBarColor({
frontColor: '#000000', // 必写项,字体颜色仅支持#ffffff和#000000
backgroundColor: '#F0F0F0', // 传递的颜色值,仅支持十六进制颜色
animation: { // 可选项
duration: 500,
timingFunc: 'easeIn'
}
})
const typeParams = options.type //类型
const priceParams = options.price //价格
const isUrgentParams = options.isUrgent //是否加急
const pId = options.pId //套餐包ID
console.log(priceParams)
if (priceParams && priceParams > 0) {
this.price = priceParams
this.proPrice = priceParams
this.type = typeParams
this.isUrgent = isUrgentParams
this.transmitPId = pId
} else {
this.msgType = 'error'
this.msgTxt = '数据有误,请稍后重试'
this.$refs.msg.open()
setTimeout(() => {
uni.navigateBack()
}, 1500);
}
if (this.type == 'ALL') {
this.isShowUrgent = true
this.isUrgent = false
} else {
this.isShowUrgent = false
}
console.log('是否加急:', this.isUrgent);
//获取项目联系人
this.doGetContactList()
//获取套餐包
this.doGetPackage()
//获取优惠卷
this.doGetCoupons()
//获取客服ID
this.doGetCsaNo(false)
//获取可选语言
this.doGetProLangList()
//获取加急等费用
this.doGetPrice()
},
methods: {
// 导入的方法
isEmpty,
phoneNum,
isValidPhone,
isValidEmail,
// 关闭dialog
closeCommendDialog() {
this.$refs.commendDialog.close()
},
closeCreateContact() {
this.$refs.crateContactDialog.close()
},
closeLangDialog() {
this.$refs.selectLangDialog.close()
},
//关闭dialog End
//获取产权联系人
doGetContactList() {
uni.showLoading({
title: '加载中...',
})
const _self = this
ProApi.doGetContactList()
.then(res => {
uni.hideLoading()
_self.contactList = res
_self.selectContact = res[0]
})
.catch(err => {
uni.hideLoading()
})
},
//获取套餐包
doGetPackage() {
const _self = this
const data = {
page: 1,
rows: 100,
packageType: _self.type,
keyong: 1,
}
ProApi.doGetPackageList(data)
.then(res => {
_self.packageList = res.rows
if (_self.transmitPId != '' && _self.transmitPId != 'undefined') {
res.rows.map(item => {
if (item.packageInfoId == _self.transmitPId) {
_self.selectPackage = item
_self.showPackage = false
_self.tempPackage = {}
_self.canSelCoupons = false
_self.selectCoupons = {}
_self.tempCoupons = {}
_self.isUrgent = false //取消加急
_self.isUrgentDisable = true //加急不能选择
_self.price = 0
}
})
}
})
.catch(err => {
_self.packageList = []
})
},
//获取优惠卷
doGetCoupons() {
const _self = this
const data = {
page: 1,
rows: 100,
isEffective: 1,
isUsed: 0
}
ProApi.doGetCouponseList(data)
.then(res => {
_self.couponsList = res.rows
})
.catch(err => {
_self.couponsList = []
})
},
//获取客服NO,用于创建联系人
doGetCsaNo(isShow) {
const _self = this
UserApi.doGetCsaNo()
.then(res => {
_self.csaNo = res.csaNo
if (isShow) {
//TODO 显示创建联系人弹窗
}
})
.catch(err => {
_self.msgTxt = '获取客服失败,请稍后重试'
_self.msgType = 'error'
_self.$refs.msg.open()
})
},
//获取可选语言
doGetProLangList() {
const _self = this
ProApi.doGetProLangList()
.then(res => {
_self.langList = res
_self.selectLang = res[0]
})
.catch(err => {
console.log(err)
})
},
//获取单价
doGetPrice() {
uni.showLoading({
title: '加载中...',
})
const _self = this
ProApi.doGetPrice()
.then(res => {
console.log(res)
_self.urgent = res.additional.urgent //加急办理
})
.catch(err => {
_self.msgTxt = '数据有误,请稍后重试'
_self.msgType = 'error'
_self.$refs.msg.open()
setTimeout(() => {
uni.navigateBack()
}, 1500)
})
},
//项目名称输入
inputProjectName(e) {
this.projectName = e.detail.value
},
//选中推荐的系统名称
doSelectProjectName(e) {
this.projectName = e.currentTarget.dataset.value
this.projectNameList = []
this.$refs.commendDialog.close()
},
//显示推荐项目名称
doCommendProjectName() {
this.$refs.commendDialog.open()
},
//获取推荐的项目名称
doCreateFullName() {
const _self = this
uni.showLoading({
title: '生成中...',
})
const data = {
prompt: _self.projectName
}
ProApi.doGetCommendProjectName(data)
.then(res => {
uni.hideLoading()
console.log(res)
if (res && res.length > 0) {
_self.projectNameList = res
} else {
_self.msgTxt = '未查询到相关推荐的系统名称,请重新输入'
_self.msgType = 'error'
_self.$refs.msg.open()
}
}, err => {
uni.hideLoading()
_self.msgTxt = '未查询到相关推荐的系统名称,请重新输入'
_self.msgType = 'error'
_self.$refs.msg.open()
})
},
//选中项目联系人
doChangeContact(e) {
this.selectContact = this.contactList[e.detail.value]
},
//显示新建联系人弹窗
doCreateContact() {
this.$refs.createContactDialog.open()
},
//监听输入版本
inputVersion(e) {
this.version = e.detail.value
},
//显示系统语言弹窗
doShowLang() {
this.$refs.selectLangDialog.open()
},
//切换系统语言
changeLang(e) {
this.tempLang = e.detail.value
},
//确定选中系统语言
doConfirmLang() {
const _self = this
if (_self.tempLang != '') {
_self.selectLang = _self.tempLang
_self.tempLang = ''
}
_self.$refs.selectLangDialog.close()
},
//时间切换
bindDateChange(e) {
this.completeDate = e.detail.value
},
//清除完成时间
clearTime() {
console.log('清除时间');
this.completeDate = ''
},
//显示套餐包弹窗
doShowPackage() {
const _self = this
if (_self.packageList.length > 0) {
_self.tempPackage = _self.selectPackage
_self.$refs.selPackageDialog.open()
} else {
_self.msgTxt = '您暂时没有可以使用的套餐包'
_self.msgType = 'error'
_self.$refs.msg.open()
}
},
//关闭套餐包弹窗
closePackage() {
this.$refs.selPackageDialog.close()
},
//点击选择套餐包
choosePackage(e) {
this.tempPackage = e.currentTarget.dataset.value
},
//点击radio
radioSelPackage(e) {
this.tempPackage = this.packageList[e.detail.value]
},
//确定选中的套餐包
doConfirmPackage() {
this.selectPackage = this.tempPackage
this.tempPackage = {}
this.canSelCoupons = false
this.selectCoupons = {}
this.tempCoupons = {}
this.isUrgent = false //取消加急
this.isUrgentDisable = true //加急不能选择
this.countPrice()
this.$refs.selPackageDialog.close()
},
//请空选中的套餐包或优惠卷
clearSelectPackageOrCoupons() {
this.selectCoupons = {}
this.selectPackage = {}
this.tempCoupons = {}
this.tempPackage = {}
this.canSelCoupons = true
this.canSelPackage = true
this.isUrgent = false //取消加急
this.isUrgentDisable = false //加急可以选择
this.countPrice()
},
//显示优惠卷弹窗
doShowCoupons() {
if (this.couponsList.length <= 0) {
this.msgType = 'error'
this.msgTxt = '您暂时没有可以使用的优惠卷'
this.$refs.msg.open()
} else {
this.$refs.selCouponsDialog.open()
}
},
//关闭优惠卷弹窗
closeCoupons() {
this.$refs.selCouponsDialog.close()
},
//确定选中的优惠卷
doConfirmCoupons() {
const _self = this
_self.selectCoupons = _self.tempCoupons
_self.tempCoupons = {}
_self.canSelPackage = false
_self.selectPackage = {}
_self.tempPackage = {}
_self.countPrice()
this.$refs.selCouponsDialog.close()
},
//切换优惠卷
chooseCoupons(e) {
this.tempCoupons = e.currentTarget.dataset.value
},
//radio点击
radioSelCoupons(e) {
this.tempCoupons = this.couponsList[e.detail.value]
},
//是否加急
doUrgent() {
const _self = this
_self.isUrgent = !_self.isUrgent
_self.countPrice()
},
//新建联系人姓名监听
inputContactName(e) {
this.contactName = e.detail.value
},
//新建联系人电话监听
inputContactPhone(e) {
console.log(e)
this.contactPhone = e.detail.value
},
//新建联系人公司监听
inputContactCompany(e) {
this.contactCompany = e.detail.value
},
//新建联系人邮箱监听
inputContactEmail(e) {
this.contactEmail = e.detail.value
},
//保存新建联系人
doSaveContact() {
const _self = this
if (_self.contactName == '') {
_self.msgTxt = '请输入联系人姓名'
_self.msgType = 'error'
_self.$refs.msg.open()
return
}
if (_self.contactPhone == '' || !isValidPhone(_self.contactPhone)) {
_self.msgTxt = '请输入正确的联系电话'
_self.msgType = 'error'
_self.$refs.msg.open()
return
}
if (_self.contactEmail != '') {
if (!isValidEmail(_self.contactEmail)) {
_self.msgTxt = '请输入正确的邮箱'
_self.msgType = 'error'
_self.$refs.msg.open()
return
}
}
const data = {
company: _self.contactCompany,
csaNo: _self.csaNo,
name: _self.contactName,
phone: _self.contactPhone,
email: _self.contactEmail
}
uni.showLoading({
title: '创建中...'
})
UserApi.doCreateContact(data)
.then(res => {
uni.hideLoading()
_self.msgTxt = '新建成功'
_self.msgType = 'success'
_self.$refs.msg.open()
_self.$refs.createContactDialog.close()
_self.contactEmail = ''
_self.contactPhone = ''
_self.contactName = ''
_self.contactCompany = ''
//获取一遍联系人
_self.doGetContactList()
})
.catch(err => {
console.log(err)
uni.hideLoading()
_self.msgTxt = err.msg ? err.msg : '新建失败,请稍后重试'
_self.msgType = 'error'
_self.$refs.msg.open()
// _self.$refs.crateContactDialog.close()
})
},
//计算价格
countPrice() {
const _self = this;
const trPrice = Number(_self.proPrice);
let newPrice;
if (!objIsEmpty(_self.selectPackage)) {
newPrice = 0;
} else {
const isAllType = _self.type === 'ALL';
const hasCoupon = !objIsEmpty(_self.selectCoupons);
const isUrgent = _self.isUrgent;
const couponAmount = hasCoupon ? Number(_self.selectCoupons.coupon.amount) : 0;
const urgentFee = isAllType && isUrgent ? Number(_self.urgent) : 0;
newPrice = trPrice + urgentFee - couponAmount;
}
_self.price = Math.max(0, newPrice);
},
//校验参数
doCheckProjectParams() {
const _self = this
if (_self.projectName == '') {
_self.msgTxt = '请输入项目名称'
_self.msgType = 'error'
_self.$refs.msg.open()
return false
}
if (Object.keys(_self.selectContact).length <= 0) {
_self.msgTxt = '请选中产权联系人'
_self.msgType = 'error'
_self.$refs.msg.open()
return false
}
return true
},
//提交新建项目信息
doCreateProject() {
//校验参数
const _self = this
const isLegal = _self.doCheckProjectParams()
if (isLegal) {
uni.showLoading({
title: '创建中...',
})
//构建参数
var list = []
if (_self.isUrgent != '' && _self.isUrgent) {
list = ['URGENT']
}
const data = {
applyContactCsaNo: _self.selectContact.csaNo, // 联系人客服编号
applyContactId: _self.selectContact.projContactId, //联系人ID
applyContactName: _self.selectContact.name, //联系人姓名
applyContactPhone: _self.selectContact.phone, //联系人手机
projDevCompleteDate: _self.completeDate, //开发完成日期
projName: _self.projectName, //项目简称
projVersion: _self.version, //项目版本
backendCodeLang: _self.selectLang,
projChargeType: _self.type, //项目收费类型 ALL,FREE,MATERIAL,MATERIAL_AGENT,MATERIAL_AGENT_URGENT
listProjChargeAdditional: list,
packageOrderId: _self.selectPackage.packageOrderId ? _self.selectPackage.packageOrderId :
'', //套餐包ID
couponId: _self.selectCoupons.couponId ? _self.selectCoupons.couponId : '', //优惠卷ID
}
ProApi.doCreateProject(data)
.then(res => {
console.log(res)
uni.hideLoading()
_self.msgType = 'success'
_self.msgTxt = '项目创建流程圆满完成,系统正在生成配套材料,请您耐心等候。'
_self.$refs.msg.open()
setTimeout(() => {
uni.navigateBack()
}, 1500);
})
.catch(err => {
uni.hideLoading()
console.log(err)
_self.msgTxt = err.msg ? err.msg : '网络错误,请稍后重试'
_self.msgType = 'error'
_self.$refs.msg.open()
})
}
}
}
}
</script>
<style lang="scss">
.create-container {
display: flex;
flex-direction: column;
justify-content: flex-start;
}
.container-box {
display: flex;
flex-direction: column;
justify-content: flex-start;
padding-bottom: 200rpx;
}
.create-title {
height: 80rpx;
background-color: blanchedalmond;
}
.commend-text-area {
padding: 10px;
height: 50px;
align-self: center;
width: 85vw;
margin-top: 20rpx;
font-size: 28rpx;
background-color: $bg-gray-input-color;
border-radius: 15rpx;
}
.info-box {
display: flex;
flex-direction: column;
margin-top: 20rpx;
background-color: $white-color;
border-radius: 15rpx;
padding: 20rpx;
}
.info-title {
font-size: 36rpx;
font-weight: bold;
}
.info-value {
margin-top: 20rpx;
font-size: 24rpx;
line-height: 16px;
background-color: $bg-gray-input-color;
height: 65rpx;
width: auto;
padding: 15px;
border-radius: 15rpx;
}
.info-btn {
align-self: flex-end;
background-color: #FFA900;
margin-top: 20rpx;
padding: 5rpx 40rpx;
color: white;
border-radius: 10rpx;
font-size: 28rpx;
}
.content-box {
display: flex;
flex-direction: column;
padding: 20rpx;
background-color: $white-color;
border-radius: 15rpx;
margin-top: 20rpx;
}
.box-title {
font-size: 32rpx;
font-weight: $black-color;
color: $text-color;
}
.item {
display: flex;
flex-direction: column;
margin-top: 15rpx;
margin-left: 15rpx;
}
.item-title {
font-size: 28rpx;
color: $text-color;
}
.item-content {
display: flex;
flex-direction: row;
align-items: center;
background-color: $bg-gray-input-color;
margin-top: 10rpx;
padding: 15rpx;
border-radius: 15rpx;
}
.label {
color: black;
font-weight: bold;
}
.desc {
flex: 1;
color: #999;
text-align: left;
padding-left: 20rpx;
display: flex;
flex-direction: row;
justify-content: space-between;
padding-right: 10px;
align-items: center;
}
.select-time {
color: #000000;
flex: 1;
font-size: 14px;
text-align: left;
}
.clear-icon {
width: 20px;
height: 20px;
margin-right: 20rpx;
}
.desc .icon {
width: 32rpx;
height: 32rpx;
}
.value {
color: #9A9A9A;
flex: 1;
}
.value-hint {
color: $text-gray-hint-color;
}
.v-select {
font-size: 28rpx;
color: $text-color;
}
.v-normal {
font-size: 28rpx;
color: $text-gray-hint-color;
}
.language-sel {
font-size: 14px;
flex: 1;
}
.link {
font-size: 28rpx;
color: #007AFF;
}
.flex-1 {
display: flex;
flex-direction: row;
flex: 1;
}
.selection-box {
position: relative;
flex: 1;
}
.language-options {
position: absolute;
top: 100%;
left: -20rpx;
padding: 10rpx 20rpx;
border: 1px solid #f2f2f2;
border-top: none;
background-color: white;
box-shadow: 0rpx 0rpx 10rpx 10rpx #f2f2f2;
}
.option {
padding: 15rpx;
cursor: pointer;
border-bottom: 1rpx solid #f2f2f2;
}
.option:hover {
background-color: #f0f0f0;
}
.weui-half-screen-dialog__ft {
padding: 0rpx 0rpx 40rpx;
}
.bottom-box {
position: fixed;
left: 0;
bottom: 0;
text-align: center;
width: 100vw;
line-height: 100rpx;
border-radius: 20rpx;
background-color: white;
display: flex;
flex-direction: column;
align-items: center;
}
.money {
color: $text-brown-color;
font-size: 20px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
.price {
color: rgb(250, 0, 0);
}
.form-box {
display: flex;
flex-direction: column;
justify-content: center;
font-size: 28rpx;
padding: 40rpx 0rpx;
}
.form-item {
display: flex;
flex-direction: row;
align-items: center;
}
.form-item:nth-of-type(n+2) {
margin-top: 15rpx;
}
.form-item-title {
flex: .3;
color: black;
text-align: left;
}
.form-item-content {
flex: .7;
text-align: right;
padding: 15rpx;
border-radius: 15rpx;
background-color: $bg-gray-input-color;
}
.project-box {
display: flex;
flex-direction: row;
flex-wrap: wrap;
margin-top: 10rpx;
}
.project-item {
font-size: 24rpx;
background-color: #ffaa0034;
text-align: center;
color: #804002;
text-align: center;
margin: 10rpx;
padding: 5rpx 20rpx;
border-radius: 4rpx;
}
.confirm-btn {
font-size: 28rpx;
height: 48rpx;
line-height: 48rpx;
border-radius: 10rpx;
padding: 10rpx;
text-align: center;
width: 85vw !important;
background-color: rgba(57, 154, 35, 1);
color: rgba(255, 255, 255, 1);
align-self: center;
}
.confirm-btn:active {
background-color: rgba(57, 154, 35, 0.7);
color: rgba(255, 255, 255, 1);
}
.coupons-list-box {
display: flex;
flex-direction: column;
padding: 20rpx;
}
.tickets {
display: flex;
padding: 5px;
box-sizing: border-box;
height: 210rpx;
}
.l-tickets {
flex: 0.7;
position: relative;
padding: 10px;
display: flex;
flex-direction: column;
justify-content: space-between;
background: radial-gradient(circle at right top, transparent 16rpx, #ffaa0017 0) right top / 100% 50% no-repeat,
radial-gradient(circle at right bottom, transparent 16rpx, #ffaa0017 0) right bottom / 100% 50% no-repeat;
}
.l-tickets::after {
content: '';
position: absolute;
height: 100%;
width: 8rpx;
top: 0;
left: -8rpx;
background: radial-gradient(circle at left center, transparent 8rpx, #ffaa0017 0) left center / 8rpx 20rpx;
}
.r-tickets {
flex: 0.3;
position: relative;
background: radial-gradient(circle at left top, transparent 16rpx, #ffaa0017 0, #ffaa0017 100%) right top / 100% 50% no-repeat,
radial-gradient(circle at left bottom, transparent 16rpx, #ffaa0017 0, #ffaa0017 100%) right bottom / 100% 50% no-repeat;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
font-size: 14px;
font-weight: 500;
color: #5D3900;
}
.r-tickets::after {
content: '';
position: absolute;
height: 100%;
width: 8rpx;
top: 0;
right: -8rpx;
background: radial-gradient(circle at right center, transparent 8rpx, #ffaa0017 0) right center / 8rpx 20rpx;
}
.r-tickets::before {
content: '';
width: 1rpx;
background: linear-gradient(to top, #fff 0%, #fff 50%, transparent 50%) top left / 1rpx 20rpx repeat-y;
position: absolute;
left: 0;
top: 16rpx;
bottom: 16rpx;
}
.ticket-container:nth-last-of-type(n+1) {
margin-top: 10px;
}
.ticket-title {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
font-size: 14px;
color: #5D3900;
font-weight: 400;
}
.ticket-content {
font-size: 18px;
color: #5D3900;
text-align: center;
font-weight: bold;
}
.ticket-desc {
font-size: 12px;
color: #5D3900;
margin-top: 10px;
font-weight: 400;
}
.coupons-item {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
background-color: #ffaa0017;
border-radius: 10px;
width: 85vw;
padding: 10px 5px;
}
.coupons-item:nth-last-of-type(n+1) {
margin-top: 10px;
}
.coupons-item-content {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
flex: 1;
}
.coupons-desc {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-start;
margin-left: 7px;
}
.coupons-desc .title {
font-size: 16px;
color: red;
}
.coupons-desc .dd {
font-size: 12px;
color: red;
}
.counpons-check {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.counpons-check .txt {
font-size: 16px;
color: red;
font-weight: 600;
}
.coupons-icon {
background-image: url('data:image/png;base64,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');
background-size: contain;
background-repeat: no-repeat;
}
</style>