【招生老师】 修复# 转化完成:提交是否转化成功字段时值为null
parent
504d381eff
commit
4bb1478021
|
@ -32,6 +32,7 @@ export function apiEditRemark(params: any) {
|
||||||
export function apiEditClue(params: any) {
|
export function apiEditClue(params: any) {
|
||||||
return request.post({ url: '/clue/edit', data: params })
|
return request.post({ url: '/clue/edit', data: params })
|
||||||
}
|
}
|
||||||
|
// 电销线索列表
|
||||||
export function apiTeleClueList(params: any) {
|
export function apiTeleClueList(params: any) {
|
||||||
return request.get({ url: '/clue/telemarketingList', data: params })
|
return request.get({ url: '/clue/telemarketingList', data: params })
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="bg-[#FAFAFE]">
|
<view class="bg-[#FAFAFE]">
|
||||||
<view class="bg-white px-[32rpx]">
|
<view class="bg-white px-[32rpx]">
|
||||||
<TForm ref="tForm" :model="form" :rules="rules" errorType="toast">
|
<TForm ref="tForm" :model="form" errorType="toast">
|
||||||
<TFormItem prop="recruitTeacherName">
|
<TFormItem prop="recruitTeacherName">
|
||||||
<TInputField
|
<TInputField
|
||||||
v-model="form.recruitTeacherName"
|
v-model="form.recruitTeacherName"
|
||||||
|
@ -114,9 +114,6 @@ const form = ref({
|
||||||
isConversion: 0,
|
isConversion: 0,
|
||||||
remark: ''
|
remark: ''
|
||||||
})
|
})
|
||||||
const rules = {
|
|
||||||
isConversion: [{ required: true, message: '请选择是否转化成功' }]
|
|
||||||
}
|
|
||||||
const parseStatusText = computed(
|
const parseStatusText = computed(
|
||||||
() => optionsMap.stateOptions.find(item => item.value == form.value.state)?.label
|
() => optionsMap.stateOptions.find(item => item.value == form.value.state)?.label
|
||||||
)
|
)
|
||||||
|
@ -153,7 +150,11 @@ const handleSubmit = () => {
|
||||||
}
|
}
|
||||||
const setFormData = () => {
|
const setFormData = () => {
|
||||||
for (const key in clueDetailInfo.value) {
|
for (const key in clueDetailInfo.value) {
|
||||||
if (Object.prototype.hasOwnProperty.call(form.value, key)) {
|
if (
|
||||||
|
Object.prototype.hasOwnProperty.call(form.value, key) &&
|
||||||
|
clueDetailInfo.value[key] != null &&
|
||||||
|
clueDetailInfo.value[key] != undefined
|
||||||
|
) {
|
||||||
form.value[key] = clueDetailInfo.value[key]
|
form.value[key] = clueDetailInfo.value[key]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,7 +74,7 @@ const handleConfirm = () => {
|
||||||
await apiEditClue(form.value)
|
await apiEditClue(form.value)
|
||||||
toast('修改成功')
|
toast('修改成功')
|
||||||
uni.navigateBack()
|
uni.navigateBack()
|
||||||
uni.$emit('refreshPage')
|
uni.$emit('refreshPageList')
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,17 +59,6 @@ const labelStyle = computed(() => {
|
||||||
const handleSwitchChange = (value: number) => {
|
const handleSwitchChange = (value: number) => {
|
||||||
emit('update:modelValue', value)
|
emit('update:modelValue', value)
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(
|
|
||||||
() => props.modelValue,
|
|
||||||
val => {
|
|
||||||
innerValue.value = val
|
|
||||||
},
|
|
||||||
{
|
|
||||||
deep: true,
|
|
||||||
immediate: true
|
|
||||||
}
|
|
||||||
)
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<text>{{ item.studentName }}</text>
|
<text>{{ item.studentName }}</text>
|
||||||
<view class="flex ml-[48rpx] gap-[4rpx] items-center">
|
<view class="flex ml-[48rpx] gap-[4rpx] items-center">
|
||||||
<text class="text-primary">{{ item.phone }}</text>
|
<text class="text-primary">{{ item.phone }}</text>
|
||||||
<u-copy content="uview-plus is great !">
|
<u-copy :content="item.phone">
|
||||||
<TIcon name="icon-copy" color="#0E66FB" />
|
<TIcon name="icon-copy" color="#0E66FB" />
|
||||||
</u-copy>
|
</u-copy>
|
||||||
</view>
|
</view>
|
||||||
|
@ -24,11 +24,11 @@
|
||||||
</view>
|
</view>
|
||||||
<view class="flex gap-[20rpx]">
|
<view class="flex gap-[20rpx]">
|
||||||
<text class="text-muted w-[128rpx]">基本情况</text>
|
<text class="text-muted w-[128rpx]">基本情况</text>
|
||||||
<view class="flex gap-[4rpx] flex-1 items-end">
|
<view class="flex gap-[4rpx] flex-1 items-center">
|
||||||
<text>
|
<text>
|
||||||
{{ item.basicInformation }}
|
{{ item.basicInformation }}
|
||||||
</text>
|
</text>
|
||||||
<u-copy content="uview-plus is great !">
|
<u-copy :content="item.basicInformation !">
|
||||||
<TIcon name="icon-copy" color="#0E66FB" />
|
<TIcon name="icon-copy" color="#0E66FB" />
|
||||||
</u-copy>
|
</u-copy>
|
||||||
</view>
|
</view>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<text>{{ item.studentName }}</text>
|
<text>{{ item.studentName }}</text>
|
||||||
<view class="flex ml-[48rpx] gap-[4rpx] items-center">
|
<view class="flex ml-[48rpx] gap-[4rpx] items-center">
|
||||||
<text class="text-primary">{{ item.phone }}</text>
|
<text class="text-primary">{{ item.phone }}</text>
|
||||||
<u-copy content="uview-plus is great !">
|
<u-copy :content="item.phone">
|
||||||
<TIcon name="icon-copy" color="#0E66FB" />
|
<TIcon name="icon-copy" color="#0E66FB" />
|
||||||
</u-copy>
|
</u-copy>
|
||||||
</view>
|
</view>
|
||||||
|
@ -52,6 +52,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, PropType } from 'vue'
|
import { computed, PropType } from 'vue'
|
||||||
import { converStatusEnum, stateEnum } from '@/enums'
|
import { converStatusEnum, stateEnum } from '@/enums'
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
|
||||||
export interface IClue {
|
export interface IClue {
|
||||||
studentName: string
|
studentName: string
|
||||||
|
|
|
@ -25,8 +25,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onLoad } from '@dcloudio/uni-app'
|
import { ref, onMounted } from 'vue'
|
||||||
import { ref } from 'vue'
|
|
||||||
import { debounce } from 'lodash-es'
|
import { debounce } from 'lodash-es'
|
||||||
import clueCard from './clue-card.vue'
|
import clueCard from './clue-card.vue'
|
||||||
import { useZPaging } from '@/hooks/useZPaging'
|
import { useZPaging } from '@/hooks/useZPaging'
|
||||||
|
@ -42,11 +41,11 @@ const { paging, queryList, refresh, changeApi, setParams } = useZPaging(
|
||||||
() => {}
|
() => {}
|
||||||
)
|
)
|
||||||
const searchChange = debounce(() => {
|
const searchChange = debounce(() => {
|
||||||
refresh()
|
refresh(queryParams.value)
|
||||||
}, 300)
|
}, 300)
|
||||||
|
|
||||||
onLoad(() => {
|
onMounted(() => {
|
||||||
uni.$on('refreshPage', () => {
|
uni.$on('refreshPageList', () => {
|
||||||
refresh(queryParams.value)
|
refresh(queryParams.value)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -43,14 +43,11 @@
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useZPaging } from '@/hooks/useZPaging'
|
import { useZPaging } from '@/hooks/useZPaging'
|
||||||
import { ref } from 'vue'
|
import { ref, onMounted, shallowRef, computed } from 'vue'
|
||||||
|
import { debounce } from 'lodash-es'
|
||||||
import clueCard from '@/components/widgets/recruitsale/clue-card.vue'
|
import clueCard from '@/components/widgets/recruitsale/clue-card.vue'
|
||||||
import { shallowRef } from 'vue'
|
|
||||||
import { computed } from 'vue'
|
|
||||||
import { apiCluseList, apiEditRemark } from '@/api/clue'
|
import { apiCluseList, apiEditRemark } from '@/api/clue'
|
||||||
import { converStatusEnum } from '@/enums'
|
import { converStatusEnum } from '@/enums'
|
||||||
import { onLoad } from '@dcloudio/uni-app'
|
|
||||||
import { debounce } from 'lodash-es'
|
|
||||||
import { toast } from '@/utils/util'
|
import { toast } from '@/utils/util'
|
||||||
|
|
||||||
const tabs = shallowRef([
|
const tabs = shallowRef([
|
||||||
|
@ -97,13 +94,13 @@ const handleConfirm = async () => {
|
||||||
refresh(queryParams.value)
|
refresh(queryParams.value)
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
}
|
}
|
||||||
onLoad(() => {
|
onMounted(() => {
|
||||||
uni.$on('refreshPage', () => {
|
uni.$on('refreshPage', () => {
|
||||||
refresh(queryParams.value)
|
refresh(queryParams.value)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
const searchChange = debounce(() => {
|
const searchChange = debounce(() => {
|
||||||
refresh()
|
refresh(queryParams.value)
|
||||||
}, 300)
|
}, 300)
|
||||||
</script>
|
</script>
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
|
<TContainer>
|
||||||
<view class="pb-[24rpx]">
|
<view class="pb-[24rpx]">
|
||||||
<w-date-more :curDate="curDate" type="telesale" />
|
<w-date-more :curDate="curDate" type="telesale" />
|
||||||
<date-strip v-model="value" @change="handleDateChange" height="160rpx" />
|
<date-strip v-model="value" @change="handleDateChange" height="160rpx" />
|
||||||
<w-summary-form v-model="templateItems" @handle-confirm="handleConfirm" />
|
<w-summary-form v-model="templateItems" @handle-confirm="handleConfirm" />
|
||||||
<tabbar />
|
|
||||||
</view>
|
</view>
|
||||||
|
</TContainer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
|
@ -70,6 +70,7 @@
|
||||||
immediate: true,
|
immediate: true,
|
||||||
handler(n) {
|
handler(n) {
|
||||||
if(n !== this.inactiveValue && n !== this.activeValue) {
|
if(n !== this.inactiveValue && n !== this.activeValue) {
|
||||||
|
console.log(n, this.inactiveValue, this.activeValue);
|
||||||
error('v-model绑定的值必须为inactiveValue、activeValue二者之一')
|
error('v-model绑定的值必须为inactiveValue、activeValue二者之一')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue