Commit 42e9496e by liujinbo

Merge branch 'refs/heads/master' into master_ljb

parents cbf1888f 407c8f65
...@@ -34,6 +34,7 @@ declare module 'vue' { ...@@ -34,6 +34,7 @@ declare module 'vue' {
GlobalUpload: typeof import('./src/mocp/components/global-upload/global-upload.vue')['default'] GlobalUpload: typeof import('./src/mocp/components/global-upload/global-upload.vue')['default']
GlobalUploadImage: typeof import('./src/mocp/components/global-upload-image/global-upload-image.vue')['default'] GlobalUploadImage: typeof import('./src/mocp/components/global-upload-image/global-upload-image.vue')['default']
// 自定义组件 // 自定义组件
CustomAdminPicker: typeof import('./src/mocp/components/widget/custom-admin-picker.vue')['default']
CustomCardDetails: typeof import('./src/mocp/components/widget/custom-card-details.vue')['default'] CustomCardDetails: typeof import('./src/mocp/components/widget/custom-card-details.vue')['default']
CustomCardDetailsItem: typeof import('./src/mocp/components/widget/custom-card-details-item.vue')['default'] CustomCardDetailsItem: typeof import('./src/mocp/components/widget/custom-card-details-item.vue')['default']
CustomScore: typeof import('./src/mocp/components/widget/custom-score.vue')['default'] CustomScore: typeof import('./src/mocp/components/widget/custom-score.vue')['default']
......
...@@ -9,15 +9,7 @@ export const getAircraftNumbersApi = (data, config) => { ...@@ -9,15 +9,7 @@ export const getAircraftNumbersApi = (data, config) => {
config config
}) })
} }
//获取用户基本信息分页列表
export const getAdminListApi = (data, config) => {
return http({
method: 'POST',
url: '/system/getAdminList',
data,
config
})
}
//获取所有敏感词 //获取所有敏感词
export const getBasicParamsListApi = (data, config) => { export const getBasicParamsListApi = (data, config) => {
return http({ return http({
......
import { http } from 'mocp/utils/http' import { http } from 'mocp/utils/http'
//获取用户基本信息分页列表
export const getAdminListApi = (data, config) => {
return http({
method: 'POST',
url: '/system/getAdminList',
data,
config
})
}
//通过机号查询飞机相关数据 //通过机号查询飞机相关数据
export const getAcReduceListApi = (data, config) => { export const getAcReduceListApi = (data, config) => {
return http({ return http({
......
<template>
<!-- 选择人员 -->
<view class="picker" :style="style">
<global-popup v-model="show" :height="592" :customStyle="{ padding: '28rpx 32rpx' }">
<template #top>
<view>
<up-search placeholder="请输入内容后选择" :showAction="false" v-model="searchKey" @change="onChange"></up-search>
</view>
</template>
<view class="popup-content-list" v-if="columns.length">
<view
class="popup-content-item u-line-1"
:class="{ 'mocp-color-primary-6': modelValue == item[valueField] }"
v-for="(item, index) in columns"
:key="index"
@tap="handleChoose(item)"
>
{{ item[labelField] }}
</view>
</view>
<view style="width: 100%; height: 100%" v-else>
<global-empty></global-empty>
</view>
</global-popup>
<view class="picker-content" :class="getPickerClass" @tap="open" :style="getContentStyle">
<text class="picker-value">{{ getLabelValue }}</text>
<view class="picker-icon">
<view class="picker-icon-close" v-if="clearable && !showPlaceholder && !disabled" @tap.stop="clear">
<up-icon name="close-circle-fill" color="#c0c4cc" size="36rpx"></up-icon>
</view>
<up-icon name="arrow-right" color="#86909C" size="36rpx"></up-icon>
</view>
</view>
</view>
</template>
<script setup>
import { debounce } from 'lodash'
import { getAdminListApi } from 'mocp/api/system'
import { computed, ref, watch, watchEffect } from 'vue'
const es = defineEmits(['update:modelValue', 'change'])
const ps = defineProps({
style: {
type: Object,
default: () => {
return {}
}
},
//默认搜索的内容
searchValue: {
type: String,
default: ''
},
//显示为空的value值
emptyValue: {
type: [String, Number],
default: ''
},
modelValue: {
type: [String, Number],
default: ''
},
options: {
type: Array,
default: () => {
return []
}
},
clearable: {
type: Boolean,
default: false
},
labelField: {
type: String,
default: 'label'
},
valueField: {
type: String,
default: 'value'
},
pickAlign: {
type: String,
default: 'left'
},
placeholder: {
type: String,
default: '请选择'
},
disabled: {
type: Boolean,
default: false
},
//打开前判断
onBeforeOpen: {
type: Function,
default: null
}
})
//获取人员列表接口
const getAdminList = async (realName = '') => {
return new Promise((resolve, reject) => {
const params = {
pageIndex: 1,
pageSize: 1000,
realName
}
getAdminListApi(params, { loading: true }).then((res) => {
if (res.code == 200) {
const selectList = res.data.list.map((item) => {
return {
nickname: item.nickname,
[ps.labelField]: `${item.nickname}(${(item.enetAccount || '无易网号') + '-' + (item.deptFullName || '无机构')})`,
value: item.id
}
})
resolve(selectList)
} else {
uni.$mocpMessage.error(res.message)
reject()
}
})
})
}
//获取下拉框样式
const getContentStyle = computed(() => {
let pickAlign = 'flex-start'
if (ps.pickAlign == 'center') {
pickAlign = 'center'
} else if (ps.pickAlign == 'right') {
pickAlign = 'flex-end'
}
return {
justifyContent: pickAlign
}
})
//下拉框显示的内容
const labelValue = ref('')
const getLabelValue = computed(() => {
if (labelValue.value == ps.emptyValue) {
return ps.placeholder
}
return labelValue.value || ps.placeholder
})
//获取下拉框class
const showPlaceholder = computed(() => {
return !labelValue.value || labelValue.value == ps.emptyValue
})
const getPickerClass = computed(() => {
return {
disabled: ps.disabled,
placeholder: showPlaceholder.value
}
})
const show = ref(false)
//打开
const open = async () => {
if (ps.onBeforeOpen) {
const flag = await ps.onBeforeOpen()
if (!flag) return
}
show.value = true
}
//获取下拉框的内容Columns
const columns = ref([])
//弹出层输入框搜索
const searchKey = ref()
//点击清空按钮
const clear = () => {
labelValue.value = ''
es('update:modelValue', ps.emptyValue)
es('change', ps.emptyValue)
}
//搜索
const search = (value) => {
if (value && value != ps.emptyValue) {
getAdminList(value).then((data) => {
columns.value = data
})
} else {
columns.value = []
}
}
//设置默认搜索的内容
watch(
() => ps.searchValue,
(value) => {
if (ps.valueField == 'label') {
searchKey.value = value?.split('(')[0]
} else {
searchKey.value = value
}
if (value != ps.modelValue) {
search(searchKey.value)
}
},
{ immediate: true }
)
//监听搜索
const onChange = debounce((value) => {
if (value != ps.searchValue) {
search(value)
}
}, 200)
//获取label的内容
watchEffect(() => {
const option = columns.value?.find((option) => String(option[ps.valueField]) === String(ps.modelValue))
if (option) {
labelValue.value = option[ps.labelField]
} else {
labelValue.value = ps.emptyValue
}
})
//弹出层列表点击
const handleChoose = (row) => {
es('update:modelValue', row[ps.valueField], row)
es('change', row[ps.valueField], row)
show.value = false
}
defineExpose({
getName: () => {
return labelValue.value?.split('(')[0] || ''
}
})
</script>
<style lang="scss" scoped>
.picker {
flex: auto;
&-content {
display: flex;
align-items: center;
line-height: 48rpx;
&.placeholder {
.picker-value {
color: $mocp-text-3;
}
}
&.disabled {
background: #f5f7fa;
}
}
&-value {
color: $mocp-text-4;
margin-right: 8rpx;
}
&-icon {
display: flex;
align-items: center;
&-close {
margin-left: 4rpx;
}
}
.popup-content {
&-list {
padding-top: 20rpx;
color: $mocp-text-4;
}
&-item {
margin-bottom: 40rpx;
&:last-child {
margin-bottom: 0;
}
}
}
}
</style>
...@@ -70,6 +70,16 @@ const useAppraisalRecordStore = defineStore('appraisalRecord', { ...@@ -70,6 +70,16 @@ const useAppraisalRecordStore = defineStore('appraisalRecord', {
} }
}, },
// 配置持久化 // 配置持久化
persist: false persist: {
// 调整为兼容多端的API
storage: {
setItem(key, value) {
uni.setStorageSync(key, value)
},
getItem(key) {
return uni.getStorageSync(key)
}
}
}
}) })
export default useAppraisalRecordStore export default useAppraisalRecordStore
...@@ -173,29 +173,6 @@ const useBaseStore = defineStore('base', { ...@@ -173,29 +173,6 @@ const useBaseStore = defineStore('base', {
this.selectList.ATAList = res.data.ataList this.selectList.ATAList = res.data.ataList
} }
}, },
async getAdminList(realName = '') {
return new Promise((resolve, reject) => {
const params = {
pageIndex: 1,
pageSize: 100,
realName
}
getAdminListApi(params, { loading: true }).then((res) => {
if (res.code == 200) {
const selectList = res.data.list.map((item) => {
return {
label: `${item.nickname}(${(item.enetAccount || '无易网号') + '-' + (item.deptFullName || '无机构')})`,
value: item.id
}
})
resolve(selectList)
} else {
uni.$mocpMessage.error(res.message)
reject()
}
})
})
},
async getEngineList() { async getEngineList() {
const res = await getEngineListApi({}) const res = await getEngineListApi({})
if (res.code == 200) { if (res.code == 200) {
......
...@@ -110,8 +110,10 @@ const handleAdd = (isDuty) => { ...@@ -110,8 +110,10 @@ const handleAdd = (isDuty) => {
let realName = '' let realName = ''
if (isDuty == 0) { if (isDuty == 0) {
params = { id: details.value.id, isDuty, mid: details.value.dmUid, opinionType: details.value.opinionType, msg: details.value.dmMsg } params = { id: details.value.id, isDuty, mid: details.value.dmUid, opinionType: details.value.opinionType, msg: details.value.dmMsg }
realName = details.value.dmName
} else { } else {
params = { id: details.value.id, isDuty, mid: details.value.qmUid, opinionType: details.value.qualityOpinionType, msg: details.value.qmMsg } params = { id: details.value.id, isDuty, mid: details.value.qmUid, opinionType: details.value.qualityOpinionType, msg: details.value.qmMsg }
realName = details.value.qmName
} }
uni.$mocpJump.navigateTo('/panel/appraisal-record/edit-rqm-opinion').then(() => { uni.$mocpJump.navigateTo('/panel/appraisal-record/edit-rqm-opinion').then(() => {
uni.$emit('appraisalRecordOpinionEdit', params, realName) uni.$emit('appraisalRecordOpinionEdit', params, realName)
......
...@@ -10,7 +10,13 @@ ...@@ -10,7 +10,13 @@
<view class="mocp-form"> <view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto"> <up-form labelPosition="left" labelWidth="auto">
<up-form-item :label="formData.isDuty == 0 ? '公司值班经理' : '品质中心经理'" :borderBottom="true"> <up-form-item :label="formData.isDuty == 0 ? '公司值班经理' : '品质中心经理'" :borderBottom="true">
<global-picker pickAlign="right" clearable v-model="formData.mid" :options="selectList" emptyValue="-1" filter></global-picker> <custom-admin-picker
pickAlign="right"
clearable
v-model="formData.mid"
:searchValue="searchValue"
emptyValue="-1"
></custom-admin-picker>
</up-form-item> </up-form-item>
<up-form-item :label="formData.isDuty == 0 ? '公司值班经理意见' : '品质中心经理意见'" :borderBottom="true"> <up-form-item :label="formData.isDuty == 0 ? '公司值班经理意见' : '品质中心经理意见'" :borderBottom="true">
<global-radio <global-radio
...@@ -43,9 +49,7 @@ import { saveRqmOpinionApi } from 'mocp/api/appraisal-record' ...@@ -43,9 +49,7 @@ import { saveRqmOpinionApi } from 'mocp/api/appraisal-record'
import { onLoad } from '@dcloudio/uni-app' import { onLoad } from '@dcloudio/uni-app'
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import useAppraisalRecordStore from 'mocp/store/appraisal-record' import useAppraisalRecordStore from 'mocp/store/appraisal-record'
import useBaseStore from 'mocp/store/base'
const baseStore = useBaseStore()
const appraisalRecordStore = useAppraisalRecordStore() const appraisalRecordStore = useAppraisalRecordStore()
//表单数据 //表单数据
const formData = reactive({ const formData = reactive({
...@@ -55,14 +59,11 @@ const formData = reactive({ ...@@ -55,14 +59,11 @@ const formData = reactive({
opinionType: -1, opinionType: -1,
msg: '' msg: ''
}) })
//获取下拉框列表 const searchValue = ref('')
const selectList = ref([])
onLoad(() => { onLoad(() => {
uni.$once('appraisalRecordOpinionEdit', (data) => { uni.$once('appraisalRecordOpinionEdit', (data, realName) => {
Object.assign(formData, data) Object.assign(formData, data)
baseStore.getAdminList().then((res) => { searchValue.value = realName
selectList.value = res
})
}) })
}) })
const handleRightClick = async () => { const handleRightClick = async () => {
......
...@@ -17,14 +17,13 @@ ...@@ -17,14 +17,13 @@
<global-picker v-model.number="formData.state" pickAlign="right" clearable dictkey="mco_stepState"></global-picker> <global-picker v-model.number="formData.state" pickAlign="right" clearable dictkey="mco_stepState"></global-picker>
</up-form-item> </up-form-item>
<up-form-item label="工作人" :borderBottom="true"> <up-form-item label="工作人" :borderBottom="true">
<global-picker <custom-admin-picker
pickAlign="right" pickAlign="right"
clearable clearable
v-model="formData.staff" v-model="formData.staff"
:options="selectList" valueField="label"
emptyValue="-1" :searchValue="formData.staff"
filter ></custom-admin-picker>
></global-picker>
</up-form-item> </up-form-item>
<up-form-item label="实际工时" :borderBottom="true"> <up-form-item label="实际工时" :borderBottom="true">
<up-input v-model="formData.stateP" inputAlign="right" border="none" placeholder="请输入" clearable type="number"> <up-input v-model="formData.stateP" inputAlign="right" border="none" placeholder="请输入" clearable type="number">
...@@ -62,12 +61,10 @@ ...@@ -62,12 +61,10 @@
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import useMcoStore from 'mocp/store/mco' import useMcoStore from 'mocp/store/mco'
import { timeStampFormat } from 'mocp/utils/tool' import { timeStampFormat } from 'mocp/utils/tool'
import useBaseStore from 'mocp/store/base'
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app' import { onLoad } from '@dcloudio/uni-app'
import { addBackApi } from 'mocp/api/mco' import { addBackApi } from 'mocp/api/mco'
const baseStore = useBaseStore()
const mcoStore = useMcoStore() const mcoStore = useMcoStore()
const { getStepDetails } = storeToRefs(mcoStore) const { getStepDetails } = storeToRefs(mcoStore)
const formData = reactive({ const formData = reactive({
...@@ -78,8 +75,6 @@ const formData = reactive({ ...@@ -78,8 +75,6 @@ const formData = reactive({
content: '', content: '',
contentFile: '' contentFile: ''
}) })
//获取下拉框列表
const selectList = ref([])
onLoad(() => { onLoad(() => {
const details = getStepDetails.value.backList || {} const details = getStepDetails.value.backList || {}
formData.state = details.state formData.state = details.state
...@@ -87,15 +82,12 @@ onLoad(() => { ...@@ -87,15 +82,12 @@ onLoad(() => {
formData.stateP = details.actualWork.split('X')[0] formData.stateP = details.actualWork.split('X')[0]
formData.stateH = details.actualWork.split('X')[1] formData.stateH = details.actualWork.split('X')[1]
formData.content = details.content formData.content = details.content
baseStore.getAdminList().then((res) => {
selectList.value = res
})
}) })
//提交 //提交
const handleFooterClick = async () => { const handleFooterClick = async () => {
const params = {} const params = {}
params.id = getStepDetails.value.id params.id = getStepDetails.value.id
if (getStepDetails.value.backList) { if (getStepDetails.value?.backList?.id) {
params.isAdd = 2 params.isAdd = 2
} else { } else {
params.isAdd = 1 params.isAdd = 1
......
...@@ -10,7 +10,13 @@ ...@@ -10,7 +10,13 @@
<view class="mocp-form"> <view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto"> <up-form labelPosition="left" labelWidth="auto">
<up-form-item label="公司值班经理" :borderBottom="true"> <up-form-item label="公司值班经理" :borderBottom="true">
<global-picker pickAlign="right" clearable v-model="formData.approver" :options="selectList" filter></global-picker> <custom-admin-picker
ref="adminPickerRef"
pickAlign="right"
clearable
v-model="formData.approver"
:searchValue="details.approverName"
></custom-admin-picker>
</up-form-item> </up-form-item>
<up-form-item label="公司值班经理意见" :borderBottom="true"> <up-form-item label="公司值班经理意见" :borderBottom="true">
<global-radio radioAlign="right" clearable v-model="formData.decisionState" dictkey="md_decisionState"></global-radio> <global-radio radioAlign="right" clearable v-model="formData.decisionState" dictkey="md_decisionState"></global-radio>
...@@ -31,12 +37,10 @@ ...@@ -31,12 +37,10 @@
<script setup> <script setup>
import { onLoad } from '@dcloudio/uni-app' import { onLoad } from '@dcloudio/uni-app'
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import useBaseStore from 'mocp/store/base'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import useMoveDecisionStore from 'mocp/store/move-decision' import useMoveDecisionStore from 'mocp/store/move-decision'
import { updateApproverInfoApi } from 'mocp/api/move-decision' import { updateApproverInfoApi } from 'mocp/api/move-decision'
const baseStore = useBaseStore()
const moveDecisionStore = useMoveDecisionStore() const moveDecisionStore = useMoveDecisionStore()
const { details } = storeToRefs(moveDecisionStore) const { details } = storeToRefs(moveDecisionStore)
//表单数据 //表单数据
...@@ -46,24 +50,20 @@ const formData = reactive({ ...@@ -46,24 +50,20 @@ const formData = reactive({
decisionState: '', decisionState: '',
decisionOpinion: '' decisionOpinion: ''
}) })
//获取下拉框列表
const selectList = ref([])
onLoad(() => { onLoad(() => {
formData.id = details.value.id formData.id = details.value.id
formData.approver = details.value.approver formData.approver = details.value.approver
formData.decisionState = details.value.decisionState formData.decisionState = details.value.decisionState
formData.decisionOpinion = details.value.decisionOpinion formData.decisionOpinion = details.value.decisionOpinion
baseStore.getAdminList().then((res) => {
selectList.value = res
})
}) })
const adminPickerRef = ref()
const handleRightClick = async () => { const handleRightClick = async () => {
const res = await updateApproverInfoApi(formData, { loading: true }) const res = await updateApproverInfoApi(formData, { loading: true })
if (res.code == 200) { if (res.code == 200) {
uni.$mocpJump.navigateBack() uni.$mocpJump.navigateBack()
uni.$mocpMessage.success(res.message) uni.$mocpMessage.success(res.message)
res.data.approver = formData.approver res.data.approver = formData.approver
res.data.approverName = selectList.value.find((item) => item.value == formData.approver)?.label.split('(')[0] || '' res.data.approverName = adminPickerRef.value?.getName()
res.data.decisionState = formData.decisionState res.data.decisionState = formData.decisionState
res.data.decisionOpinion = formData.decisionOpinion res.data.decisionOpinion = formData.decisionOpinion
//更新详情 //更新详情
......
...@@ -3,7 +3,13 @@ ...@@ -3,7 +3,13 @@
<view class="mocp-form"> <view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto"> <up-form labelPosition="left" labelWidth="auto">
<up-form-item label="MCO主任" :borderBottom="true"> <up-form-item label="MCO主任" :borderBottom="true">
<global-picker pickAlign="right" clearable v-model="formData.mcoDirector" :options="selectList" filter></global-picker> <custom-admin-picker
ref="adminPickerRef"
pickAlign="right"
clearable
v-model="formData.mcoDirector"
:searchValue="details.mcoDirectorName"
></custom-admin-picker>
</up-form-item> </up-form-item>
<up-form-item label="MCP主任意见" :borderBottom="true"> <up-form-item label="MCP主任意见" :borderBottom="true">
<global-radio radioAlign="right" clearable v-model="formData.mcoDirectorDecisionState" dictkey="md_decisionState"></global-radio> <global-radio radioAlign="right" clearable v-model="formData.mcoDirectorDecisionState" dictkey="md_decisionState"></global-radio>
...@@ -24,12 +30,10 @@ ...@@ -24,12 +30,10 @@
<script setup> <script setup>
import { onLoad } from '@dcloudio/uni-app' import { onLoad } from '@dcloudio/uni-app'
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import useBaseStore from 'mocp/store/base'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import useMoveDecisionStore from 'mocp/store/move-decision' import useMoveDecisionStore from 'mocp/store/move-decision'
import { updateMcoDirectorInfoApi } from 'mocp/api/move-decision' import { updateMcoDirectorInfoApi } from 'mocp/api/move-decision'
const baseStore = useBaseStore()
const moveDecisionStore = useMoveDecisionStore() const moveDecisionStore = useMoveDecisionStore()
const { details } = storeToRefs(moveDecisionStore) const { details } = storeToRefs(moveDecisionStore)
//表单数据 //表单数据
...@@ -39,24 +43,20 @@ const formData = reactive({ ...@@ -39,24 +43,20 @@ const formData = reactive({
mcoDirectorDecisionState: '', mcoDirectorDecisionState: '',
mcoDirectorOpinion: '' mcoDirectorOpinion: ''
}) })
//获取下拉框列表
const selectList = ref([])
onLoad(() => { onLoad(() => {
formData.id = details.value.id formData.id = details.value.id
formData.mcoDirector = details.value.mcoDirector formData.mcoDirector = details.value.mcoDirector
formData.mcoDirectorDecisionState = details.value.mcoDirectorDecisionState formData.mcoDirectorDecisionState = details.value.mcoDirectorDecisionState
formData.mcoDirectorOpinion = details.value.mcoDirectorOpinion formData.mcoDirectorOpinion = details.value.mcoDirectorOpinion
baseStore.getAdminList().then((res) => {
selectList.value = res
})
}) })
const adminPickerRef = ref()
const handleRightClick = async () => { const handleRightClick = async () => {
const res = await updateMcoDirectorInfoApi(formData, { loading: true }) const res = await updateMcoDirectorInfoApi(formData, { loading: true })
if (res.code == 200) { if (res.code == 200) {
uni.$mocpJump.navigateBack() uni.$mocpJump.navigateBack()
uni.$mocpMessage.success(res.message) uni.$mocpMessage.success(res.message)
res.data.mcoDirector = formData.mcoDirector res.data.mcoDirector = formData.mcoDirector
res.data.mcoDirectorName = selectList.value.find((item) => item.value == formData.mcoDirector)?.label.split('(')[0] || '' res.data.mcoDirectorName = adminPickerRef.value?.getName()
res.data.mcoDirectorDecisionState = formData.mcoDirectorDecisionState res.data.mcoDirectorDecisionState = formData.mcoDirectorDecisionState
res.data.mcoDirectorOpinion = formData.mcoDirectorOpinion res.data.mcoDirectorOpinion = formData.mcoDirectorOpinion
//更新详情 //更新详情
......
...@@ -10,7 +10,13 @@ ...@@ -10,7 +10,13 @@
<view class="mocp-form"> <view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto"> <up-form labelPosition="left" labelWidth="auto">
<up-form-item label="授权工程师" :borderBottom="true"> <up-form-item label="授权工程师" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.estimateEngineer" clearable :options="estimateOpts" filter></global-picker> <custom-admin-picker
ref="adminPickerRef"
pickAlign="right"
clearable
v-model="formData.estimateEngineer"
:searchValue="details.estimateEngineerName"
></custom-admin-picker>
</up-form-item> </up-form-item>
<up-form-item label="日期" :borderBottom="true"> <up-form-item label="日期" :borderBottom="true">
<global-date pickAlign="right" v-model="formData.engineerTime" clearable :timestamp="false"></global-date> <global-date pickAlign="right" v-model="formData.engineerTime" clearable :timestamp="false"></global-date>
...@@ -62,11 +68,9 @@ import { onLoad } from '@dcloudio/uni-app' ...@@ -62,11 +68,9 @@ import { onLoad } from '@dcloudio/uni-app'
import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation' import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import useBaseStore from 'mocp/store/base'
import { addEngineeringApi } from 'mocp/api/technology-evaluation' import { addEngineeringApi } from 'mocp/api/technology-evaluation'
import { getParamsByType } from 'mocp/hooks/use-params/useParams' import { getParamsByType } from 'mocp/hooks/use-params/useParams'
const baseStore = useBaseStore()
const technologyEvaluationStore = useTechnologyEvaluationStore() const technologyEvaluationStore = useTechnologyEvaluationStore()
const { details } = storeToRefs(technologyEvaluationStore) const { details } = storeToRefs(technologyEvaluationStore)
const formData = reactive({ const formData = reactive({
...@@ -79,8 +83,6 @@ const formData = reactive({ ...@@ -79,8 +83,6 @@ const formData = reactive({
estimateType: null, estimateType: null,
engineerTime: null engineerTime: null
}) })
//页面初始化
const estimateOpts = ref([])
onLoad(() => { onLoad(() => {
formData.id = details.value.id formData.id = details.value.id
formData.num = details.value.num formData.num = details.value.num
...@@ -90,17 +92,15 @@ onLoad(() => { ...@@ -90,17 +92,15 @@ onLoad(() => {
formData.estimateEngineer = details.value.estimateEngineer formData.estimateEngineer = details.value.estimateEngineer
formData.estimateType = details.value.estimateType formData.estimateType = details.value.estimateType
formData.engineerTime = details.value.engineerTime formData.engineerTime = details.value.engineerTime
baseStore.getAdminList().then((res) => {
estimateOpts.value = res
})
}) })
//保存 //保存
const adminPickerRef = ref()
const handleSave = async () => { const handleSave = async () => {
const res = await addEngineeringApi(formData, { loading: true }) const res = await addEngineeringApi(formData, { loading: true })
if (res.code == 200) { if (res.code == 200) {
uni.$mocpJump.navigateBack() uni.$mocpJump.navigateBack()
uni.$mocpMessage.success(res.message) uni.$mocpMessage.success(res.message)
res.data.estimateEngineerName = estimateOpts.value.find((item) => item.value == formData.estimateEngineer)?.label.split('(')[0] || '' res.data.estimateEngineerName = adminPickerRef.value?.getName()
//更新详情 //更新详情
technologyEvaluationStore.setState('details', res.data) technologyEvaluationStore.setState('details', res.data)
} else { } else {
......
...@@ -10,7 +10,13 @@ ...@@ -10,7 +10,13 @@
<view class="mocp-form"> <view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto"> <up-form labelPosition="left" labelWidth="auto">
<up-form-item label="机队经理或其授权人" :borderBottom="true"> <up-form-item label="机队经理或其授权人" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.otherName" clearable :options="otherNameOpts" filter></global-picker> <custom-admin-picker
ref="adminPickerRef"
pickAlign="right"
clearable
v-model="formData.otherName"
:searchValue="details.otherFullName"
></custom-admin-picker>
</up-form-item> </up-form-item>
<up-form-item label="机队经理或其授权人意见" :borderBottom="true"> <up-form-item label="机队经理或其授权人意见" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.opinionType" clearable dictkey="te_opinionType" emptyValue="0"></global-picker> <global-picker pickAlign="right" v-model="formData.opinionType" clearable dictkey="te_opinionType" emptyValue="0"></global-picker>
...@@ -25,10 +31,8 @@ import { onLoad } from '@dcloudio/uni-app' ...@@ -25,10 +31,8 @@ import { onLoad } from '@dcloudio/uni-app'
import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation' import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import useBaseStore from 'mocp/store/base'
import { addOpinionApi } from 'mocp/api/technology-evaluation' import { addOpinionApi } from 'mocp/api/technology-evaluation'
const baseStore = useBaseStore()
const technologyEvaluationStore = useTechnologyEvaluationStore() const technologyEvaluationStore = useTechnologyEvaluationStore()
const { details } = storeToRefs(technologyEvaluationStore) const { details } = storeToRefs(technologyEvaluationStore)
const formData = reactive({ const formData = reactive({
...@@ -38,23 +42,20 @@ const formData = reactive({ ...@@ -38,23 +42,20 @@ const formData = reactive({
opinionType: '' opinionType: ''
}) })
//页面初始化 //页面初始化
const otherNameOpts = ref([])
onLoad(() => { onLoad(() => {
formData.id = details.value.id formData.id = details.value.id
formData.num = details.value.num formData.num = details.value.num
formData.otherName = details.value.otherName formData.otherName = details.value.otherName
formData.opinionType = details.value.opinionType formData.opinionType = details.value.opinionType
baseStore.getAdminList().then((res) => {
otherNameOpts.value = res
})
}) })
//保存 //保存
const adminPickerRef = ref()
const handleSave = async () => { const handleSave = async () => {
const res = await addOpinionApi(formData, { loading: true }) const res = await addOpinionApi(formData, { loading: true })
if (res.code == 200) { if (res.code == 200) {
uni.$mocpJump.navigateBack() uni.$mocpJump.navigateBack()
uni.$mocpMessage.success(res.message) uni.$mocpMessage.success(res.message)
res.data.otherFullName = otherNameOpts.value.find((item) => item.value == formData.otherName)?.label.split('(')[0] || '' res.data.otherFullName = adminPickerRef.value?.getName()
//更新详情 //更新详情
technologyEvaluationStore.setState('details', res.data) technologyEvaluationStore.setState('details', res.data)
} else { } else {
......
...@@ -10,7 +10,13 @@ ...@@ -10,7 +10,13 @@
<view class="mocp-form"> <view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto"> <up-form labelPosition="left" labelWidth="auto">
<up-form-item label="客户工程授权人" :borderBottom="true"> <up-form-item label="客户工程授权人" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.customName" clearable :options="customNameOpts" filter></global-picker> <custom-admin-picker
ref="adminPickerRef"
pickAlign="right"
clearable
v-model="formData.customName"
:searchValue="details.customFullName"
></custom-admin-picker>
</up-form-item> </up-form-item>
<up-form-item label="客户工程授权人意见" :borderBottom="true"> <up-form-item label="客户工程授权人意见" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.customType" clearable dictkey="te_customType" emptyValue="0"></global-picker> <global-picker pickAlign="right" v-model="formData.customType" clearable dictkey="te_customType" emptyValue="0"></global-picker>
...@@ -25,10 +31,8 @@ import { onLoad } from '@dcloudio/uni-app' ...@@ -25,10 +31,8 @@ import { onLoad } from '@dcloudio/uni-app'
import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation' import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import useBaseStore from 'mocp/store/base'
import { addRatifyApi } from 'mocp/api/technology-evaluation' import { addRatifyApi } from 'mocp/api/technology-evaluation'
const baseStore = useBaseStore()
const technologyEvaluationStore = useTechnologyEvaluationStore() const technologyEvaluationStore = useTechnologyEvaluationStore()
const { details } = storeToRefs(technologyEvaluationStore) const { details } = storeToRefs(technologyEvaluationStore)
const formData = reactive({ const formData = reactive({
...@@ -38,23 +42,20 @@ const formData = reactive({ ...@@ -38,23 +42,20 @@ const formData = reactive({
customType: '' customType: ''
}) })
//页面初始化 //页面初始化
const customNameOpts = ref([])
onLoad(() => { onLoad(() => {
formData.id = details.value.id formData.id = details.value.id
formData.num = details.value.num formData.num = details.value.num
formData.customName = details.value.customName formData.customName = details.value.customName
formData.customType = details.value.customType formData.customType = details.value.customType
baseStore.getAdminList().then((res) => {
customNameOpts.value = res
})
}) })
//保存 //保存
const adminPickerRef = ref()
const handleSave = async () => { const handleSave = async () => {
const res = await addRatifyApi(formData, { loading: true }) const res = await addRatifyApi(formData, { loading: true })
if (res.code == 200) { if (res.code == 200) {
uni.$mocpJump.navigateBack() uni.$mocpJump.navigateBack()
uni.$mocpMessage.success(res.message) uni.$mocpMessage.success(res.message)
res.data.customFullName = customNameOpts.value.find((item) => item.value == formData.customName)?.label.split('(')[0] || '' res.data.customFullName = adminPickerRef.value?.getName()
//更新详情 //更新详情
technologyEvaluationStore.setState('details', res.data) technologyEvaluationStore.setState('details', res.data)
} else { } else {
......
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