接口调用,打包配置

This commit is contained in:
13218645326 2023-12-08 17:03:26 +08:00
parent 3ee01f9594
commit ab3d43f629
9 changed files with 234 additions and 108 deletions

3
components.d.ts vendored
View File

@ -17,6 +17,7 @@ declare module 'vue' {
ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDialog: typeof import('element-plus/es')['ElDialog'] ElDialog: typeof import('element-plus/es')['ElDialog']
ElDivider: typeof import('element-plus/es')['ElDivider'] ElDivider: typeof import('element-plus/es')['ElDivider']
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElForm: typeof import('element-plus/es')['ElForm'] ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElIcon: typeof import('element-plus/es')['ElIcon'] ElIcon: typeof import('element-plus/es')['ElIcon']
@ -28,6 +29,8 @@ declare module 'vue' {
ElPageHeader: typeof import('element-plus/es')['ElPageHeader'] ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
ElPagination: typeof import('element-plus/es')['ElPagination'] ElPagination: typeof import('element-plus/es')['ElPagination']
ElProgress: typeof import('element-plus/es')['ElProgress'] ElProgress: typeof import('element-plus/es')['ElProgress']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow'] ElRow: typeof import('element-plus/es')['ElRow']
ElSelect: typeof import('element-plus/es')['ElSelect'] ElSelect: typeof import('element-plus/es')['ElSelect']
ElTable: typeof import('element-plus/es')['ElTable'] ElTable: typeof import('element-plus/es')['ElTable']

2
env/.env.sit vendored
View File

@ -3,4 +3,4 @@ VITE_ENV = 'production'
VITE_BUILD_MODE = 'sit' VITE_BUILD_MODE = 'sit'
# 线上环境接口地址 # 线上环境接口地址
VITE_API_URL = 'https://testSit.com' VITE_API_URL = 'http://192.168.1.3:10086'

View File

@ -1,14 +1,14 @@
{ {
"name": "vue3pctemplate", "name": "zrpt_front",
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "vite --mode dev", "dev": "vite --mode dev",
"serve1": "vite --mode serve1", "serve1": "vite --mode serve1",
"build": "npm run build:pro", "build": "npm run build:pro",
"build:sit": "vue-tsc && vite build --mode sit", "build:sit": "vite build --mode sit",
"build:uat": "vue-tsc && vite build --mode uat", "build:uat": "vite build --mode uat",
"build:pro": "vue-tsc && vite build --mode production", "build:pro": "vite build --mode production",
"preview": "vite preview", "preview": "vite preview",
"build-only": "vite build", "build-only": "vite build",
"type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false" "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false"

View File

@ -5,7 +5,7 @@
:action="props.actionUrl" :action="props.actionUrl"
:auto-upload="props.autoUpload" :auto-upload="props.autoUpload"
style="width: 100%" style="width: 100%"
:on-success="(response, file) => successUpload(response, file)" :on-success="(response:any, file:any) => successUpload(response, file)"
:on-error="errorUpload" :on-error="errorUpload"
:accept="props.acceptTypeList.join(',')" :accept="props.acceptTypeList.join(',')"
:before-upload="beforeUpload" :before-upload="beforeUpload"
@ -15,9 +15,9 @@
:file-list="props.fileList" :file-list="props.fileList"
:disabled="props.disabledFlag" :disabled="props.disabledFlag"
:on-change="changeFileFn" :on-change="changeFileFn"
:on-remove="(file, fileList) => removeFile(file, fileList)" :on-remove="(file:any, fileList:any) => removeFile(file, fileList)"
:on-preview="(file) => preview(file)" :on-preview="(file:any) => preview(file)"
:on-progress="(event, file, fileList) => onProgressFn(event, file, fileList)" :on-progress="(event:any, file:any, fileList:any) => onProgressFn(event, file, fileList)"
:list-type="props.listType"> :list-type="props.listType">
<!-- 上传的按钮 或者 icon 通过具名插槽的方式 --> <!-- 上传的按钮 或者 icon 通过具名插槽的方式 -->
<slot name="default"></slot> <slot name="default"></slot>
@ -164,7 +164,7 @@
message: '上传失败请重试!' message: '上传失败请重试!'
}) })
} }
const beforeUpload = (file) => { const beforeUpload = (file:any) => {
const { name = '', size } = file const { name = '', size } = file
if (size > props.maxSize * 1024 * 1000) { if (size > props.maxSize * 1024 * 1000) {
ElMessage({ ElMessage({
@ -182,7 +182,7 @@
return false return false
} }
} }
const handleExceed = (files, fileList) => { const handleExceed = (files:any, fileList:any) => {
ElMessage({ ElMessage({
type: 'warning', type: 'warning',
message: `当前限制选择 10 个文件,本次选择了 ${files.length} 个文件,共选择了 ${ message: `当前限制选择 10 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
@ -191,12 +191,12 @@
}) })
} }
// //
const removeFile = (file, data) => { const removeFile = (file:any, data:any) => {
console.log(file, data) console.log(file, data)
props.fileList = data // props.fileList = data
} }
// //
const preview = (data) => { const preview = (data:any) => {
const { url, response = {} } = data || {} const { url, response = {} } = data || {}
let name = data.name let name = data.name
const downLoadTypeList = props.downLoadTypeList const downLoadTypeList = props.downLoadTypeList
@ -229,7 +229,7 @@
} }
} }
const onProgressFn = (event, file, fileList) => { const onProgressFn = (event:any, file:any, fileList:any) => {
processFlag.value = true processFlag.value = true
loadProcess.value = event.percent.toFixed(2) loadProcess.value = event.percent.toFixed(2)
if (loadProcess.value >= 100) { if (loadProcess.value >= 100) {

View File

@ -33,7 +33,7 @@ export const ElMessageBoxOpert = (title = '', text = "", onfirmText = "", cancel
inputErrorMessage: inputErrorMessage, inputErrorMessage: inputErrorMessage,
confirmButtonClass:confirmButtonClass confirmButtonClass:confirmButtonClass
}) })
.then(({ value }) => { .then(( value ) => {
callBack(row,value) callBack(row,value)
}) })
.catch(() => { .catch(() => {

View File

@ -4,8 +4,32 @@
"updateBy": null, "updateBy": null,
"updateTime": null, "updateTime": null,
"remark": null, "remark": null,
"id": 1,
"orderId": 1, "orderId": 1,
"code": "订单编号202311001",
"time": "2023-12-1",
"endTime": null,
"deposit": null,
"cost": null,
"payType": null,
"supplier": null,
"orderStatus": "36",
"orderUser": null,
"orderCompany": null,
"typeName": "装备类别:\ ",
"groupName": "
",
"deviceName": "220E星牌挖掘机",
"deviceCode": ,
"devicePicUrl": "https://imgproduct.cehome.com/g2/o/00/39/a57044cc230ac7c9.JPG",
"deviceBrand": "品牌 ",
"deviceSpecification": "
",
"deviceLocation": "
",
"deviceMonthLeasePrice": "2000 /",
"maId": 1,
"orderPhone": null,
"supplierCompany": null,
"needCompany": "夏普公司", "needCompany": "夏普公司",
"planStartTime": "2023.12.2", "planStartTime": "2023.12.2",
"isMachinist": "1", "isMachinist": "1",
@ -14,23 +38,17 @@
"duration": "工期时长20天", "duration": "工期时长20天",
"invoiceType": "发票类型", "invoiceType": "发票类型",
"description": "项目说明", "description": "项目说明",
"maId": 1,
"leaseType": 1, "leaseType": 1,
"leasePrice": "20000", "leasePrice": "20000",
"machinistPrice": "3600", "machinistPrice": "3600",
"orderContract": "https://hzgyp-prod-1259451974.cos.ap-guangzhou.myqcloud.com/enterprise/serviceAgreement.pdf", "orderContract": "",
"machinistName": "机手姓名", "machinistName": "213123",
"phone": "联系电话13899995555", "phone": "321321",
"logisticsPhone": "物流司机电话13899995555", "logisticsPhone": "21321",
"realStartTime": "设备实际进场时间", "realStartTime": "设备实际进场时间",
"renterName": null, "renterName": null,
"tenantName": null, "tenantName": null,
"entryAttachment": null, "entryAttachment": null,
"typeName": null, "contractUrl": null,
"groupName": null, "pid": null
"deviceName": null,
"code": "订单编号202311001",
"orderTime": "2023-12-1",
"orderStatus": "订单状态",
"contractUrl": null
} }

View File

@ -18,7 +18,7 @@
}}</el-form-item> }}</el-form-item>
<el-form-item label="租赁时长" class="table_item"> <el-form-item label="租赁时长" class="table_item">
<!-- {{ detailsInfo.}} --> {{ detailsInfo.duration}}
<!-- 暂无 --></el-form-item> <!-- 暂无 --></el-form-item>
<el-form-item label="设备进场地址:" class="table_item">{{ <el-form-item label="设备进场地址:" class="table_item">{{
detailsInfo.addressId detailsInfo.addressId
@ -26,9 +26,9 @@
<el-form-item label="进场时间:" class="table_item">{{ <el-form-item label="进场时间:" class="table_item">{{
detailsInfo.realStartTime detailsInfo.realStartTime
}}</el-form-item> }}</el-form-item>
<el-form-item label="是否需求机手:" class="table_item">{{ <el-form-item label="是否需求机手:" class="table_item">
detailsInfo.isMachinist {{ detailsInfo.isMachinist == 0 ? '否' : '是' }}
}}</el-form-item> </el-form-item>
<el-form-item label="详细地址:" class="table_item">{{ <el-form-item label="详细地址:" class="table_item">{{
detailsInfo.address detailsInfo.address
}}</el-form-item> }}</el-form-item>
@ -45,26 +45,49 @@
xxxx-xx-xx ~ xxxx-xx-xx xxxx-xx-xx ~ xxxx-xx-xx
</el-form-item> --> </el-form-item> -->
<!-- 表格 --> <!-- 表格 -->
<orderTable :tableInfo="tableInfo" style="width: 760px"> <orderTable :tableInfo="tableInfo">
<!-- <template v-slot:rentMoney>
<h1>6666</h1>
</template> -->
<template v-slot:rentMoney> <template v-slot:rentMoney>
<div style="margin-left: 80px"> <!-- <div>
<div> <div>
<span>装备</span> <span>
<span style="color: #f00">¥{{ tableInfo.money }}</span> 装备
/{{ tableInfo.unit }} </span>
<span style="color: #f00">¥
{{ tableInfo.devicePrice }}
</span> /
</div> </div>
<div v-if="detailsInfo.isMachinist != 0">
<span>
机手
</span>
<span style="color: #f00">¥
{{ tableInfo.machinistPrice }}
</span> /
</div>
</div> -->
<div> <div>
<span></span> <div class="equipMoneyClass">
<span style="color: #f00">¥{{ tableInfo.money }}</span> <span>
/{{ tableInfo.unit }} 装备
</span>
<span style="color: #f00">¥
</span>
<el-input v-model.trim="equipMoneyInfo.equipMoney" placeholder="请输入企业类型" clearable maxlength="30" />
/
</div>
<div v-if="detailsInfo.isMachinist != 0" class="equipMoneyClass">
<span>
机手
</span>
<span style="color: #f00">¥
</span>
<el-input v-model.trim="equipMoneyInfo.phoneMoney" placeholder="请输入企业类型" clearable
maxlength="30" />/
</div> </div>
</div> </div>
</template> </template>
</orderTable> </orderTable>
<div class="total_money">合计234234</div> <div class="total_money">合计{{ totalMoneyFn() }}</div>
<!-- <el-form-item label="订单合同:" style="width: 800px;margin-top:12px;"> <!-- <el-form-item label="订单合同:" style="width: 800px;margin-top:12px;">
xxxxxxxxxxxx.pdf xxxxxxxxxxxx.pdf
</el-form-item> </el-form-item>
@ -79,7 +102,8 @@
</el-form-item> --> </el-form-item> -->
<el-form-item label="订单合同:" style="width: 800px" v-if="stepVal == '1'"> <el-form-item label="订单合同:" style="width: 800px" v-if="stepVal == '1'">
<div> <div>
<uploadComponent :maxLimit="1" listType="text" :acceptTypeList="['.pdf']" :scuccesCallback="scuccesCallback" height="32px" width="360px"> <uploadComponent :maxLimit="1" listType="text" :acceptTypeList="['.pdf']" :scuccesCallback="scuccesCallback"
height="32px" width="360px">
<template v-slot:default> <template v-slot:default>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
@ -151,20 +175,25 @@ const router = useRouter()
const route = useRoute() const route = useRoute()
const ruleFormRef = ref() const ruleFormRef = ref()
const tableInfo = reactive({ const tableInfo = reactive({
v_equipment_title: '220E履带挖掘机', v_equipment_title: '',
v_equipment_code: '88888', v_equipment_code: '',
v_equipment_group_type: '挖掘机械', typeName: '',
v_equipment_brand: '挖掘机', v_equipment_group_type: '',
v_equipment_weight: '22吨', v_equipment_brand: '',
v_equipment_volume: '1立方米', v_equipment_size: '',
v_equipment_address: '广东省广州市', v_equipment_volume: '',
money: '2000', v_equipment_address: '',
unit: '月', devicePrice: '',
machinistPrice: '',
imgUrl: '' imgUrl: ''
}) })
const errorTipFlag = ref(0) const errorTipFlag = ref(0)
const equipMoneyInfo = reactive({
equipMoney: '',
phoneMoney: ''
})
const stepVal = ref('0') const stepVal = ref('0')
@ -188,18 +217,18 @@ const timeLineList = reactive({
] ]
}) })
const driverInfo = reactive({ // const driverInfo = reactive({
list: [ // list: [
{ // {
value: 'Option1', // value: 'Option1',
label: 'Option1' // label: 'Option1'
}, // },
{ // {
value: 'Option2', // value: 'Option2',
label: 'Option2' // label: 'Option2'
} // }
] // ]
}) // })
const submitInfo = reactive({ const submitInfo = reactive({
driver: '', driver: '',
driverPhone: '', driverPhone: '',
@ -221,17 +250,37 @@ const formConfirmRules = reactive<FormRules<any>>({
let fileItem: any = null let fileItem: any = null
const demandConfirmFn = () => { const demandConfirmFn = () => {
if(!equipMoneyInfo.equipMoney){
return ElMessage({
type:'warning',
message:'请输入装备租金'
})
}
if(!equipMoneyInfo.phoneMoney){
return ElMessage({
type:'warning',
message:'请输入机手租金'
})
}
stepVal.value = '1' stepVal.value = '1'
timeLineList.list[1].done = true timeLineList.list[1].done = true
} }
const rejectCallBack = async (row: any, value: any) => { const rejectCallBack = async (row: any, value: any) => {
console.log('editCallBack', row, value) console.log('editCallBack', row, value)
let params = { let params = {
rejectReason:value.value,
orderId: detailsInfo.orderId
} }
const res = await apiOrderReject(params) const res = await apiOrderReject(params)
if(res.code == 200){
ElMessage({
type:'success',
message:'驳回成功'
})
} }
const demandRejectFn = (row: any) => { }
const demandRejectFn = (row="") => {
ElMessageBoxOpert( ElMessageBoxOpert(
'驳回原因', '驳回原因',
'填写驳回原因', '填写驳回原因',
@ -268,6 +317,18 @@ const initApiOrderDetails = async () => {
// const res:any = dataJson // const res:any = dataJson
console.log('res-apiOrderDetails', res) console.log('res-apiOrderDetails', res)
Object.assign(detailsInfo, res.data) Object.assign(detailsInfo, res.data)
const deviceInfo = res.data
tableInfo.v_equipment_title = deviceInfo.deviceName
tableInfo.v_equipment_code = deviceInfo.deviceCode
tableInfo.typeName = deviceInfo.typeName
tableInfo.v_equipment_group_type = deviceInfo.groupName
tableInfo.v_equipment_brand = deviceInfo.deviceBrand
tableInfo.v_equipment_size = deviceInfo.deviceSpecification
tableInfo.v_equipment_address = deviceInfo.deviceLocation
tableInfo.devicePrice = deviceInfo.deviceMonthLeasePrice
tableInfo.machinistPrice = deviceInfo.machinistPrice
tableInfo.imgUrl = deviceInfo.devicePicUrl
} }
@ -280,7 +341,9 @@ const confirmSendFn = () => {
contractUrl: 'https://hzgyp-prod-1259451974.cos.ap-guangzhou.myqcloud.com/enterprise/serviceAgreement.pdf',// contractUrl: 'https://hzgyp-prod-1259451974.cos.ap-guangzhou.myqcloud.com/enterprise/serviceAgreement.pdf',//
machinistName: submitInfo.driver,// machinistName: submitInfo.driver,//
logisticsPhone: submitInfo.deliverPhone,// logisticsPhone: submitInfo.deliverPhone,//
phone: submitInfo.driverPhone// phone: submitInfo.driverPhone,//
leasePrice:equipMoneyInfo.equipMoney,
machinistPrice:equipMoneyInfo.phoneMoney
} }
const res = await apiUpdateOrderInfo(params) const res = await apiUpdateOrderInfo(params)
console.log("resapiUpdateOrderInfo", res) console.log("resapiUpdateOrderInfo", res)
@ -308,6 +371,12 @@ const scuccesCallback =(ev:any)=>{
fileItem = ev fileItem = ev
errorTipFlag.value = 1 errorTipFlag.value = 1
} }
const totalMoneyFn = () => {
return Number(equipMoneyInfo.equipMoney) + Number(equipMoneyInfo.phoneMoney) + '元'
}
onBeforeMount(() => { onBeforeMount(() => {
initApiOrderDetails() initApiOrderDetails()
@ -350,10 +419,21 @@ onBeforeMount(() => {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
} }
.error_tip_c { .error_tip_c {
color: #ff0000; color: #ff0000;
} }
:deep(.equipMoneyClass){
display: flex;
justify-content: flex-start;
margin-top: 6px;
.el-input{
display: inline-block;
width: 160px;
padding: 0 12px;
}
}
</style> </style>
<style> <style>
.dangerC { .dangerC {

View File

@ -14,7 +14,7 @@
{{ detailsInfo.phone }} {{ detailsInfo.phone }}
</el-form-item> </el-form-item>
<el-form-item label="租赁时长" class="table_item"> <el-form-item label="租赁时长" class="table_item">
<!-- {{ detailsInfo.}} --> {{ detailsInfo.duration}}
<!-- 暂无 --> <!-- 暂无 -->
</el-form-item> </el-form-item>
<el-form-item label="设备进场地址:" class="table_item"> <el-form-item label="设备进场地址:" class="table_item">
@ -24,7 +24,7 @@
{{ detailsInfo.realStartTime }} {{ detailsInfo.realStartTime }}
</el-form-item> </el-form-item>
<el-form-item label="是否需求机手:" class="table_item"> <el-form-item label="是否需求机手:" class="table_item">
{{ detailsInfo.isMachinist }} {{ detailsInfo.isMachinist == 0 ? '否' : '是' }}
<!-- 枚举值 待确认--> <!-- 枚举值 待确认-->
</el-form-item> </el-form-item>
<el-form-item label="详细地址:" class="table_item"> <el-form-item label="详细地址:" class="table_item">
@ -47,8 +47,20 @@
<orderTable :tableInfo="tableInfo"> <orderTable :tableInfo="tableInfo">
<template v-slot:rentMoney> <template v-slot:rentMoney>
<div> <div>
<span style="color: #f00">{{ tableInfo.money }}</span> <span>
/{{ tableInfo.unit }} 装备
</span>
<span style="color: #f00">¥
{{ tableInfo.devicePrice }}
</span> /
</div>
<div v-if="detailsInfo.isMachinist != 0">
<span>
机手
</span>
<span style="color: #f00">¥
{{ tableInfo.machinistPrice }}
</span> /
</div> </div>
</template> </template>
</orderTable> </orderTable>
@ -93,15 +105,16 @@ import { ElMessage } from 'element-plus'
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const tableInfo = reactive({ const tableInfo = reactive({
v_equipment_title: '220E履带挖掘机', v_equipment_title: '',
v_equipment_code: '88888', v_equipment_code: '',
v_equipment_group_type: '挖掘机械', typeName: '',
v_equipment_brand: '挖掘机', v_equipment_group_type: '',
v_equipment_weight: '22吨', v_equipment_brand: '',
v_equipment_volume: '1立方米', v_equipment_size: '',
v_equipment_address: '广东省广州市', v_equipment_volume: '',
money: '2000', v_equipment_address: '',
unit: '月', devicePrice: '',
machinistPrice: '',
imgUrl: '' imgUrl: ''
}) })
const stepListOrder: any = reactive({ const stepListOrder: any = reactive({
@ -116,6 +129,18 @@ const initApiOrderDetails = async () => {
// const res:any = dataJson // const res:any = dataJson
console.log('res-apiOrderDetails', res) console.log('res-apiOrderDetails', res)
Object.assign(detailsInfo, res.data) Object.assign(detailsInfo, res.data)
const deviceInfo = res.data
tableInfo.v_equipment_title = deviceInfo.deviceName
tableInfo.v_equipment_code = deviceInfo.deviceCode
tableInfo.typeName = deviceInfo.typeName
tableInfo.v_equipment_group_type = deviceInfo.groupName
tableInfo.v_equipment_brand = deviceInfo.deviceBrand
tableInfo.v_equipment_size = deviceInfo.deviceSpecification
tableInfo.v_equipment_address = deviceInfo.deviceLocation
tableInfo.devicePrice = deviceInfo.deviceMonthLeasePrice
tableInfo.machinistPrice = deviceInfo.machinistPrice
tableInfo.imgUrl = deviceInfo.devicePicUrl
} }
const initApiOrderInfoList = async () => { const initApiOrderInfoList = async () => {

View File

@ -45,13 +45,13 @@
{{ props.tableInfo.v_equipment_brand }} {{ props.tableInfo.v_equipment_brand }}
</div> </div>
</div> </div>
<div class="item item_sub_out"> <div class="item">
<div class="label"> <div class="label">
设备规格 设备规格
</div> </div>
<div class="value"> <div class="value">
{{ props.tableInfo.v_equipment_size }}
<div class="sub_item"> <!-- <div class="sub_item">
<div class="sub_label"> <div class="sub_label">
操作重量 操作重量
</div> </div>
@ -66,7 +66,7 @@
<div class="sub_value"> <div class="sub_value">
{{ props.tableInfo.v_equipment_volume }} {{ props.tableInfo.v_equipment_volume }}
</div> </div>
</div> </div> -->
</div> </div>
</div> </div>
<div class="item"> <div class="item">