feat:设备管理修改
This commit is contained in:
@@ -50,7 +50,7 @@ watch(
|
|||||||
newVal => {
|
newVal => {
|
||||||
if (!newVal) return (fileList.value = [])
|
if (!newVal) return (fileList.value = [])
|
||||||
const urls = Array.isArray(newVal) ? newVal : newVal.split(',')
|
const urls = Array.isArray(newVal) ? newVal : newVal.split(',')
|
||||||
imgs.value = urls.map(url => url.previewUrl)
|
imgs.value = urls.map(url => url.url)
|
||||||
fileList.value = urls.map(url => ({
|
fileList.value = urls.map(url => ({
|
||||||
url: url.url,
|
url: url.url,
|
||||||
status: 'success',
|
status: 'success',
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
"name" : "实验室管理系统",
|
"name" : "实验室管理系统",
|
||||||
"appid" : "__UNI__4B3B4B0",
|
"appid" : "__UNI__4B3B4B0",
|
||||||
"description" : "实验室管理系统",
|
"description" : "实验室管理系统",
|
||||||
"versionName": "1.1.6",
|
"versionName" : "1.1.7",
|
||||||
"versionCode": 116,
|
"versionCode" : 117,
|
||||||
"transformPx" : false,
|
"transformPx" : false,
|
||||||
"app-plus" : {
|
"app-plus" : {
|
||||||
"usingComponents" : true,
|
"usingComponents" : true,
|
||||||
@@ -54,10 +54,7 @@
|
|||||||
"dSYMs" : false
|
"dSYMs" : false
|
||||||
},
|
},
|
||||||
"harmony" : {
|
"harmony" : {
|
||||||
"permissions": [
|
"permissions" : [ "ohos.permission.INTERNET", "ohos.permission.GET_NETWORK_INFO" ],
|
||||||
"ohos.permission.INTERNET",
|
|
||||||
"ohos.permission.GET_NETWORK_INFO"
|
|
||||||
],
|
|
||||||
"package" : "zzjc.test.app",
|
"package" : "zzjc.test.app",
|
||||||
"compatibleSdkVersion" : 5
|
"compatibleSdkVersion" : 5
|
||||||
},
|
},
|
||||||
@@ -98,21 +95,21 @@
|
|||||||
/* 可选,JSON对象,应用UserAgent相关配置 **/
|
/* 可选,JSON对象,应用UserAgent相关配置 **/
|
||||||
"useragent" : {
|
"useragent" : {
|
||||||
/* 可选,字符串类型,设置的默认userAgent值 */
|
/* 可选,字符串类型,设置的默认userAgent值 */
|
||||||
"value": "LIMS-PDA/1.1.6",
|
"value" : "LIMS-PDA/1.1.7",
|
||||||
/* 可选,Boolean类型,是否将value值作为追加值连接到系统默认userAgent值之后 */
|
/* 可选,Boolean类型,是否将value值作为追加值连接到系统默认userAgent值之后 */
|
||||||
"concatenate" : true
|
"concatenate" : true
|
||||||
},
|
},
|
||||||
/* 可选,JSON对象,Android平台应用UserAgent相关配置,优先级高于useragent配置 */
|
/* 可选,JSON对象,Android平台应用UserAgent相关配置,优先级高于useragent配置 */
|
||||||
"useragent_android" : {
|
"useragent_android" : {
|
||||||
/* 可选,字符串类型,设置的默认userAgent值 */
|
/* 可选,字符串类型,设置的默认userAgent值 */
|
||||||
"value": "LIMS-PDA/1.1.6",
|
"value" : "LIMS-PDA/1.1.7",
|
||||||
/* 可选,Boolean类型,是否将value值作为追加值连接到系统默认userAgent值之后 */
|
/* 可选,Boolean类型,是否将value值作为追加值连接到系统默认userAgent值之后 */
|
||||||
"concatenate" : true
|
"concatenate" : true
|
||||||
},
|
},
|
||||||
/* 可选,JSON对象,iOS平台应用UserAgent相关配置,优先级高于useragent配置 */
|
/* 可选,JSON对象,iOS平台应用UserAgent相关配置,优先级高于useragent配置 */
|
||||||
"useragent_ios" : {
|
"useragent_ios" : {
|
||||||
/* 可选,字符串类型,设置的默认userAgent值 */
|
/* 可选,字符串类型,设置的默认userAgent值 */
|
||||||
"value": "LIMS-PDA/1.1.6",
|
"value" : "LIMS-PDA/1.1.7",
|
||||||
/* 可选,Boolean类型,是否将value值作为追加值连接到系统默认userAgent值之后 */
|
/* 可选,Boolean类型,是否将value值作为追加值连接到系统默认userAgent值之后 */
|
||||||
"concatenate" : true
|
"concatenate" : true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -305,7 +305,7 @@
|
|||||||
{
|
{
|
||||||
"path": "pages/material/outbound/index",
|
"path": "pages/material/outbound/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "出库",
|
"navigationBarTitleText": "物料领用",
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -347,7 +347,7 @@
|
|||||||
{
|
{
|
||||||
"path": "pages/material/openMark/index",
|
"path": "pages/material/openMark/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "试剂开封",
|
"navigationBarTitleText": "开封",
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<view
|
<view
|
||||||
class="label-my"
|
class="label-my"
|
||||||
:style="{ fontWeight: checkFeadToDetailField(field.headToDetailField) ? 'bold' : 'normal' }"
|
:style="{ fontWeight: checkFeadToDetailField(field.headToDetailField) ? 'bold' : 'normal' }"
|
||||||
>{{ field.label }}</view
|
><text v-if="field.required" style="color: red">*</text>{{ field.label }}</view
|
||||||
>
|
>
|
||||||
<view class="content-my">
|
<view class="content-my">
|
||||||
<view v-if="field.type == 'title'" class="content-title">
|
<view v-if="field.type == 'title'" class="content-title">
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
:placeholder="field.placeholder"
|
:placeholder="field.placeholder"
|
||||||
:disabled="field.disabled || field.fillingWay == 'calculate'"
|
:disabled="field.disabled || field.fillingWay == 'calculate'"
|
||||||
/>
|
/>
|
||||||
<uni-data-select
|
<zxz-uni-data-select
|
||||||
v-if="field.type == 'Select'"
|
v-if="field.type == 'Select'"
|
||||||
v-model="field.value"
|
v-model="field.value"
|
||||||
:multiple="field.multiple"
|
:multiple="field.multiple"
|
||||||
@@ -162,6 +162,7 @@ async function loadTaskDetail() {
|
|||||||
label: item.fieldName,
|
label: item.fieldName,
|
||||||
fieldKey: item.fieldKey,
|
fieldKey: item.fieldKey,
|
||||||
type: item.fieldType,
|
type: item.fieldType,
|
||||||
|
required: customConfig.required,
|
||||||
placeholder: '请输入',
|
placeholder: '请输入',
|
||||||
hidden: false
|
hidden: false
|
||||||
}
|
}
|
||||||
@@ -364,6 +365,14 @@ function looseEqual(a, b) {
|
|||||||
// 保存抬头字段(带确认弹窗)
|
// 保存抬头字段(带确认弹窗)
|
||||||
function saveHeadData() {
|
function saveHeadData() {
|
||||||
if (!realFormData.value['assayTime']) return nx.$helper.showToast('请选择分析时间')
|
if (!realFormData.value['assayTime']) return nx.$helper.showToast('请选择分析时间')
|
||||||
|
// 校验动态字段是否为空
|
||||||
|
|
||||||
|
for (const field of formFields.value) {
|
||||||
|
if (field.required && (!field.value || field.value?.length === 0)) {
|
||||||
|
nx.$helper.showToast('请填写' + field.label)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
if (checkPropertyEquality()) {
|
if (checkPropertyEquality()) {
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: '提示',
|
title: '提示',
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -165,6 +165,10 @@ async function getDailyCheckRecord(id) {
|
|||||||
res.checkUserName = nx.$store('user').userInfo.nickname
|
res.checkUserName = nx.$store('user').userInfo.nickname
|
||||||
}
|
}
|
||||||
detailInfo.value = res
|
detailInfo.value = res
|
||||||
|
let files = res.businessFileRet.data.map((item) => {
|
||||||
|
return { id: item.fileId, name: item.fileName, url: item.fileUrl ,status: 'success',}
|
||||||
|
})
|
||||||
|
detailInfo.value.files = files
|
||||||
modalType.value = res.submitFlag
|
modalType.value = res.submitFlag
|
||||||
|
|
||||||
lockOrientation('landscape')
|
lockOrientation('landscape')
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -150,6 +150,10 @@ async function getDetailInfo(id) {
|
|||||||
res.checkUserName = nx.$store('user').userInfo.nickname
|
res.checkUserName = nx.$store('user').userInfo.nickname
|
||||||
}
|
}
|
||||||
detailInfo.value = res
|
detailInfo.value = res
|
||||||
|
let files = res.businessFileRet.data.map((item) => {
|
||||||
|
return { id: item.fileId, name: item.fileName, url: item.fileUrl ,status: 'success',}
|
||||||
|
})
|
||||||
|
detailInfo.value.files = files
|
||||||
modalType.value = res.submitFlag
|
modalType.value = res.submitFlag
|
||||||
lockOrientation('landscape')
|
lockOrientation('landscape')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,26 +8,22 @@
|
|||||||
</view>
|
</view>
|
||||||
<scroll-view style="height: 60vh" scroll-y scroll-with-animation class="mt16 pl16">
|
<scroll-view style="height: 60vh" scroll-y scroll-with-animation class="mt16 pl16">
|
||||||
<template v-if="taskList.length > 0">
|
<template v-if="taskList.length > 0">
|
||||||
<up-radio-group v-model="selectRowId" placement="column">
|
<u-checkbox-group placement="column" v-model="selectRows">
|
||||||
<view v-for="(task, index) in taskList">
|
<view v-for="(task, index) in taskList">
|
||||||
<up-radio :name="task.id">
|
<u-checkbox :name="task.id">
|
||||||
<template #label>
|
<template #label>
|
||||||
<view
|
<view class="x-f pb4 pl8 border-b full-width" @click="current = index">
|
||||||
class="x-f pb4 pl8 border-b full-width"
|
|
||||||
:class="{ active: current === index }"
|
|
||||||
@click="current = index"
|
|
||||||
>
|
|
||||||
<view class="fs20">{{ task.taskNo }}</view>
|
<view class="fs20">{{ task.taskNo }}</view>
|
||||||
<view class="pl16 pr16">{{ task.taskName }}{{ task.assayOper }}</view>
|
<view class="pl32 pr32">{{ task.taskName }}{{ task.assayOper }}</view>
|
||||||
<view class="x-f">
|
<view class="x-f">
|
||||||
<u-icon name="clock"></u-icon>
|
<u-icon name="clock"></u-icon>
|
||||||
<text class="ml5">{{ nx.$helper.formateToDateTime(task.taskAssignTime) }}</text>
|
<text class="ml5">{{ nx.$helper.formateToDateTime(task.taskAssignTime) }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
</up-radio>
|
</u-checkbox>
|
||||||
</view>
|
</view>
|
||||||
</up-radio-group>
|
</u-checkbox-group>
|
||||||
</template>
|
</template>
|
||||||
<up-empty v-else text="暂无数据" mode="list"> </up-empty>
|
<up-empty v-else text="暂无数据" mode="list"> </up-empty>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
@@ -44,7 +40,7 @@ let emits = defineEmits(['confirm'])
|
|||||||
const addConfigShow = ref(false)
|
const addConfigShow = ref(false)
|
||||||
function show() {
|
function show() {
|
||||||
addConfigShow.value = true
|
addConfigShow.value = true
|
||||||
selectRowId.value = undefined
|
selectRows.value = []
|
||||||
current.value = undefined
|
current.value = undefined
|
||||||
getAssayTaskList()
|
getAssayTaskList()
|
||||||
}
|
}
|
||||||
@@ -63,22 +59,41 @@ const getAssayTaskList = async () => {
|
|||||||
function handleCancel() {
|
function handleCancel() {
|
||||||
addConfigShow.value = false
|
addConfigShow.value = false
|
||||||
}
|
}
|
||||||
const selectRowId = ref(undefined)
|
const selectRows = ref([])
|
||||||
function handleAdd() {
|
|
||||||
if (!selectRowId.value) {
|
async function handleAdd() {
|
||||||
|
// 1. 校验是否选择了数据
|
||||||
|
if (!selectRows.value || !selectRows.value.length) {
|
||||||
return uni.showToast({
|
return uni.showToast({
|
||||||
title: '请选择任务单',
|
title: '请选择任务单',
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
const requestPromises = selectRows.value.map(businessAssayTaskId => {
|
||||||
|
return nx.$api.assayTask.getAssayTaskDetailList({
|
||||||
|
businessAssayTaskId
|
||||||
|
})
|
||||||
|
})
|
||||||
|
const results = await Promise.all(requestPromises)
|
||||||
|
|
||||||
let sampleList = []
|
let sampleList = []
|
||||||
nx.$api.assayTask.getAssayTaskDetailList({ businessAssayTaskId: selectRowId.value }).then(res => {
|
results.forEach(res => {
|
||||||
const list = res || []
|
const list = res || []
|
||||||
sampleList = list
|
sampleList = sampleList.concat(list)
|
||||||
|
})
|
||||||
|
|
||||||
|
// 5. 执行回调和关闭弹窗
|
||||||
emits('confirm', sampleList)
|
emits('confirm', sampleList)
|
||||||
addConfigShow.value = false
|
addConfigShow.value = false
|
||||||
|
} catch (error) {
|
||||||
|
console.error('批量获取详情失败:', error)
|
||||||
|
uni.showToast({
|
||||||
|
title: '数据加载失败',
|
||||||
|
icon: 'none'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
show
|
show
|
||||||
@@ -86,7 +101,7 @@ defineExpose({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
:deep(.u-radio__label-wrap) {
|
:deep(.u-checkbox__label-wrap) {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.active {
|
.active {
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ const detailSchema = [
|
|||||||
{ label: '使用班组', value: 'deptName' }
|
{ label: '使用班组', value: 'deptName' }
|
||||||
]
|
]
|
||||||
const columns = ref([
|
const columns = ref([
|
||||||
|
{ title: '任务单号', key: 'taskNo', align: 'center' },
|
||||||
{ title: '样品名称', key: 'sampleName', align: 'center' },
|
{ title: '样品名称', key: 'sampleName', align: 'center' },
|
||||||
{ title: '样品编号', key: 'sampleCode', align: 'center' },
|
{ title: '样品编号', key: 'sampleCode', align: 'center' },
|
||||||
{ title: '操作', key: 'action', width: '100px', align: 'center' }
|
{ title: '操作', key: 'action', width: '100px', align: 'center' }
|
||||||
@@ -167,7 +168,6 @@ function handleSampleSelect(dataList, type) {
|
|||||||
const transformData = newData => {
|
const transformData = newData => {
|
||||||
if (type === 'sample') {
|
if (type === 'sample') {
|
||||||
return {
|
return {
|
||||||
id: newData.id,
|
|
||||||
detailType: 'sample',
|
detailType: 'sample',
|
||||||
sampleCode: newData.sampleCode,
|
sampleCode: newData.sampleCode,
|
||||||
sampleName: newData.sampleName,
|
sampleName: newData.sampleName,
|
||||||
@@ -176,16 +176,16 @@ function handleSampleSelect(dataList, type) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return {
|
return {
|
||||||
id: newData.id,
|
|
||||||
detailType: 'standard',
|
detailType: 'standard',
|
||||||
sampleCode: newData.code,
|
sampleCode: newData.code,
|
||||||
sampleName: newData.name
|
sampleName: newData.name,
|
||||||
|
taskId: newData.id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tableData.value = tableData.value.filter(item => item.detailType !== type)
|
|
||||||
for (const newData of dataList) {
|
for (const newData of dataList) {
|
||||||
const index = tableData.value.findIndex(item => item.id === newData.id)
|
const taskIdKey = type === 'sample' ? 'businessAssayTaskId' : 'id'
|
||||||
|
const index = tableData.value.findIndex(item => item.taskId === newData[taskIdKey])
|
||||||
const transformedItem = transformData(newData)
|
const transformedItem = transformData(newData)
|
||||||
|
|
||||||
if (index > -1) {
|
if (index > -1) {
|
||||||
@@ -206,7 +206,6 @@ const userId = nx.$store('user').userInfo['id']
|
|||||||
const userName = nx.$store('user').userInfo['realname']
|
const userName = nx.$store('user').userInfo['realname']
|
||||||
let detailInfo = ref({})
|
let detailInfo = ref({})
|
||||||
|
|
||||||
|
|
||||||
function handleScanResult(result) {
|
function handleScanResult(result) {
|
||||||
const codeObj = JSON.parse(result)
|
const codeObj = JSON.parse(result)
|
||||||
if (!pageLoading.value) {
|
if (!pageLoading.value) {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user