开票接口对接
This commit is contained in:
parent
26e6d5b611
commit
07169ff815
@ -1,36 +1,27 @@
|
||||
<template>
|
||||
<uv-navbar
|
||||
:fixed="false"
|
||||
:title="title"
|
||||
left-arrow
|
||||
@leftClick="$onClickLeft"
|
||||
/>
|
||||
<view >
|
||||
<uv-navbar :fixed="false" :title="title" left-arrow @leftClick="$onClickLeft" />
|
||||
<view>
|
||||
<view class="set-box bg-white pb-5">
|
||||
<uv-form :model="form" ref="uForm" :rules="rules" :errorType="errorType" labelWidth="80">
|
||||
<uv-form-item label="跟进线索:" prop="name">
|
||||
<uv-form :model="form" ref="uForm" :rules="rules" :errorType="errorType" labelWidth="80">
|
||||
<uv-form-item label="跟进线索:" prop="name">
|
||||
<uv-input v-model="cluesName" border="none" disabled disabledColor="#ffffff" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="跟进状态:" prop="followStatus" @click="followShow" required>
|
||||
<uv-input v-model="followName" placeholder="选择跟进状态" disabled disabledColor="#ffffff" >
|
||||
<uv-form-item label="跟进状态:" prop="followStatus" @click="followShow" required>
|
||||
<uv-input v-model="followName" placeholder="选择跟进状态" disabled disabledColor="#ffffff">
|
||||
<template v-slot:suffix>
|
||||
<uv-icon name="arrow-right"></uv-icon>
|
||||
</template>
|
||||
</uv-input>
|
||||
</uv-form-item>
|
||||
<uv-form-item label="跟进方式:" prop="recordType" @click="selectShow" required>
|
||||
<uv-form-item label="跟进方式:" prop="recordType" @click="selectShow" required>
|
||||
<uv-input v-model="recordTypeName" disabled disabledColor="#ffffff" placeholder="选择跟进方式">
|
||||
<template v-slot:suffix>
|
||||
<uv-icon name="arrow-right"></uv-icon>
|
||||
</template>
|
||||
</uv-input>
|
||||
</uv-form-item>
|
||||
<uv-form-item :label-position="labelPosition" label="下次跟进 :" @click="createTimeShow">
|
||||
<uv-input v-model="nextTime" placeholder="选择跟进时间" disabled disabledColor="#ffffff" >
|
||||
<template v-slot:suffix>
|
||||
<uv-icon name="arrow-right"></uv-icon>
|
||||
</template>
|
||||
</uv-input>
|
||||
<uv-form-item :label-position="labelPosition" label="下次跟进 :">
|
||||
<uni-datetime-picker type="datetime" v-model="form.nextTime" />
|
||||
</uv-form-item>
|
||||
<uv-form-item required label="跟进内容:" prop="content">
|
||||
<uv-textarea v-model="form.content" placeholder="请输入跟进内容"></uv-textarea>
|
||||
@ -38,157 +29,167 @@
|
||||
</uv-form>
|
||||
<view class="mt-5" style="text-align: center;">
|
||||
<view class="mb-3">
|
||||
<uv-button @click="submit(false)" :ripple="true" color="#09b4f1" >立即提交</uv-button>
|
||||
<uv-button @click="submit(false)" :ripple="true" color="#09b4f1">立即提交</uv-button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 选择跟进方式 -->
|
||||
<uv-action-sheet :actions="selectList" ref="selectShowRef" title="请选择跟进方式" @select="recordTypeClick"></uv-action-sheet>
|
||||
<uv-action-sheet :actions="selectList" ref="selectShowRef" title="请选择跟进方式"
|
||||
@select="recordTypeClick"></uv-action-sheet>
|
||||
<!-- 选择跟进状态 -->
|
||||
<uv-action-sheet :actions="followList" ref="followStatusShowRef" title="请选择跟进状态" @select="followClick"></uv-action-sheet>
|
||||
<uv-datetime-picker ref="datetimePicker" v-model="timeValue" mode="datetime" @confirm="createTimeChange"></uv-datetime-picker>
|
||||
<uv-action-sheet :actions="followList" ref="followStatusShowRef" title="请选择跟进状态"
|
||||
@select="followClick"></uv-action-sheet>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
unref,
|
||||
computed
|
||||
} from 'vue'
|
||||
import { onLoad,onShow ,onReady} from '@dcloudio/uni-app'
|
||||
import {
|
||||
getDictData,
|
||||
createRecord
|
||||
} from '@/api/customer'
|
||||
import { formatDateTime } from '@/utils/util'
|
||||
const title = ref('添加线索跟进')
|
||||
const selectList = ref([])
|
||||
const followList = ref([])
|
||||
const followName = ref('')
|
||||
const lists = ref([])
|
||||
const content = ref('')
|
||||
const recordTypeName = ref('')
|
||||
const form = ref({
|
||||
name: '',
|
||||
nexxTime: '',
|
||||
recordType: '',
|
||||
followStatus: '',
|
||||
content: '',
|
||||
types: 'clues',
|
||||
})
|
||||
const cluesId = ref(0)
|
||||
const cluesName = ref('')
|
||||
const errorType = ref('message')
|
||||
const nextTime = ref('')
|
||||
const rules = ref({
|
||||
followStatus: [
|
||||
{
|
||||
import {
|
||||
ref,
|
||||
unref,
|
||||
computed
|
||||
} from 'vue'
|
||||
import {
|
||||
onLoad,
|
||||
onShow,
|
||||
onReady
|
||||
} from '@dcloudio/uni-app'
|
||||
import {
|
||||
getDictData,
|
||||
createRecord
|
||||
} from '@/api/customer'
|
||||
import {
|
||||
formatDateTime
|
||||
} from '@/utils/util'
|
||||
const title = ref('添加线索跟进')
|
||||
const selectList = ref([])
|
||||
const followList = ref([])
|
||||
const followName = ref('')
|
||||
const lists = ref([])
|
||||
const content = ref('')
|
||||
const recordTypeName = ref('')
|
||||
const form = ref({
|
||||
name: '',
|
||||
nextTime: '',
|
||||
recordType: '',
|
||||
followStatus: '',
|
||||
content: '',
|
||||
types: 'clues',
|
||||
})
|
||||
const cluesId = ref(0)
|
||||
const cluesName = ref('')
|
||||
const errorType = ref('message')
|
||||
const rules = ref({
|
||||
followStatus: [{
|
||||
required: true,
|
||||
message: '请选择跟进状态',
|
||||
trigger: ['change','blur']
|
||||
},
|
||||
],
|
||||
recordType: [
|
||||
{
|
||||
trigger: ['change', 'blur']
|
||||
}, ],
|
||||
recordType: [{
|
||||
required: true,
|
||||
message: '请选择跟进方式',
|
||||
trigger: ['change','blur']
|
||||
},
|
||||
],
|
||||
content: [
|
||||
{
|
||||
trigger: ['change', 'blur']
|
||||
}, ],
|
||||
content: [{
|
||||
required: true,
|
||||
message: '请填写跟进内容',
|
||||
trigger: ['change','blur']
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
onLoad((e) => {
|
||||
cluesId.value = e.cluesId
|
||||
cluesName.value = e.cluesName
|
||||
|
||||
getBaseConfig()
|
||||
})
|
||||
|
||||
const followStatusShowRef = ref()
|
||||
const followShow = () => {
|
||||
followStatusShowRef.value.open()
|
||||
}
|
||||
|
||||
const selectShowRef = ref()
|
||||
const selectShow = () => {
|
||||
selectShowRef.value.open()
|
||||
}
|
||||
|
||||
const datetimePicker = ref()
|
||||
const createTimeShow = () => {
|
||||
unref(datetimePicker).open()
|
||||
}
|
||||
|
||||
|
||||
// 获取配置字段
|
||||
const getBaseConfig = async() => {
|
||||
followList.value = await getDictData({type:'follow_status'})
|
||||
selectList.value = await getDictData({type:'follow_type'})
|
||||
}
|
||||
|
||||
// 选择跟进方式
|
||||
const recordTypeClick = (index) => {
|
||||
recordTypeName.value = index.name
|
||||
form.value.recordType = index.value
|
||||
}
|
||||
// 选择跟进状态
|
||||
const followClick = (index) => {
|
||||
followName.value = index.name
|
||||
form.value.followStatus = index.value
|
||||
}
|
||||
const createTimeChange = (e) => {
|
||||
form.value.nextTime = e.value
|
||||
nextTime.value = formatDateTime(e.value)
|
||||
}
|
||||
|
||||
|
||||
// 提交跟进
|
||||
const uForm = ref()
|
||||
const submit = (val) => {
|
||||
uForm.value.validate().then(res => {
|
||||
onSubmit()
|
||||
}).catch(errors => {
|
||||
uni.showToast({
|
||||
icon: 'error',
|
||||
title: '校验失败'
|
||||
})
|
||||
trigger: ['change', 'blur']
|
||||
}, ],
|
||||
})
|
||||
}
|
||||
// 开始提交跟进
|
||||
const onSubmit = async() => {
|
||||
form.value.typesId = cluesId.value
|
||||
form.value.content = '【'+followName.value+'】' + form.value.content
|
||||
await createRecord(form.value)
|
||||
|
||||
uni.navigateBack()
|
||||
}
|
||||
onLoad((e) => {
|
||||
cluesId.value = e.cluesId
|
||||
cluesName.value = e.cluesName
|
||||
getBaseConfig()
|
||||
})
|
||||
|
||||
const getNowTime = () => {
|
||||
// 创建一个Date对象,表示当前日期和时间
|
||||
let currentDate = new Date();
|
||||
let year = currentDate.getFullYear();
|
||||
let month = currentDate.getMonth() + 1;
|
||||
let day = currentDate.getDate();
|
||||
let hours = currentDate.getHours();
|
||||
let minutes = currentDate.getMinutes();
|
||||
let seconds = currentDate.getSeconds();
|
||||
return year + '-' + month + '-' + day + '-' + hours + '-' + minutes + '-' + seconds
|
||||
}
|
||||
|
||||
const followStatusShowRef = ref()
|
||||
const followShow = () => {
|
||||
followStatusShowRef.value.open()
|
||||
}
|
||||
|
||||
const selectShowRef = ref()
|
||||
const selectShow = () => {
|
||||
selectShowRef.value.open()
|
||||
}
|
||||
|
||||
const datetimePicker = ref()
|
||||
const createTimeShow = () => {
|
||||
unref(datetimePicker).open()
|
||||
}
|
||||
|
||||
|
||||
// 获取配置字段
|
||||
const getBaseConfig = async () => {
|
||||
followList.value = await getDictData({
|
||||
type: 'follow_status'
|
||||
})
|
||||
selectList.value = await getDictData({
|
||||
type: 'follow_type'
|
||||
})
|
||||
}
|
||||
|
||||
// 选择跟进方式
|
||||
const recordTypeClick = (index) => {
|
||||
recordTypeName.value = index.name
|
||||
form.value.recordType = index.value
|
||||
}
|
||||
// 选择跟进状态
|
||||
const followClick = (index) => {
|
||||
followName.value = index.name
|
||||
form.value.followStatus = index.value
|
||||
}
|
||||
|
||||
// 提交跟进
|
||||
const uForm = ref()
|
||||
const submit = (val) => {
|
||||
uForm.value.validate().then(res => {
|
||||
onSubmit()
|
||||
}).catch(errors => {
|
||||
uni.showToast({
|
||||
icon: 'error',
|
||||
title: '校验失败'
|
||||
})
|
||||
})
|
||||
}
|
||||
// 开始提交跟进
|
||||
const onSubmit = async () => {
|
||||
form.value.typesId = cluesId.value
|
||||
form.value.content = '【' + followName.value + '】' + form.value.content
|
||||
await createRecord(form.value)
|
||||
|
||||
uni.navigateBack()
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.set-box {
|
||||
padding: 0rpx 22rpx;
|
||||
margin-bottom: 80rpx;
|
||||
.option {
|
||||
.text {
|
||||
color: #747474;
|
||||
font-size: 26rpx;
|
||||
text-align: justify;
|
||||
padding-bottom: 15rpx;
|
||||
}
|
||||
.input-box {
|
||||
width: 200rpx;
|
||||
margin-right: 15rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.set-box {
|
||||
padding: 0rpx 22rpx;
|
||||
margin-bottom: 80rpx;
|
||||
|
||||
.option {
|
||||
.text {
|
||||
color: #747474;
|
||||
font-size: 26rpx;
|
||||
text-align: justify;
|
||||
padding-bottom: 15rpx;
|
||||
}
|
||||
|
||||
.input-box {
|
||||
width: 200rpx;
|
||||
margin-right: 15rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -332,11 +332,11 @@
|
||||
</view>
|
||||
</uv-popup>
|
||||
|
||||
<uv-datetime-picker ref="datetimePicker" v-model="timeValue" mode="date"
|
||||
<uv-datetime-picker ref="datetimePicker" v-model="form.signingDate" mode="date"
|
||||
@confirm="createTimeChange"></uv-datetime-picker>
|
||||
<uv-datetime-picker ref="datetimePicker2" v-model="timeValue2" mode="date"
|
||||
<uv-datetime-picker ref="datetimePicker2" v-model="form.startDate" mode="date"
|
||||
@confirm="createTimeChange2"></uv-datetime-picker>
|
||||
<uv-datetime-picker ref="datetimePicker3" v-model="timeValue2" mode="date"
|
||||
<uv-datetime-picker ref="datetimePicker3" v-model="form.endDate" mode="date"
|
||||
@confirm="createTimeChange3"></uv-datetime-picker>
|
||||
</view>
|
||||
</template>
|
||||
|
@ -2,100 +2,106 @@
|
||||
<uv-navbar :fixed="false" :title="title" left-arrow @leftClick="$onClickLeft" />
|
||||
<view style="overflow:hidden">
|
||||
<view class="set-box bg-white">
|
||||
<uv-alert type="warning" v-if="form.checkStatus == 1" description="发票正在审核中,不可以修改!"></uv-alert>
|
||||
<uv-alert type="warning" v-else-if="form.checkStatus == 2" description="发票已经审核通过,不可以修改,可以开具!"></uv-alert>
|
||||
<uv-form :model="form" ref="uForm" :errorType="errorType" labelPosition="top" labelWidth="130" :rules="rules">
|
||||
<uv-form-item label="选择合同:" @click="type != 'check' ? selectShow() : ''" required prop="contractName"
|
||||
v-if="form.checkStatus != 2">
|
||||
<uv-input disabledColor="#ffffff" disabled v-model="form.contractName" placeholder="选择合同">
|
||||
<uv-form-item label="选择合同:" @click="!isCheck ? selectShow() : ''" required prop="contractName">
|
||||
<uv-input :disabled="isCheck" v-model="form.contractName" placeholder="选择合同">
|
||||
<template v-slot:suffix>
|
||||
<uv-icon name="arrow-right"></uv-icon>
|
||||
</template>
|
||||
</uv-input>
|
||||
</uv-form-item>
|
||||
<uv-form-item label="开票主体:" required prop="invoiceBody" v-if="form.checkStatus != 2">
|
||||
<uv-input v-model="form.invoiceBody" :disabled="isCheck" placeholder="开票主体" />
|
||||
<uv-form-item label="计划开票日期:" required prop="invoiceDate">
|
||||
<uni-datetime-picker v-if="!isCheck" type="date" placeholder="请选择计划开票日期" :clear-icon="false"
|
||||
v-model="form.invoiceDate" />
|
||||
<uv-input v-else v-model="form.invoiceDate" :disabled="isCheck" placeholder="请输入开票内容" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="发票抬头:" prop="invoiceName" required v-if="form.checkStatus != 2">
|
||||
<uv-input v-model="form.invoiceName" :disabled="isCheck" placeholder="发票抬头" />
|
||||
<uv-form-item label="开票主体:" required prop="invoiceBody">
|
||||
<uv-input v-model="form.invoiceBody" :disabled="isCheck" placeholder="请输入开票主体" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="抬头类型:" v-if="form.checkStatus != 2">
|
||||
<uv-form-item label="发票抬头:" prop="invoiceName" required>
|
||||
<uv-input v-model="form.invoiceName" :disabled="isCheck" placeholder="请输入发票抬头" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="抬头类型:" required prop="invoiceIssue">
|
||||
<view style="margin-top: 14rpx;">
|
||||
<uv-radio-group v-model="form.invoiceIssue" required>
|
||||
<uv-radio-group v-model="form.invoiceIssue" required :disabled="isCheck">
|
||||
<uv-radio v-for="(item, index) in sexList" :key="index" :name="item.name">
|
||||
<text style="padding-right: 20rpx;">{{ item.text }}</text>
|
||||
</uv-radio>
|
||||
</uv-radio-group>
|
||||
</view>
|
||||
</uv-form-item>
|
||||
<uv-form-item label="发票类型:" v-if="form.checkStatus != 2">
|
||||
<uv-form-item label="发票类型:" required prop="invoiceType">
|
||||
<view style="margin-top: 14rpx;">
|
||||
<uv-radio-group v-model="form.invoiceType" required>
|
||||
<uv-radio-group v-model="form.invoiceType" required :disabled="isCheck">
|
||||
<uv-radio v-for="(item, index) in typeList" :key="index" :name="item.name">
|
||||
<text style="padding-right: 20rpx;">{{ item.text }}</text>
|
||||
</uv-radio>
|
||||
</uv-radio-group>
|
||||
</view>
|
||||
</uv-form-item>
|
||||
<uv-form-item label="统一社会信用代码:" v-if="form.checkStatus != 2">
|
||||
<uv-input v-model="form.registerNo" :disabled="isCheck" placeholder="统一社会信用代码" />
|
||||
<uv-form-item label="统一社会信用代码:" required prop="registerNo">
|
||||
<uv-input v-model="form.registerNo" :disabled="isCheck" placeholder="请输入统一社会信用代码" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="开户行名称:" v-if="form.checkStatus != 2">
|
||||
<uv-input v-model="form.bankName" :disabled="isCheck" placeholder="开户行名称" />
|
||||
<uv-form-item label="开票金额:" prop="amount" required>
|
||||
<uv-input type="number" v-model="form.amount" :disabled="isCheck" placeholder="请输入开票金额" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="开户账户:" v-if="form.checkStatus != 2">
|
||||
<uv-input v-model="form.bankNo" :disabled="isCheck" placeholder="开户账户" />
|
||||
<uv-form-item label="开票内容:" prop="content">
|
||||
<uv-input v-model="form.content" :disabled="isCheck" placeholder="请输入开票内容" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="开票金额:" prop="money" required>
|
||||
<uv-input type="number" v-model="form.money" :disabled="isCheck" placeholder="开票金额" />
|
||||
<uv-form-item label="开票单位地址:" prop="unitAddress">
|
||||
<uv-input v-model="form.unitAddress" :disabled="isCheck" placeholder="请输入开票单位地址" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="开票税率(%):">
|
||||
<uv-input type="number" v-model="form.taxRate" :disabled="isCheck" placeholder="开票税率" />
|
||||
<uv-form-item label="开票单位电话:" prop="unitPhone">
|
||||
<uv-input v-model="form.unitPhone" :disabled="isCheck" placeholder="请输入开票单位电话" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="开票内容:">
|
||||
<uv-input v-model="form.content" :disabled="isCheck" placeholder="开票内容" />
|
||||
<uv-form-item label="开票单位开户银行:" prop="unitBankName">
|
||||
<uv-input v-model="form.unitBankName" :disabled="isCheck" placeholder="请输入开票单位开户银行" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="接收邮箱:">
|
||||
<uv-input v-model="form.email" :disabled="isCheck" placeholder="开票时会把发票附件发送到邮箱" />
|
||||
<uv-form-item label="开票单位银行账号:" prop="unitBankNo">
|
||||
<uv-input v-model="form.unitBankNo" :disabled="isCheck" placeholder="请输入开票单位银行账号" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="收件人:">
|
||||
<uv-input v-model="form.userName" :disabled="isCheck" placeholder="如果需要邮寄请填写" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="手机:">
|
||||
<uv-input v-model="form.userPhone" :disabled="isCheck" placeholder="如果需要邮寄请填写" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="邮寄地址:">
|
||||
<uv-input v-model="form.userAddress" :disabled="isCheck" placeholder="如果需要邮寄请填写" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="审批人:" v-if="form.checkStatus != 2">
|
||||
<uv-input disabledColor="#ffffff" disabled v-model="form.flowAdminIdName" placeholder="请去审批流程里配置合同审批" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="发票附件:" v-if="form.checkStatus == 2">
|
||||
<!-- <uv-upload
|
||||
:fileList="fileList1"
|
||||
name="1"
|
||||
:maxCount="1"
|
||||
@afterRead="afterRead"
|
||||
@delete="deletePic"
|
||||
></uv-upload> -->
|
||||
<upload-file v-model="fileList" />
|
||||
</uv-form-item>
|
||||
<uv-form-item label="备注:">
|
||||
<uv-textarea v-model="form.remarks" :disabled="isCheck" placeholder="请输入备注"></uv-textarea>
|
||||
<uv-form-item label="开票单位邮箱:" prop="email">
|
||||
<uv-input v-model="form.email" :disabled="isCheck" placeholder="请输入开票单位邮箱" />
|
||||
</uv-form-item>
|
||||
<view class="container-item" style="flex-direction: column;align-items: flex-start;border-bottom: none;">
|
||||
<view class="container-item-upload">
|
||||
<view class="container-item-label">图片</view>
|
||||
</view>
|
||||
<view class="item-photo-list">
|
||||
<view class="item-photo-list-item" style="font-size: 0; position: relative;margin-bottom: 60rpx;"
|
||||
:style="{marginRight:(index+1)%3==0?'0rpx':'20rpx'}" v-for="(item, index) in imgFiles" :key="item"
|
||||
@click="replaceImage(item, index)">
|
||||
<image v-if="!isCheck" src="@/static/greyguanbi.png" mode="aspectFit" class="item-photo-list-item-close"
|
||||
@click.stop="deleteItem(item, index)"></image>
|
||||
<image v-if="!isCheck" :src="item.url" mode="" style="width: 100%; height: 100%"></image>
|
||||
</view>
|
||||
<image src="http://sys.znkjfw.com/imgs/process/uploadzp.png" mode="aspectFill" class="item-photo-list-item"
|
||||
v-if="imgFiles.length<9 && !isCheck" @click="chooseImage"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="container-item" style="flex-direction: column;align-items: flex-start;border-bottom: none;">
|
||||
<view class="container-item-upload">
|
||||
<view class="container-item-label">附件 (pdf)</view>
|
||||
</view>
|
||||
<view class="item-photo-list">
|
||||
<view class="item-photo-list-item" style="font-size: 0; position: relative;margin-bottom: 60rpx;"
|
||||
:style="{marginRight:(index+1)%3==0?'0rpx':'20rpx'}" v-for="(item, index) in pdfList" :key="item">
|
||||
<image v-if="!isCheck" src="@/static/greyguanbi.png" mode="aspectFit" class="item-photo-list-item-close"
|
||||
@click.stop="deleteFiles(item, index)"></image>
|
||||
<image v-if="!isCheck" src="http://sys.znkjfw.com/imgs/process/pdfIcon.png" mode=""
|
||||
style="width: 100%; height: 100%">
|
||||
</image>
|
||||
<view class="item-photo-list-item-name">
|
||||
{{item.name || ''}}
|
||||
</view>
|
||||
</view>
|
||||
<image v-if="!isCheck" src="http://sys.znkjfw.com/imgs/process/uploadzp.png" mode="aspectFill"
|
||||
class="item-photo-list-item" @click="chooseFiles"></image>
|
||||
</view>
|
||||
</view>
|
||||
</uv-form>
|
||||
<view class="mt-4" style="text-align: center;" v-if="!isCheck">
|
||||
<uv-button color="#09b4f1" @click="submit" v-if="form.checkStatus == 0 || form.checkStatus == 3"
|
||||
:ripple="true">确定提交</uv-button>
|
||||
<uv-button color="#09b4f1" @click="submit2" v-if="form.checkStatus == 2" :ripple="true">开具发票</uv-button>
|
||||
</view>
|
||||
<view class="mt-4 flex justify-end" style="text-align: center;" v-else>
|
||||
<view style="width: 25%;margin-right: 10rpx;">
|
||||
<uv-button color="#09b4f1" @click="submitCheck(1)">审核</uv-button>
|
||||
</view>
|
||||
<view style="width: 25%;">
|
||||
<uv-button type="error" @click="selectShow5()">拒绝</uv-button>
|
||||
</view>
|
||||
<view class="mt-4" style="text-align: center;">
|
||||
<uv-button color="#09b4f1" @click="submit" :disabled="isCheck" :ripple="true">确定提交</uv-button>
|
||||
</view>
|
||||
</view>
|
||||
<uv-popup mode="bottom" round="38" ref="selectShowRef5">
|
||||
@ -114,7 +120,6 @@
|
||||
<view style="padding: 20rpx;">
|
||||
<uv-button color="#09b4f1" @click="submitCheck(2)">确定</uv-button>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</uv-popup>
|
||||
<!-- 选择客户弹窗 -->
|
||||
@ -128,20 +133,17 @@
|
||||
<uv-icon name="close" color="#909399" size="30"></uv-icon>
|
||||
</view>
|
||||
</view>
|
||||
<uv-search margin="30rpx 20rpx" shape="square" v-model="keyword" :show-action="false" :clearabled="true"
|
||||
placeholder="输入客户名称搜索" @change="onSearch"></uv-search>
|
||||
<scroll-view scroll-y style="height: 760rpx;width: 100%;" @scrolltolower="reachBottom">
|
||||
<view class="list">
|
||||
<block v-if="customerList.length > 0">
|
||||
<view class="mb-4">
|
||||
<view class="item flex" v-for="(item,index) in customerList" :key="index" @click="onItem(item,index)">
|
||||
<view class="title">{{item.name}}</view>
|
||||
<view class="title">{{item.contractName}}</view>
|
||||
<view class="check-icon">
|
||||
<uv-icon v-if="item.checked" name="checkmark" color="#09b4f1" size="28"></uv-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<uv-load-more :status="listStatus"></uv-load-more>
|
||||
</block>
|
||||
<uv-empty text="暂无数据" v-else mode="list"></uv-empty>
|
||||
</view>
|
||||
@ -164,7 +166,7 @@
|
||||
onShow
|
||||
} from '@dcloudio/uni-app'
|
||||
import {
|
||||
getContractPage
|
||||
getListByDeptId
|
||||
} from '@/api/contract'
|
||||
import {
|
||||
invoiceCreate,
|
||||
@ -176,7 +178,9 @@
|
||||
import {
|
||||
getSimpleUserList,
|
||||
getFlowUsers,
|
||||
getSimpleUserList2
|
||||
getSimpleUserList2,
|
||||
uploadFile,
|
||||
deleteBpmFile
|
||||
} from '@/api/user'
|
||||
import AddressSelect from '@/components/AddressSelect/index.vue'
|
||||
import {
|
||||
@ -185,8 +189,6 @@
|
||||
} from '@/utils/util'
|
||||
const title = ref('申请发票')
|
||||
const labelPosition = ref('left')
|
||||
const keyword = ref('')
|
||||
const listStatus = ref('loadmore')
|
||||
const listStatus3 = ref('loadmore')
|
||||
const customerList = ref([])
|
||||
const accountName = ref('')
|
||||
@ -205,12 +207,25 @@
|
||||
const content = ref('')
|
||||
const customerName = ref('')
|
||||
const form = ref({
|
||||
invoiceIssue: 1,
|
||||
invoiceType: 1,
|
||||
contractName: '',
|
||||
invoiceBody: '',
|
||||
invoiceName: '',
|
||||
money: '',
|
||||
invoiceDate: undefined, // 开票日期
|
||||
customerName: undefined, // 客户名称
|
||||
customerId: undefined, // 客户编号
|
||||
projectId: [], // 开票项目
|
||||
invoiceBody: undefined, // 开票主体
|
||||
invoiceName: undefined, // 发票抬头
|
||||
invoiceIssue: 1, // 抬头类型 | 1企业2个人3事业单位
|
||||
invoiceType: 1, // 发票类型 | 1增值税普票2增值税专票
|
||||
registerNo: undefined, // 纳税人识别号
|
||||
amount: undefined, // 开票金额
|
||||
content: undefined, // 开票内容
|
||||
unitAddress: undefined, // 开票单位地址
|
||||
unitPhone: undefined, // 开票单位联系方式
|
||||
unitBankName: undefined, // 开票单位开户行
|
||||
unitBankNo: undefined, // 开票单位银行账号
|
||||
email: undefined, // 开票单位邮箱
|
||||
contractId: undefined, // 关联合同编号
|
||||
contractInstanceId: undefined, // 关联合同审批单编号
|
||||
fileItems: []
|
||||
})
|
||||
const timeText = ref('')
|
||||
const errorType = ref('message')
|
||||
@ -219,22 +234,32 @@
|
||||
required: true,
|
||||
message: '请选择合同',
|
||||
trigger: ['change', 'blur']
|
||||
}, ],
|
||||
}],
|
||||
invoiceDate: [{
|
||||
required: true,
|
||||
message: '请选择开票日期',
|
||||
trigger: ['change', 'blur']
|
||||
}],
|
||||
invoiceBody: [{
|
||||
required: true,
|
||||
message: '请填写开票主体',
|
||||
trigger: ['change', 'blur']
|
||||
}, ],
|
||||
}],
|
||||
invoiceName: [{
|
||||
required: true,
|
||||
message: '请填写发票抬头',
|
||||
trigger: ['change', 'blur']
|
||||
}, ],
|
||||
money: [{
|
||||
}],
|
||||
registerNo: [{
|
||||
required: true,
|
||||
message: '请填写统一社会信用代码',
|
||||
trigger: ['change', 'blur']
|
||||
}],
|
||||
amount: [{
|
||||
required: true,
|
||||
message: '请填写发票金额',
|
||||
trigger: ['change', 'blur']
|
||||
}, ],
|
||||
}],
|
||||
})
|
||||
const customerContacts = ref([])
|
||||
const userList = ref([])
|
||||
@ -262,59 +287,24 @@
|
||||
])
|
||||
const typeList = ref([{
|
||||
name: 1,
|
||||
text: '增值税普票',
|
||||
text: '普票',
|
||||
},
|
||||
{
|
||||
name: 2,
|
||||
text: '增值税专票',
|
||||
text: '专票',
|
||||
},
|
||||
])
|
||||
const fileList = ref([])
|
||||
|
||||
onLoad((e) => {
|
||||
if (e.type) {
|
||||
type.value = e.type
|
||||
}
|
||||
if (type.value == 'check') {
|
||||
isCheck.value = true
|
||||
title.value = '审核发票'
|
||||
contractId.value = e.id
|
||||
getContractInfo()
|
||||
}
|
||||
if (type.value == "edit") {
|
||||
title.value = '编辑发票'
|
||||
contractId.value = e.id
|
||||
getContractInfo()
|
||||
}
|
||||
type.value = e.type
|
||||
getCustomerList()
|
||||
getFlowUsersList()
|
||||
})
|
||||
|
||||
onShow(() => {
|
||||
|
||||
})
|
||||
|
||||
const getFlowUsersList = async () => {
|
||||
let data = await getFlowUsers({
|
||||
flowType: 'invoice'
|
||||
})
|
||||
let users = await getSimpleUserList2()
|
||||
let userIdArr = []
|
||||
let userArr = []
|
||||
for (var i = 0; i <= data.length; i++) {
|
||||
users.forEach((item, index) => {
|
||||
if (data[i] == item.id) {
|
||||
userIdArr.push(item.id)
|
||||
userArr.push(item.nickname)
|
||||
}
|
||||
})
|
||||
if (type.value == 'detail') {
|
||||
isCheck.value = true
|
||||
title.value = '发票详情'
|
||||
contractId.value = e.id
|
||||
getContractInfo()
|
||||
}
|
||||
|
||||
form.value.flowAdminIdName = userArr.join(',')
|
||||
form.value.flowAdminId = userIdArr
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
const getNumber = async () => {
|
||||
form.value.number = await getCode()
|
||||
@ -328,96 +318,53 @@
|
||||
unref(selectShowRef).close()
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 获取商机数据详情
|
||||
const getContractInfo = async () => {
|
||||
form.value = await getInvoice({
|
||||
id: contractId.value
|
||||
})
|
||||
form.value.flowAdminId = form.value.flowAdminId2
|
||||
}
|
||||
// 搜索
|
||||
const onSearch = () => {
|
||||
page.value = 1
|
||||
lastPage.value = false
|
||||
getCustomerList()
|
||||
}
|
||||
form.value.invoiceDate = form.value.invoiceDate.join("-")
|
||||
|
||||
if (form.value.fileItems.length) {
|
||||
form.value.fileItems.forEach(item => {
|
||||
if (getFileType(item.name) == 'image') {
|
||||
imgFiles.value.push(item)
|
||||
}
|
||||
if (getFileType(item.name) == 'pdf') {
|
||||
pdfList.value.push(item)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const getCustomerList = async (isNextPage, pages) => {
|
||||
await getContractPage({
|
||||
pageNo: page.value,
|
||||
pageSize: pageSize.value,
|
||||
relation: 'my',
|
||||
name: keyword.value,
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
// 不够一页
|
||||
if (res.list.length < 10) {
|
||||
listStatus.value = 'nomore'
|
||||
}
|
||||
// 最后一页
|
||||
if (res.list.length == 0) {
|
||||
lastPage.value = true
|
||||
}
|
||||
// 第二页开始
|
||||
if (isNextPage) {
|
||||
customerList.value = customerList.value.concat(res.list)
|
||||
return
|
||||
}
|
||||
customerList.value = res.list
|
||||
|
||||
if (form.value.customerId) {
|
||||
customerList.value.forEach((item, index) => {
|
||||
if (form.value.customerId == item.id) {
|
||||
item.checked = true
|
||||
customerName.value = item.name
|
||||
} else {
|
||||
item.checked = false
|
||||
}
|
||||
})
|
||||
}
|
||||
customerList.value.forEach(item => {
|
||||
if (item.id == form.value.contractId) {
|
||||
form.value.contractName = item.contractName
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 滚动到底部加载更多
|
||||
const reachBottom = () => {
|
||||
if (lastPage.value || listStatus.value == 'loading') return
|
||||
listStatus.value = 'loading'
|
||||
setTimeout(() => {
|
||||
getCustomerList(true, ++page.value)
|
||||
if (customerList.value.length >= 10) {
|
||||
listStatus.value = 'loadmore';
|
||||
} else {
|
||||
listStatus.values = 'loading';
|
||||
}
|
||||
}, 1200)
|
||||
//获取合同
|
||||
const getCustomerList = async () => {
|
||||
await getListByDeptId().then(res => {
|
||||
customerList.value = res
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 选择客户
|
||||
const onItem = async (val, i) => {
|
||||
customerList.value.forEach((item, index) => {
|
||||
if (val.id == item.id) {
|
||||
item.checked = true
|
||||
val.name = val.name ? val.name : item.name;
|
||||
} else {
|
||||
item.checked = false
|
||||
}
|
||||
})
|
||||
form.value.contractId = val.id
|
||||
form.value.invoiceBody = val.customerName
|
||||
form.value.invoiceName = val.customerName
|
||||
//customerId.value = val.id
|
||||
form.value.contractName = val.name ? val.name : ''
|
||||
form.value.contractName = val.contractName
|
||||
form.value.contractInstanceId = val.processInstanceId
|
||||
selectShowClose()
|
||||
}
|
||||
|
||||
|
||||
|
||||
const selectShowRef5 = ref()
|
||||
const selectShow5 = async () => {
|
||||
unref(selectShowRef5).open()
|
||||
@ -426,15 +373,12 @@
|
||||
unref(selectShowRef5).close()
|
||||
}
|
||||
|
||||
|
||||
|
||||
const submitCheck = async (type) => {
|
||||
if (type == 2 && form2.value.remark == '') {
|
||||
uni.showToast({
|
||||
icon: 'error',
|
||||
title: '请填写驳回理由'
|
||||
})
|
||||
|
||||
return
|
||||
}
|
||||
form2.value.id = contractId.value
|
||||
@ -452,34 +396,6 @@
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
const submit2 = async () => {
|
||||
console.log('fileList:', fileList.value)
|
||||
if (fileList.value.length == 0) {
|
||||
uni.showToast({
|
||||
icon: 'error',
|
||||
title: '请上传发票附件'
|
||||
})
|
||||
|
||||
return
|
||||
}
|
||||
let fileArr = []
|
||||
fileList.value.forEach((item, index) => {
|
||||
fileArr.push(item.url)
|
||||
})
|
||||
const files = fileArr.join(",")
|
||||
form.value.files = files
|
||||
await invoiceIssue(form.value)
|
||||
uni.showToast({
|
||||
title: '开具成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
prePage().$vm.isRefresh = true
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 1000);
|
||||
|
||||
}
|
||||
|
||||
// 提交跟进
|
||||
const uForm = ref()
|
||||
@ -489,57 +405,145 @@
|
||||
icon: 'error',
|
||||
title: '请选择合同'
|
||||
})
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
uForm.value.validate().then(res => {
|
||||
onSubmit()
|
||||
}).catch(errors => {
|
||||
uni.showToast({
|
||||
icon: 'error',
|
||||
title: '校验失败'
|
||||
title: '请完善发票信息'
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 修确认提交
|
||||
const onSubmit = async () => {
|
||||
if (type.value == 'add') {
|
||||
await invoiceCreate(form.value)
|
||||
await invoiceCreate(form.value)
|
||||
uni.showToast({
|
||||
title: '申请成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
prePage().$vm.isRefresh = true
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
uni.showToast({
|
||||
title: '申请成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
prePage().$vm.isRefresh = true
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 1000);
|
||||
} else {
|
||||
await invoiceUpdate(form.value)
|
||||
uni.showToast({
|
||||
title: '修改成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
prePage().$vm.isRefresh = true
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
// 附件上传相关
|
||||
const imgFiles = ref([]) //图片列表
|
||||
const pdfList = ref([]) //pdf列表
|
||||
//删除文件
|
||||
const deleteFiles = (val, i) => {
|
||||
deleteBpmFile({
|
||||
url: val.url
|
||||
}).then(res => {
|
||||
pdfList.value.splice(i, 1)
|
||||
})
|
||||
}
|
||||
//上传
|
||||
const uploadFileApi = (url) => {
|
||||
return new Promise((reslove, reject) => {
|
||||
uploadFile(url, true)
|
||||
.then((res) => {
|
||||
console.log(res, 'success')
|
||||
reslove(res);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err, 'err')
|
||||
reject(err);
|
||||
});
|
||||
});
|
||||
}
|
||||
//获取文件后缀名
|
||||
const getExtension = (fileName) => {
|
||||
let arr = fileName.split('.');
|
||||
return arr[arr.length - 1];
|
||||
}
|
||||
//选择图片
|
||||
const chooseImage = () => {
|
||||
uni.chooseImage({
|
||||
count: 9 - imgFiles.value.length, //默认9
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album', 'camera'], //从相册选择
|
||||
success: (res) => {
|
||||
let promise = Promise.resolve();
|
||||
let arr = [];
|
||||
uni.showLoading({
|
||||
title: '上传中'
|
||||
})
|
||||
|
||||
res.tempFilePaths.forEach((item) => {
|
||||
promise = promise.then(() => uploadFileApi(item));
|
||||
promise
|
||||
.then((ress) => {
|
||||
arr.push(1)
|
||||
imgFiles.value.push({
|
||||
name: ress.name,
|
||||
url: ress.url
|
||||
})
|
||||
if (arr.length >= res.tempFilePaths.length) {
|
||||
uni.hideLoading()
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
uni.hideLoading()
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
//上传文件 pdf
|
||||
const chooseFiles = () => {
|
||||
wx.chooseMessageFile({
|
||||
count: 9 - pdfList.value.length, //默认100
|
||||
extension: ['pdf', '.pdf'],
|
||||
success: (res) => {
|
||||
let isUploadFile = true
|
||||
res.tempFiles.forEach(item => {
|
||||
if (getExtension(item.name) != 'pdf') {
|
||||
isUploadFile = false
|
||||
}
|
||||
})
|
||||
if (!isUploadFile) {
|
||||
uni.showToast({
|
||||
title: '请您上传pdf格式文件',
|
||||
});
|
||||
return
|
||||
}
|
||||
let promise = Promise.resolve();
|
||||
let arr = [];
|
||||
uni.showLoading({
|
||||
title: '上传中'
|
||||
})
|
||||
|
||||
res.tempFiles.forEach((item) => {
|
||||
promise = promise.then(() => uploadFileApi(item.path));
|
||||
promise
|
||||
.then((ress) => {
|
||||
arr.push(1)
|
||||
pdfList.value.push({
|
||||
name: ress.name,
|
||||
url: ress.url
|
||||
})
|
||||
if (arr.length >= res.tempFilePaths.length) {
|
||||
uni.hideLoading()
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
uni.hideLoading()
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.set-box {
|
||||
padding: 0rpx 22rpx 20rpx 34rpx;
|
||||
margin-bottom: 80rpx;
|
||||
padding: 0rpx 22rpx 50rpx 34rpx;
|
||||
|
||||
.list {
|
||||
margin: 40rpx 15rpx 60rpx;
|
||||
@ -590,6 +594,8 @@
|
||||
}
|
||||
|
||||
.popup-content {
|
||||
width: 750rpx;
|
||||
|
||||
.popup-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@ -629,4 +635,69 @@
|
||||
padding: 28rpx 10rpx 45rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.container-item {
|
||||
width: 100%;
|
||||
padding: 25rpx 0;
|
||||
border-bottom: 1rpx solid #e8e8e8;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.container-item-label {
|
||||
flex-shrink: 0;
|
||||
color: #020202;
|
||||
font-weight: 400;
|
||||
font-face: PingFang SC;
|
||||
font-size: 30rpx;
|
||||
margin-right: 15rpx;
|
||||
}
|
||||
|
||||
.item-photo-list {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding: 0 30rpx;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.item-photo-list-item-name {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: -40rpx;
|
||||
font-size: 22rpx;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
/* 确保超出容器的文本被裁剪 */
|
||||
white-space: nowrap;
|
||||
/* 确保文本在一行内显示 */
|
||||
text-overflow: ellipsis;
|
||||
/* 超出部分显示为省略号 */
|
||||
}
|
||||
|
||||
.item-photo-list-item-close {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
position: absolute;
|
||||
right: -20rpx;
|
||||
top: -20rpx;
|
||||
}
|
||||
|
||||
.item-photo-list-item {
|
||||
width: 180rpx;
|
||||
height: 180rpx;
|
||||
flex-shrink: 0;
|
||||
border: 2rpx solid #e5e5e5;
|
||||
border-radius: 10rpx;
|
||||
margin-bottom: 20rpx;
|
||||
/* margin-right: 20rpx; */
|
||||
}
|
||||
|
||||
.container-item-upload {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
@ -18,7 +18,7 @@
|
||||
@scrolltolower="reachBottom">
|
||||
<view class="page-box">
|
||||
<block v-if="dataList.length > 0">
|
||||
<view class="client" v-for="(items, index) in dataList" :key="index" @click="onItem(items.id)">
|
||||
<view class="client" v-for="(items, index) in dataList" :key="index">
|
||||
<view class="top">
|
||||
<view class="left uv-line-1">
|
||||
<view class="store uv-line-1">{{items.invoiceName}}</view>
|
||||
@ -39,11 +39,8 @@
|
||||
<view class="bottom">
|
||||
<view class="client_time">¥{{items.amount}}</view>
|
||||
<view class="flex">
|
||||
<block v-if="items.isCheck">
|
||||
<view class="btn ml-1 entity" @click.stop="onCheck(items.id)">审核</view>
|
||||
</block>
|
||||
<block v-else-if="items.checkStatus == 2">
|
||||
<view class="btn ml-1 primary" @click.stop="onCheck(items.id,'look')">开具</view>
|
||||
<block>
|
||||
<view class="btn ml-1 primary" @click="onCheck(items.id)">详情</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
@ -140,16 +137,10 @@
|
||||
}
|
||||
|
||||
// 审核
|
||||
const onCheck = (id, type) => {
|
||||
if (type == 'look') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/components/pages/invoice/add?id=' + id + '&type=edit'
|
||||
});
|
||||
} else {
|
||||
uni.navigateTo({
|
||||
url: '/pages/components/pages/invoice/add?id=' + id + '&type=check'
|
||||
});
|
||||
}
|
||||
const onCheck = (id) => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/components/pages/invoice/add?id=' + id + '&type=detail'
|
||||
});
|
||||
}
|
||||
|
||||
const handleSelect = (key) => {
|
||||
@ -228,12 +219,6 @@
|
||||
getList()
|
||||
}
|
||||
|
||||
const onItem = (val) => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/components/pages/invoice/add?id=' + val + '&type=edit'
|
||||
});
|
||||
}
|
||||
|
||||
// 添加
|
||||
const onAdd = () => {
|
||||
uni.navigateTo({
|
||||
@ -324,10 +309,6 @@
|
||||
color: $uv-info-dark;
|
||||
}
|
||||
|
||||
.entity {
|
||||
color: #fff;
|
||||
background-color: #FF6146;
|
||||
}
|
||||
|
||||
.primary {
|
||||
color: #FFF;
|
||||
|
Loading…
Reference in New Issue
Block a user