pull/781/head
zy 2025-05-11 20:39:01 +08:00
parent f6c7154f1f
commit 5614e06f43
11 changed files with 339 additions and 242 deletions

View File

@ -108,7 +108,7 @@
<ContracExtension ref="contractExtensionFormRef" v-if="formData.changeItem == 3" :data="formData" /> <ContracExtension ref="contractExtensionFormRef" v-if="formData.changeItem == 3" :data="formData" />
<ContractStop ref="contractStopFormRef" :formData="formData" v-if="formData.changeItem == 4" /> <ContractStop ref="contractStopFormRef" :formData="formData" v-if="formData.changeItem == 4" />
<ContractAAuthorizedCompanyForm ref="contractAAuthorizedCompanyFormRef1" v-if="formData.changeItem == 5" :data="formData.contractAAuthorizedCompanys" /> <ContractAAuthorizedCompanyForm ref="contractAAuthorizedCompanyFormRef1" v-if="formData.changeItem == 5" :data="formData.contractAAuthorizedCompanys" />
<ContractForm ref="contractFormRef" :type="1" :formData="formData" v-if="formData.changeItem == 6" /> <ContractForm ref="contractFormRef" :type="1" :changeType="true" v-if="formData.changeItem == 6" />
</ContentWrap> </ContentWrap>
</el-form> </el-form>
<div style="text-align: right"> <div style="text-align: right">

View File

@ -16,17 +16,13 @@
<el-input v-model="formData.name" placeholder="请输入合同名称" /> <el-input v-model="formData.name" placeholder="请输入合同名称" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-if="formType">
<el-form-item label="合同编号" prop="no">
<el-input disabled v-model="formData.no" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="客户名称" prop="customerId"> <el-form-item label="客户名称" prop="customerId">
<el-select <el-select
v-model="formData.customerId" v-model="formData.customerId"
placeholder="请选择客户名称" placeholder="请选择客户名称"
:disabled="formType" :disabled="!!formType"
@change="onCustomerChange" @change="onCustomerChange"
class="w-1/1" class="w-1/1"
> >
@ -39,6 +35,11 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-if="formType">
<el-form-item label="合同编号" prop="no">
<el-input disabled v-model="formData.no" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="报价单编号" prop="quotationId"> <el-form-item label="报价单编号" prop="quotationId">
<el-select <el-select
@ -510,6 +511,7 @@ const { proxy }: any = getCurrentInstance();
const props = defineProps({ const props = defineProps({
id: propTypes.number.def(undefined), id: propTypes.number.def(undefined),
type: propTypes.number.def(undefined), type: propTypes.number.def(undefined),
changeType: propTypes.number.def(undefined),//
}) })
const templateOptions = ref([]) const templateOptions = ref([])
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
@ -609,6 +611,7 @@ const open = async (type: string) => {
// formLoading.value = true // formLoading.value = true
try { try {
formData.value = await ContractApi.getContract(type) formData.value = await ContractApi.getContract(type)
console.log('%csrc/views/crm/contract/ContractForm.vue:614 object', 'color: #007acc;', formData.value);
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
@ -789,7 +792,7 @@ const onCustomerChange = async (customerId: string) => {
formData.value.partAddress = customerRes.partAddress; formData.value.partAddress = customerRes.partAddress;
formData.value.listingStatus = customerRes.listingStatus; formData.value.listingStatus = customerRes.listingStatus;
formData.value.legalPersonName = customerRes.legalPersonName; formData.value.legalPersonName = customerRes.legalPersonName;
formData.value.creditCode = customerRes.creditCode; formData.value.creditNo = customerRes.creditNo;
formData.value.regType = customerRes.regType; formData.value.regType = customerRes.regType;
formData.value.financingInfo = customerRes.financingInfo; formData.value.financingInfo = customerRes.financingInfo;
formData.value.socialEmployeeNum = customerRes.socialEmployeeNum; formData.value.socialEmployeeNum = customerRes.socialEmployeeNum;
@ -829,10 +832,12 @@ const getContactOptions = computed(() =>
const route = useRoute(); const route = useRoute();
onMounted(async () => { onMounted(async () => {
formType.value = props.id || route.query.id if(!props.changeType) {
console.log('%csrc/views/crm/contract/ContractForm.vue:835 props.id', 'color: #007acc;', props.id);
if (formType.value) await open(formType.value) formType.value = props.id || route.query.id
if (formType.value) await open(formType.value)
}
// //
customerList.value = await CustomerApi.getCustomerSimpleList() customerList.value = await CustomerApi.getCustomerSimpleList()
// //

View File

@ -13,13 +13,13 @@
v-model="formData.terminationDate" v-model="formData.terminationDate"
type="date" type="date"
:disabled="!!type" :disabled="!!type"
value-format="YYYY-MM-DD" value-format="x"
placeholder="请选择终止日期" placeholder="请选择终止日期"
style="width: 100%" style="width: 100%"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="16">
<el-form-item label="终止原因" prop="terminationReason"> <el-form-item label="终止原因" prop="terminationReason">
<el-radio-group v-model="formData.terminationReason" :disabled="!!type"> <el-radio-group v-model="formData.terminationReason" :disabled="!!type">
<el-radio :label="1">合同到期</el-radio> <el-radio :label="1">合同到期</el-radio>
@ -74,7 +74,7 @@ const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
const formType = ref('') // create - update - const formType = ref('') // create - update -
const formData = ref({ const formData = ref({
terminationDate: undefined, terminationDate: new Date(),
terminationReason: undefined, terminationReason: undefined,
note: undefined, note: undefined,
}) })

View File

@ -140,7 +140,7 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="调整金额(元)" prop="changeAmount"> <el-form-item label="调整金额(元)" prop="changeAmount">
<el-input v-model="formData.changeAmount" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" :disabled="!!type" placeholder="请输入调整金额(元)" @input="onChangeAmount" /> <el-input v-model="formData.changeAmount" :disabled="type" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="请输入调整金额(元)" @input="onChangeAmount" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -154,7 +154,7 @@
v-model="formData.changeAmountDeadline" v-model="formData.changeAmountDeadline"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
type="date" type="date"
:disabled="!!type" :disabled="type"
placeholder="请选择调整金额截止日期" placeholder="请选择调整金额截止日期"
style="width: 100%" style="width: 100%"
/> />
@ -262,7 +262,8 @@ const subTabsName = ref('quotationProduct')
const quotationProductFormRef = ref() const quotationProductFormRef = ref()
const props = defineProps<{ const props = defineProps<{
data: undefined data: undefined,
type: undefined
}>() }>()
watch( watch(

View File

@ -27,7 +27,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="上市情况" prop="customerId"> <el-form-item label="上市情况" prop="customerId">
<el-select v-model="formData.customerId" :disabled="!!type" placeholder="请选择上市情况" @change="onCustomerChange"> <el-select v-model="formData.customerId" :disabled="!!type" placeholder="请选择上市情况" @change="onCustomerChange">
<el-option <el-option
@ -38,13 +38,13 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col> -->
<!-- <el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="合作类型" prop="cooperationType"> <el-form-item label="合作类型" prop="cooperationType">
<el-input v-model="formData.cooperationType" disabled /> <el-input v-model="formData.cooperationType" disabled />
</el-form-item> </el-form-item>
</el-col> --> </el-col> -->
<el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="融资信息" prop="companyType"> <el-form-item label="融资信息" prop="companyType">
<el-select v-model="formData.customerId" :disabled="!!type" placeholder="请选择融资信息" @change="onCustomerChange"> <el-select v-model="formData.customerId" :disabled="!!type" placeholder="请选择融资信息" @change="onCustomerChange">
<el-option <el-option
@ -55,63 +55,63 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col> -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="实缴资金" prop="paidInCapital"> <el-form-item label="实缴资金" prop="paidInCapital">
<el-input v-model="formData.paidInCapital" disabled /> <el-input v-model="formData.actualCapital" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="参保人数" prop="insuredCount"> <el-form-item label="参保人数" prop="insuredCount">
<el-input v-model="formData.insuredCount" disabled /> <el-input v-model="formData.socialEmployeeNum" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="被告记录" prop="defendantRecord"> <el-form-item label="被告记录" prop="defendantRecord">
<el-radio-group v-model="formData.defendantRecord" :disabled="true"> <el-radio-group v-model="formData.defendantRecord" :disabled="true">
<el-radio :label="true"></el-radio> <el-radio :label="1"></el-radio>
<el-radio :label="false"></el-radio> <el-radio :label="0"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="经营异常" prop="businessAbnormal"> <el-form-item label="经营异常" prop="abnormalService">
<el-radio-group v-model="formData.businessAbnormal" :disabled="true"> <el-radio-group v-model="formData.abnormalService" :disabled="true">
<el-radio :label="true"></el-radio> <el-radio :label="1"></el-radio>
<el-radio :label="false"></el-radio> <el-radio :label="0"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="股权出质" prop="equityPledge"> <el-form-item label="股权出质" prop="equityPledge">
<el-radio-group v-model="formData.equityPledge" :disabled="true"> <el-radio-group v-model="formData.equityPledge" :disabled="true">
<el-radio :label="true"></el-radio> <el-radio :label="1"></el-radio>
<el-radio :label="false"></el-radio> <el-radio :label="0"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="失信记录" prop="dishonestRecord"> <el-form-item label="失信记录" prop="dishonestyRecord">
<el-radio-group v-model="formData.dishonestRecord" :disabled="true"> <el-radio-group v-model="formData.dishonestyRecord" :disabled="true">
<el-radio :label="true"></el-radio> <el-radio :label="1"></el-radio>
<el-radio :label="false"></el-radio> <el-radio :label="0"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="融资记录" prop="financingRecord"> <el-form-item label="融资记录" prop="financeRecord">
<el-radio-group v-model="formData.financingRecord" :disabled="true"> <el-radio-group v-model="formData.financeRecord" :disabled="true">
<el-radio :label="true"></el-radio> <el-radio :label="1"></el-radio>
<el-radio :label="false"></el-radio> <el-radio :label="0"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="被执行记录" prop="enforcementRecord"> <el-form-item label="被执行记录" prop="judgmentRecord">
<el-radio-group v-model="formData.enforcementRecord" :disabled="true"> <el-radio-group v-model="formData.judgmentRecord" :disabled="true">
<el-radio :label="true"></el-radio> <el-radio :label="1"></el-radio>
<el-radio :label="false"></el-radio> <el-radio :label="0"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -120,12 +120,12 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="协议截止日" prop="agreementDeadline"> <el-form-item label="协议截止日" prop="endTime">
<el-date-picker <el-date-picker
:disabled="!!type" :disabled="!!type"
v-model="formData.agreementDeadline" v-model="formData.endTime"
type="date" type="date"
value-format="YYYY-MM-DD" value-format="x"
placeholder="请选择协议截止日" placeholder="请选择协议截止日"
style="width: 100%" style="width: 100%"
/> />

View File

@ -28,8 +28,8 @@
<el-form-item label="客户名称" prop="customerId"> <el-form-item label="客户名称" prop="customerId">
<el-select <el-select
v-model="formData.customerId" v-model="formData.customerId"
disabled=""
placeholder="请选择客户" placeholder="请选择客户"
disabled
class="w-1/1" class="w-1/1"
> >
<el-option <el-option
@ -50,7 +50,7 @@
<el-form-item label="合同状态" prop="quotationId"> <el-form-item label="合同状态" prop="quotationId">
<el-select v-model="formData.auditStatus" disabled clearable placeholder="请选择合同状态"> <el-select v-model="formData.auditStatus" disabled clearable placeholder="请选择合同状态">
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" v-for="dict in getIntDictOptions(DICT_TYPE.CRM_AUDIT_STATUS)"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
@ -72,47 +72,45 @@
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="变更项目" prop="endTime"> <el-form-item label="变更项目" prop="endTime">
<el-radio-group v-model="formData.radio" disabled> <el-radio-group v-model="formData.changeItem" disabled >
<el-radio :value="1">额度</el-radio> <el-radio :value="1">额度</el-radio>
<el-radio :value="2">授权人</el-radio> <el-radio :value="2">授权人</el-radio>
<el-radio :value="3">延期</el-radio> <el-radio :value="3">延期</el-radio>
<el-radio :value="4">终止</el-radio> <el-radio :value="4">终止</el-radio>
<el-radio :value="5">甲方关联单位</el-radio> <el-radio :value="5">关联</el-radio>
<el-radio :value="6">重签</el-radio> <el-radio :value="6">重签</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<!-- 子表的表单 --> <!-- 子表的表单 -->
<ContentWrap> <ContentWrap>
<ContractChangeLimit <ContractChangeLimit
v-if="formData.radio == 1" v-if="formData.changeItem == 1"
:type="1"
ref="limitFormRef" ref="limitFormRef"
:formData="formData" :data="formData"
:disabled="disabled" :disabled="true"
/> />
<div v-if="formData.radio == 2"> <div v-if="formData.changeItem == 2">
<ContentWrap style="border: none"> <ContentWrap style="border: none">
甲方现授权人信息 甲方现授权人信息
</ContentWrap> </ContentWrap>
<ContractAuthPersonInfo <ContractAuthPersonInfo
:disabled="true"
ref="personDataRef" ref="personDataRef"
:products="formData.contractAAuthorizedPersons" :products="formData.contractAAuthorizedPersons"
/> />
<!-- <ContentWrap style="border: none">
甲方授权人
</ContentWrap>
<ContractAAuthorizedCompanyForm ref="contractAAuthorizedCompanyFormRef" :contract-id="formData.id" /> -->
</div> </div>
<ContracExtension ref="contractExtensionFormRef" :type="1" :formData="formData" v-if="formData.radio == 3" /> <ContracExtension ref="contractExtensionFormRef" v-if="formData.changeItem == 3" :disabled="true" :data="formData" />
<ContractStop ref="contractStopFormRef" :type="1" :formData="formData" v-if="formData.radio == 4" /> <ContractStop ref="contractStopFormRef" :formData="formData" :disabled="true" v-if="formData.changeItem == 4" />
<ContractAAuthorizedCompanyForm :type="1" ref="contractAAuthorizedCompanyFormRef1" v-if="formData.radio == 5" :contract-id="formData.id" /> <ContractAAuthorizedCompanyForm ref="contractAAuthorizedCompanyFormRef1" :type="true" v-if="formData.changeItem == 5" :data="formData.contractAAuthorizedCompanys" />
<ContractForm ref="contractFormRef" :type="1" :id="formType" :formData="formData" v-if="formData.radio == 6" /> <ContractForm ref="contractFormRef" :type="1" :id="formData.id" v-if="formData.changeItem == 6" />
</ContentWrap> </ContentWrap>
</el-form> </el-form>
</ContentWrap> </ContentWrap>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
@ -130,6 +128,7 @@ import ContracExtension from '@/views/crm/contract/components/ContractExtension.
import ContractStop from '@/views/crm/contract/components/ContracStop.vue' import ContractStop from '@/views/crm/contract/components/ContracStop.vue'
import ContractProductForm from '@/views/crm/contract/components/ContractProductForm.vue' import ContractProductForm from '@/views/crm/contract/components/ContractProductForm.vue'
import ContractAAuthorizedCompanyForm from '../components/ContractAAuthorizedCompanyForm.vue' import ContractAAuthorizedCompanyForm from '../components/ContractAAuthorizedCompanyForm.vue'
import ContractBAuthorizedPersonForm from '../components/ContractAAuthorizedPersonForm.vue'
import ContractForm from './ContractDetail.vue' import ContractForm from './ContractDetail.vue'
import { propTypes } from '@/utils/propTypes' import { propTypes } from '@/utils/propTypes'
@ -137,7 +136,7 @@ const { t } = useI18n() // 国际化
const message = useMessage() // const message = useMessage() //
const { proxy }: any = getCurrentInstance(); const { proxy }: any = getCurrentInstance();
const props = defineProps({ const props = defineProps({
id: propTypes.number.def(undefined) id: propTypes.number.def(undefined),
}) })
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
const dialogTitle = ref('') // const dialogTitle = ref('') //
@ -180,6 +179,7 @@ const formData = ref({
partnerCompanyId: undefined, partnerCompanyId: undefined,
deptId: undefined, deptId: undefined,
quotationTimes: undefined, quotationTimes: undefined,
changeItem: 1,
products: [] products: []
}) })
const formRules = reactive({ const formRules = reactive({
@ -196,7 +196,7 @@ const contactList = ref<ContactApi.ContactVO[]>([])
/** 子表的表单 */ /** 子表的表单 */
const subTabsName = ref('limit') const subTabsName = ref('limit')
const contractAAuthorizedCompanyFormRef = ref() const ContractBAuthorizedPersonFormRef = ref()
const contractAAuthorizedCompanyFormRef1 = ref() const contractAAuthorizedCompanyFormRef1 = ref()
const limitFormRef = ref() const limitFormRef = ref()
const contractExtensionFormRef = ref() const contractExtensionFormRef = ref()
@ -222,7 +222,14 @@ const open = async (type: string) => {
if (type) { if (type) {
formLoading.value = true formLoading.value = true
try { try {
formData.value = await ContractApi.getChangeContract(type) // formData.value = Object.assign(formData.value, data)
let data = await ContractApi.getChangeContract(type)
formData.value = data.contractDetail
formData.value.changeItem = data.changeItem
formData.value.changeAmount = data.changeAmount
formData.value.afterAmount = data.afterAmount
formData.value.changeAmountDeadline = data.changeAmountDeadline
formData.value.note = data.note
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
@ -245,10 +252,39 @@ const submitForm = async () => {
// const Authalid1 = await contractAAuthorizedCompanyFormRef1.value.validate() // const Authalid1 = await contractAAuthorizedCompanyFormRef1.value.validate()
// if (!Authalid1) return // if (!Authalid1) return
// const limitValid = await limitFormRef.value.validate() if(ContractBAuthorizedPersonFormRef.value) {
// if (!limitValid) return const Authalid = await ContractBAuthorizedPersonFormRef.value.validate()
// const extensionValid = await contractExtensionFormRef.value.validate() if (!Authalid) return
// if (!extensionValid) return }
if(contractAAuthorizedCompanyFormRef1.value) {
const Authalid1 = await contractAAuthorizedCompanyFormRef1.value.validate()
if (!Authalid1) return
}
if(limitFormRef.value) {
const limitValid = await limitFormRef.value.validate()
if (!limitValid) return
}
if(contractExtensionFormRef.value) {
const extensionValid = await contractExtensionFormRef.value.validate()
if (!extensionValid) return
}
if(contractStopFormRef.value) {
const stopValid = await contractStopFormRef.value.validate()
if (!stopValid) return
}
if(contractFormRef.value) {
const contractValid = await contractFormRef.value.validate()
if (!contractValid) return
}
// const stopValid = await contractStopFormRef.value.validate() // const stopValid = await contractStopFormRef.value.validate()
// if (!stopValid) return // if (!stopValid) return
@ -257,19 +293,49 @@ const submitForm = async () => {
// if (!contractValid) return // if (!contractValid) return
// console.log('%csrc/views/crm/contract/ContractChange.vue:247 123', 'color: #007acc;', extensionValid,123);
// return
// //
formLoading.value = true formLoading.value = true
try { try {
const data = unref(JSON.parse(JSON.stringify(formData.value))) as unknown as ContractApi.ContractVO const data = unref(JSON.parse(JSON.stringify(formData.value))) as unknown as ContractApi.ContractVO
// //
data.contractAAuthorizedCompanys = limitFormRef.value.getData() let proChangeObj = {
data.contractAAuthorizedCompanys = contractExtensionFormRef.value.getData() 1: limitFormRef,
data.contractAAuthorizedCompanys = contractStopFormRef.value.getData() 2: ContractBAuthorizedPersonFormRef,
data.contractAAuthorizedCompanys = contractFormRef.value.getData() 3: contractExtensionFormRef,
data.contractAAuthorizedCompanys = contractAAuthorizedCompanyFormRef.value.getData() 4: contractStopFormRef,
5: contractAAuthorizedCompanyFormRef1,
6: contractFormRef
}
let dataFormList = proChangeObj[formData.value.changeItem].value.getData()
data[proChangeObj[formData.value.changeItem]] = dataFormList
if(formData.value.changeItem == 1) {
data.changeAmount = dataFormList.changeAmount
data.changeAmountDeadline = dataFormList.changeAmountDeadline
} else if(formData.value.changeItem == 2) {
let ids = []
dataFormList.map(item => {
ids.push(item.id)
})
data.afterAuthorizerId = ids.join(',')
} else if(formData.value.changeItem == 3) {
data.agreementDeadline = dataFormList.agreementDeadline
data.extensionYears = dataFormList.extensionYears
data.extensionDate = dataFormList.extensionDate
data.note = dataFormList.note
} else if(formData.value.changeItem == 4) {
data.terminationDate = dataFormList.terminationDate
data.terminationReason = dataFormList.terminationReason
data.note = dataFormList.note
} else if(formData.value.changeItem == 5) {
let ids = []
dataFormList.map(item => {
ids.push(item.id)
})
data.afterAffiliateCompanyId = ids.join(',')
} else if(formData.value.changeItem == 6) {
data.newContract = data
}
data.contractId = data.id data.contractId = data.id
delete data.id delete data.id
await ContractApi.changeContract(data) await ContractApi.changeContract(data)
@ -326,6 +392,7 @@ const resetForm = () => {
partnerCompanyId: undefined, partnerCompanyId: undefined,
deptId: undefined, deptId: undefined,
quotationTimes: undefined, quotationTimes: undefined,
changeItem: 1,
products: [] products: []
} }
formRef.value?.resetFields() formRef.value?.resetFields()
@ -405,8 +472,7 @@ const getContactOptions = computed(() =>
) )
const route = useRoute(); const route = useRoute();
onBeforeMount(async () => { onMounted(async () => {
console.log('%csrc/views/crm/contract/detail/ContractChangeDetail.vue:409 props.id,route.query.id', 'color: #007acc;', props.id,route.query.id);
formType.value = props.id || route.query.id; formType.value = props.id || route.query.id;
if (formType.value) open(formType.value) if (formType.value) open(formType.value)
@ -423,6 +489,6 @@ onBeforeMount(async () => {
// formData.value.ownerUserId = useUserStore().getUser.id // formData.value.ownerUserId = useUserStore().getUser.id
// } // }
// //
contactList.value = await ContactApi.getSimpleContactList() contactList.value = await CustomerApi.getCustomerSimpleList()
}); });
</script> </script>

View File

@ -16,6 +16,23 @@
<el-input v-model="formData.name" disabled placeholder="" /> <el-input v-model="formData.name" disabled placeholder="" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="客户名称" prop="customerId">
<el-select
v-model="formData.customerId"
disabled=""
placeholder=""
class="w-1/1"
>
<el-option
v-for="item in customerList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" v-if="formType"> <el-col :span="8" v-if="formType">
<el-form-item label="合同编号" prop="no"> <el-form-item label="合同编号" prop="no">
<el-input v-model="formData.no" disabled placeholder="" /> <el-input v-model="formData.no" disabled placeholder="" />
@ -39,23 +56,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="客户名称" prop="customerId">
<el-select
v-model="formData.customerId"
disabled=""
placeholder=""
class="w-1/1"
>
<el-option
v-for="item in contactList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="方案签约人" prop="pricingUserId"> <el-form-item label="方案签约人" prop="pricingUserId">
<el-select <el-select
@ -202,11 +203,11 @@
<el-input v-model="formData.regType" placeholder="" disabled /> <el-input v-model="formData.regType" placeholder="" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <!-- <el-col :span="8"> -->
<!-- <el-form-item label="融资信息" prop="financingInfo"> <!-- <el-form-item label="融资信息" prop="financingInfo">
<el-input v-model="formData.financingInfo" placeholder="融资信息" disabled /> <el-input v-model="formData.financingInfo" placeholder="融资信息" disabled />
</el-form-item> --> </el-form-item> -->
</el-col> <!-- </el-col> -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="实缴资金" prop="actualCapital"> <el-form-item label="实缴资金" prop="actualCapital">
<el-input v-model="formData.actualCapital" placeholder="" disabled /> <el-input v-model="formData.actualCapital" placeholder="" disabled />
@ -217,11 +218,11 @@
<el-input v-model="formData.socialEmployeeNum" placeholder="" disabled /> <el-input v-model="formData.socialEmployeeNum" placeholder="" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <!-- <el-col :span="8"> -->
<!-- <el-form-item label="上市情况" prop="listingStatus"> <!-- <el-form-item label="上市情况" prop="listingStatus">
<el-input v-model="formData.listingStatus" placeholder="上市情况" disabled /> <el-input v-model="formData.listingStatus" placeholder="上市情况" disabled />
</el-form-item> --> </el-form-item> -->
</el-col> <!-- </el-col> -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="注册地址" prop="registeredAddress"> <el-form-item label="注册地址" prop="registeredAddress">
<el-input v-model="formData.registeredAddress" placeholder="" disabled /> <el-input v-model="formData.registeredAddress" placeholder="" disabled />
@ -275,7 +276,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="手机号" prop="mobile"> <el-form-item label="手机号" prop="mobile">
<el-input <el-input
v-model="formData.ownerUserMobile" v-model="formData.ownerUserMobile"
@ -301,7 +302,7 @@
disabled disabled
/> />
</el-form-item> </el-form-item>
</el-col> </el-col> -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="归属部门" prop="deptId"> <el-form-item label="归属部门" prop="deptId">
<el-tree-select <el-tree-select
@ -860,7 +861,7 @@ onMounted(async () => {
// formData.value.ownerUserId = useUserStore().getUser.id // formData.value.ownerUserId = useUserStore().getUser.id
// } // }
// //
contactList.value = await ContactApi.getSimpleContactList() contactList.value = await CustomerApi.getSelfCustomerSimpleList()
const data = await ContractApi.getOrg({ const data = await ContractApi.getOrg({
pageNo: 1, pageNo: 1,
pageSize: 1000 pageSize: 1000

View File

@ -54,7 +54,7 @@
<span v-else></span> <span v-else></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="关联的联系人编号数组" align="center" prop="contactIds" /> <!-- <el-table-column label="关联的联系人编号数组" align="center" prop="contactIds" /> -->
<el-table-column label="创建者" align="center" prop="creator" > <el-table-column label="创建者" align="center" prop="creator" >
<template #default="scope"> <template #default="scope">
{{getName(userOptions, scope.row.creator)}} {{getName(userOptions, scope.row.creator)}}
@ -79,7 +79,7 @@
:formatter="dateFormatter" :formatter="dateFormatter"
width="180px" width="180px"
/> />
<el-table-column label="操作" align="center" min-width="120px"> <el-table-column label="操作" align="center" fixed="right" min-width="120px">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link

View File

@ -173,6 +173,11 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="统一信用代码" prop="creditNo">
<el-input v-model="formData.creditCode" placeholder="" disabled />
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="开户行" prop="bankName"> <el-form-item label="开户行" prop="bankName">
<el-input v-model="formData.bankName" disabled /> <el-input v-model="formData.bankName" disabled />
@ -193,11 +198,11 @@
<el-input v-model="formData.bBusinessLicenseNumber" disabled /> <el-input v-model="formData.bBusinessLicenseNumber" disabled />
</el-form-item> </el-form-item>
</el-col> --> </el-col> -->
<el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="营业执照" prop="businessLicense"> <el-form-item label="营业执照" prop="businessLicense">
<el-input v-model="formData.businessLicense" disabled /> <el-input v-model="formData.businessLicense" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col> -->
</el-row> </el-row>

View File

@ -172,6 +172,11 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="统一信用代码" prop="creditCode">
<el-input v-model="formData.creditCode" placeholder="" disabled />
</el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="开户行" prop="bankName"> <el-form-item label="开户行" prop="bankName">
@ -594,6 +599,7 @@ const onPartnerChange = async (id: string) => {
formLoading.value = true; formLoading.value = true;
const res = await ContractApi.getOrgInfo(id); const res = await ContractApi.getOrgInfo(id);
formData.value.bankName = res.bankName; formData.value.bankName = res.bankName;
formData.value.creditCode = res.creditCode;
formData.value.bankAccount = res.bankAccount; formData.value.bankAccount = res.bankAccount;
formData.value.legalRepresentative = res.legalRepresentative; formData.value.legalRepresentative = res.legalRepresentative;
formData.value.businessLicenseNumber = res.businessLicenseNumber; formData.value.businessLicenseNumber = res.businessLicenseNumber;

View File

@ -15,171 +15,184 @@
:destroy-on-close="true" :destroy-on-close="true"
class="signNameModel" class="signNameModel"
> >
<slot> <div class="signWrap">
<div class="signWrap"> <VueSignaturePad
<VueSignaturePad width="100%"
width="100%" height="100%"
height="100%" ref="signaturePad"
ref="signaturePad" :options="options"
:options="options" />
/> <footer>
<footer> <div class="gtnGroup">
<div class="gtnGroup"> <el-button type="primary" size="mini" @click="undo"></el-button>
<el-button type="primary" size="mini" @click="undo"></el-button> <el-button type="primary" size="mini" style="margin-left:20px" @click="clear"></el-button>
<el-button type="primary" size="mini" style="margin-left:20px" @click="clear"></el-button> <el-button type="primary" size="mini" style="margin-left:20px" @click="save"></el-button>
<el-button type="primary" size="mini" style="margin-left:20px" @click="save"></el-button> </div>
<div class="otherSet">
<div class="penTxt">笔刷大小</div>
<div class="circleWrap" :class="{ active: isActive1 }" @click="selSize(1)">
<b class="b1"></b>
</div> </div>
<div class="otherSet"> <div class="circleWrap" :class="{ active: isActive2 }" @click="selSize(2)">
<div class="penTxt">笔刷大小</div> <b class="b2"></b>
<div class="circleWrap" :class="{ active: isActive1 }" @click="selSize(1)"><b class="b1"></b></div>
<div class="circleWrap" :class="{ active: isActive2 }" @click="selSize(2)"><b class="b2"></b></div>
<div class="circleWrap" :class="{ active: isActive3 }" @click="selSize(3)"><b class="b3"></b></div>
</div> </div>
</footer> <div class="circleWrap" :class="{ active: isActive3 }" @click="selSize(3)">
</div> <b class="b3"></b>
</slot> </div>
</div>
</footer>
</div>
</vxe-modal> </vxe-modal>
</div> </div>
</template> </template>
<script>
export default { <script setup lang="ts">
data(){ import { ref } from 'vue';
return { // import VueSignaturePad from 'vue-signature-pad';
panelVisible:false, // import 'vue-signature-pad/dist/vue-signature-pad.css';
panelTitle:"",
options: { const panelVisible = ref(false);
penColor: "#000", const imgSrc = ref('');
minWidth: 1, // const signaturePad = ref(null);
maxWidth: 1, // const isActive1 = ref(true);
}, const isActive2 = ref(false);
isActive1:true, const isActive3 = ref(false);
isActive2:false,
isActive3:false, const options = ref({
imgSrc:"", penColor: '#000',
} minWidth: 1,
}, maxWidth: 1,
methods: { });
//
handleClick(){ const handleClick = () => {
this.panelVisible=true; panelVisible.value = true;
this.isActive1=true; isActive1.value = true;
this.isActive2=false; isActive2.value = false;
this.isActive3=false; isActive3.value = false;
this.options = { options.value = {
penColor: "#000", penColor: '#000',
minWidth: 1, minWidth: 1,
maxWidth: 1, maxWidth: 1,
} };
}, };
//
undo(){ const undo = () => {
this.$refs.signaturePad.undoSignature(); signaturePad.value.undoSignature();
}, };
//
clear(){ const clear = () => {
this.$refs.signaturePad.clearSignature(); signaturePad.value.clearSignature();
}, };
//
save(){ const save = () => {
console.log( this.$refs.signaturePad.saveSignature() ); const { isEmpty, data } = signaturePad.value.saveSignature();
const { isEmpty, data } = this.$refs.signaturePad.saveSignature(); imgSrc.value = data;
this.imgSrc = data; panelVisible.value = false;
this.panelVisible = false; };
},
// const selSize = (val: number) => {
selSize(val){ options.value = {
this.options = { penColor: '#000',
penColor: "#000", minWidth: val,
minWidth: val, maxWidth: val,
maxWidth: val, };
}; if (val === 1) {
if(val==1){ isActive1.value = true;
this.isActive1=true; isActive2.value = false;
this.isActive2=false; isActive3.value = false;
this.isActive3=false; } else if (val === 2) {
}else if(val==2){ isActive1.value = false;
this.isActive1=false; isActive2.value = true;
this.isActive2=true; isActive3.value = false;
this.isActive3=false; } else if (val === 3) {
}else if(val==3){ isActive1.value = false;
this.isActive1=false; isActive2.value = false;
this.isActive2=false; isActive3.value = true;
this.isActive3=true;
}
}
},
} }
};
</script> </script>
<style lang="scss"> <style lang="scss">
.handwritten-name-wrap{ .handwritten-name-wrap {
.img-wrap{ .img-wrap {
width:100%; width: 100%;
height:164px; height: 164px;
margin-top:2px; margin-top: 2px;
border:1px solid #ccc; border: 1px solid #ccc;
img{ img {
width:70%; width: 70%;
height:100%; height: 100%;
} }
} }
.signWrap{ .signWrap {
height:100%; height: 100%;
display:flex; display: flex;
flex-direction:column; flex-direction: column;
justify-content:center; justify-content: center;
.signName{ .signName {
flex:1; flex: 1;
border-top:1px solid #ccc; border-top: 1px solid #ccc;
} }
footer{ footer {
height:40px; height: 40px;
border-top:1px solid #ccc; border-top: 1px solid #ccc;
display:flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
.gtnGroup{ .gtnGroup {
width:50%; width: 50%;
margin-left: 20px; margin-left: 20px;
} }
.otherSet{ .otherSet {
width:50%; width: 50%;
display:flex; display: flex;
align-items: center; align-items: center;
.penTxt{ .penTxt {
width:70px; width: 70px;
} }
.selSize{ .selSize {
width:70px; width: 70px;
} }
.el-select__caret{ .el-select__caret {
position: absolute; position: absolute;
right: -3px; right: -3px;
} }
.b1,.b2,.b3{ .b1, .b2, .b3 {
display: inline-block; display: inline-block;
background: #000; background: #000;
border-radius: 50%; border-radius: 50%;
} }
.circleWrap{ .circleWrap {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width:18px; width: 18px;
height:18px; height: 18px;
cursor:pointer; cursor: pointer;
margin-right:20px; margin-right: 20px;
}
.active {
border: 1px dashed #0074d9;
}
.b1 {
width: 4px;
height: 4px;
}
.b2 {
width: 6px;
height: 6px;
}
.b3 {
width: 8px;
height: 8px;
} }
.active{ border:1px dashed #0074d9; }
.b1{width:4px;height:4px}
.b2{width:6px;height:6px}
.b3{width:8px;height:8px}
} }
} }
} }
} }
.signNameModel{ .signNameModel {
.vxe-modal--content{ .vxe-modal--content {
padding:0 !important; padding: 0 !important;
} }
} }
</style> </style>