更新
This commit is contained in:
parent
9762746eef
commit
5398a129dc
132
components/commonTimeSelect.vue
Normal file
132
components/commonTimeSelect.vue
Normal file
@ -0,0 +1,132 @@
|
||||
<template>
|
||||
<view class="date-range-selector">
|
||||
<u-subsection :list="dateRangeList" keyName="label" :current="selected" @change="handleSubsectionChange" />
|
||||
<uni-datetime-picker :value="internalDateRange" type="daterange" @change="handleDatePickerChange" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
// Vue2 中使用 value 作为 v-model 的 prop
|
||||
value: {
|
||||
type: Array,
|
||||
required: true
|
||||
},
|
||||
dateRangeList: {
|
||||
type: Array,
|
||||
default: () => [{
|
||||
label: "今日",
|
||||
value: "day"
|
||||
},
|
||||
{
|
||||
label: "本周",
|
||||
value: "week"
|
||||
},
|
||||
{
|
||||
label: "本月",
|
||||
value: "month"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
selected: 0,
|
||||
internalDateRange: this.value
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
value(newVal) {
|
||||
if (JSON.stringify(newVal) !== JSON.stringify(this.internalDateRange)) {
|
||||
this.internalDateRange = newVal;
|
||||
this.resetSelectedIndex();
|
||||
}
|
||||
},
|
||||
internalDateRange(newVal) {
|
||||
this.$emit('input', newVal); // Vue2 中使用 input 事件
|
||||
this.$emit('subsection-change', newVal);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 获取日期范围
|
||||
getDateRange(type) {
|
||||
const now = new Date()
|
||||
let start, end
|
||||
|
||||
if (type === 'week') {
|
||||
// 获取本周的开始(周一)和结束(周日)
|
||||
const day = now.getDay() || 7 // Sunday 为 0,设为 7
|
||||
start = new Date(now)
|
||||
start.setDate(now.getDate() - day + 1)
|
||||
|
||||
end = new Date(start)
|
||||
end.setDate(start.getDate() + 6)
|
||||
} else if (type === 'month') {
|
||||
// 获取本月的开始和结束
|
||||
start = new Date(now.getFullYear(), now.getMonth(), 1)
|
||||
end = new Date(now.getFullYear(), now.getMonth() + 1, 0) // 本月最后一天
|
||||
} else if (type === 'day') {
|
||||
// 获取当天的开始和结束(00:00:00 到 23:59:59)
|
||||
start = new Date(now)
|
||||
start.setHours(0, 0, 0, 0)
|
||||
|
||||
end = new Date(now)
|
||||
end.setHours(23, 59, 59, 999)
|
||||
} else {
|
||||
console.warn('不支持的类型:', type)
|
||||
return []
|
||||
}
|
||||
|
||||
return [
|
||||
this.formatDateCus(start),
|
||||
this.formatDateCus(end)
|
||||
]
|
||||
},
|
||||
|
||||
// 格式化日期
|
||||
formatDateCus(date) {
|
||||
const y = date.getFullYear()
|
||||
const m = (date.getMonth() + 1).toString().padStart(2, '0')
|
||||
const d = date.getDate().toString().padStart(2, '0')
|
||||
return `${y}-${m}-${d}`
|
||||
},
|
||||
|
||||
handleSubsectionChange(index) {
|
||||
this.selected = index;
|
||||
const {
|
||||
value
|
||||
} = this.dateRangeList[index];
|
||||
this.internalDateRange = this.getDateRange(value);
|
||||
},
|
||||
handleDatePickerChange(newRange) {
|
||||
this.internalDateRange = newRange;
|
||||
this.resetSelectedIndex();
|
||||
},
|
||||
resetSelectedIndex() {
|
||||
const isPreset = this.dateRangeList.some((item, index) => {
|
||||
const range = this.getDateRange(item.value);
|
||||
return JSON.stringify(range) === JSON.stringify(this.internalDateRange);
|
||||
});
|
||||
|
||||
if (!isPreset) {
|
||||
this.selected = -1; // 如果日期范围不匹配任何预设,取消选中状态
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 默认选择今日
|
||||
if (!this.value || this.value.length === 0) {
|
||||
this.internalDateRange = this.getDateRange('day');
|
||||
} else {
|
||||
this.resetSelectedIndex();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.date-range-selector {
|
||||
/* 可以写样式 */
|
||||
}
|
||||
</style>
|
@ -55,11 +55,11 @@
|
||||
</view>
|
||||
|
||||
<view class="finance" v-if="checkPermi(['repair:tick:profit'])">
|
||||
<view class="fin-card receivable" @click.self="goListByPayStatus('receivable')">
|
||||
<view class="fin-card receivable" @click="goListByPayStatus('receivable')">
|
||||
<view class="fin-top">
|
||||
<text class="fin-title">应收款</text>
|
||||
<uni-icons :type="financeVisibility.receivable ? 'eye' : 'eye-slash'" color="#7aa6ff" size="20"
|
||||
@click="toggleFinance('receivable')" />
|
||||
@click.native.stop="toggleFinance('receivable')" />
|
||||
</view>
|
||||
<!-- 已收款金额 -->
|
||||
<text
|
||||
@ -69,11 +69,11 @@
|
||||
<image src="../images/money_one.png" mode="widthFix" class="tap_icon"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="fin-card collected" @click.self="goListByPayStatus('receivedAmount')">
|
||||
<view class="fin-card collected" @click="goListByPayStatus('receivedAmount')">
|
||||
<view class="fin-top">
|
||||
<text class="fin-title">已收款</text>
|
||||
<uni-icons :type="financeVisibility.collected ? 'eye' : 'eye-slash'" color="#a896ff" size="20"
|
||||
@click="toggleFinance('collected')" />
|
||||
@click.native.stop="toggleFinance('collected')" />
|
||||
</view>
|
||||
<text
|
||||
class="fin-amount">{{ financeVisibility.collected ? formatCurrency(otherInfo.receivedAmount) : '*****' }}</text>
|
||||
@ -82,11 +82,11 @@
|
||||
<image src="../images/money_two.png" mode="widthFix" class="tap_icon"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="fin-card pending" @click.self="goListByPayStatus('pendingAmount')">
|
||||
<view class="fin-card pending" @click="goListByPayStatus('pendingAmount')">
|
||||
<view class="fin-top">
|
||||
<text class="fin-title">待收款</text>
|
||||
<uni-icons :type="financeVisibility.pending ? 'eye' : 'eye-slash'" color="#ffcf7a" size="20"
|
||||
@click="toggleFinance('pending')" />
|
||||
@click.native.stop="toggleFinance('pending')" />
|
||||
</view>
|
||||
<text
|
||||
class="fin-amount">{{ financeVisibility.pending ? formatCurrency(otherInfo.pendingAmount) : '*****' }}</text>
|
||||
@ -123,16 +123,6 @@
|
||||
queryParams: {
|
||||
dateRange: [],
|
||||
},
|
||||
sectionOrder: ['orders', 'repairing', 'completed', 'settled', 'unsettled', 'delivered', 'inFactory'],
|
||||
sectionTitle: {
|
||||
orders: '订单(进厂)数',
|
||||
repairing: '维修中',
|
||||
completed: '已竣工',
|
||||
settled: '竣工已结算',
|
||||
unsettled: '竣工未结算',
|
||||
delivered: '已交车',
|
||||
inFactory: '在厂数'
|
||||
},
|
||||
tapList: [{
|
||||
label: "本日",
|
||||
value: "day",
|
||||
|
@ -877,16 +877,16 @@
|
||||
|
||||
getCarList(carId) {
|
||||
const params = {
|
||||
userId: this.userInfo.userId,
|
||||
id: this.userInfo.id,
|
||||
pageNo: 1,
|
||||
pageSize: 100000
|
||||
}
|
||||
request({
|
||||
url: '/admin-api/base/carMain/page',
|
||||
url: '/admin-api/base/custom/get',
|
||||
method: 'GET',
|
||||
params: params
|
||||
}).then(res => {
|
||||
this.carList = res.data.records
|
||||
this.carList = res.data.carList
|
||||
for (let i = 0; i < this.carList.length; i++) {
|
||||
if (this.carList[i].licenseNumber.toLowerCase() == this.phone.toLowerCase()) {
|
||||
this.activeCarIndex = i
|
||||
|
@ -19,17 +19,21 @@
|
||||
<view class="list">
|
||||
<scroll-view style="height: 100%" scroll-y="true" class="itemContent" @scrolltolower="onReachBottomCus"
|
||||
refresher-enabled @refresherrefresh="onRefresherrefresh" :refresher-triggered="isTriggered">
|
||||
<view v-for="(item, index) in repairList" :key="index" class="listItem">
|
||||
<view v-for="(item, index) in repairList" :key="index" class="listItem"
|
||||
@click="addNewWaresFun(item.id)">
|
||||
<view class="repairName">{{ item.name }}</view>
|
||||
<view class="repairBottom">
|
||||
<text class="repairDesc">单位:
|
||||
<text class="repairUnit">{{ item.unitText }}</text>
|
||||
</text>
|
||||
<text class="repairDesc">当前库存:
|
||||
<text class="repairUnit">{{ item.stock }}</text>
|
||||
</text>
|
||||
<view class="repairBtns">
|
||||
<u-icon name="minus-circle-fill" size="24" @click="delNum(item)"></u-icon>
|
||||
<u-icon name="minus-circle-fill" size="24" @click.native.stop="delNum(item)"></u-icon>
|
||||
<text class="repairNum">{{ item.num }}</text>
|
||||
<u-icon color="#0174F6" name="plus-circle-fill" size="24"
|
||||
@click="addNum(item)"></u-icon>
|
||||
@click.native.stop="addNum(item)"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@ -481,10 +485,16 @@
|
||||
/**
|
||||
* 添加新的配件
|
||||
*/
|
||||
addNewWaresFun() {
|
||||
uni.navigateTo({
|
||||
url: '/pages-repair/apply/newWare'
|
||||
})
|
||||
addNewWaresFun(id) {
|
||||
if (id) {
|
||||
uni.navigateTo({
|
||||
url: `/pages-repair/apply/newWare?id=${id}`
|
||||
})
|
||||
} else {
|
||||
uni.navigateTo({
|
||||
url: `/pages-repair/apply/newWare`
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -1,417 +1,546 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<VNavigationBar background-color="#fff" title="新增配件" title-color="#333"></VNavigationBar>
|
||||
<view class="listBox">
|
||||
<view class="list">
|
||||
<view class="formItem">
|
||||
<text class="formLabel require">配件名称</text>
|
||||
<input type="text" style="text-align: right" v-model="formData.name" placeholder="请输入配件名称"/>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel require">所属分类</text>
|
||||
<picker @change="typePickerChange" :value="typeIndex" :range="allTypeNameList">
|
||||
<view class="uni-input">{{allTypeNameList[typeIndex]}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel require">计量单位</text>
|
||||
<picker @change="unitPickerChange" :value="unitIndex" :range="allUnitNameList">
|
||||
<view class="uni-input">{{allUnitNameList[unitIndex]}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">规格型号</text>
|
||||
<input type="text" style="text-align: right" v-model="formData.model" placeholder="请输入规格型号"/>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">来源</text>
|
||||
<picker @change="fromPickerChange" :value="fromIndex" :range="allFromNameList">
|
||||
<view class="uni-input">{{allFromNameList[fromIndex]}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">配件属性</text>
|
||||
<picker @change="attributePickerChange" :value="attributeIndex" :range="allAttributeNameList">
|
||||
<view class="uni-input">{{allAttributeNameList[attributeIndex]}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">状态</text>
|
||||
<view>
|
||||
<radio-group v-model="formData.status">
|
||||
<label class="radio-label" v-for="(item, index) in radioOptions" :key="index">
|
||||
<radio :value="item.value" :checked="item.checked">{{ item.label }}</radio>
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">条形码</text>
|
||||
<input type="text" style="text-align: right" v-model="formData.barCode" placeholder="请输入条形码"/>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">商品编码</text>
|
||||
<input type="text" style="text-align: right" v-model="formData.code" placeholder="请输入商品编码"/>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">适用子公司</text>
|
||||
<text class="formValue"></text>
|
||||
</view>
|
||||
<view style="padding-bottom: 60rpx;border-bottom: 1px solid #ddd;" class="formItem">
|
||||
<checkbox-group v-model="checkedCorpIdList" @change="cs">
|
||||
<checkbox v-for="(item, index) in allCompanyList" :key="index" :value="item.id" :checked="item.checked">{{ item.corpName }}</checkbox>
|
||||
</checkbox-group>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">适用车型</text>
|
||||
<text class="formValue"></text>
|
||||
</view>
|
||||
<view style="padding-bottom: 60rpx;border-bottom: 1px solid #ddd;" class="formItem">
|
||||
<textarea style="height: 50px" auto-height placeholder="请输入适用车型" v-model="formData.carModel" />
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">备注</text>
|
||||
<text class="formValue"></text>
|
||||
</view>
|
||||
<view style="padding-bottom: 60rpx;border-bottom: 1px solid #ddd;" class="formItem">
|
||||
<textarea style="height: 50px" auto-height placeholder="请输入备注" v-model="formData.remark" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="footer">
|
||||
<text class="label"></text>
|
||||
<text class="repairNum"></text>
|
||||
<view class="submit" @click="submit">保存</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="container">
|
||||
<VNavigationBar background-color="#fff" :title="title" title-color="#333"></VNavigationBar>
|
||||
<view class="listBox">
|
||||
<view class="list">
|
||||
<view class="formItem">
|
||||
<text class="formLabel require">配件名称</text>
|
||||
<input type="text" style="text-align: right" v-model="formData.name" placeholder="请输入配件名称" />
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel require">进价</text>
|
||||
<input type="text" style="text-align: right" v-model="formData.purPrice" placeholder="请输入配件名称" />
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel require">销售价格</text>
|
||||
<input type="text" style="text-align: right" v-model="formData.price" placeholder="请输入配件名称" />
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel require">所属分类</text>
|
||||
<picker @change="typePickerChange" :value="typeIndex" :range="allTypeNameList">
|
||||
<view class="uni-input">{{allTypeNameList[typeIndex]}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel require">计量单位</text>
|
||||
<picker @change="unitPickerChange" :value="unitIndex" :range="allUnitNameList">
|
||||
<view class="uni-input">{{allUnitNameList[unitIndex]}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">规格型号</text>
|
||||
<input type="text" style="text-align: right" v-model="formData.model" placeholder="请输入规格型号" />
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">来源</text>
|
||||
<picker @change="fromPickerChange" :value="fromIndex" :range="allFromNameList">
|
||||
<view class="uni-input">{{allFromNameList[fromIndex]}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">配件属性</text>
|
||||
<picker @change="attributePickerChange" :value="attributeIndex" :range="allAttributeNameList">
|
||||
<view class="uni-input">{{allAttributeNameList[attributeIndex]}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">状态</text>
|
||||
<view>
|
||||
<radio-group v-model="formData.status">
|
||||
<label class="radio-label" v-for="(item, index) in radioOptions" :key="index">
|
||||
<radio :value="item.value" :checked="item.checked">{{ item.label }}</radio>
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">条形码</text>
|
||||
<input type="text" style="text-align: right" v-model="formData.barCode" placeholder="请输入条形码" />
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">商品编码</text>
|
||||
<input type="text" style="text-align: right" v-model="formData.code" placeholder="请输入商品编码" />
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">适用子公司</text>
|
||||
<text class="formValue"></text>
|
||||
</view>
|
||||
<view style="padding-bottom: 60rpx;border-bottom: 1px solid #ddd;" class="formItem">
|
||||
<checkbox-group v-model="checkedCorpIdList" @change="cs">
|
||||
<checkbox v-for="(item, index) in allCompanyList" :key="index" :value="item.id"
|
||||
:checked="item.checked">{{ item.corpName }}</checkbox>
|
||||
</checkbox-group>
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">适用车型</text>
|
||||
<text class="formValue"></text>
|
||||
</view>
|
||||
<view style="padding-bottom: 60rpx;border-bottom: 1px solid #ddd;" class="formItem">
|
||||
<textarea style="height: 50px" auto-height placeholder="请输入适用车型" v-model="formData.carModel" />
|
||||
</view>
|
||||
<view class="formItem">
|
||||
<text class="formLabel">备注</text>
|
||||
<text class="formValue"></text>
|
||||
</view>
|
||||
<view style="padding-bottom: 60rpx;border-bottom: 1px solid #ddd;" class="formItem">
|
||||
<textarea style="height: 50px" auto-height placeholder="请输入备注" v-model="formData.remark" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="footer">
|
||||
<text class="label"></text>
|
||||
<text class="repairNum"></text>
|
||||
<view class="submit" @click="submit">保存</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import VNavigationBar from "@/components/VNavigationBar.vue";
|
||||
import request from '@/utils/request';
|
||||
import {getDictTextByCodeAndValue,createUniqueCodeByHead} from "@/utils/utils";
|
||||
import {getUserInfo,getJSONData} from '@/utils/auth.js'
|
||||
import VNavigationBar from "@/components/VNavigationBar.vue";
|
||||
import request from '@/utils/request';
|
||||
import {
|
||||
getDictTextByCodeAndValue,
|
||||
createUniqueCodeByHead
|
||||
} from "@/utils/utils";
|
||||
import {
|
||||
getUserInfo,
|
||||
getJSONData
|
||||
} from '@/utils/auth.js'
|
||||
|
||||
export default {
|
||||
components: {VNavigationBar},
|
||||
data() {
|
||||
return {
|
||||
//父组件传入的数据
|
||||
formData:{
|
||||
name:"",
|
||||
type:"",
|
||||
unit:"",
|
||||
model:"",
|
||||
dataForm:"",
|
||||
attribute:"",
|
||||
status:"",
|
||||
barCode:"",
|
||||
code:"",
|
||||
corpId:"",
|
||||
carModel:"",
|
||||
remark:"",
|
||||
},
|
||||
// 状态单选按钮的选项数组
|
||||
radioOptions: [
|
||||
{ label: '启用', value: '01' ,checked:true},
|
||||
{ label: '禁用', value: '02' ,checked:false}
|
||||
],
|
||||
//所有可选分类
|
||||
allTypeList:[],
|
||||
//所有可选分类-只有名称
|
||||
allTypeNameList:[],
|
||||
//选中的分类下标
|
||||
typeIndex:0,
|
||||
//所有可选计量单位
|
||||
allUnitList:[],
|
||||
//所有可选计量单位-只有名称
|
||||
allUnitNameList:[],
|
||||
//选中的计量单位下标
|
||||
unitIndex:0,
|
||||
//所有可选来源
|
||||
allFromList:[],
|
||||
//所有可选来源-只有名称
|
||||
allFromNameList:[],
|
||||
//选中的来源下标
|
||||
fromIndex:0,
|
||||
//所有可选配件属性
|
||||
allAttributeList:[],
|
||||
//所有可选配件属性-只有名称
|
||||
allAttributeNameList:[],
|
||||
//选中的配件属性下标
|
||||
attributeIndex:0,
|
||||
//所有可选子公司
|
||||
allCompanyList:[],
|
||||
//选中的子公司id
|
||||
checkedCorpIdList:[],
|
||||
};
|
||||
},
|
||||
onLoad() {
|
||||
this.init()
|
||||
},
|
||||
computed: {
|
||||
export default {
|
||||
components: {
|
||||
VNavigationBar
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
//父组件传入的数据
|
||||
formData: {
|
||||
name: "",
|
||||
type: "",
|
||||
unit: "",
|
||||
model: "",
|
||||
dataForm: "",
|
||||
attribute: "",
|
||||
status: "",
|
||||
barCode: "",
|
||||
code: "",
|
||||
corpId: "",
|
||||
carModel: "",
|
||||
remark: "",
|
||||
},
|
||||
// 状态单选按钮的选项数组
|
||||
radioOptions: [{
|
||||
label: '启用',
|
||||
value: '01',
|
||||
checked: true
|
||||
},
|
||||
{
|
||||
label: '禁用',
|
||||
value: '02',
|
||||
checked: false
|
||||
}
|
||||
],
|
||||
//所有可选分类
|
||||
allTypeList: [],
|
||||
//所有可选分类-只有名称
|
||||
allTypeNameList: [],
|
||||
//选中的分类下标
|
||||
typeIndex: 0,
|
||||
//所有可选计量单位
|
||||
allUnitList: [],
|
||||
//所有可选计量单位-只有名称
|
||||
allUnitNameList: [],
|
||||
//选中的计量单位下标
|
||||
unitIndex: 0,
|
||||
//所有可选来源
|
||||
allFromList: [],
|
||||
//所有可选来源-只有名称
|
||||
allFromNameList: [],
|
||||
//选中的来源下标
|
||||
fromIndex: 0,
|
||||
//所有可选配件属性
|
||||
allAttributeList: [],
|
||||
//所有可选配件属性-只有名称
|
||||
allAttributeNameList: [],
|
||||
//选中的配件属性下标
|
||||
attributeIndex: 0,
|
||||
//所有可选子公司
|
||||
allCompanyList: [],
|
||||
//选中的子公司id
|
||||
checkedCorpIdList: [],
|
||||
//页面标题
|
||||
title: '新增配件',
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
if (options.id) {
|
||||
this.title = '修改配件'
|
||||
// 初始化完成后查询配件信息
|
||||
this.init().then(() => {
|
||||
this.selectWares(options.id)
|
||||
})
|
||||
} else {
|
||||
this.init()
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
||||
},
|
||||
methods: {
|
||||
cs(e){
|
||||
this.checkedCorpIdList =e.detail.value
|
||||
},
|
||||
/**
|
||||
* 初始化配件数据
|
||||
*/
|
||||
init() {
|
||||
//查所有可选分类
|
||||
this.selectBaseType()
|
||||
//查所有可选计量单位
|
||||
this.selectBaseUnit()
|
||||
//查所有可选来源
|
||||
this.selectDataFrom()
|
||||
//查所有可选属性
|
||||
this.selectAttribute()
|
||||
//查所有可选子公司
|
||||
this.selectCompany()
|
||||
},
|
||||
/**
|
||||
* 查所有可选分类
|
||||
*/
|
||||
selectBaseType(){
|
||||
request({
|
||||
url: '/admin-api/conf/baseType/list',
|
||||
method: 'get',
|
||||
params: {type:"02"}
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 200 && res.data.length>0) {
|
||||
this.allTypeList = res.data
|
||||
this.allTypeNameList = res.data.map((item)=>{return item.name})
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查所有可选计量单位
|
||||
*/
|
||||
selectBaseUnit(){
|
||||
request({
|
||||
url: '/admin-api/system/dict-data/type',
|
||||
method: 'get',
|
||||
params:{type:"repair_unit"}
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 200) {
|
||||
this.allUnitList = res.data
|
||||
this.allUnitNameList = res.data.map((item)=>{return item.label})
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查所有可选来源
|
||||
*/
|
||||
selectDataFrom(){
|
||||
request({
|
||||
url: '/admin-api/system/dict-data/type',
|
||||
method: 'get',
|
||||
params:{type:"wares_data_form"}
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 200) {
|
||||
this.allFromList = res.data
|
||||
this.allFromNameList = res.data.map((item)=>{return item.label})
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查所有可选属性
|
||||
*/
|
||||
selectAttribute(){
|
||||
request({
|
||||
url: '/admin-api/system/dict-data/type',
|
||||
method: 'get',
|
||||
params:{type:"wares_attribute"}
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 200) {
|
||||
this.allAttributeList = res.data
|
||||
this.allAttributeNameList = res.data.map((item)=>{return item.label})
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查所有可选子公司
|
||||
*/
|
||||
selectCompany(){
|
||||
request({
|
||||
url: '/admin-api/base/company/list',
|
||||
method: 'get'
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 200 && res.data.length>0) {
|
||||
this.allCompanyList = res.data
|
||||
this.allCompanyList.map((item)=>{
|
||||
item.checked=false
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 选分类
|
||||
*/
|
||||
typePickerChange: function(e) {
|
||||
console.log('picker发送选择改变,携带值为', e.detail.value)
|
||||
this.typeIndex = e.detail.value
|
||||
},
|
||||
/**
|
||||
* 选计量单位
|
||||
*/
|
||||
unitPickerChange: function(e) {
|
||||
console.log('picker发送选择改变,携带值为', e.detail.value)
|
||||
this.unitIndex = e.detail.value
|
||||
},
|
||||
/**
|
||||
* 选来源
|
||||
*/
|
||||
fromPickerChange: function(e) {
|
||||
console.log('picker发送选择改变,携带值为', e.detail.value)
|
||||
this.fromIndex = e.detail.value
|
||||
},
|
||||
/**
|
||||
* 选属性
|
||||
*/
|
||||
attributePickerChange: function(e) {
|
||||
console.log('picker发送选择改变,携带值为', e.detail.value)
|
||||
this.attributeIndex = e.detail.value
|
||||
},
|
||||
/**
|
||||
* 新增配件
|
||||
*/
|
||||
submit() {
|
||||
//校验必填
|
||||
if(!this.formData.name){
|
||||
uni.showToast({
|
||||
title: '请输入配件名称!',
|
||||
icon: 'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
//组装可用的子公司
|
||||
},
|
||||
methods: {
|
||||
cs(e) {
|
||||
this.checkedCorpIdList = e.detail.value
|
||||
},
|
||||
/**
|
||||
* 初始化配件数据
|
||||
*/
|
||||
async init() {
|
||||
try {
|
||||
// 等待所有数据加载完成
|
||||
await Promise.all([
|
||||
this.selectBaseType(),
|
||||
this.selectBaseUnit(),
|
||||
this.selectDataFrom(),
|
||||
this.selectAttribute(),
|
||||
this.selectCompany()
|
||||
])
|
||||
} catch (error) {
|
||||
console.error('初始化数据失败:', error)
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 查所有可选分类
|
||||
*/
|
||||
selectBaseType() {
|
||||
request({
|
||||
url: '/admin-api/conf/baseType/list',
|
||||
method: 'get',
|
||||
params: {
|
||||
type: "02"
|
||||
}
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 200 && res.data.length > 0) {
|
||||
this.allTypeList = res.data
|
||||
this.allTypeNameList = res.data.map((item) => {
|
||||
return item.name
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查所有可选计量单位
|
||||
*/
|
||||
selectBaseUnit() {
|
||||
request({
|
||||
url: '/admin-api/system/dict-data/type',
|
||||
method: 'get',
|
||||
params: {
|
||||
type: "repair_unit"
|
||||
}
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 200) {
|
||||
this.allUnitList = res.data
|
||||
this.allUnitNameList = res.data.map((item) => {
|
||||
return item.label
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查询配件信息
|
||||
*/
|
||||
selectWares(id) {
|
||||
request({
|
||||
url: `/admin-api/repair/wares/get`,
|
||||
method: 'get',
|
||||
params: {
|
||||
id
|
||||
}
|
||||
}).then((res) => {
|
||||
if (res.code === 200 && res.data) {
|
||||
this.formData = res.data
|
||||
|
||||
console.log(this.allCompanyList,"this.checkedCorpIdList")
|
||||
if(this.checkedCorpIdList.length>0){
|
||||
this.formData.corpId = this.checkedCorpIdList.join()
|
||||
}
|
||||
//组装所属分类
|
||||
this.formData.status = "01"
|
||||
this.formData.type = this.allTypeList[this.typeIndex].id
|
||||
this.formData.unit = this.allUnitList[this.unitIndex].value
|
||||
this.formData.dataForm = this.allFromList[this.fromIndex].value
|
||||
this.formData.attribute = this.allAttributeList[this.attributeIndex].value
|
||||
request({
|
||||
url: '/admin-api/repair/wares/create',
|
||||
method: 'post',
|
||||
data:this.formData
|
||||
}).then((res)=>{
|
||||
if (res.code == 200){
|
||||
uni.showToast({
|
||||
title: '新增成功!',
|
||||
icon: 'none'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
uni.navigateBack()
|
||||
},700)
|
||||
}else{
|
||||
uni.showToast({
|
||||
title: '操作失败,请联系管理员!',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
// 设置分类选中项
|
||||
if (this.allTypeList.length > 0 && res.data.type) {
|
||||
const typeIndex = this.allTypeList.findIndex(item => item.id === res.data.type)
|
||||
if (typeIndex !== -1) {
|
||||
this.typeIndex = typeIndex
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
// 设置计量单位选中项
|
||||
if (this.allUnitList.length > 0 && res.data.unit) {
|
||||
const unitIndex = this.allUnitList.findIndex(item => item.value === res.data.unit)
|
||||
if (unitIndex !== -1) {
|
||||
this.unitIndex = unitIndex
|
||||
}
|
||||
}
|
||||
|
||||
// 设置来源选中项
|
||||
if (this.allFromList.length > 0 && res.data.dataForm) {
|
||||
const fromIndex = this.allFromList.findIndex(item => item.value === res.data.dataForm)
|
||||
if (fromIndex !== -1) {
|
||||
this.fromIndex = fromIndex
|
||||
}
|
||||
}
|
||||
|
||||
// 设置配件属性选中项
|
||||
if (this.allAttributeList.length > 0 && res.data.attribute) {
|
||||
const attributeIndex = this.allAttributeList.findIndex(item => item.value === res.data
|
||||
.attribute)
|
||||
if (attributeIndex !== -1) {
|
||||
this.attributeIndex = attributeIndex
|
||||
}
|
||||
}
|
||||
|
||||
// 设置子公司选中项
|
||||
if (res.data.corpIds && res.data.corpIds.length > 0) {
|
||||
this.checkedCorpIdList = res.data.corpIds
|
||||
// 同时更新checkbox的选中状态
|
||||
this.allCompanyList.forEach(item => {
|
||||
item.checked = res.data.corpIds.includes(item.id)
|
||||
})
|
||||
}
|
||||
|
||||
// 设置状态单选按钮
|
||||
if (res.data.status) {
|
||||
this.radioOptions.forEach(item => {
|
||||
item.checked = item.value === res.data.status
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查所有可选属性
|
||||
*/
|
||||
selectAttribute() {
|
||||
request({
|
||||
url: '/admin-api/system/dict-data/type',
|
||||
method: 'get',
|
||||
params: {
|
||||
type: "wares_attribute"
|
||||
}
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 200) {
|
||||
this.allAttributeList = res.data
|
||||
this.allAttributeNameList = res.data.map((item) => {
|
||||
return item.label
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查所有可选子公司
|
||||
*/
|
||||
selectCompany() {
|
||||
request({
|
||||
url: '/admin-api/base/company/list',
|
||||
method: 'get'
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 200 && res.data.length > 0) {
|
||||
this.allCompanyList = res.data
|
||||
this.allCompanyList.map((item) => {
|
||||
item.checked = false
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查所有可选来源
|
||||
*/
|
||||
selectDataFrom() {
|
||||
request({
|
||||
url: '/admin-api/system/dict-data/type',
|
||||
method: 'get',
|
||||
params: {
|
||||
type: "wares_data_form"
|
||||
}
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 200) {
|
||||
this.allFromList = res.data
|
||||
this.allFromNameList = res.data.map((item) => {
|
||||
return item.label
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 选分类
|
||||
*/
|
||||
typePickerChange: function(e) {
|
||||
console.log('picker发送选择改变,携带值为', e.detail.value)
|
||||
this.typeIndex = e.detail.value
|
||||
},
|
||||
/**
|
||||
* 选计量单位
|
||||
*/
|
||||
unitPickerChange: function(e) {
|
||||
console.log('picker发送选择改变,携带值为', e.detail.value)
|
||||
this.unitIndex = e.detail.value
|
||||
},
|
||||
/**
|
||||
* 选来源
|
||||
*/
|
||||
fromPickerChange: function(e) {
|
||||
console.log('picker发送选择改变,携带值为', e.detail.value)
|
||||
this.fromIndex = e.detail.value
|
||||
},
|
||||
/**
|
||||
* 选属性
|
||||
*/
|
||||
attributePickerChange: function(e) {
|
||||
console.log('picker发送选择改变,携带值为', e.detail.value)
|
||||
this.attributeIndex = e.detail.value
|
||||
},
|
||||
/**
|
||||
* 新增/修改配件
|
||||
*/
|
||||
submit() {
|
||||
// 校验必填
|
||||
if (!this.formData.name) {
|
||||
uni.showToast({
|
||||
title: '请输入配件名称!',
|
||||
icon: 'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// 组装可用的子公司
|
||||
if (this.checkedCorpIdList.length > 0) {
|
||||
this.formData.corpId = this.checkedCorpIdList.join()
|
||||
}
|
||||
|
||||
// 组装其他字段
|
||||
this.formData.type = this.allTypeList[this.typeIndex].id
|
||||
this.formData.unit = this.allUnitList[this.unitIndex].value
|
||||
this.formData.dataForm = this.allFromList[this.fromIndex].value
|
||||
this.formData.attribute = this.allAttributeList[this.attributeIndex].value
|
||||
|
||||
// 判断是新增还是修改
|
||||
const isEdit = !!this.formData.id
|
||||
const url = isEdit ? '/admin-api/repair/wares/update' : '/admin-api/repair/wares/create'
|
||||
const method = isEdit ? 'put' : 'post'
|
||||
const successMsg = isEdit ? '修改成功!' : '新增成功!'
|
||||
|
||||
request({
|
||||
url: url,
|
||||
method: method,
|
||||
data: this.formData
|
||||
}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
uni.showToast({
|
||||
title: successMsg,
|
||||
icon: 'none'
|
||||
})
|
||||
setTimeout(() => {
|
||||
uni.navigateBack()
|
||||
}, 700)
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '操作失败,请联系管理员!',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.container {
|
||||
height: 100%;
|
||||
background-color: #F3F5F7;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.listBox {
|
||||
padding: 30 rpx 32 rpx;
|
||||
flex: 1;
|
||||
height: 0;
|
||||
}
|
||||
.list {
|
||||
background-color: #fff;
|
||||
padding: 0 30rpx;
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.formItem {
|
||||
box-sizing: border-box;
|
||||
margin: 0 auto;
|
||||
padding: 30rpx;
|
||||
.container {
|
||||
height: 100%;
|
||||
background-color: #F3F5F7;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
column-gap: 20rpx;
|
||||
.listBox {
|
||||
padding: 30 rpx 32 rpx;
|
||||
flex: 1;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
border-bottom: 1rpx solid #DDDDDD;
|
||||
}
|
||||
.require::before{
|
||||
content: "*";
|
||||
color: red;
|
||||
}
|
||||
.formLabel {
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
}
|
||||
.list {
|
||||
background-color: #fff;
|
||||
padding: 0 30rpx;
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.formValue {
|
||||
flex: 1;
|
||||
width: 0;
|
||||
text-align: right;
|
||||
font-size: 32rpx;
|
||||
color: #999999;
|
||||
}
|
||||
.repairBottom {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.formItem {
|
||||
box-sizing: border-box;
|
||||
margin: 0 auto;
|
||||
padding: 30rpx;
|
||||
|
||||
.repairDesc {
|
||||
font-size: 28rpx;
|
||||
color: #858BA0;
|
||||
}
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
column-gap: 20rpx;
|
||||
|
||||
.repairUnit {
|
||||
color: #333333;
|
||||
}
|
||||
border-bottom: 1rpx solid #DDDDDD;
|
||||
}
|
||||
|
||||
.footer {
|
||||
padding: 14rpx 32rpx;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.require::before {
|
||||
content: "*";
|
||||
color: red;
|
||||
}
|
||||
|
||||
.repairNum {
|
||||
flex: 1;
|
||||
width: 0;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
.formLabel {
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.submit {
|
||||
width: 208rpx;
|
||||
height: 72rpx;
|
||||
background: #0174F6;
|
||||
border-radius: 38rpx 38rpx 38rpx 38rpx;
|
||||
text-align: center;
|
||||
line-height: 72rpx;
|
||||
font-size: 32rpx;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
.formValue {
|
||||
flex: 1;
|
||||
width: 0;
|
||||
text-align: right;
|
||||
font-size: 32rpx;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.repairBottom {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.repairDesc {
|
||||
font-size: 28rpx;
|
||||
color: #858BA0;
|
||||
}
|
||||
|
||||
.repairUnit {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.footer {
|
||||
padding: 14rpx 32rpx;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.repairNum {
|
||||
flex: 1;
|
||||
width: 0;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.submit {
|
||||
width: 208rpx;
|
||||
height: 72rpx;
|
||||
background: #0174F6;
|
||||
border-radius: 38rpx 38rpx 38rpx 38rpx;
|
||||
text-align: center;
|
||||
line-height: 72rpx;
|
||||
font-size: 32rpx;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
</style>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user