ZaiZai 1 rok temu
rodzic
commit
f7408e9e04

+ 186 - 0
src/views/tentative/material/modules/testSample/leave.vue

@@ -0,0 +1,186 @@
+<template>
+    <hc-card-item class="hc-test-sample-card-item">
+        <template #header>
+            <div class="w-200px">
+                <el-select v-model="searchForm.contractId" placeholder="选择合同段" filterable clearable block>
+                    <el-option label="测试1" value="1" />
+                    <el-option label="测试2" value="2" />
+                </el-select>
+            </div>
+            <div class="ml-2 w-250px">
+                <hc-date-picker :dates="betweenTime" clearable @change="betweenTimeUpdate" />
+            </div>
+            <div class="ml-2 w-250px">
+                <hc-search-input v-model="searchForm.queryValue" @search="searchClick" />
+            </div>
+        </template>
+        <template #extra>
+            <el-button type="danger" :disabled="tableCheckedKeys.length <= 0" @click="batchDispose">批量处理样品</el-button>
+        </template>
+        <hc-table
+            :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check
+            :index-style="{ width: 60 }" :check-style="{ width: 29 }" @selection-change="tableSelection"
+        >
+            <template #action="{ row }">
+                <el-link type="primary" @click="rowView(row)">查看报告</el-link>
+                <el-link type="danger" @click="rowDispose(row)">处理样品</el-link>
+            </template>
+        </hc-table>
+        <template #action>
+            <hc-pages :pages="searchForm" @change="pageChange" />
+        </template>
+
+        <!-- 样品处理 -->
+        <hc-new-dialog v-model="disposeModal" is-footer-center title="样品处理" widths="50rem" @close="disposeClose">
+            <div v-if="batchList.length > 0" class="relative mb-24px">
+                <hc-table :column="batchColumn" :datas="batchList" :is-index="false" />
+            </div>
+            <el-form ref="formRef" :model="formModel" :rules="formRules" label-position="left" label-width="auto">
+                <el-form-item label="处理原因:" prop="key1">
+                    <el-input v-model="formModel.key1" type="textarea" :rows="4" resize="none" />
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <el-button @click="disposeClose">取消</el-button>
+                <el-button hc-btn type="primary" @click="disposeSave">确定</el-button>
+            </template>
+        </hc-new-dialog>
+    </hc-card-item>
+</template>
+
+<script setup>
+import { onMounted, ref, watch } from 'vue'
+import { useAppStore } from '~src/store'
+import { getObjValue } from 'js-fast-way'
+
+//参数
+const props = defineProps({
+    tree: {
+        type: Object,
+        default: () => ({}),
+    },
+})
+
+//变量
+const store = useAppStore()
+const projectId = ref(store.getProjectId)
+const contractId = ref(store.getContractId)
+
+//渲染完成
+onMounted(() => {
+
+})
+
+//监听数据
+const treeInfo = ref({})
+watch(() => props.tree, (obj) => {
+    treeInfo.value = getObjValue(obj)
+})
+
+//搜索表单
+const searchForm = ref({ current: 1, size: 20, total: 0 })
+
+//日期时间被选择
+const betweenTime = ref(null)
+const betweenTimeUpdate = ({ arr }) => {
+    betweenTime.value = arr
+    if (arr.length > 0) {
+        searchForm.value.startTime = arr[0]
+        searchForm.value.endTime = arr[1]
+    } else {
+        searchForm.value.startTime = ''
+        searchForm.value.endTime = ''
+    }
+}
+
+//搜索
+const searchClick = () => {
+    searchForm.value.current = 1
+    getTableData()
+}
+
+//分页被点击
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+    getTableData()
+}
+
+//表格数据
+const tableColumn = ref([
+    { key: 'key1', name: '取样名称' },
+    { key: 'key2', name: '规格型号', align: 'center' },
+    { key: 'key3', name: '试样数量', align: 'center' },
+    { key: 'key4', name: '试验数量', align: 'center' },
+    { key: 'key5', name: '留样数量', align: 'center' },
+    { key: 'key6', name: '计算单位', align: 'center' },
+    { key: 'key7', name: '拟用部位' },
+    { key: 'key8', name: '代表数量', align: 'center' },
+    { key: 'key9', name: '留样时间', align: 'center' },
+    { key: 'action', name: '操作', width: 150, align: 'center' },
+])
+const tableData = ref([
+    {},
+])
+
+//获取表格数据
+const tableLoading = ref(false)
+const getTableData = async () => {
+
+}
+
+//多选
+const tableCheckedKeys = ref([])
+const tableSelection = (rows) => {
+    tableCheckedKeys.value = rows
+}
+
+//表单数据
+const formRef = ref(null)
+const formModel = ref({})
+const formRules = {
+    key1: {
+        required: true,
+        trigger: 'blur',
+        message: '请填写处理原因',
+    },
+}
+
+//弹窗
+const disposeModal = ref(false)
+const batchColumn = ref([
+    { key: 'key1', name: '取样名称' },
+    { key: 'key2', name: '留样数量' },
+    { key: 'key3', name: '拟用部位' },
+    { key: 'key4', name: '留样时间' },
+])
+const batchList = ref([])
+
+//批量处理样品
+const batchDispose = () => {
+    batchList.value = tableCheckedKeys.value
+    disposeModal.value = true
+}
+
+//处理样品
+const rowDispose = (row) => {
+    batchList.value = []
+    disposeModal.value = true
+}
+
+//提交保存
+const disposeSave = async () => {
+    disposeClose()
+}
+
+//关闭弹窗
+const disposeClose = () => {
+    disposeModal.value = false
+    batchList.value = []
+}
+
+//查看报告
+const rowView = (row) => {
+
+}
+</script>

+ 201 - 0
src/views/tentative/material/modules/testSample/testUnder.vue

@@ -0,0 +1,201 @@
+<template>
+    <hc-card-item class="hc-test-sample-card-item">
+        <template #header>
+            <div class="w-200px">
+                <el-select v-model="searchForm.contractId" placeholder="选择合同段" filterable clearable block>
+                    <el-option label="测试1" value="1" />
+                    <el-option label="测试2" value="2" />
+                </el-select>
+            </div>
+            <div class="ml-2 w-150px">
+                <el-date-picker v-model="searchForm.date" class="block" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" clearable placeholder="试验时间" />
+            </div>
+            <div class="ml-2 w-250px">
+                <hc-search-input v-model="searchForm.queryValue" @search="searchClick" />
+            </div>
+        </template>
+        <template #extra>
+            <el-button type="danger" :disabled="tableCheckedKeys.length <= 0" @click="batchDel">批量删除</el-button>
+        </template>
+        <hc-table
+            :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check
+            :index-style="{ width: 60 }" :check-style="{ width: 29 }" @selection-change="tableSelection"
+        >
+            <template #key11="{ row }">
+                <el-button v-if="row.key11 === 1" type="success" size="small">已同意</el-button>
+                <el-button v-if="row.key11 === 2" type="info" size="small">待审批</el-button>
+                <el-button v-if="row.key11 === 3" type="danger" size="small">已废除</el-button>
+            </template>
+            <template #action="{ row }">
+                <el-link type="primary" @click="rowDispose(row)">样品处理</el-link>
+                <el-link v-if="false" type="primary">填写报告</el-link>
+                <el-link type="danger" @click="rowDel(row)">删除</el-link>
+            </template>
+        </hc-table>
+        <template #action>
+            <hc-pages :pages="searchForm" @change="pageChange" />
+        </template>
+
+        <!-- 样品处理 -->
+        <hc-new-dialog v-model="disposeModal" is-footer-center title="样品处理" widths="40rem" @close="disposeClose">
+            <el-form ref="formRef" :model="formModel" :rules="formRules" label-position="left" label-width="auto">
+                <el-form-item label="处理方式:" prop="key1">
+                    <el-radio-group v-model="formModel.key1">
+                        <el-radio :value="1">处理</el-radio>
+                        <el-radio :value="2">留样</el-radio>
+                    </el-radio-group>
+                </el-form-item>
+                <el-form-item v-if="formModel.key1 === 1" label="处理原因:" prop="key2">
+                    <el-input v-model="formModel.key2" type="textarea" :rows="5" resize="none" />
+                </el-form-item>
+                <el-form-item v-if="formModel.key1 === 2" label="留样时间:" prop="startTime">
+                    <hc-date-picker :dates="betweenTime" clearable @change="betweenTimeUpdate" />
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <el-button @click="disposeClose">取消</el-button>
+                <el-button hc-btn type="primary" @click="disposeSave">确定</el-button>
+            </template>
+        </hc-new-dialog>
+    </hc-card-item>
+</template>
+
+<script setup>
+import { onMounted, ref, watch } from 'vue'
+import { useAppStore } from '~src/store'
+import { getObjValue } from 'js-fast-way'
+
+//参数
+const props = defineProps({
+    tree: {
+        type: Object,
+        default: () => ({}),
+    },
+})
+
+//变量
+const store = useAppStore()
+const projectId = ref(store.getProjectId)
+const contractId = ref(store.getContractId)
+
+//渲染完成
+onMounted(() => {
+
+})
+
+//监听数据
+const treeInfo = ref({})
+watch(() => props.tree, (obj) => {
+    treeInfo.value = getObjValue(obj)
+})
+
+//搜索表单
+const searchForm = ref({ current: 1, size: 20, total: 0 })
+
+//搜索
+const searchClick = () => {
+    searchForm.value.current = 1
+    getTableData()
+}
+
+//分页被点击
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+    getTableData()
+}
+
+//表格数据
+const tableColumn = ref([
+    { key: 'key1', name: '取样名称' },
+    { key: 'key2', name: '规格型号', align: 'center' },
+    { key: 'key3', name: '试样数量', align: 'center' },
+    { key: 'key4', name: '试验数量', align: 'center' },
+    { key: 'key5', name: '剩余数量', align: 'center' },
+    { key: 'key6', name: '计算单位', align: 'center' },
+    { key: 'key7', name: '拟用部位' },
+    { key: 'key8', name: '代表数量', align: 'center' },
+    { key: 'key9', name: '取样人', align: 'center' },
+    { key: 'key10', name: '创建试验时间', align: 'center' },
+    { key: 'key11', name: '报告状态', align: 'center' },
+    { key: 'action', name: '操作', width: 120, align: 'center' },
+])
+const tableData = ref([{ key11:1 }, { key11:2 }, { key11:3 }])
+
+//获取表格数据
+const tableLoading = ref(false)
+const getTableData = async () => {
+
+}
+
+//多选
+const tableCheckedKeys = ref([])
+const tableSelection = (rows) => {
+    tableCheckedKeys.value = rows
+}
+
+//表单数据
+const formRef = ref(null)
+const formModel = ref({})
+const formRules = {
+    key1: {
+        required: true,
+        trigger: 'blur',
+        message: '请选择处理方式',
+    },
+    key2: {
+        required: true,
+        trigger: 'blur',
+        message: '请填写处理原因',
+    },
+    startTime: {
+        required: true,
+        trigger: 'blur',
+        message: '请选择留样时间',
+    },
+}
+
+//样品处理
+const disposeModal = ref(false)
+const rowDispose = (row) => {
+    console.log(row)
+    formModel.value = {
+        key1: 1,
+    }
+    disposeModal.value = true
+}
+
+//日期时间被选择
+const betweenTime = ref(null)
+const betweenTimeUpdate = ({ arr }) => {
+    betweenTime.value = arr
+    if (arr.length > 0) {
+        formModel.value.startTime = arr[0]
+        formModel.value.endTime = arr[1]
+    } else {
+        formModel.value.startTime = ''
+        formModel.value.endTime = ''
+    }
+}
+
+//确定提交
+const disposeSave = async () => {
+    disposeClose()
+}
+
+//关闭弹窗
+const disposeClose = () => {
+    disposeModal.value = false
+    formModel.value = {}
+}
+
+//删除
+const rowDel = (row) => {
+
+}
+
+//批量删除
+const batchDel = () => {
+
+}
+</script>

+ 5 - 1
src/views/tentative/material/testSample.vue

@@ -10,6 +10,8 @@
             <SampleFlow v-if="tabsKey === 'flow'" :tree="treeInfo" />
             <SampleInventory v-if="tabsKey === 'inventory'" :tree="treeInfo" />
             <SampleTested v-if="tabsKey === 'tested'" :tree="treeInfo" />
+            <SampleTestUnder v-if="tabsKey === 'testUnder'" :tree="treeInfo" />
+            <SampleLeave v-if="tabsKey === 'leave'" :tree="treeInfo" />
         </hc-tab-card>
     </hc-body>
 </template>
@@ -23,6 +25,8 @@ import TestTree from './components/TestTree.vue'
 import SampleFlow from './modules/testSample/flow.vue'
 import SampleInventory from './modules/testSample/inventory.vue'
 import SampleTested from './modules/testSample/tested.vue'
+import SampleTestUnder from './modules/testSample/testUnder.vue'
+import SampleLeave from './modules/testSample/leave.vue'
 
 //变量
 const store = useAppStore()
@@ -50,7 +54,7 @@ const wbsElTreeClick = ({ data, keys }) => {
 }
 
 //选项卡卡片
-const tabsKey = ref('tested')
+const tabsKey = ref('leave')
 const tabsData = ref([
     { key: 'flow', name: '样品流转' },
     { key: 'inventory', name: '样品库存' },