Commit 28d6f871 by liuliufashi

push

parent 43f55f51
...@@ -124,17 +124,23 @@ export const onfindWX = async(uid:any)=>{ ...@@ -124,17 +124,23 @@ export const onfindWX = async(uid:any)=>{
method:'post', method:'post',
}); });
} }
export const onSelectGoods = async(uid:any)=>{ export const onSelectGoods = async(data:any)=>{
return await request({ return await request({
url: `/goods/select?uid=${uid}`, url: `/goods/select?uid=${data.uid}&page=${data.page}&size=${data.size}&strtus=${data.strtus}`,
method:'post', method:'post',
}); });
} }
export const onFindbyLikeName = async(params:any)=>{
return await request({
url: `/goods/findbylikename?uid=${params.uid}&name=${params.name}&page=${params.page}&size=${params.size}`,
method:'post',
});
}
export const onfindby = async(params:any)=>{ export const onfindby = async(params:any)=>{
return await request({ return await request({
url: `/goods/findgoodspays?uid=${params.uid}&name=${params.name}&status=${params.status}`, url: `/goods/findgoodspays?uid=${params.uid}&name=${params.name}&status=${params.status}&page=${params.page}&size=${params.size}`,
method:'post', method:'post',
}); });
} }
......
...@@ -57,7 +57,7 @@ const routes: Array<RouteRecordRaw> = [ ...@@ -57,7 +57,7 @@ const routes: Array<RouteRecordRaw> = [
path: '/home/payinfo', path: '/home/payinfo',
name: '订单详情', name: '订单详情',
meta:{ meta:{
icon:'icon-fencengpeizhi' icon:'icon-gouwuchekong'
}, },
component: ()=>import('@/views/pay-info/index.vue') component: ()=>import('@/views/pay-info/index.vue')
}, },
......
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
</div> </div>
</a-form-item> </a-form-item>
<a-form-item name="price" :wrapper-col="{ offset: 0, span: 2 }" label="商品售价" <a-form-item name="price" :wrapper-col="{ offset: 0, span: 2 }" label="商品售价"
:rules="[{ required: true, message: '请输入输入价格' }]" labelAlign="left" :label-col="{ span: 2 }"> labelAlign="left" :label-col="{ span: 2 }">
<div> <div>
<a-radio-group v-model:value="value" @change="onSelectPlain"> <a-radio-group v-model:value="value" @change="onSelectPlain">
<a-radio value="0">免费</a-radio> <a-radio value="0">免费</a-radio>
...@@ -288,7 +288,9 @@ const onEdithandleChange = (info: any) => { ...@@ -288,7 +288,9 @@ const onEdithandleChange = (info: any) => {
} }
}; };
const onSelectPlain = (e: any) => { const onSelectPlain = (e: any) => {
if(e.target.value == '0'){
formState.price = "1" formState.price = "1"
}
value.value = e.target.value; value.value = e.target.value;
}; };
......
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
<a-form-item label="选择商品:" labelAlign="left" :wrapper-col="{ offset: 0, span: 8 }" name="sub" :rules="rulesRef.sub" <a-form-item label="选择商品:" labelAlign="left" :wrapper-col="{ offset: 0, span: 8 }" name="sub" :rules="rulesRef.sub"
:label-col="{ span: 2 }"> :label-col="{ span: 2 }">
<div style="width:100%;display: flex;align-items: center;"> <div style="width:100%;display: flex;align-items: center;">
<a-select v-model:value="formState.sub" mode="multiple" style="width: 100%" placeholder="请选择商品" @change="handleChanges"> <a-select v-model:value="formState.sub" mode="multiple" style="width: 100%" placeholder="请选择商品" @focus="handleChanges" @search="handleChanges" @select="onSelect" @popupScroll="popupScroll">
<a-select-option v-for="item in optionss" :itemKey="item" :value="item.goodsid" :label="item.goodsid"> <a-select-option v-for="item in optionss" :itemKey="item" :value="item.goodsid" :label="item.goodsid">
{{item.subject}} {{item.subject}}
</a-select-option> </a-select-option>
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
</div> </div>
</a-form-item> </a-form-item>
<a-form-item name="price" labelAlign="left" :wrapper-col="{ offset: 0, span: 2 }" label="商品售价" <a-form-item name="price" labelAlign="left" :wrapper-col="{ offset: 0, span: 2 }" label="商品售价"
:rules="[{ required: true, message: '请输入输入价格' }]" :label-col="{ span: 2 }"> :label-col="{ span: 2 }">
<div> <div>
<a-radio-group v-model:value="value" @change="onSelectPlain"> <a-radio-group v-model:value="value" @change="onSelectPlain">
<a-radio value="0">免费</a-radio> <a-radio value="0">免费</a-radio>
...@@ -103,7 +103,7 @@ import { message, UploadProps, Upload } from "ant-design-vue"; ...@@ -103,7 +103,7 @@ import { message, UploadProps, Upload } from "ant-design-vue";
import { Form } from 'ant-design-vue'; import { Form } from 'ant-design-vue';
import { QuillEditor } from '@vueup/vue-quill' import { QuillEditor } from '@vueup/vue-quill'
import '@vueup/vue-quill/dist/vue-quill.snow.css'; import '@vueup/vue-quill/dist/vue-quill.snow.css';
import { onCreateGoods, onSelectGoods } from '@/api/index' import { onCreateGoods, onFindbyLikeName } from '@/api/index'
import { getUid } from "@/utils/userInfo"; import { getUid } from "@/utils/userInfo";
const useForm = Form.useForm; const useForm = Form.useForm;
const upImage = ref<any>(null) const upImage = ref<any>(null)
...@@ -233,30 +233,14 @@ const rulesRef = reactive({ ...@@ -233,30 +233,14 @@ const rulesRef = reactive({
message: '请输入商品简介!', message: '请输入商品简介!',
}, },
], ],
body: [
{
required: true,
message: '请输入商品详情!',
},
],
picurl: [ picurl: [
{ {
validateOnRuleChange: true, validateOnRuleChange: true,
message: '请上传商品示图!', message: '请上传商品示图!',
}, },
], ],
markingprice: [
{
required: true,
message: '请输入划线价格',
},
],
price: [
{
required: true,
message: '请输入售卖价格',
},
],
sub: [ sub: [
{ {
required: true, required: true,
...@@ -293,21 +277,39 @@ const handleChange = (info: any) => { ...@@ -293,21 +277,39 @@ const handleChange = (info: any) => {
fileList.value = resFileList; fileList.value = resFileList;
}; };
const onSelectPlain = (e: any) => { const onSelectPlain = (e: any) => {
formState.price = "0" if(e.target.value == '0'){
formState.price = "1"
}
// free 0 // free 0
value.value = e.target.value; value.value = e.target.value;
}; };
const handleChanges = (value: string) => { const handleChanges = async(value: string) => {
console.log(`selected ${value}`); const uid = getUid();
const params = {
name: '',
size:10,
page:1,
uid,
};
const data = await onFindbyLikeName(params);
optionss.value = data.data.goods
}; };
const onSelect =(value:any, option:any)=>{
console.log(value,option,'option');
console.log(formState.sub,'formState');
}
const beforeUpload: UploadProps['beforeUpload'] = file => { const beforeUpload: UploadProps['beforeUpload'] = file => {
if (!(file.type.includes('png') || file.type.includes('jpeg') || file.type.includes('jpg'))) { if (!(file.type.includes('png') || file.type.includes('jpeg') || file.type.includes('jpg'))) {
message.error(`${file.name}不是png/jpef/jpg格式`); message.error(`${file.name}不是png/jpef/jpg格式`);
return Upload.LIST_IGNORE; return Upload.LIST_IGNORE;
} }
}; };
const popupScroll =()=>{
console.log(1);
}
const onSubmit = () => { const onSubmit = () => {
validate() validate()
.then(async () => { .then(async () => {
...@@ -322,7 +324,8 @@ const onSubmit = () => { ...@@ -322,7 +324,8 @@ const onSubmit = () => {
parent: 1, parent: 1,
markingprice:fromData.markingprice*100, markingprice:fromData.markingprice*100,
price:fromData.price*100, price:fromData.price*100,
picurl:fromData.picurl picurl:fromData.picurl,
sub:fromData.sub
} }
const data: any = await onCreateGoods(JSON.stringify(prarms)) const data: any = await onCreateGoods(JSON.stringify(prarms))
if (data.state === 1) { if (data.state === 1) {
...@@ -372,42 +375,38 @@ watch(isEditfileList, (newVal:any) => { ...@@ -372,42 +375,38 @@ watch(isEditfileList, (newVal:any) => {
formState.body = str formState.body = str
} }
}) })
onMounted(async () => {
const uid = getUid()
const data = await onSelectGoods(uid)
optionss.value = data.data
return options
})
defineExpose({ defineExpose({
optionss,
plainOptions,
value,
crossedPrice,
sellingPrice,
textarea,
optionsEdit,
formState, formState,
upImage, upImage,
onFinish, previewTitle,
onFinishFailed, options,
content,
previewVisible, previewVisible,
previewImage, previewImage,
fileList, fileList,
onFinish,
onFinishFailed,
handleCancel, handleCancel,
handlePreview, handlePreview,
previewTitle,
options,
content,
handleChange, handleChange,
plainOptions,
value,
onSelectPlain, onSelectPlain,
crossedPrice,
sellingPrice,
onSubmit, onSubmit,
handleChanges, handleChanges,
optionss,
beforeUpload, beforeUpload,
textarea,
optionsEdit,
textChange, textChange,
onEditorFocus, onEditorFocus,
onEditorBlur, onEditorBlur,
onEditorChange onEditorChange,
popupScroll
}); });
</script> </script>
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
@click="goNewPage(item)" @click="goNewPage(item)"
> >
<div style="display: flex; align-items: center" > <div style="display: flex; align-items: center" >
<i :class="getText(item)" style="font-size:30px;"> </i> <i :class="getText(item)" style="font-size:24px; padding: 5px;"> </i>
<span class="nav-text" >{{ item.name }}</span> <span class="nav-text" >{{ item.name }}</span>
</div> </div>
</a-menu-item> </a-menu-item>
......
...@@ -53,7 +53,8 @@ ...@@ -53,7 +53,8 @@
style=" style="
margin-left: 20px; margin-left: 20px;
width: 350px; width: 350px;
height: 50px; margin-top: 10px;
height: 35px;
border: blueviolet; border: blueviolet;
" "
:loading="loading" :loading="loading"
......
...@@ -6,19 +6,16 @@ ...@@ -6,19 +6,16 @@
<a-form-item label="选择商品" name="subject" :rules="rulesRef.subject" :label-col="{ span: 2 }" <a-form-item label="选择商品" name="subject" :rules="rulesRef.subject" :label-col="{ span: 2 }"
labelAlign="left"> labelAlign="left">
<div style="width:100%;display: flex;align-items: center;"> <div style="width:100%;display: flex;align-items: center;">
<a-select <a-select v-model:value="formState.subject" :default-active-first-option="false" mode="multiple" style="width: 100%" placeholder="请选择商品" @focus="onSubSearch" @search="onSubSearch" @select="onSelectss" @popupScroll="popupScroll">
v-model:value="formState.subject" <a-select-option v-for="item,index in optionss" :itemKey="item" :value="item.goodsid" :label="index" >
style="width: 100%" {{item.subject}}
:options="optionss.map((item:any,index:number) => ({ value: item.goodsid, label: item.subject,index:index }))" </a-select-option>
@change="onSelectss"
>
</a-select> </a-select>
</div> </div>
</a-form-item> </a-form-item>
<a-form-item label="项目描述" name="shortname" :label-col="{ span: 2 }" labelAlign="left" <a-form-item label="项目描述" name="shortname" :label-col="{ span: 2 }" labelAlign="left"
:rules="rulesRef.shortname"> :rules="rulesRef.shortname">
<a-input v-model:value="formState.shortname" placeholder="请输入商品描述" /> <a-input v-model:value="formState.shortname" placeholder="请输入商品描述" :disabled="true" />
</a-form-item> </a-form-item>
<a-form-item label="支付金额" name="price" :label-col="{ span: 2 }" labelAlign="left"> <a-form-item label="支付金额" name="price" :label-col="{ span: 2 }" labelAlign="left">
<a-radio-group v-model:value="formState.paymentmodel" name="radioGroup" class="pay"> <a-radio-group v-model:value="formState.paymentmodel" name="radioGroup" class="pay">
...@@ -96,12 +93,12 @@ ...@@ -96,12 +93,12 @@
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { reactive, ref, defineEmits, defineExpose, toRaw, onMounted, watch,toRefs } from "vue"; import { reactive, ref, defineEmits, defineExpose, toRaw, watch,toRefs } from "vue";
import dayjs, { Dayjs } from 'dayjs'; import dayjs, { Dayjs } from 'dayjs';
import locale from 'ant-design-vue/es/date-picker/locale/zh_CN'; import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';
import { message} from "ant-design-vue"; import { message} from "ant-design-vue";
import { Form } from 'ant-design-vue'; import { Form } from 'ant-design-vue';
import { onSelectGoods,onCreateGoodsPay,onfindWX,onfindAli } from '@/api/index' import { onCreateGoodsPay,onfindWX,onfindAli,onFindbyLikeName } from '@/api/index'
import { getUid } from "@/utils/userInfo"; import { getUid } from "@/utils/userInfo";
import moment from 'moment'; import moment from 'moment';
const useForm = Form.useForm; const useForm = Form.useForm;
...@@ -116,10 +113,21 @@ interface FormState { ...@@ -116,10 +113,21 @@ interface FormState {
fullphone:boolean, fullphone:boolean,
remark:string, remark:string,
} }
let formState = ref<FormState>({
subject: [],
shortname: '',
payment: '',
paymentmodel: '0',
checked:false,
starttime:'',
expireendtime:'',
fullphone:false,
remark:''
});
const visible = ref<boolean>(false); const visible = ref<boolean>(false);
const list = ref<any>([]) const list = ref<any>([])
const optionss = ref<any>([]) const optionss = ref<any>([])
let goodspayditch = ref([]) let goodspayditch = ref<any>([])
const props = defineProps(); const props = defineProps();
const dateFormat = 'YYYY/MM/DD'; const dateFormat = 'YYYY/MM/DD';
const endvalue = ref<Dayjs>(dayjs('10:00', 'HH:mm')); const endvalue = ref<Dayjs>(dayjs('10:00', 'HH:mm'));
...@@ -131,20 +139,13 @@ const optionsWithDisabled = [ ...@@ -131,20 +139,13 @@ const optionsWithDisabled = [
]; ];
const checkboxValue = ref<any>([]) const checkboxValue = ref<any>([])
const onSelectss =(value:any, option:any)=>{ const onSelectss =(value:any, option:any)=>{
formState.subject = option formState.value = {
...option.itemKey
}
formState.value.paymentmodel = formState.value.paymentmodel+''
} }
const emit = defineEmits(['onBack']); const emit = defineEmits(['onBack']);
const formState = reactive<FormState>({
subject: [],
shortname: '',
payment: '',
paymentmodel: '0',
checked:false,
starttime:'',
expireendtime:'',
fullphone:false,
remark:''
});
let price = ref(0) let price = ref(0)
let priceSet = ref(0) let priceSet = ref(0)
const modalvalue = ref<any>('0') const modalvalue = ref<any>('0')
...@@ -173,20 +174,20 @@ const onSubmit = () => { ...@@ -173,20 +174,20 @@ const onSubmit = () => {
validate() validate()
.then(async (res) => { .then(async (res) => {
const uid =getUid() const uid =getUid()
const expireendtime = (moment(toRaw(formState).expireendtime.$d).format('YYYY-MM-DD'))+(moment(endvalue.value.$d).format('THH:mm:[00][Z]')) const expireendtime = (moment(toRaw(formState.value).expireendtime.$d).format('YYYY-MM-DD'))+(moment(endvalue.value.$d).format('THH:mm:[00][Z]'))
goodspayditch.value.map((item:any)=>{return item.goodsid = toRaw(formState).subject.value}) goodspayditch.value.map((item:any)=>{return item.goodsid = toRaw(formState.value).goodsid})
const prarms = { const prarms = {
subject:toRaw(formState).subject.label, subject:toRaw(formState.value).subject,
shortname:toRaw(formState).shortname, shortname:toRaw(formState.value).shortname,
paymentmodel:toRaw(formState).paymentmodel, paymentmodel:toRaw(formState.value).paymentmodel,
fullphone:toRaw(formState).paymentmodel?0:1, fullphone:toRaw(formState.value).paymentmodel?1:0,
expireendtime:expireendtime, expireendtime:expireendtime,
starttime: moment(new Date()).format('YYYY-MM-DDTHH:mm:[00][Z]'), starttime: moment(new Date()).format('YYYY-MM-DDTHH:mm:[00][Z]'),
goodsid: toRaw(formState).subject.value, goodsid: toRaw(formState.value).goodsid,
goodspayditch:goodspayditch.value, goodspayditch:goodspayditch.value,
payment:formState.paymentmodel == '1'?price.value*100:priceSet.value*100, payment:formState.value.paymentmodel == '1'?price.value*100:priceSet.value*100,
uid, uid,
remark:toRaw(formState).remark remark:toRaw(formState.value).remark
} }
const data:any = await onCreateGoodsPay(prarms) const data:any = await onCreateGoodsPay(prarms)
if(data.state === 1){ if(data.state === 1){
...@@ -221,7 +222,22 @@ const onSet = async(index:string)=>{ ...@@ -221,7 +222,22 @@ const onSet = async(index:string)=>{
list.value = data.data; list.value = data.data;
showModal() showModal()
} }
const popupScroll = ()=>{
console.log(1);
}
const onSubSearch = async(value:any)=>{
const uid = getUid();
const params = {
name: '',
page:1,
size:10,
uid,
};
const data = await onFindbyLikeName(params);
optionss.value = data.data.goods
}
const onSelectCheckboxValue = async(e:any,index:any)=>{ const onSelectCheckboxValue = async(e:any,index:any)=>{
index = index+1 index = index+1
const uid =getUid() const uid =getUid()
let data:any ={} let data:any ={}
...@@ -245,21 +261,15 @@ const hideModal = () => { ...@@ -245,21 +261,15 @@ const hideModal = () => {
goodspayditch.value[radioValue.paytype-1] = { goodspayditch.value[radioValue.paytype-1] = {
appointpay: radioValue.id, appointpay: radioValue.id,
goodsid: radioValue.id, goodsid: radioValue.id,
goodspayid: formState.subject.value, goodspayid: formState.value.goodsid,
optpay: radioValue.paytype, optpay: radioValue.paytype,
payname: radioValue.name, name: radioValue.name,
random: '1', random: '1',
status: radioValue.status status: radioValue.status
} }
listValue.value[radioValue.paytype-1] = radioValue listValue.value[radioValue.paytype-1] = radioValue
visible.value = false; visible.value = false;
}; };
onMounted(async () => {
const uid = getUid()
const data = await onSelectGoods(uid)
optionss.value = data.data
return optionss
})
watch(formState,(newVal:any) => { watch(formState,(newVal:any) => {
if(newVal.paymentmodel =='0'){ if(newVal.paymentmodel =='0'){
price.value = optionss.value[newVal.subject.index].price/100 price.value = optionss.value[newVal.subject.index].price/100
...@@ -267,23 +277,25 @@ watch(formState,(newVal:any) => { ...@@ -267,23 +277,25 @@ watch(formState,(newVal:any) => {
}) })
defineExpose({ defineExpose({
optionss, endvalue,
value1: ref<Dayjs>(),
onSelect,
price, price,
priceSet, priceSet,
dateFormat, dateFormat,
visible,
list,
modalvalue,
optionss,
value1: ref<Dayjs>(),
formState,
onSelect,
disabledDate, disabledDate,
endvalue,
...toRefs(checkboxValue), ...toRefs(checkboxValue),
onChangeRadioName, onChangeRadioName,
onSet, onSet,
visible,
showModal, showModal,
hideModal, hideModal,
list,
modalvalue,
onSelectCheckboxValue, onSelectCheckboxValue,
popupScroll,
emit emit
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment