| | |
| | | </div> |
| | | <div class="scrollable-container"> |
| | | <div class="content"> |
| | | <el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false" |
| | | :filter-node-method="filterNode" ref="tree" node-key="id" :default-expanded-keys="treeId" |
| | | highlight-current @node-click="handleNodeClick" :render-content="renderContent" v-loading="loadings" /> |
| | | <el-tree |
| | | :data="deptOptions" |
| | | :props="defaultProps" |
| | | :expand-on-click-node="false" |
| | | :filter-node-method="filterNode" |
| | | ref="tree1" |
| | | node-key="id" |
| | | :default-expanded-keys="treeId" |
| | | highlight-current |
| | | @node-click="handleNodeClick" |
| | | :render-content="renderContent" |
| | | v-loading="loadings" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | |
| | | v-loading="loading" |
| | | :data="projectList" |
| | | ref="tableRef" |
| | | height="580" |
| | | border |
| | | > |
| | | <el-table-column |
| | |
| | | width="90px" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column label="Lis项目名称" align="center" prop="lisXmmc" :show-overflow-tooltip="true" width="200px"> |
| | | <el-table-column |
| | | label="Lis项目名称" |
| | | align="center" |
| | | prop="lisXmmc" |
| | | :show-overflow-tooltip="true" |
| | | width="200px" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="Lis编码" |
| | |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="样本类型" prop="specimenType"> |
| | | <el-select |
| | | v-model="form.specimenType" |
| | | placeholder="请选择样本类型" |
| | | style="width: 200px" |
| | | filterable |
| | | clearable |
| | | > |
| | | <el-option |
| | | v-for="dict in dict.type.yblx" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="检查部位" prop="checkBw"> |
| | | <el-select |
| | | v-model="form.checkBw" |
| | | placeholder="请选择检查部位" |
| | | style="width: 200px" |
| | | style="width: 260px" |
| | | filterable |
| | | clearable |
| | | > |
| | |
| | | <el-input |
| | | v-model="form.proMetering" |
| | | placeholder="请输入单位" |
| | | style="width: 260px" |
| | | style="width: 200px" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="参考范围" prop="proScope"> |
| | |
| | | <el-input |
| | | v-model="form.sl" |
| | | placeholder="请输入数量" |
| | | style="width: 200px" |
| | | style="width: 260px" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="组合标志" prop="sfzhfy"> |
| | | <el-select |
| | | v-model="form.sfzhfy" |
| | | placeholder="请选择是否组合标志" |
| | | style="width: 260px" |
| | | style="width: 200px" |
| | | > |
| | | <el-option |
| | | v-for="dict in dict.type.sys_yes_no" |
| | |
| | | <el-input |
| | | v-model="form.hisXmmc" |
| | | placeholder="his项目名称" |
| | | style="width: 200px" |
| | | style="width: 260px" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="his项目名称" prop="hisXmmc" v-if="key == 'N'"> |
| | |
| | | <el-input |
| | | v-model="form.hisXmbm" |
| | | placeholder="请输入his编码" |
| | | style="width: 260px" |
| | | style="width: 200px" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="his单价" prop="hisdj"> |
| | |
| | | <el-input |
| | | v-model="form.lisXmmc" |
| | | placeholder="请输入LIS项目" |
| | | style="width: 200px" |
| | | style="width: 260px" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="LIS编码" prop="lisXmbm"> |
| | | <el-input |
| | | v-model="form.lisXmbm" |
| | | placeholder="请输入his编码" |
| | | style="width: 260px" |
| | | style="width: 200px" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="备注" prop="proRemark"> |
| | |
| | | <el-input |
| | | v-model="form.xh" |
| | | placeholder="请输入排序" |
| | | style="width: 200px" |
| | | style="width: 260px" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="是否参与异常" prop="sfcyyc"> |
| | | <el-select |
| | | v-model="form.sfcyyc" |
| | | placeholder="请选择是否参与异常" |
| | | style="width: 200px" |
| | | > |
| | | <el-option |
| | | v-for="dict in dictTypesy" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-button |
| | |
| | | "sys_dict_position", |
| | | "tj_result_type", |
| | | "sys_yes_no", |
| | | "yblx", |
| | | ], |
| | | components: { Treeselect, IconSelect, Packagese }, |
| | | data() { |
| | |
| | | children: "dictSfxms", |
| | | label: "xmmc", |
| | | }, |
| | | dictTypesy: [ |
| | | { |
| | | value: "0", |
| | | label: "是", |
| | | }, |
| | | { |
| | | value: "1", |
| | | label: "否", |
| | | }, |
| | | ], |
| | | xmmc: "", |
| | | chargeId: [], |
| | | List: false, |
| | |
| | | multiple: true, |
| | | showSearch: true, |
| | | total: 0, |
| | | treeId: ["532"], |
| | | treeId: [], |
| | | ListId: [], |
| | | noclick: false, |
| | | consumableList: [], |
| | |
| | | proScope: "", |
| | | proSex: "2", |
| | | resultType: "", |
| | | sfcyyc: "0", |
| | | }, |
| | | rules: { |
| | | createTime: [ |
| | |
| | | this.debounceFilter(val); |
| | | }, |
| | | treeId(newVal) { |
| | | console.log(newVal, 8989); |
| | | if (newVal && newVal.length > 0) { |
| | | this.$nextTick(() => { |
| | | const lastId = newVal[newVal.length - 1] || "532"; |
| | |
| | | created() { |
| | | this.getConsumables(); |
| | | this.getDeptList(); |
| | | this.getDeptTree().then(() => { |
| | | this.precomputePinyin(); |
| | | }); |
| | | // this.getDeptTree().then(() => { |
| | | // this.precomputePinyin(); |
| | | // }); |
| | | }, |
| | | mounted() { |
| | | this.getDeptTree().then(() => { |
| | |
| | | }, |
| | | methods: { |
| | | debounceFilter: debounce(function (val) { |
| | | this.$refs.tree.filter(val); |
| | | }, 800), |
| | | this.$refs.tree1.filter(val); |
| | | }, 300), |
| | | precomputePinyin() { |
| | | const traverse = (nodes) => { |
| | | nodes.forEach((node) => { |
| | | if (node.label) { |
| | | const lowerSpell = cnchar.spell(node.label, 'low', 'array').join(''); // 完整小写拼音 |
| | | const upperSpell = cnchar.spell(node.label, 'up', 'array').join(''); // 完整大写拼音 |
| | | const shortPinyin = node.label |
| | | .split('') |
| | | .map(char => cnchar.spell(char, 'array')[0]?.[0]?.toLowerCase() || char) // 拼音首字母 |
| | | .join(''); |
| | | const lowerSpell = node.label.spell("low", "array").join(""); |
| | | const upperSpell = node.label.spell("up", "array").join(""); |
| | | this.pinyinCache.set(node.id, { |
| | | lowerSpell, |
| | | upperSpell, |
| | | shortPinyin, // 缓存拼音简写 |
| | | label: node.label |
| | | label: node.label, |
| | | }); |
| | | } |
| | | if (node.children) traverse(node.children); |
| | |
| | | traverse(this.deptOptions); |
| | | }, |
| | | filterNode(value, data) { |
| | | if (!value) return true; // 如果搜索值为空,返回所有节点 |
| | | if (!value) return true; |
| | | const cached = this.pinyinCache.get(data.id); |
| | | if (!cached) return false; // 如果没有缓存数据,不显示该节点 |
| | | const searchLower = value.toLowerCase(); // 将搜索词转为小写 |
| | | if (!cached) return false; |
| | | return ( |
| | | cached.label.includes(value) || // 直接匹配汉字 |
| | | cached.shortPinyin.includes(searchLower) || // 匹配拼音简写 |
| | | cached.lowerSpell.includes(searchLower) // 匹配完整拼音 |
| | | cached.label.includes(value) || |
| | | cached.lowerSpell.includes(value) || |
| | | cached.upperSpell.includes(value) |
| | | ); |
| | | }, |
| | | filterNode2(value, data) { |
| | |
| | | this.open = true; |
| | | } else if (this.treeDate.id) { |
| | | if (this.treeDate.qf == "0") { |
| | | this.form.proParentId = "0" |
| | | this.form.deptId = this.treeDate.id |
| | | this.form.proParentId = "0"; |
| | | this.form.deptId = this.treeDate.id; |
| | | } else { |
| | | this.form.proParentId = this.treeDate.id; |
| | | this.projectOptions.forEach((item) => { |
| | |
| | | }); |
| | | } |
| | | |
| | | |
| | | this.open = true; |
| | | } else { |
| | | this.form.proParentId = "0" |
| | | this.form.proParentId = "0"; |
| | | this.open = true; |
| | | } |
| | | } |
| | |
| | | this.dialogTableVisible = true; |
| | | if (this.deptOptionstree.length != 0) { |
| | | this.$nextTick(() => { |
| | | this.chargeId.push(this.deptOptionstree[0].id); |
| | | // this.chargeId.push(this.deptOptionstree[0].id); |
| | | }); |
| | | } |
| | | |
| | |
| | | } |
| | | }, |
| | | getlistSfxm() { |
| | | console.log(2222); |
| | | this.loading = true; |
| | | this.List = true; |
| | | listSfxm(this.querycharge).then((response) => { |
| | | this.sfxmList = response.rows; |
| | | this.sfxmList = response.rows || []; |
| | | console.log(response.rows, 111222); |
| | | |
| | | response.rows.forEach((item, index) => { |
| | | item.newID = |
| | | (this.querycharge.pageNum - 1) * this.querycharge.pageSize + |
| | |
| | | this.queryParam.id = data.id; |
| | | this.List = false; |
| | | this.getListByXmId(); |
| | | this.total = 0; |
| | | }, |
| | | getListByXmId() { |
| | | console.log(this.sfxmList); |
| | | this.loading = true; |
| | | |
| | | getListByXmId(this.queryParam).then((response) => { |
| | | this.sfxmList = response.data.date; |
| | | response.data.date.forEach((item, index) => { |
| | | item.newID = |
| | | (this.queryParam.page - 1) * this.queryParam.pageSize + index + 1; |
| | | }); |
| | | this.sfxmList = response.data.date || []; |
| | | if (response.data.date == null) { |
| | | return; |
| | | } else { |
| | | response.data.date.forEach((item, index) => { |
| | | item.newID = |
| | | (this.queryParam.page - 1) * this.queryParam.pageSize + index + 1; |
| | | }); |
| | | } |
| | | |
| | | this.total = response.data.total; |
| | | this.loading = false; |
| | | }); |
| | | this.loading = false; |
| | | }, |
| | | normalizer(node) { |
| | | if (node.children && !node.children.length) { |
| | |
| | | getDeptTree() { |
| | | return deptTree111().then((response) => { |
| | | this.deptOptions = response.data; |
| | | this.treeId.push(this.treeDate.id); |
| | | this.treeId = []; |
| | | if (this.treeDate.id) { |
| | | this.treeId.push(this.treeDate.id); |
| | | } else { |
| | | this.treeId.push("532"); |
| | | } |
| | | }); |
| | | }, |
| | | handleNodeClick(date) { |
| | | this.treeDate = date; |
| | | console.log(this.treeDate); |
| | | this.xiugaiList = {}; |
| | | this.xiugais = date.qf === "0"; |
| | | let proId = date.id; |
| | | getInfoByProId(proId).then((response) => { |
| | |
| | | } |
| | | }, |
| | | handleUpdate1() { |
| | | this.form = {}; |
| | | this.form = this.xiugaiList; |
| | | this.form.proStatus = this.form.proStatus.toString(); |
| | | this.form.sfcyyc = this.form.sfcyyc.toString(); |
| | | this.proParent = true; |
| | | this.isPriceDisabled = true; |
| | | getlist().then((response) => { |
| | |
| | | this.showPrise = this.form.proParentId === "0"; |
| | | this.showRentPrise = !this.showPrise; |
| | | this.form.proStatus = this.form.proStatus.toString(); |
| | | this.form.sfcyyc = this.form.sfcyyc.toString(); |
| | | this.form.consumablesList = response.data.consumablesList; |
| | | this.form.tjStandardList = response.data.tjStandardList; |
| | | if (this.form.tjStandardList) { |
| | |
| | | this.precomputePinyin(); |
| | | }); |
| | | } |
| | | console.log(this.treeId); |
| | | }, |
| | | submit() { |
| | | this.ChangeList.forEach((item) => { |
| | |
| | | this.getList(); |
| | | this.$modal.msgSuccess("删除成功"); |
| | | }) |
| | | .catch(() => { }); |
| | | .catch(() => {}); |
| | | }, |
| | | handleExport() { |
| | | this.download( |