iZaiZaiA 2 жил өмнө
parent
commit
ecb737b20e

+ 1 - 1
src/styles/app/main.scss

@@ -150,6 +150,7 @@ html, body, #app {
         position: relative;
         background: #f1f5f8;
         border-radius: 10px;
+        margin-right: 24px;
         box-shadow: -2px 0 10px 0 rgba(32,37,50,0.03), 0 10px 21px 20px rgba(32,37,50,0.03);
         .horizontal-drag-line {
             position: absolute;
@@ -193,7 +194,6 @@ html, body, #app {
     .hc-page-content-box {
         flex: 1;
         position: relative;
-        margin-left: 24px;
     }
 }
 

+ 0 - 0
src/styles/tentative/material/sampling.scss


+ 1 - 0
src/views/tasks/hc-data.vue

@@ -228,6 +228,7 @@ const queryTaskInfo = async (row) => {
 
 //确认审批
 const ConfirmApprovalClick = async () => {
+    debugger
     const formData = taskReviewForm.value
     if (formData.flag === 'NO' && !formData.comment) {
         window?.$message?.warning('请先输入审核意见')

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

@@ -201,16 +201,12 @@
 
 <script setup>
 import {ref,watch,onMounted} from "vue";
-import {useRouter, useRoute} from 'vue-router'
 import {useAppStore} from "~src/store";
 import HcDragUpload from "./components/HcDragUpload.vue"
 import notableform from '~src/assets/view/notableform.svg';
 
 //初始变量
-const router = useRouter()
-const useRoutes = useRoute()
 const useAppState = useAppStore()
-//const {getObjValue, getArrValue} = isType()
 
 //全局变量
 const projectId = ref(useAppState.getProjectId);
@@ -420,7 +416,7 @@ const samplingTableColumn = ref([
 const samplingTableData = ref([])
 const samplingTableLoading = ref(false)
 
-//关闭查看附件
+//关闭取样记录
 const samplingRecordModalClose = () => {
     samplingRecordModal.value = false
 }

+ 467 - 14
src/views/tentative/material/sampling.vue

@@ -1,30 +1,483 @@
 <template>
-    <div class="hc-layout-box">
-        材料取样
+    <div class="hc-page-layout-box">
+        <div class="hc-layout-left-box" :style="'width:' + leftWidth + 'px;'">
+            <div class="hc-project-box">
+                <div class="hc-project-icon-box">
+                    <HcIcon name="stack"/>
+                </div>
+                <div class="ml-2 project-name-box">
+                    <span class="text-xl text-cut project-alias">{{projectInfo['projectAlias']}}</span>
+                    <div class="text-xs text-cut project-name">{{projectInfo['name']}}</div>
+                </div>
+            </div>
+            <div class="hc-tree-box">
+                <el-scrollbar>
+                    <WbsTree :autoExpandKeys="treeAutoExpandKeys" :projectId="projectId" :contractId="contractId" isColor @nodeTap="wbsElTreeClick"/>
+                </el-scrollbar>
+            </div>
+            <!--左右拖动-->
+            <div class="horizontal-drag-line" @mousedown="onmousedown"/>
+        </div>
+        <div class="hc-page-content-box">
+            <HcCard :scrollbar="false" actionSize="lg">
+                <template #header>
+                    <HcTooltip keys="tentative_material_approach_add">
+                        <el-button type="primary" hc-btn @click="addFormModalClick">
+                            <HcIcon name="add-circle"/>
+                            <span>新增</span>
+                        </el-button>
+                    </HcTooltip>
+                    <HcTooltip keys="tentative_material_approach_edit">
+                        <el-button hc-btn @click="editFormModalClick">
+                            <HcIcon name="edit"/>
+                            <span>编辑</span>
+                        </el-button>
+                    </HcTooltip>
+                    <HcTooltip keys="tentative_material_approach_copy">
+                        <el-button hc-btn @click="copyTableModalClick">
+                            <HcIcon name="file-copy-2"/>
+                            <span>复制</span>
+                        </el-button>
+                    </HcTooltip>
+                    <HcTooltip keys="tentative_material_approach_del">
+                        <el-button hc-btn @click="delModalClick">
+                            <HcIcon name="delete-bin-2"/>
+                            <span>删除</span>
+                        </el-button>
+                    </HcTooltip>
+                    <HcTooltip keys="tentative_material_approach_printer">
+                        <el-button hc-btn>
+                            <HcIcon name="printer"/>
+                            <span>打印</span>
+                        </el-button>
+                    </HcTooltip>
+                    <HcTooltip keys="tentative_material_approach_import">
+                        <el-button hc-btn @click="importModalClick">
+                            <HcIcon name="folder-upload"/>
+                            <span>导入</span>
+                        </el-button>
+                    </HcTooltip>
+                </template>
+                <template #search>
+                    <div class="w-64 ml-2">
+                        <HcDatePicker :dates="betweenTime" clearable @change="betweenTimeUpdate"/>
+                    </div>
+                    <div class="w-72 ml-2">
+                        <el-input v-model="searchForm.queryValue" placeholder="请输入名称、规格、材料编号进行查询" clearable @keyup="keyUpEvent"/>
+                    </div>
+                    <div class="ml-2">
+                        <el-button type="primary" @click="searchClick">
+                            <HcIcon name="search-2"/>
+                            <span>搜索</span>
+                        </el-button>
+                    </div>
+                </template>
+                <HcTable ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading" isCheck @selection-change="tableSelection"/>
+                <template #action>
+                    <HcPages :pages="searchForm" @change="pageChange"/>
+                </template>
+            </HcCard>
+        </div>
+
+        <!--新增/编辑-->
+        <HcDialog :show="addEditFormModal" title="新增/编辑 样品信息" widths="50rem" isRowFooter @close="addEditFormModalClose">
+            <el-form ref="addEditFormRef" :model="addEditFormModel" :rules="addEditFormRules" label-width="auto" size="large">
+                <div class="hc-form-item">
+                    <el-form-item label="样品名称" prop="key1">
+                        <el-input v-model="addEditFormModel.key1"/>
+                    </el-form-item>
+                    <el-form-item label="进场日期" prop="key9">
+                        <el-date-picker type="date" v-model="addEditFormModel.key9" class="block" value-format="YYYY-MM-DD" :clearable="false"/>
+                    </el-form-item>
+                </div>
+                <div class="hc-form-item">
+                    <el-form-item label="样品编号" prop="key3">
+                        <el-input v-model="addEditFormModel.key3"/>
+                    </el-form-item>
+                    <el-form-item label="取样日期" prop="key4">
+                        <el-date-picker type="date" v-model="addEditFormModel.key4" class="block" value-format="YYYY-MM-DD" :clearable="false"/>
+                    </el-form-item>
+                </div>
+                <div class="hc-form-item">
+                    <el-form-item label="规格型号" prop="key5">
+                        <el-input v-model="addEditFormModel.key5"/>
+                    </el-form-item>
+                    <el-form-item label="取样地点" prop="key6">
+                        <el-input v-model="addEditFormModel.key6"/>
+                    </el-form-item>
+                </div>
+                <div class="hc-form-item">
+                    <el-form-item label="试样数量" prop="key7">
+                        <el-input v-model="addEditFormModel.key7"/>
+                    </el-form-item>
+                    <el-form-item label="是否外委" prop="key8">
+                        <el-radio-group v-model="addEditFormModel.key8" size="large">
+                            <el-radio :label="1">是</el-radio>
+                            <el-radio :label="2">否</el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+                </div>
+                <div class="hc-form-item">
+                    <el-form-item label="代表数量" prop="key9">
+                        <el-input v-model="addEditFormModel.key9"/>
+                    </el-form-item>
+                    <el-form-item label="供应商" prop="key10">
+                        <el-input v-model="addEditFormModel.key10"/>
+                    </el-form-item>
+                </div>
+                <div class="hc-form-item">
+                    <el-form-item label="计算单位" prop="key11">
+                        <el-input v-model="addEditFormModel.key11"/>
+                    </el-form-item>
+                    <el-form-item label="生产批号" prop="key12">
+                        <el-input v-model="addEditFormModel.key12"/>
+                    </el-form-item>
+                </div>
+                <div class="hc-form-item">
+                    <el-form-item label="取样人" prop="key13">
+                        <el-input v-model="addEditFormModel.key13"/>
+                    </el-form-item>
+                    <el-form-item label="拟用部位" prop="key14">
+                        <el-input v-model="addEditFormModel.key14"/>
+                    </el-form-item>
+                </div>
+                <el-form-item label="样品描述" prop="key15">
+                    <el-input v-model="addEditFormModel.key15"/>
+                </el-form-item>
+            </el-form>
+            <template #leftRowFooter>
+                <el-button type="primary" hc-btn @click="linksApproachModalClick">
+                    <HcIcon name="links"/>
+                    <span>关联进场材料</span>
+                </el-button>
+            </template>
+            <template #rightRowFooter>
+                <el-button size="large" @click="addEditFormModalClose">
+                    <HcIcon name="close"/>
+                    <span>取消</span>
+                </el-button>
+                <el-button type="primary" hc-btn :loading="addEditFormLoading" @click="addEditFormClick">
+                    <HcIcon name="check"/>
+                    <span>确认</span>
+                </el-button>
+            </template>
+        </HcDialog>
+
+        <!--关联进场材料-->
+        <HcDialog :show="linksApproachModal" title="关联进场材料信息" widths="60%" isTable saveText="确认" @close="linksApproachModalClose" @save="linksApproachModalSave">
+            <HcTable :column="linksApproachTableColumn" :datas="linksApproachTableData" :loading="linksApproachTableLoading" :isIndex="false">
+                <template #action="{row}">
+                    <HcTooltip keys="tentative_material_approach_annex">
+                        <el-button type="primary" size="small" plain @click="linksApproachRow(row)">关联</el-button>
+                    </HcTooltip>
+                </template>
+            </HcTable>
+        </HcDialog>
+
+        <!--复制材料登记信息-->
+        <HcDialog :show="copyTableModal" title="复制材料登记信息" widths="60rem" isTable :loading="copyTableLoading" @close="copyTableModalClose" @save="copyTableClick">
+            <HcTable :column="copyTableColumn" :datas="copyTableData">
+                <template #key1="{row}">
+                    <el-input v-model="row.key1" placeholder="请输入材料编号"/>
+                </template>
+                <template #action="{row}">
+                    <el-button type="danger" size="small" plain>删除</el-button>
+                </template>
+            </HcTable>
+        </HcDialog>
+
+        <!--导入-->
+        <HcDialog :show="importModal" title="导入" widths="38rem" isRowFooter @close="importModalClose">
+            <HcDragUpload/>
+            <template #leftRowFooter>
+                <el-button size="large">
+                    <HcIcon name="download-2"/>
+                    <span>下载模板</span>
+                </el-button>
+            </template>
+            <template #rightRowFooter>
+                <el-button size="large" @click="importModalClose">
+                    <HcIcon name="close"/>
+                    <span>取消导入</span>
+                </el-button>
+                <el-button type="primary" hc-btn :loading="importModalLoading" @click="importModalYesClick">
+                    <HcIcon name="folder-upload"/>
+                    <span>确认导入</span>
+                </el-button>
+            </template>
+        </HcDialog>
+
     </div>
 </template>
 
 <script setup>
-import {ref,watch,onMounted} from "vue";
-import {useRouter, useRoute} from 'vue-router'
+import {ref, watch, onMounted} from "vue";
 import {useAppStore} from "~src/store";
+import WbsTree from "../../data-fill/components/WbsTree.vue"
+import {getStoreData, setStoreData} from '~src/utils/storage'
+import HcDragUpload from "./components/HcDragUpload.vue"
 
-//初始变量
-const router = useRouter()
-const useRoutes = useRoute()
+//变量
 const useAppState = useAppStore()
-//const {getObjValue, getArrValue} = isType()
-
-//全局变量
 const projectId = ref(useAppState.getProjectId);
 const contractId = ref(useAppState.getContractId);
+const projectInfo = ref(useAppState.getProjectInfo);
+const isCollapse = ref(useAppState.getCollapse)
 
-</script>
+//监听
+watch(() => [
+    useAppState.getCollapse
+], ([Collapse]) => {
+    isCollapse.value = Collapse
+})
 
-<style lang="scss" scoped>
+//自动展开缓存
+const treeAutoExpandKeys = ref(getStoreData('wbsTreeExpandKeys') || [])
 
-</style>
+//渲染完成
+onMounted(() => {
+
+})
+
+//搜索表单
+const searchForm = ref({betweenTime: null, queryValue: null, current: 1, size: 20, total: 0})
+
+
+//树相关的变量
+const primaryKeyId = ref('')
+const nodeItemInfo = ref({})
+const nodeDataInfo = ref({})
+
+//树被点击
+const wbsElTreeClick = ({node, data, keys}) => {
+    nodeItemInfo.value = node
+    nodeDataInfo.value = data
+    primaryKeyId.value = data['primaryKeyId'] || ''
+    //缓存自动展开
+    treeAutoExpandKeys.value = keys
+    setStoreData('wbsTreeExpandKeys',keys)
+    //改变搜索表单数据
+    //searchForm.value.wbsId = data['contractIdRelation'] ? data['id'] : data['primaryKeyId']
+    //searchForm.value.contractIdRelation = data['contractIdRelation']
+    searchForm.value.current = 1;
+    getTableData()
+}
+
+//日期时间被选择
+const betweenTime = ref(null)
+const betweenTimeUpdate = ({arr,query}) => {
+    betweenTime.value = arr
+    searchForm.value.betweenTime = query
+}
+
+//回车搜索
+const keyUpEvent = (e) => {
+    if (e.key === "Enter") {
+        searchForm.value.current = 1;
+        getTableData()
+    }
+}
+
+//搜索
+const searchClick = () => {
+    searchForm.value.current = 1;
+    getTableData()
+}
+
+//分页被点击
+const pageChange = ({current, size}) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+    getTableData()
+}
+
+//表格数据
+const tableRef = ref(null)
+const tableColumn = ref([
+    {key:'key1', name: '取样名称'},
+    {key:'key2', name: '取样日期'},
+    {key:'key3', name: '样品编号'},
+    {key:'key4', name: '规格型号'},
+    {key:'key5', name: '试样数量'},
+    {key:'key6', name: '计算单位'},
+    {key:'key7', name: '拟用部位'},
+    {key:'key8', name: '代表数量'},
+    {key:'key9', name: '取样人'}
+])
+
+//获取数据
+const tableLoading = ref(false)
+const tableData = ref([
+    {}
+])
+const getTableData = async () => {
+
+}
+
+//多选
+const tableCheckedKeys = ref([]);
+const tableSelection = (rows) => {
+    tableCheckedKeys.value = rows.filter((item) => {
+        return (item??'') !== '';
+    })
+}
+
+
+//新增/编辑 材料进场
+const addEditFormModal = ref(false)
+const addFormModalClick = () => {
+    addEditFormModal.value = true
+}
+const editFormModalClick = () => {
+    addEditFormModal.value = true
+}
+const addEditFormModalClose = () => {
+    addEditFormModal.value = false
+}
 
-<style lang="scss">
+//新增/编辑 表单
+const addEditFormRef = ref(null)
+const addEditFormModel = ref({})
+const addEditFormRules = {
+    key1: {
+        required: true,
+        trigger: 'blur',
+        message: "请输入"
+    },
+    key3: {
+        required: true,
+        trigger: 'blur',
+        message: "请输入"
+    },
+}
 
+//新增/编辑 保存
+const addEditFormLoading = ref(false)
+const addEditFormClick = () => {
+
+}
+
+//复制
+const copyTableModal = ref(false)
+
+const copyTableModalClick = () => {
+    copyTableModal.value = true
+}
+
+//复制表格
+const copyTableColumn = ref([
+    {key:'key3', name: '材料名称'},
+    {key:'key1', name: '材料编号'},
+    {key:'action', name: '操作', width: 100},
+])
+const copyTableData = ref([
+    {key3: '名称', key1: '编号...'},
+    {key3: '名称1', key1: '编号1...'},
+])
+
+const copyTableModalClose = () => {
+    copyTableModal.value = false
+}
+
+//复制 保存
+const copyTableLoading = ref(false)
+const copyTableClick = () => {
+    copyTableModal.value = false
+}
+
+//删除
+const delModalClick = () => {
+    window?.$messageBox?.alert('请谨慎考虑后,确认是否需要删除?', '删除提醒', {
+        showCancelButton: true,
+        confirmButtonText: '确认删除',
+        cancelButtonText: '取消',
+        type: 'warning',
+        callback: (action) => {
+            if (action === 'confirm') {
+                //removeContractTreeNode()
+            }
+        }
+    })
+}
+
+//导入
+const importModal = ref(false)
+const importModalClick = () => {
+    importModal.value = true
+}
+
+//确认导入
+const importModalLoading = ref(false)
+const importModalYesClick = () => {
+    importModal.value = false
+}
+
+//关闭导入
+const importModalClose = () => {
+    importModal.value = false
+}
+
+
+//关联进场材料
+const linksApproachModal = ref(false)
+const linksApproachModalClick = (row) => {
+    linksApproachModal.value = true
+}
+
+//关联进场材料数据
+const linksApproachTableColumn = ref([
+    {key:'key1', name: '材料编号'},
+    {key:'key2', name: '进场日期'},
+    {key:'key3', name: '材料名称'},
+    {key:'key4', name: '材料类型'},
+    {key:'key5', name: '规格型号'},
+    {key:'key6', name: '供应商单位'},
+    {key:'key7', name: '拟用部位'},
+    {key:'key8', name: '记录人'},
+    {key:'action', name: '操作', width: 100, fixed: 'right', align: 'center'},
+])
+const linksApproachTableData = ref([])
+const linksApproachTableLoading = ref(false)
+
+//关联
+const linksApproachRow = (row) => {
+
+}
+
+const linksApproachModalSave = () => {
+
+}
+
+//关闭关联进场材料
+const linksApproachModalClose = () => {
+    linksApproachModal.value = false
+}
+
+
+//拼接ID
+const rowsToId = (rows) => {
+    return rows.map((obj) => {
+        return obj.id;
+    }).join(",")
+}
+
+//左右拖动,改变树形结构宽度
+const leftWidth = ref(382);
+const onmousedown = () => {
+    const leftNum = isCollapse.value ? 142 : 272
+    document.onmousemove = (ve) => {
+        let diffVal = ve.clientX - leftNum;
+        if(diffVal >= 310 && diffVal <= 900) {
+            leftWidth.value = diffVal;
+        }
+    }
+    document.onmouseup = () => {
+        document.onmousemove = null;
+        document.onmouseup = null;
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "../../../styles/tentative/material/sampling.scss";
 </style>