| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 | 
							- <template>
 
-     <hc-sys class="hc-ledger-table-form" navBarUi="white">
 
-         <template #navBar>
 
-             <hc-nav-back-bar title="关联工序">
 
-                 <text @click="finishClick">确定</text>
 
-             </hc-nav-back-bar>
 
-         </template>
 
-         <uni-section title="关联工序列表" type="line" class="mt-1px">
 
-             <uni-list>
 
-                 <uni-list-item :title="item.path" v-for="(item, index) in linkIds" >
 
-                     <template v-slot:footer>
 
-                         <view>
 
-                             <uni-tag :inverted="true" @click="clearItem(index)" text="删除" type="error" />
 
-                         </view>
 
-                     </template>
 
-                 </uni-list-item>
 
-             </uni-list>
 
-         </uni-section>
 
-         <!--底部操作栏-->
 
-         <HcTabbarBlock :height="85"/>
 
-         <hc-tabbars>
 
-             <button class="check-btn" type="primary" @click="addLinks">新增关联工序</button>
 
-         </hc-tabbars>
 
-         <!-- 普通弹窗 -->
 
-         <hc-popup ref="popupRef" @confirm="popupConfirm">
 
-             <hc-tree ref="hcTreeRef" check strictly :checkKey="treeCheckKey" @load="getLazyLoad"/>
 
-         </hc-popup>
 
-     </hc-sys>
 
- </template>
 
- <script setup>
 
- import {ref, nextTick, getCurrentInstance} from "vue";
 
- import {onLoad} from '@dcloudio/uni-app'
 
- import {getArrValue, getObjValue} from "js-fast-way";
 
- import wbsApi from '~api/data-fill/wbs';
 
- import mainApi from '~api/ledger/index';
 
- import {useAppStore} from "@/store";
 
- const store = useAppStore()
 
- const instance = getCurrentInstance().proxy
 
- //初始变量
 
- const contractInfo = ref(store.contractInfo);
 
- const projectId = ref(store.projectId);
 
- const contractId = ref(store.contractId);
 
- const itemFormId = ref('');
 
- //页面传参数据
 
- let eventChannel = null;
 
- const getEventChannel = async () => {
 
-     await nextTick();
 
-     eventChannel = instance.getOpenerEventChannel();
 
- }
 
- onLoad((option) => {
 
-     itemFormId.value = option?.id ?? ''
 
-     getEventChannel()
 
-     querySelectProcessList()
 
- })
 
- //已关联的工序
 
- const linkIds = ref([])
 
- const treeCheckKey = ref([])
 
- //查询已关联的工序
 
- const querySelectProcessList = async () => {
 
-     if (itemFormId.value) {
 
-         const { data } = await mainApi.queryCurrentLogSelectProcessList({
 
-             contractId: contractId.value ?? '',
 
-             businessId: itemFormId.value,
 
-         })
 
-         linkIds.value = getArrValue(data)
 
-     } else {
 
-         linkIds.value = []
 
-     }
 
- }
 
- //删除当前的节点
 
- const clearItem = (index) => {
 
-     linkIds.value.splice(index, 1)
 
- }
 
- //新增关联工序
 
- const popupRef = ref(null)
 
- const addLinks = () => {
 
-     let ids = linkIds.value, tree_check_key = []
 
-     for (let i = 0; i < ids.length; i++) {
 
-         const {primaryKeyId} = ids[i]
 
-         tree_check_key.push(primaryKeyId ? primaryKeyId + '' : '')
 
-     }
 
-     treeCheckKey.value = tree_check_key
 
-     popupRef.value?.open()
 
- }
 
- //获取树形数据
 
- const hcTreeRef = ref(null)
 
- const getLazyLoad = async (node, resolve) => {
 
-     const { contractType } = contractInfo.value
 
-     const { id, primaryKeyId, contractIdRelation } = getObjValue(node.data)
 
-     const { data } = await wbsApi.queryWbsTreeData({
 
-         contractId: contractId.value || '',
 
-         contractIdRelation: contractIdRelation ?? '',
 
-         primaryKeyId: id ?? '',
 
-         parentId: node.level <= 0 ? '' : contractIdRelation ? primaryKeyId : id,
 
-         classifyType: node.level <= 0 ? '' : contractType ?? '',
 
-         tableOwner: contractType ?? ''
 
-     })
 
-     resolve(getArrValue(data))
 
- }
 
- //确认选择
 
- const popupConfirm = async () => {
 
-     const linkTabIds = []
 
-     const { nodes } = await hcTreeRef.value?.getCheckKeys()
 
-     for (let i = 0; i < nodes.length; i++) {
 
-         let pathArr = [], item = nodes[i]
 
-         if (item.level > 1) {
 
-             getPathName(item, pathArr)
 
-             linkTabIds.push({
 
-                 path: pathArr.join('/'),
 
-                 primaryKeyId: item.key,
 
-             })
 
-         }
 
-     }
 
-     linkIds.value = linkTabIds
 
-     popupRef.value?.close()
 
- }
 
- //获取节点的路径名字
 
- const getPathName = (node, pathArr) => {
 
-     if (node.level > 1) {
 
-         pathArr.unshift(node.label.replace(/(^\s*)|(\s*$)/g, '')) //去掉头尾空格
 
-         getPathName(node.parentNodes, pathArr)
 
-     }
 
- }
 
- //确认关联工序
 
- const finishClick = () => {
 
-     eventChannel.emit('finish', linkIds.value);
 
-     uni.navigateBack()
 
- }
 
- </script>
 
- <style lang="scss" scoped>
 
- page {
 
-     height: 100%;
 
-     background: #FAFBFE;
 
- }
 
- </style>
 
- <style lang="scss">
 
- </style>
 
 
  |