123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- <template>
- <div>
- <div class="flex-1" style="padding-left:20px">
- <HcNewSwitch :datas="tabTypeTab" :keys="tabTypeKey" :round="false" size="default" @change="tabTypeChange" />
- <el-select
- v-model="testReportId" :loading="insertDataSelectoading" :placeholder="placeholderType"
- class="ml-2 w-80" clearable @change="testReportIdchange"
- >
- <el-option v-for="item in testReportData" :key="item.pKeyId" :label="item.nodeName" :value="item.pKeyId" />
- </el-select>
- </div>
- <div class="dialog-table-box">
- <div class="copy-node-many-table">
- <el-scrollbar v-loading="insertDataTableLoading">
- <el-table :data="insertDataTable" border @selection-change="insertDataTableCheck">
- <el-table-column type="selection" width="55" />
- <el-table-column label="字段名称" prop="key" />
- <el-table-column label="数值" prop="value" />
- </el-table>
- </el-scrollbar>
- </div>
- </div>
- </div>
- </template>
- <script setup>
- import { onMounted, ref, watch } from 'vue'
- import { getArrValue, getObjValue, setPosInsert } from 'js-fast-way'
- import dataApi from '~api/tentative/detect/test'
- const props = defineProps({
- projectId: [String, Number],
- contractId: [String, Number],
- tableId: [String, Number],
- treeId: [String, Number],
- })
- //事件
- const emit = defineEmits(['change'])
- //参数变量
- const projectId = ref(props.projectId)
- const contractId = ref(props.contractId)
- const table_id = ref(props.tableId)
- const tree_id = ref(props.treeId)
- //监听
- watch(() => [
- props.projectId,
- props.contractId,
- props.tableId,
- props.treeId,
- ], ([pid, cid, tableId, treeId]) => {
- projectId.value = pid
- contractId.value = cid
- table_id.value = tableId
- tree_id.value = treeId
- })
- //渲染完成
- onMounted(() => {
- getSearchNodeTables()
- })
- //类型tab数据和相关处理
- const tabTypeKey = ref('2')
- const tabTypeTab = ref([
- { key: '1', name: '试验记录表' },
- { key: '2', name: '试验报告单' },
- ])
- const placeholderType = ref('试验报告单')
- const tabTypeChange = ({ key }) => {
- tabTypeKey.value = key
- if (tabTypeKey.value === '1') {
- placeholderType.value = '试验记录表'
- } else {
- placeholderType.value = '试验报告单'
- }
- getSearchNodeTables()
- }
- const insertDataSelectoading = ref(false)
- const testReportData = ref([])
- const getSearchNodeTables = async () => {
- insertDataSelectoading.value = true
- const { error, code, data } = await dataApi.searchNodeTables({
- id: table_id.value,
- projectId: projectId.value,
- contractId: contractId.value,
- primaryKeyId: tree_id.value,
- // type: authBtnTabKey.value,
- tableType: tabTypeKey.value,
- })
- //处理数据
- insertDataSelectoading.value = false
- if (!error && code === 200) {
- testReportData.value = getArrValue(data)
- if (testReportData.value.length > 0) {
- testReportId.value = testReportData.value[0].pKeyId
- getBussddataInfotrialData()
- }
- } else {
- testReportData.value = []
- }
- }
- const testReportId = ref('')
- const checPkd = ref('')
- const testReportIdchange = (key) => {
- testReportData.value.forEach((item) => {
- if (item.id == key) {
- checPkd.value = item.pKeyId
- }
- })
- getBussddataInfotrialData()
- }
- const insertDataTableLoading = ref(false)
- const insertDataTable = ref([])
- const multipleSelection = ref([])
- const insertDataTableCheck = (val) => {
- multipleSelection.value = val
- }
- //获取试验表中的data数据接口:
- const getBussddataInfotrialData = async () => {
- insertDataTableLoading.value = true
- const { error, code, data } = await dataApi.getBussddataInfotrialList({
- // id:testReportId.value,
- id: table_id.value,
- pkeyId: testReportId.value,
- })
- insertDataTableLoading.value = false
- if (!error && code === 200) {
- let arrobj = getObjValue(data)
- let arr = []
- for (let key of Object.keys(arrobj)) {
- arr.push({
- key: key,
- value: arrobj[key],
- })
- }
- insertDataTable.value = arr
- } else {
- insertDataTable.value = []
- }
- }
- //确定关联试验数据数据
- const submitinsertData = ({ KeyName, startPos, endPos, pkeyId }, itemForm) => {
- if (multipleSelection.value.length > 0) {
- const val = []
- multipleSelection.value.forEach((item) => {
- val.push(item['value'])
- })
- const newval = val.join('、')
- const formValue = setPosInsert(startPos, endPos, itemForm, newval)
- let posVal = startPos + newval.length
- return { code: 200, val: formValue, posVal }
- } else {
- window?.$message?.warning('请选择你要关联的数据')
- return { code: 300, val: '', posVal: '' }
- }
- }
- // 暴露出去
- defineExpose({
- submitinsertData,
- })
- </script>
|