Merge branch 'develop' into dev_20241202_xukangle
Showing
11 changed files
with
2606 additions
and
482 deletions
| ... | @@ -6,7 +6,11 @@ VITE_APP_TITLE = 数据资产管理系统 | ... | @@ -6,7 +6,11 @@ VITE_APP_TITLE = 数据资产管理系统 |
| 6 | VITE_API_BASEURL = http://localhost:9000 | 6 | VITE_API_BASEURL = http://localhost:9000 |
| 7 | # VITE_API_BASEURL = http://10.4.82.1:28052/ | 7 | # VITE_API_BASEURL = http://10.4.82.1:28052/ |
| 8 | # 平台用户 接口请地址 | 8 | # 平台用户 接口请地址 |
| 9 | VITE_APP_USER_API_BASEURL = gateway-server/user | 9 | VITE_APP_USER_API_BASEURL = gateway-server |
| 10 | |||
| 11 | #AUTH服务 | ||
| 12 | VITE_APP_AUTH_URL = 'ms-daop-auth-service' | ||
| 13 | |||
| 10 | # 系统管理 接口地址 | 14 | # 系统管理 接口地址 |
| 11 | VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service | 15 | VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service |
| 12 | # 文件上传请求地址 | 16 | # 文件上传请求地址 |
| ... | @@ -42,3 +46,4 @@ VITE_API_MESSAGE = ms-swzl-message-notification-service | ... | @@ -42,3 +46,4 @@ VITE_API_MESSAGE = ms-swzl-message-notification-service |
| 42 | VITE_BUILD_SOURCEMAP = false | 46 | VITE_BUILD_SOURCEMAP = false |
| 43 | # 是否在打包时开启压缩,支持 gzip 和 brotli | 47 | # 是否在打包时开启压缩,支持 gzip 和 brotli |
| 44 | VITE_BUILD_COMPRESS = gzip,brotli | 48 | VITE_BUILD_COMPRESS = gzip,brotli |
| 49 | ... | ... |
| ... | @@ -4,7 +4,7 @@ VITE_APP_TITLE = 数据资产管理系统 | ... | @@ -4,7 +4,7 @@ VITE_APP_TITLE = 数据资产管理系统 |
| 4 | VITE_API_BASEURL = https://www.zgsjzc.com/api | 4 | VITE_API_BASEURL = https://www.zgsjzc.com/api |
| 5 | # VITE_API_BASEURL = http://49.4.26.201:31709/ | 5 | # VITE_API_BASEURL = http://49.4.26.201:31709/ |
| 6 | # 平台用户 接口请地址 | 6 | # 平台用户 接口请地址 |
| 7 | VITE_APP_USER_API_BASEURL = gateway-server/user | 7 | VITE_APP_USER_API_BASEURL = gateway-server |
| 8 | # 系统管理 接口地址 | 8 | # 系统管理 接口地址 |
| 9 | VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service | 9 | VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service |
| 10 | # 文件上传请求地址 | 10 | # 文件上传请求地址 | ... | ... |
| ... | @@ -3,15 +3,16 @@ import request from "@/utils/request"; | ... | @@ -3,15 +3,16 @@ import request from "@/utils/request"; |
| 3 | /** 获取数往知来接入idaas的token。 */ | 3 | /** 获取数往知来接入idaas的token。 */ |
| 4 | export const getTokenByCode = (params) => { | 4 | export const getTokenByCode = (params) => { |
| 5 | return request({ | 5 | return request({ |
| 6 | url: `/csbr-zuul/user/idaas-login?code=${params.code}&platformGuid=${params.platformGuid}&userType=${params.userType}`, | 6 | url: `${import.meta.env.VITE_APP_USER_API_BASEURL}/staff/login`, |
| 7 | method: 'post' | 7 | method: 'post', |
| 8 | data: params | ||
| 8 | }) | 9 | }) |
| 9 | } | 10 | } |
| 10 | 11 | ||
| 11 | /** 退出登录 */ | 12 | /** 退出登录 */ |
| 12 | export const loginOut = () => { | 13 | export const loginOut = () => { |
| 13 | return request({ | 14 | return request({ |
| 14 | url: `/csbr-zuul/user/logout`, | 15 | url: `${import.meta.env.VITE_APP_USER_API_BASEURL}/user/logout`, |
| 15 | method: 'get' | 16 | method: 'get' |
| 16 | }) | 17 | }) |
| 17 | } | 18 | } |
| ... | @@ -19,11 +20,20 @@ export const loginOut = () => { | ... | @@ -19,11 +20,20 @@ export const loginOut = () => { |
| 19 | /** 刷新token,延长过期时间 */ | 20 | /** 刷新token,延长过期时间 */ |
| 20 | export const refreshToken = (params) => { | 21 | export const refreshToken = (params) => { |
| 21 | return request({ | 22 | return request({ |
| 22 | url: `/csbr-zuul/user/refreshToken?refreshToken=${params.refreshToken}`, | 23 | url: `${import.meta.env.VITE_APP_USER_API_BASEURL}/user/refreshToken?refreshToken=${params.refreshToken}`, |
| 23 | method: 'post' | 24 | method: 'post' |
| 24 | }) | 25 | }) |
| 25 | } | 26 | } |
| 26 | 27 | ||
| 28 | export const getSystemMenu = (params) => { | ||
| 29 | return request({ | ||
| 30 | url: `${ | ||
| 31 | import.meta.env.VITE_APP_AUTH_URL | ||
| 32 | }/product-menu-permission/tenant/get-product-menu?tenantGuid=${params.tenantGuid}&platformSystemGuid=32774fcfdf5e43e8b866660374d8bced`, | ||
| 33 | method: "get", | ||
| 34 | }); | ||
| 35 | }; | ||
| 36 | |||
| 27 | // 获取当前用户对应的产品和菜单 | 37 | // 获取当前用户对应的产品和菜单 |
| 28 | export const getUserInfo = () => { | 38 | export const getUserInfo = () => { |
| 29 | return request({ | 39 | return request({ | ... | ... |
| ... | @@ -123,7 +123,7 @@ const handleClick = (scope, btn) => { | ... | @@ -123,7 +123,7 @@ const handleClick = (scope, btn) => { |
| 123 | if (scope.row.disabled || btn.disabled) return; | 123 | if (scope.row.disabled || btn.disabled) return; |
| 124 | emits("tableBtnClick", scope, btn); | 124 | emits("tableBtnClick", scope, btn); |
| 125 | }; | 125 | }; |
| 126 | const popoverHover = (scope, btn)=>{ | 126 | const popoverHover = (scope, btn) => { |
| 127 | emits("tableBtnClick", scope, btn); | 127 | emits("tableBtnClick", scope, btn); |
| 128 | } | 128 | } |
| 129 | const selectionChange = (val) => { | 129 | const selectionChange = (val) => { |
| ... | @@ -158,7 +158,7 @@ const inputKeyUp = (regexp, scope, item) => { | ... | @@ -158,7 +158,7 @@ const inputKeyUp = (regexp, scope, item) => { |
| 158 | return; | 158 | return; |
| 159 | } | 159 | } |
| 160 | if (regexp) { | 160 | if (regexp) { |
| 161 | scope.row[field] = scope.row[field].replace(regexp,'') | 161 | scope.row[field] = scope.row[field].replace(regexp, '') |
| 162 | } | 162 | } |
| 163 | // 特殊处理,apiCreate.vue中defaultParamsTableInfo的pageSize限制输入最大值100. | 163 | // 特殊处理,apiCreate.vue中defaultParamsTableInfo的pageSize限制输入最大值100. |
| 164 | if (scope.row.paramName == 'pageSize' && scope.row[field] > 100) { | 164 | if (scope.row.paramName == 'pageSize' && scope.row[field] > 100) { |
| ... | @@ -175,7 +175,7 @@ const rowClassName = (rowObj) => { | ... | @@ -175,7 +175,7 @@ const rowClassName = (rowObj) => { |
| 175 | } | 175 | } |
| 176 | const row = rowObj.row; | 176 | const row = rowObj.row; |
| 177 | let className = ""; | 177 | let className = ""; |
| 178 | if (row.ROWID && row.STATUS === "edit" && row.STATE === "Running" ) { | 178 | if (row.ROWID && row.STATUS === "edit" && row.STATE === "Running") { |
| 179 | className = "edit_row"; | 179 | className = "edit_row"; |
| 180 | } | 180 | } |
| 181 | return className; | 181 | return className; |
| ... | @@ -202,8 +202,8 @@ const pageChange = (page) => { | ... | @@ -202,8 +202,8 @@ const pageChange = (page) => { |
| 202 | let info = { ...page, id: props.tableInfo.id }; | 202 | let info = { ...page, id: props.tableInfo.id }; |
| 203 | emits("tablePageChange", info); | 203 | emits("tablePageChange", info); |
| 204 | }; | 204 | }; |
| 205 | const tableRowClassName1 = ({row,rowIndex})=>{ | 205 | const tableRowClassName1 = ({ row, rowIndex }) => { |
| 206 | return row.isAlter=="Y"? "primary":"" | 206 | return row.isAlter == "Y" ? "primary" : "" |
| 207 | } | 207 | } |
| 208 | 208 | ||
| 209 | onMounted(() => { | 209 | onMounted(() => { |
| ... | @@ -220,68 +220,30 @@ onMounted(() => { | ... | @@ -220,68 +220,30 @@ onMounted(() => { |
| 220 | </script> | 220 | </script> |
| 221 | 221 | ||
| 222 | <template> | 222 | <template> |
| 223 | <div | 223 | <div class="table_panel" :id="props.tableInfo.id" :style="{ |
| 224 | class="table_panel" | ||
| 225 | :id="props.tableInfo.id" | ||
| 226 | :style="{ | ||
| 227 | height: props.tableInfo.height ?? '100%', | 224 | height: props.tableInfo.height ?? '100%', |
| 228 | 'min-height': props.tableInfo.minPanelHeight ?? '' | 225 | 'min-height': props.tableInfo.minPanelHeight ?? '' |
| 229 | }" | 226 | }"> |
| 230 | > | 227 | <el-table ref="tableRef" :class="{ 'no-edit': props.tableInfo.readonly, 'sort-table': props.tableInfo.sortable }" |
| 231 | <el-table | 228 | :data="tableData" :highlight-current-row="props.tableInfo.heightlightRow ?? true" |
| 232 | ref="tableRef" | 229 | :show-header="props.tableInfo.showHeader ?? true" stripe :border="props.tableInfo.border |
| 233 | :class="{ 'no-edit': props.tableInfo.readonly, 'sort-table': props.tableInfo.sortable }" | ||
| 234 | :data="tableData" | ||
| 235 | :highlight-current-row=" props.tableInfo.heightlightRow ?? true" | ||
| 236 | :show-header="props.tableInfo.showHeader ?? true" | ||
| 237 | stripe | ||
| 238 | :border="props.tableInfo.border | ||
| 239 | ?? true" :height="props.tableInfo.height === null ? null : (props.tableInfo.height ?? '100%')" | 230 | ?? true" :height="props.tableInfo.height === null ? null : (props.tableInfo.height ?? '100%')" |
| 240 | :max-height="maxHeight" | 231 | :max-height="maxHeight" :row-key="rowKey" :current-row-key="currentRowKey" :row-class-name="rowClassName" |
| 241 | :row-key="rowKey" | 232 | v-loading="tableDataLoading" @row-click="rowClick" @row-dblclick="rowDblClick" @selection-change="selectionChange" |
| 242 | :current-row-key="currentRowKey" | 233 | @select="tableCheckboxSelectChange" @select-all="tableCheckboxAllSelectChange" |
| 243 | :row-class-name="rowClassName" | 234 | style="width: 100%; display: inline-block" :style="{ 'min-height': props.tableInfo.minHeight ?? '200px' }" |
| 244 | v-loading="tableDataLoading" | 235 | tooltip-effect="light" :tooltip-options="{ placement: 'top', popperClass: 'table_cell_tooltip' }" |
| 245 | @row-click="rowClick" | 236 | :show-summary="props.tableInfo.showSummary ?? false"> |
| 246 | @row-dblclick="rowDblClick" | 237 | <el-table-column type="selection" :width="32" align="center" v-if="multiple" :selectable="rowSelectable" |
| 247 | @selection-change="selectionChange" | 238 | :fixed="fixedSelection" /> |
| 248 | @select="tableCheckboxSelectChange" | 239 | <el-table-column v-for="item in tableFields" :label="item.label" :width="item.width" :min-width="item.minWidth" |
| 249 | @select-all="tableCheckboxAllSelectChange" | 240 | :fixed="item.fixed" :align="item.align" :type="item.type == 'index' ? '' : undefined" |
| 250 | style="width: 100%; display: inline-block" | 241 | :sortable="item.sortable ?? false" :prop="item.field" :class-name="item.columClass" |
| 251 | :style="{ 'min-height': props.tableInfo.minHeight ?? '200px' }" | 242 | :show-overflow-tooltip="item.type != 'switch'"> |
| 252 | tooltip-effect="light" | ||
| 253 | :tooltip-options="{ placement: 'top', popperClass: 'table_cell_tooltip' }" | ||
| 254 | :show-summary="props.tableInfo.showSummary ?? false" | ||
| 255 | > | ||
| 256 | <el-table-column | ||
| 257 | type="selection" | ||
| 258 | :width="32" | ||
| 259 | align="center" | ||
| 260 | v-if="multiple" | ||
| 261 | :selectable="rowSelectable" | ||
| 262 | :fixed="fixedSelection" | ||
| 263 | /> | ||
| 264 | <el-table-column | ||
| 265 | v-for="item in tableFields" | ||
| 266 | :label="item.label" | ||
| 267 | :width="item.width" | ||
| 268 | :min-width="item.minWidth" | ||
| 269 | :fixed="item.fixed" | ||
| 270 | :align="item.align" | ||
| 271 | :type="item.type == 'index' ? '' : undefined" | ||
| 272 | :sortable="item.sortable ?? false" | ||
| 273 | :prop="item.field" | ||
| 274 | :class-name="item.columClass" | ||
| 275 | :show-overflow-tooltip="item.type != 'switch'" | ||
| 276 | > | ||
| 277 | <template #header> | 243 | <template #header> |
| 278 | <template v-if="!!item?.toolTipContent"> | 244 | <template v-if="!!item?.toolTipContent"> |
| 279 | <span style="color:#000;display: inline-block">{{ item.label }}</span> | 245 | <span style="color:#000;display: inline-block">{{ item.label }}</span> |
| 280 | <el-tooltip | 246 | <el-tooltip effect="light" :content="item.toolTipContent" placement="top"> |
| 281 | effect="light" | ||
| 282 | :content="item.toolTipContent" | ||
| 283 | placement="top" | ||
| 284 | > | ||
| 285 | <el-icon style="color:#b2b2b2;"> | 247 | <el-icon style="color:#b2b2b2;"> |
| 286 | <QuestionFilled /> | 248 | <QuestionFilled /> |
| 287 | </el-icon> | 249 | </el-icon> |
| ... | @@ -303,39 +265,38 @@ onMounted(() => { | ... | @@ -303,39 +265,38 @@ onMounted(() => { |
| 303 | <span v-else>{{ props.tableInfo.sortable ? (scope.row.index) : (scope.$index + 1) }}</span> | 265 | <span v-else>{{ props.tableInfo.sortable ? (scope.row.index) : (scope.$index + 1) }}</span> |
| 304 | </template> | 266 | </template> |
| 305 | <template #default="scope" v-else-if="item.type == 'tag'"> | 267 | <template #default="scope" v-else-if="item.type == 'tag'"> |
| 306 | <el-tag v-if="scope.row[item.field] !== undefined" :type="item.tagType?item.tagType(scope):tagType(scope.row, item.field)">{{ | 268 | <el-tag v-if="scope.row[item.field] !== undefined" |
| 307 | item.getName?item.getName(scope):tagMethod(scope.row, item.field) | 269 | :type="item.tagType ? item.tagType(scope) : tagType(scope.row, item.field)">{{ |
| 270 | item.getName ? item.getName(scope) : tagMethod(scope.row, item.field) | ||
| 308 | }}</el-tag> | 271 | }}</el-tag> |
| 309 | <span v-else>{{ '--' }}</span> | 272 | <span v-else>{{ '--' }}</span> |
| 310 | </template> | 273 | </template> |
| 311 | <template #default="scope" v-else-if="item.type == 'popover'"> | 274 | <template #default="scope" v-else-if="item.type == 'popover'"> |
| 312 | <el-popover | 275 | <el-popover v-if="scope.row[item.field] !== undefined && (item.checkName ? item.checkName(scope) : true)" |
| 313 | v-if="scope.row[item.field] !== undefined && (item.checkName?item.checkName(scope):true)" | 276 | placement="left-start" :title="props.tableInfo.popoverTitle || '变化'" :width="476" trigger="hover" |
| 314 | placement="left-start" | 277 | @show="() => popoverHover(scope, item)"> |
| 315 | :title="props.tableInfo.popoverTitle || '变化'" | ||
| 316 | :width="476" | ||
| 317 | trigger="hover" | ||
| 318 | @show="()=>popoverHover(scope,item)" | ||
| 319 | > | ||
| 320 | <template #reference> | 278 | <template #reference> |
| 321 | <span :class="{text_btn:item.checkName?item.checkName(scope):true}">{{ item.getName?item.getName(scope):"详情" }}</span> | 279 | <span :class="{ text_btn: item.checkName ? item.checkName(scope) : true }">{{ |
| 322 | </template> | 280 | item.getName ? item.getName(scope):"详情" }}</span> |
| 323 | <el-table :data="props.tableInfo.popoverData" v-loading="props.tableInfo.popoverloading" | 281 | </template> |
| 324 | class="tablePover" :row-class-name="tableRowClassName1" border tooltip-effect="light" :span-method="props.tableInfo?.arraySpanMethod"> | 282 | <el-table :data="props.tableInfo.popoverData" v-loading="props.tableInfo.popoverloading" class="tablePover" |
| 325 | <el-table-column v-for="col in item.column" :width="col.width" :property="col.field" :label="col.label" :key="col.field" show-overflow-tooltip > | 283 | :row-class-name="tableRowClassName1" border tooltip-effect="light" |
| 284 | :span-method="props.tableInfo?.arraySpanMethod"> | ||
| 285 | <el-table-column v-for="col in item.column" :width="col.width" :property="col.field" :label="col.label" | ||
| 286 | :key="col.field" show-overflow-tooltip> | ||
| 326 | <template #default="scope"> | 287 | <template #default="scope"> |
| 327 | {{ scope.row[col.field] || '--' }} | 288 | {{ scope.row[col.field] || '--' }} |
| 328 | </template> | 289 | </template> |
| 329 | </el-table-column> | 290 | </el-table-column> |
| 330 | </el-table> | 291 | </el-table> |
| 331 | </el-popover> | 292 | </el-popover> |
| 332 | <span v-else>{{item.getName?(item.getName(scope) || '--'):"--"}}</span> | 293 | <span v-else>{{ item.getName ? (item.getName(scope) || '--') : "--" }}</span> |
| 333 | </template> | 294 | </template> |
| 334 | <template #default="scope" v-else-if="item.type == 'filter'"> | 295 | <template #default="scope" v-else-if="item.type == 'filter'"> |
| 335 | <span>{{ tagMethod(scope.row, item.field) }}</span> | 296 | <span>{{ tagMethod(scope.row, item.field) }}</span> |
| 336 | </template> | 297 | </template> |
| 337 | <template #default="scope" v-else-if="item.type == 'chnum'"> | 298 | <template #default="scope" v-else-if="item.type == 'chnum'"> |
| 338 | <span v-if="!!item.isNaN">{{ scope.row[item.field]?changeNum(scope.row[item.field]):"--" }}</span> | 299 | <span v-if="!!item.isNaN">{{ scope.row[item.field] ? changeNum(scope.row[item.field]) : "--" }}</span> |
| 339 | <span v-else>{{ | 300 | <span v-else>{{ |
| 340 | scope.row[item.field] != null ? | 301 | scope.row[item.field] != null ? |
| 341 | changeNum( | 302 | changeNum( |
| ... | @@ -346,18 +307,11 @@ onMounted(() => { | ... | @@ -346,18 +307,11 @@ onMounted(() => { |
| 346 | <span v-if="item.unit">{{ item.unit }}</span> | 307 | <span v-if="item.unit">{{ item.unit }}</span> |
| 347 | </template> | 308 | </template> |
| 348 | <template #default="scope" v-else-if="item.type == 'switch'"> | 309 | <template #default="scope" v-else-if="item.type == 'switch'"> |
| 349 | <el-switch | 310 | <el-switch v-model="scope.row[item.field]" inline-prompt |
| 350 | v-model="scope.row[item.field]" | 311 | :disabled="!item.isDisabled ? false : item.isDisabled(scope)" :active-value="item.activeValue" |
| 351 | inline-prompt | 312 | :inactive-value="item.inactiveValue" :width="item.switchWidth" :active-text="item.activeText" |
| 352 | :disabled="!item.isDisabled ? false : item.isDisabled(scope)" | 313 | :inactive-text="item.inactiveText" :before-change="() => beforeChange(scope, item)" |
| 353 | :active-value="item.activeValue" | 314 | @change="(val) => switchChange(val, scope, item.field)" /> |
| 354 | :inactive-value="item.inactiveValue" | ||
| 355 | :width="item.switchWidth" | ||
| 356 | :active-text="item.activeText" | ||
| 357 | :inactive-text="item.inactiveText" | ||
| 358 | :before-change="() => beforeChange(scope, item)" | ||
| 359 | @change="(val) => switchChange(val, scope, item.field)" | ||
| 360 | /> | ||
| 361 | </template> | 315 | </template> |
| 362 | <template #default="scope" v-else-if="item.type == 'menu'"> | 316 | <template #default="scope" v-else-if="item.type == 'menu'"> |
| 363 | {{ item.menus[scope.row[item.field]] }} | 317 | {{ item.menus[scope.row[item.field]] }} |
| ... | @@ -365,35 +319,24 @@ onMounted(() => { | ... | @@ -365,35 +319,24 @@ onMounted(() => { |
| 365 | </template> | 319 | </template> |
| 366 | <template #default="scope" v-else-if="item.type == 'text_btn'"> | 320 | <template #default="scope" v-else-if="item.type == 'text_btn'"> |
| 367 | <span v-if="scope.row[item.field] != null" :class="item.class + ' text_btn'" | 321 | <span v-if="scope.row[item.field] != null" :class="item.class + ' text_btn'" |
| 368 | @click="(item.click && !item.disabled && !scope.row.disabled) ? item.click(scope, { label: item.label, value: item.value }): handleClick(scope, { label: item.label, value: item.value })" v-preReClick>{{ item.getName ? item.getName(scope) : scope.row[item.field] | 322 | @click="(item.click && !item.disabled && !scope.row.disabled) ? item.click(scope, { label: item.label, value: item.value }) : handleClick(scope, { label: item.label, value: item.value })" |
| 323 | v-preReClick>{{ item.getName ? item.getName(scope) : scope.row[item.field] | ||
| 369 | }}</span> | 324 | }}</span> |
| 370 | <span v-else>--</span> | 325 | <span v-else>--</span> |
| 371 | </template> | 326 | </template> |
| 372 | <template #default="scope" v-else-if="item.type == 'btn'"> | 327 | <template #default="scope" v-else-if="item.type == 'btn'"> |
| 373 | <template v-for="btn in item.btns"> | 328 | <template v-for="btn in item.btns"> |
| 374 | <span | 329 | <span v-if="btn.visible ?? true" class="text_btn" |
| 375 | v-if="btn.visible ?? true" | 330 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn) : handleClick(scope, btn)" |
| 376 | class="text_btn" | 331 | v-preReClick>{{ btn.label }}</span> |
| 377 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn):handleClick(scope, btn)" | ||
| 378 | v-preReClick | ||
| 379 | >{{ btn.label }}</span | ||
| 380 | > | ||
| 381 | </template> | 332 | </template> |
| 382 | </template> | 333 | </template> |
| 383 | <template #default="scope" v-else-if="item.type == 'input'"> | 334 | <template #default="scope" v-else-if="item.type == 'input'"> |
| 384 | <el-input | 335 | <el-input v-model.trim="scope.row[item.field]" placeholder="请输入" :maxlength="item.maxlength ?? ''"></el-input> |
| 385 | v-model.trim="scope.row[item.field]" | ||
| 386 | placeholder="请输入" | ||
| 387 | :maxlength="item.maxlength ?? ''" | ||
| 388 | ></el-input> | ||
| 389 | </template> | 336 | </template> |
| 390 | <template #default="scope" v-else-if="item.type == 'tooltip'"> | 337 | <template #default="scope" v-else-if="item.type == 'tooltip'"> |
| 391 | <el-tooltip | 338 | <el-tooltip :placement="item.placement ?? 'bottom-start'" effect="light" popper-class="table_tooltip" |
| 392 | :placement="item.placement ?? 'bottom-start'" | 339 | :trigger="item.trigger"> |
| 393 | effect="light" | ||
| 394 | popper-class="table_tooltip" | ||
| 395 | :trigger="item.trigger" | ||
| 396 | > | ||
| 397 | <template #content> | 340 | <template #content> |
| 398 | <div style="width: 236px; text-align: justify"> | 341 | <div style="width: 236px; text-align: justify"> |
| 399 | <p class="tips_title">不符合规则</p> | 342 | <p class="tips_title">不符合规则</p> |
| ... | @@ -405,159 +348,85 @@ onMounted(() => { | ... | @@ -405,159 +348,85 @@ onMounted(() => { |
| 405 | </el-tooltip> | 348 | </el-tooltip> |
| 406 | </template> | 349 | </template> |
| 407 | <template #default="scope" v-else-if="item.type && item.type == 'edit'"> | 350 | <template #default="scope" v-else-if="item.type && item.type == 'edit'"> |
| 408 | <template v-if="(props.tableInfo.STATUS == 'edit' || scope.row.STATUS == 'edit') && (item.getVisible ? item.getVisible(scope) : true)"> | 351 | <template |
| 409 | <el-select | 352 | v-if="(props.tableInfo.STATUS == 'edit' || scope.row.STATUS == 'edit') && (item.getVisible ? item.getVisible(scope) : true)"> |
| 410 | v-if=" | 353 | <el-select v-if=" |
| 411 | editForm[item.field] && editForm[item.field].type == 'select' | 354 | editForm[item.field] && editForm[item.field].type == 'select' |
| 412 | " | 355 | " v-model="scope.row[item.field]" :placeholder="editForm[item.field].placeholder" |
| 413 | v-model="scope.row[item.field]" | 356 | :clearable="editForm[item.field].clearable" :filterable="editForm[item.field].filterable ?? true" |
| 414 | :placeholder="editForm[item.field].placeholder" | 357 | :disabled="editForm[item.field].disabled && scope.row.guid !== undefined |
| 415 | :clearable="editForm[item.field].clearable" | 358 | " @change="(val) => selectChange(val, scope, item)"> |
| 416 | :filterable="editForm[item.field].filterable ?? true" | ||
| 417 | :disabled=" | ||
| 418 | editForm[item.field].disabled && scope.row.guid !== undefined | ||
| 419 | " | ||
| 420 | @change="(val) => selectChange(val, scope, item)" | ||
| 421 | > | ||
| 422 | <el-option v-if="props.tableInfo.readonly" label="--" value="" /> | 359 | <el-option v-if="props.tableInfo.readonly" label="--" value="" /> |
| 423 | <el-option | 360 | <el-option |
| 424 | v-for="opt in editForm[item.field].getOptions ? editForm[item.field].getOptions(scope) : editForm[item.field].options" | 361 | v-for="opt in editForm[item.field].getOptions ? editForm[item.field].getOptions(scope) : editForm[item.field].options" |
| 425 | :label="editForm[item.field]?.props?.label ? opt[editForm[item.field].props.label] : opt.label" | 362 | :label="editForm[item.field]?.props?.label ? opt[editForm[item.field].props.label] : opt.label" |
| 426 | :value="editForm[item.field]?.props?.value ? opt[editForm[item.field].props.value] : opt.value" | 363 | :value="editForm[item.field]?.props?.value ? opt[editForm[item.field].props.value] : opt.value" |
| 427 | :key="editForm[item.field]?.props?.value ? opt[editForm[item.field].props.value] : opt.value" | 364 | :key="editForm[item.field]?.props?.value ? opt[editForm[item.field].props.value] : opt.value" /> |
| 428 | /> | ||
| 429 | </el-select> | 365 | </el-select> |
| 430 | <el-input | 366 | <el-input v-else-if=" |
| 431 | v-else-if=" | ||
| 432 | editForm[item.field] && editForm[item.field].type == 'input' | 367 | editForm[item.field] && editForm[item.field].type == 'input' |
| 433 | " | 368 | " v-model.trim="scope.row[item.field]" :placeholder="editForm[item.field].placeholder" |
| 434 | v-model.trim="scope.row[item.field]" | 369 | :clearable="editForm[item.field].clearable" :maxlength="editForm[item.field].maxlength ?? ''" :disabled="editForm[item.field].disabled && scope.row.guid !== undefined |
| 435 | :placeholder="editForm[item.field].placeholder" | 370 | " @input="inputKeyUp(editForm[item.field].regexp, scope, editForm[item.field])" |
| 436 | :clearable="editForm[item.field].clearable" | ||
| 437 | :maxlength="editForm[item.field].maxlength ?? ''" | ||
| 438 | :disabled=" | ||
| 439 | editForm[item.field].disabled && scope.row.guid !== undefined | ||
| 440 | " | ||
| 441 | @input="inputKeyUp(editForm[item.field].regexp, scope, editForm[item.field])" | ||
| 442 | @change="(val) => inputChange(val, scope, item)" | 371 | @change="(val) => inputChange(val, scope, item)" |
| 443 | @focus="(event) => inputFocus(event, scope, editForm[item.field])" | 372 | @focus="(event) => inputFocus(event, scope, editForm[item.field])"></el-input> |
| 444 | ></el-input> | ||
| 445 | <template v-else-if="editForm[item.field] && editForm[item.field].type == 'defaultValue'"> | 373 | <template v-else-if="editForm[item.field] && editForm[item.field].type == 'defaultValue'"> |
| 446 | <el-date-picker v-if="scope.row[item.dataTypeName] === 'date'" v-model="scope.row[item.field]" type="date" | 374 | <el-date-picker v-if="scope.row[item.dataTypeName] === 'date'" v-model="scope.row[item.field]" type="date" |
| 447 | format="YYYY-MM-DD" value-format="YYYY-MM-DD" :placeholder="editForm[item.field].placeholder" /> | 375 | format="YYYY-MM-DD" value-format="YYYY-MM-DD" :placeholder="editForm[item.field].placeholder" /> |
| 448 | <el-date-picker v-else-if="scope.row[item.dataTypeName] === 'datetime'" | 376 | <el-date-picker v-else-if="scope.row[item.dataTypeName] === 'datetime'" v-model="scope.row[item.field]" |
| 449 | v-model="scope.row[item.field]" :placeholder="editForm[item.field].placeholder" type="datetime" format="YYYY-MM-DD HH:mm:ss" | 377 | :placeholder="editForm[item.field].placeholder" type="datetime" format="YYYY-MM-DD HH:mm:ss" |
| 450 | value-format="YYYY-MM-DD HH:mm:ss" /> | 378 | value-format="YYYY-MM-DD HH:mm:ss" /> |
| 451 | <el-input v-else v-model.trim="scope.row[item.field]" :placeholder="editForm[item.field].placeholder" :clearable="editForm[item.field].clearable" | 379 | <el-input v-else v-model.trim="scope.row[item.field]" :placeholder="editForm[item.field].placeholder" |
| 452 | :maxlength="editForm[item.field].maxlength ?? ''" | 380 | :clearable="editForm[item.field].clearable" :maxlength="editForm[item.field].maxlength ?? ''" |
| 453 | @input="inputKeyUp(scope.row[item.dataTypeName] == 'int' ? /\D/g : (scope.row[item.dataTypeName] == 'decimal' ? /[^0-9.-]/g : ''), scope, editForm[item.field])" | 381 | @input="inputKeyUp(scope.row[item.dataTypeName] == 'int' ? /\D/g : (scope.row[item.dataTypeName] == 'decimal' ? /[^0-9.-]/g : ''), scope, editForm[item.field])" |
| 454 | @change="(val) => inputChange(val, scope, item)" /> | 382 | @change="(val) => inputChange(val, scope, item)" /> |
| 455 | </template> | 383 | </template> |
| 456 | <template | 384 | <template v-else-if=" |
| 457 | v-else-if=" | ||
| 458 | editForm[item.field] && editForm[item.field].type == 'btn' | 385 | editForm[item.field] && editForm[item.field].type == 'btn' |
| 459 | " | 386 | "> |
| 460 | > | ||
| 461 | <template v-for="btn in scope.row[item.field].btns"> | 387 | <template v-for="btn in scope.row[item.field].btns"> |
| 462 | <span | 388 | <span v-if="btn.visible ?? true" class="text_btn" |
| 463 | v-if="btn.visible ?? true" | 389 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn) : handleClick(scope, btn)" |
| 464 | class="text_btn" | 390 | v-preReClick>{{ btn.label }}</span> |
| 465 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn):handleClick(scope, btn)" | ||
| 466 | v-preReClick | ||
| 467 | >{{ btn.label }}</span | ||
| 468 | > | ||
| 469 | </template> | 391 | </template> |
| 470 | </template> | 392 | </template> |
| 471 | <template | 393 | <template v-else-if=" |
| 472 | v-else-if=" | ||
| 473 | editForm[item.field] && editForm[item.field].type == 'comb' | 394 | editForm[item.field] && editForm[item.field].type == 'comb' |
| 474 | " | 395 | "> |
| 475 | > | ||
| 476 | <div v-if="scope.row['ruleType'] == 'Serial'" class="input_comb"> | 396 | <div v-if="scope.row['ruleType'] == 'Serial'" class="input_comb"> |
| 477 | <span> | 397 | <span> |
| 478 | <span>起始值</span> | 398 | <span>起始值</span> |
| 479 | <el-input | 399 | <el-input v-model.trim="scope.row.start" style="width: 40px"></el-input> |
| 480 | v-model.trim="scope.row.start" | ||
| 481 | style="width: 40px" | ||
| 482 | ></el-input> | ||
| 483 | </span> | 400 | </span> |
| 484 | <span> | 401 | <span> |
| 485 | <span>最大值</span> | 402 | <span>最大值</span> |
| 486 | <el-input | 403 | <el-input v-model.trim="scope.row.max" style="width: 100px"></el-input> |
| 487 | v-model.trim="scope.row.max" | ||
| 488 | style="width: 100px" | ||
| 489 | ></el-input> | ||
| 490 | </span> | 404 | </span> |
| 491 | <span> | 405 | <span> |
| 492 | <span>长度</span> | 406 | <span>长度</span> |
| 493 | <el-input | 407 | <el-input v-model.trim="scope.row.len" style="width: 40px"></el-input> |
| 494 | v-model.trim="scope.row.len" | ||
| 495 | style="width: 40px" | ||
| 496 | ></el-input> | ||
| 497 | </span> | 408 | </span> |
| 498 | <span> | 409 | <span> |
| 499 | <span>步长</span> | 410 | <span>步长</span> |
| 500 | <el-input | 411 | <el-input v-model.trim="scope.row.step" style="width: 40px"></el-input> |
| 501 | v-model.trim="scope.row.step" | ||
| 502 | style="width: 40px" | ||
| 503 | ></el-input> | ||
| 504 | </span> | 412 | </span> |
| 505 | </div> | 413 | </div> |
| 506 | <el-input | 414 | <el-input v-else-if="scope.row['ruleType'] == 'Fixed'" v-model.trim="scope.row.fixedValue" |
| 507 | v-else-if="scope.row['ruleType'] == 'Fixed'" | 415 | clearable></el-input> |
| 508 | v-model.trim="scope.row.fixedValue" | 416 | <el-select v-else-if="scope.row['ruleType'] == 'Separator'" v-model="scope.row.separator" clearable> |
| 509 | clearable | 417 | <el-option v-if="props.tableInfo.readonly" label="--" value="" /> |
| 510 | ></el-input> | 418 | <el-option v-for="opt in editForm[item.field].codeRule.Separator.options" :key="opt.value" |
| 511 | <el-select | 419 | :label="opt.label" :value="opt.value" /> |
| 512 | v-else-if="scope.row['ruleType'] == 'Separator'" | ||
| 513 | v-model="scope.row.separator" | ||
| 514 | clearable | ||
| 515 | > | ||
| 516 | <el-option | ||
| 517 | v-if="props.tableInfo.readonly" | ||
| 518 | label="--" | ||
| 519 | value="" | ||
| 520 | /> | ||
| 521 | <el-option | ||
| 522 | v-for="opt in editForm[item.field].codeRule.Separator.options" | ||
| 523 | :key="opt.value" | ||
| 524 | :label="opt.label" | ||
| 525 | :value="opt.value" | ||
| 526 | /> | ||
| 527 | </el-select> | 420 | </el-select> |
| 528 | <el-select | 421 | <el-select v-else-if="scope.row['ruleType'] == 'Date'" v-model="scope.row.format" clearable> |
| 529 | v-else-if="scope.row['ruleType'] == 'Date'" | 422 | <el-option v-if="props.tableInfo.readonly" label="--" value="" /> |
| 530 | v-model="scope.row.format" | 423 | <el-option v-for="opt in editForm[item.field].codeRule.Date.options" :key="opt.value" :label="opt.label" |
| 531 | clearable | 424 | :value="opt.value" /> |
| 532 | > | ||
| 533 | <el-option | ||
| 534 | v-if="props.tableInfo.readonly" | ||
| 535 | label="--" | ||
| 536 | value="" | ||
| 537 | /> | ||
| 538 | <el-option | ||
| 539 | v-for="opt in editForm[item.field].codeRule.Date.options" | ||
| 540 | :key="opt.value" | ||
| 541 | :label="opt.label" | ||
| 542 | :value="opt.value" | ||
| 543 | /> | ||
| 544 | </el-select> | 425 | </el-select> |
| 545 | <el-select | 426 | <el-select v-else-if="scope.row['ruleType'] == 'Guid'" v-model="scope.row.mode" clearable> |
| 546 | v-else-if="scope.row['ruleType'] == 'Guid'" | 427 | <el-option v-if="props.tableInfo.readonly" label="--" value="" /> |
| 547 | v-model="scope.row.mode" | 428 | <el-option v-for="opt in editForm[item.field].codeRule.Guid.options" :key="opt.value" :label="opt.label" |
| 548 | clearable | 429 | :value="opt.value" /> |
| 549 | > | ||
| 550 | <el-option | ||
| 551 | v-if="props.tableInfo.readonly" | ||
| 552 | label="--" | ||
| 553 | value="" | ||
| 554 | /> | ||
| 555 | <el-option | ||
| 556 | v-for="opt in editForm[item.field].codeRule.Guid.options" | ||
| 557 | :key="opt.value" | ||
| 558 | :label="opt.label" | ||
| 559 | :value="opt.value" | ||
| 560 | /> | ||
| 561 | </el-select> | 430 | </el-select> |
| 562 | <span v-else>{{ scope.row[item.field] ?? "--" }}</span> | 431 | <span v-else>{{ scope.row[item.field] ?? "--" }}</span> |
| 563 | </template> | 432 | </template> |
| ... | @@ -570,7 +439,7 @@ onMounted(() => { | ... | @@ -570,7 +439,7 @@ onMounted(() => { |
| 570 | <el-icon class="svg-title-icon" :class="item.getSvg(scope)"> | 439 | <el-icon class="svg-title-icon" :class="item.getSvg(scope)"> |
| 571 | <svg-icon :name="item.getSvg(scope)" /> | 440 | <svg-icon :name="item.getSvg(scope)" /> |
| 572 | </el-icon> | 441 | </el-icon> |
| 573 | <span :style="{'margin-left': '5px'}">{{ | 442 | <span :style="{ 'margin-left': '5px' }">{{ |
| 574 | item.getName | 443 | item.getName |
| 575 | ? item.getName(scope) | 444 | ? item.getName(scope) |
| 576 | : scope.row[item.field] !== 0 && !scope.row[item.field] | 445 | : scope.row[item.field] !== 0 && !scope.row[item.field] |
| ... | @@ -588,21 +457,12 @@ onMounted(() => { | ... | @@ -588,21 +457,12 @@ onMounted(() => { |
| 588 | }}</span> | 457 | }}</span> |
| 589 | </template> | 458 | </template> |
| 590 | </el-table-column> | 459 | </el-table-column> |
| 591 | <el-table-column | 460 | <el-table-column :width="actionInfo.width" :class-name="actionInfo.columClass" fixed="right" |
| 592 | :width="actionInfo.width" | 461 | v-if="actionInfo.show ?? true"> |
| 593 | :class-name="actionInfo.columClass" | ||
| 594 | fixed="right" | ||
| 595 | v-if="actionInfo.show ?? true" | ||
| 596 | > | ||
| 597 | <template #header> | 462 | <template #header> |
| 598 | <div class="header_title"> | 463 | <div class="header_title"> |
| 599 | <span>{{ actionInfo.label ?? "操作" }}</span> | 464 | <span>{{ actionInfo.label ?? "操作" }}</span> |
| 600 | <el-tooltip | 465 | <el-tooltip placement="top" effect="light" popper-class="table_tooltip" v-if="actionInfo.tooltip"> |
| 601 | placement="top" | ||
| 602 | effect="light" | ||
| 603 | popper-class="table_tooltip" | ||
| 604 | v-if="actionInfo.tooltip" | ||
| 605 | > | ||
| 606 | <template #content> | 466 | <template #content> |
| 607 | <div style="width: 236px; text-align: justify"> | 467 | <div style="width: 236px; text-align: justify"> |
| 608 | 帮助:初始化为系统底层操作,为会员创建数据库及系统表操作,一旦初始化将不可以删除会员。 | 468 | 帮助:初始化为系统底层操作,为会员创建数据库及系统表操作,一旦初始化将不可以删除会员。 |
| ... | @@ -618,63 +478,35 @@ onMounted(() => { | ... | @@ -618,63 +478,35 @@ onMounted(() => { |
| 618 | <!-- 某些操作按钮需要根据当前行信息设置显示隐藏,actionInfo.btns使用回调函数返回。 --> | 478 | <!-- 某些操作按钮需要根据当前行信息设置显示隐藏,actionInfo.btns使用回调函数返回。 --> |
| 619 | <template v-if="actionInfo.isMore"> | 479 | <template v-if="actionInfo.isMore"> |
| 620 | <template v-if="Array.isArray(actionInfo.btns) | 480 | <template v-if="Array.isArray(actionInfo.btns) |
| 621 | ? actionInfo.btns.length>4 | 481 | ? actionInfo.btns.length > 4 |
| 622 | : actionInfo.btns(scope).length>4"> | 482 | : actionInfo.btns(scope).length > 4"> |
| 623 | <template | 483 | <template v-for="(btn, b) in Array.isArray(actionInfo.btns) |
| 624 | v-for="(btn, b) in Array.isArray(actionInfo.btns) | 484 | ? actionInfo.btns.slice(0, 4) |
| 625 | ? actionInfo.btns.slice(0,4) | 485 | : actionInfo.btns(scope).slice(0, 4)"> |
| 626 | : actionInfo.btns(scope).slice(0,4)" | 486 | <span class="operate_btn" :class="{ active: btn.visible ?? true }" v-if="btn.visible ?? true"> |
| 627 | > | 487 | <BtnPopover v-if="btn.value == 'authority'" :popover-info="{ scope, btn, ...popverData }" |
| 628 | <span | 488 | @showPopver="handleClick" @popverBtnClick="handleClick" /> |
| 629 | class="operate_btn" | 489 | <span class="text_btn" :class="{ 'is-disabled': !!btn.disabled }" v-else |
| 630 | :class="{ active: btn.visible ?? true }" | 490 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn) : handleClick(scope, btn)" |
| 631 | v-if="btn.visible ?? true" | 491 | v-preReClick>{{ btn.label }}</span> |
| 632 | > | ||
| 633 | <BtnPopover | ||
| 634 | v-if="btn.value == 'authority'" | ||
| 635 | :popover-info="{ scope, btn, ...popverData }" | ||
| 636 | @showPopver="handleClick" | ||
| 637 | @popverBtnClick="handleClick" | ||
| 638 | /> | ||
| 639 | <span | ||
| 640 | class="text_btn" | ||
| 641 | :class="{ 'is-disabled': !!btn.disabled }" | ||
| 642 | v-else | ||
| 643 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn):handleClick(scope, btn)" | ||
| 644 | v-preReClick | ||
| 645 | >{{ btn.label }}</span> | ||
| 646 | </span> | 492 | </span> |
| 647 | </template> | 493 | </template> |
| 648 | <span class="operate_btn active"> | 494 | <span class="operate_btn active"> |
| 649 | <el-dropdown trigger="hover" :show-timeout="50" > | 495 | <el-dropdown trigger="hover" :show-timeout="50"> |
| 650 | <span class="text_btn">...</span> | 496 | <span class="text_btn">...</span> |
| 651 | <template #dropdown> | 497 | <template #dropdown> |
| 652 | 498 | <el-dropdown-menu> | |
| 653 | <el-dropdown-menu > | ||
| 654 | <el-dropdown-item v-for="(btn, b) in Array.isArray(actionInfo.btns) | 499 | <el-dropdown-item v-for="(btn, b) in Array.isArray(actionInfo.btns) |
| 655 | ? actionInfo.btns.slice(4) | 500 | ? actionInfo.btns.slice(4) |
| 656 | : actionInfo.btns(scope).slice(4)"> | 501 | : actionInfo.btns(scope).slice(4)"> |
| 657 | <span | 502 | <span class="operate_btn" style="width: 100%; display: inline-block;" |
| 658 | class="operate_btn" | 503 | :class="{ active: btn.visible ?? true }" v-if="btn.visible ?? true"> |
| 659 | style="width: 100%; display: inline-block;" | 504 | <BtnPopover v-if="btn.value == 'authority'" :popover-info="{ scope, btn, ...popverData }" |
| 660 | :class="{ active: btn.visible ?? true }" | 505 | @showPopver="handleClick" @popverBtnClick="handleClick" /> |
| 661 | v-if="btn.visible ?? true" | 506 | <span class="text_btn" style="width: 100%;display: block;" |
| 662 | > | 507 | :class="{ 'is-disabled': !!btn.disabled }" v-else |
| 663 | <BtnPopover | ||
| 664 | v-if="btn.value == 'authority'" | ||
| 665 | :popover-info="{ scope, btn, ...popverData }" | ||
| 666 | @showPopver="handleClick" | ||
| 667 | @popverBtnClick="handleClick" | ||
| 668 | /> | ||
| 669 | <span | ||
| 670 | class="text_btn" | ||
| 671 | style="width: 100%;display: block;" | ||
| 672 | :class="{ 'is-disabled': !!btn.disabled }" | ||
| 673 | v-else | ||
| 674 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn) : handleClick(scope, btn)" | 508 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn) : handleClick(scope, btn)" |
| 675 | v-preReClick | 509 | v-preReClick>{{ btn.label }}</span> |
| 676 | >{{ btn.label }}</span | ||
| 677 | > | ||
| 678 | </span> | 510 | </span> |
| 679 | </el-dropdown-item> | 511 | </el-dropdown-item> |
| 680 | </el-dropdown-menu> | 512 | </el-dropdown-menu> |
| ... | @@ -683,104 +515,58 @@ onMounted(() => { | ... | @@ -683,104 +515,58 @@ onMounted(() => { |
| 683 | </span> | 515 | </span> |
| 684 | </template> | 516 | </template> |
| 685 | <template v-else> | 517 | <template v-else> |
| 686 | <template | 518 | <template v-for="(btn, b) in Array.isArray(actionInfo.btns) |
| 687 | v-for="(btn, b) in Array.isArray(actionInfo.btns) | ||
| 688 | ? actionInfo.btns | 519 | ? actionInfo.btns |
| 689 | : actionInfo.btns(scope)" | 520 | : actionInfo.btns(scope)"> |
| 690 | > | 521 | <span class="operate_btn" :class="{ active: btn.visible ?? true }" v-if="btn.visible ?? true"> |
| 691 | <span | 522 | <BtnPopover v-if="btn.value == 'authority'" :popover-info="{ scope, btn, ...popverData }" |
| 692 | class="operate_btn" | 523 | @showPopver="handleClick" @popverBtnClick="handleClick" /> |
| 693 | :class="{ active: btn.visible ?? true }" | 524 | <span class="text_btn" :class="{ 'is-disabled': !!btn.disabled }" v-else |
| 694 | v-if="btn.visible ?? true" | ||
| 695 | > | ||
| 696 | <BtnPopover | ||
| 697 | v-if="btn.value == 'authority'" | ||
| 698 | :popover-info="{ scope, btn, ...popverData }" | ||
| 699 | @showPopver="handleClick" | ||
| 700 | @popverBtnClick="handleClick" | ||
| 701 | /> | ||
| 702 | <span | ||
| 703 | class="text_btn" | ||
| 704 | :class="{ 'is-disabled': !!btn.disabled }" | ||
| 705 | v-else | ||
| 706 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn) : handleClick(scope, btn)" | 525 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn) : handleClick(scope, btn)" |
| 707 | v-preReClick | 526 | v-preReClick>{{ btn.label }}</span> |
| 708 | >{{ btn.label }}</span> | ||
| 709 | </span> | 527 | </span> |
| 710 | </template> | 528 | </template> |
| 711 | </template> | 529 | </template> |
| 712 | </template> | 530 | </template> |
| 713 | <template v-else> | 531 | <template v-else> |
| 714 | <template | 532 | <template v-for="(btn, b) in Array.isArray(actionInfo.btns) |
| 715 | v-for="(btn, b) in Array.isArray(actionInfo.btns) | ||
| 716 | ? actionInfo.btns | 533 | ? actionInfo.btns |
| 717 | : actionInfo.btns(scope)" | 534 | : actionInfo.btns(scope)"> |
| 718 | > | 535 | <span class="operate_btn" :class="{ active: btn.visible ?? true, 'sort-icon': btn.value == 'sort' }" |
| 719 | <span | 536 | v-if="btn.visible ?? true"> |
| 720 | class="operate_btn" | ||
| 721 | :class="{ active: btn.visible ?? true, 'sort-icon': btn.value == 'sort' }" | ||
| 722 | v-if="btn.visible ?? true" | ||
| 723 | > | ||
| 724 | <el-icon v-if="btn.value == 'sort'" style="width: 24px;height: 15px;vertical-align: text-top;"> | 537 | <el-icon v-if="btn.value == 'sort'" style="width: 24px;height: 15px;vertical-align: text-top;"> |
| 725 | <svg-icon style="width: 24px;height: 15px;" name="sort-drag" /> | 538 | <svg-icon style="width: 24px;height: 15px;" name="sort-drag" /> |
| 726 | </el-icon> | 539 | </el-icon> |
| 727 | <BtnPopover | 540 | <BtnPopover v-if="btn.value == 'authority'" :popover-info="{ scope, btn, ...popverData }" |
| 728 | v-if="btn.value == 'authority'" | 541 | @showPopver="handleClick" @popverBtnClick="handleClick" /> |
| 729 | :popover-info="{ scope, btn, ...popverData }" | 542 | <span class="text_btn" :class="{ 'is-disabled': !!btn.disabled }" v-else |
| 730 | @showPopver="handleClick" | 543 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn) : handleClick(scope, btn)" |
| 731 | @popverBtnClick="handleClick" | 544 | v-preReClick>{{ btn.label }}</span> |
| 732 | /> | ||
| 733 | <span | ||
| 734 | class="text_btn" | ||
| 735 | :class="{ 'is-disabled': !!btn.disabled }" | ||
| 736 | v-else | ||
| 737 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn):handleClick(scope, btn)" | ||
| 738 | v-preReClick | ||
| 739 | >{{ btn.label }}</span> | ||
| 740 | </span> | 545 | </span> |
| 741 | </template> | 546 | </template> |
| 742 | </template> | 547 | </template> |
| 743 | 548 | <template v-if=" | |
| 744 | <template | ||
| 745 | v-if=" | ||
| 746 | props.tableInfo.id.indexOf('maintenance') > -1 && | 549 | props.tableInfo.id.indexOf('maintenance') > -1 && |
| 747 | scope.row.isInit == 'N' | 550 | scope.row.isInit == 'N' |
| 748 | " | 551 | "> |
| 749 | > | 552 | <span class="text_btn" @click="handleClick(scope, { label: '初始化', value: 'init' })" v-preReClick>初始化</span> |
| 750 | <span | ||
| 751 | class="text_btn" | ||
| 752 | @click="handleClick(scope, { label: '初始化', value: 'init' })" | ||
| 753 | v-preReClick | ||
| 754 | >初始化</span | ||
| 755 | > | ||
| 756 | </template> | 553 | </template> |
| 757 | <template | 554 | <template v-else-if=" |
| 758 | v-else-if=" | ||
| 759 | props.tableInfo.id.indexOf('product-menu') > -1 && | 555 | props.tableInfo.id.indexOf('product-menu') > -1 && |
| 760 | scope.row.menuType != 'F' | 556 | scope.row.menuType != 'F' |
| 761 | " | 557 | "> |
| 762 | > | 558 | <span class="text_btn" @click=" |
| 763 | <span | ||
| 764 | class="text_btn" | ||
| 765 | @click=" | ||
| 766 | handleClick(scope, { label: '添加子菜单', value: 'menu' }) | 559 | handleClick(scope, { label: '添加子菜单', value: 'menu' }) |
| 767 | " | 560 | " v-preReClick>添加子菜单</span> |
| 768 | v-preReClick | ||
| 769 | >添加子菜单</span | ||
| 770 | > | ||
| 771 | </template> | 561 | </template> |
| 772 | </template> | 562 | </template> |
| 773 | </el-table-column> | 563 | </el-table-column> |
| 774 | <template #append> | 564 | <template #append> |
| 775 | <td :class="props.tableInfo.footerClass" v-if="props.tableInfo.footerHtml" :colspan="5" v-html="props.tableInfo.footerHtml"></td> | 565 | <td :class="props.tableInfo.footerClass" v-if="props.tableInfo.footerHtml" :colspan="5" |
| 566 | v-html="props.tableInfo.footerHtml"></td> | ||
| 776 | </template> | 567 | </template> |
| 777 | </el-table> | 568 | </el-table> |
| 778 | <PageNav | 569 | <PageNav v-if="showPage" :class="[pageInfo.type, pageInfo.col]" :pageInfo="pageInfo" @pageChange="pageChange" /> |
| 779 | v-if="showPage" | ||
| 780 | :class="[pageInfo.type, pageInfo.col]" | ||
| 781 | :pageInfo="pageInfo" | ||
| 782 | @pageChange="pageChange" | ||
| 783 | /> | ||
| 784 | </div> | 570 | </div> |
| 785 | </template> | 571 | </template> |
| 786 | 572 | ||
| ... | @@ -810,17 +596,18 @@ onMounted(() => { | ... | @@ -810,17 +596,18 @@ onMounted(() => { |
| 810 | } | 596 | } |
| 811 | } | 597 | } |
| 812 | } | 598 | } |
| 599 | |||
| 813 | .input_comb { | 600 | .input_comb { |
| 814 | > span:not(:last-child) { | 601 | >span:not(:last-child) { |
| 815 | margin-right: 12px; | 602 | margin-right: 12px; |
| 816 | 603 | ||
| 817 | > span { | 604 | >span { |
| 818 | margin-right: 4px; | 605 | margin-right: 4px; |
| 819 | } | 606 | } |
| 820 | } | 607 | } |
| 821 | 608 | ||
| 822 | > span:last-child { | 609 | >span:last-child { |
| 823 | > span { | 610 | >span { |
| 824 | margin-right: 4px; | 611 | margin-right: 4px; |
| 825 | } | 612 | } |
| 826 | } | 613 | } |
| ... | @@ -834,7 +621,7 @@ onMounted(() => { | ... | @@ -834,7 +621,7 @@ onMounted(() => { |
| 834 | padding-right: 4px; | 621 | padding-right: 4px; |
| 835 | position: relative; | 622 | position: relative; |
| 836 | 623 | ||
| 837 | & ~ .active { | 624 | &~.active { |
| 838 | padding-left: 4px; | 625 | padding-left: 4px; |
| 839 | margin-left: 1px; | 626 | margin-left: 1px; |
| 840 | 627 | ||
| ... | @@ -855,12 +642,13 @@ onMounted(() => { | ... | @@ -855,12 +642,13 @@ onMounted(() => { |
| 855 | } | 642 | } |
| 856 | } | 643 | } |
| 857 | } | 644 | } |
| 645 | |||
| 858 | .primary { | 646 | .primary { |
| 859 | 647 | ||
| 860 | .el-table__cell { | 648 | .el-table__cell { |
| 861 | background: none; | 649 | background: none; |
| 862 | } | 650 | } |
| 863 | } | 651 | } |
| 864 | } | 652 | } |
| 865 | 653 | ||
| 866 | .svg-title-icon { | 654 | .svg-title-icon { |
| ... | @@ -875,6 +663,7 @@ onMounted(() => { | ... | @@ -875,6 +663,7 @@ onMounted(() => { |
| 875 | &.icon-audit { | 663 | &.icon-audit { |
| 876 | color: #b2b2b2 | 664 | color: #b2b2b2 |
| 877 | } | 665 | } |
| 666 | |||
| 878 | svg { | 667 | svg { |
| 879 | width: 100%; | 668 | width: 100%; |
| 880 | height: 100%; | 669 | height: 100%; |
| ... | @@ -892,5 +681,4 @@ onMounted(() => { | ... | @@ -892,5 +681,4 @@ onMounted(() => { |
| 892 | justify-content: space-between; | 681 | justify-content: space-between; |
| 893 | padding: 0px 8px; | 682 | padding: 0px 8px; |
| 894 | } | 683 | } |
| 895 | |||
| 896 | </style> | 684 | </style> | ... | ... |
| ... | @@ -50,7 +50,7 @@ router.beforeEach(async (to, from, next) => { | ... | @@ -50,7 +50,7 @@ router.beforeEach(async (to, from, next) => { |
| 50 | }) | 50 | }) |
| 51 | } | 51 | } |
| 52 | // 如果未开启主页,但进入的是主页,则会进入侧边栏导航第一个模块 | 52 | // 如果未开启主页,但进入的是主页,则会进入侧边栏导航第一个模块 |
| 53 | else if (!settingsStore.settings.home.enable && to.name === 'home') { | 53 | else if (!settingsStore.settings.home.enable && (to.name === 'home' || to.name === undefined)) { |
| 54 | if (menuStore.sidebarMenus.length > 0) { | 54 | if (menuStore.sidebarMenus.length > 0) { |
| 55 | next({ | 55 | next({ |
| 56 | path: menuStore.sidebarMenusFirstDeepestPath, | 56 | path: menuStore.sidebarMenusFirstDeepestPath, | ... | ... |
| ... | @@ -34,7 +34,7 @@ const routes: RouteRecordRaw[] = [ | ... | @@ -34,7 +34,7 @@ const routes: RouteRecordRaw[] = [ |
| 34 | cache: true, | 34 | cache: true, |
| 35 | reuse: true, | 35 | reuse: true, |
| 36 | editPage: true, | 36 | editPage: true, |
| 37 | activeMenu: '/data-inventory/classify-grade-manage/template-config' | 37 | activeMenu: '/data-inventory/classify-grade-manage/task-config' |
| 38 | }, | 38 | }, |
| 39 | beforeEnter: (to, from) => { | 39 | beforeEnter: (to, from) => { |
| 40 | if (to.query.name) { | 40 | if (to.query.name) { |
| ... | @@ -45,6 +45,46 @@ const routes: RouteRecordRaw[] = [ | ... | @@ -45,6 +45,46 @@ const routes: RouteRecordRaw[] = [ |
| 45 | } | 45 | } |
| 46 | }, | 46 | }, |
| 47 | { | 47 | { |
| 48 | path: 'task-detail', | ||
| 49 | name: 'taskDetail', | ||
| 50 | component: () => import('@/views/data_inventory/taskDetail.vue'), | ||
| 51 | meta: { | ||
| 52 | title: '结果-', | ||
| 53 | sidebar: false, | ||
| 54 | breadcrumb: false, | ||
| 55 | cache: true, | ||
| 56 | reuse: true, | ||
| 57 | editPage: true, | ||
| 58 | activeMenu: '/data-inventory/classify-grade-manage/task-config' | ||
| 59 | }, | ||
| 60 | beforeEnter: (to, from) => { | ||
| 61 | if (to.query.type == 'confirm') { | ||
| 62 | to.meta.title = `${to.query.name}-结果确认`; | ||
| 63 | } else { | ||
| 64 | to.meta.title = `${to.query.name}-结果修改`; | ||
| 65 | } | ||
| 66 | } | ||
| 67 | }, | ||
| 68 | { | ||
| 69 | path: 'task-log', | ||
| 70 | name: 'taskLog', | ||
| 71 | component: () => import('@/views/data_inventory/taskLog.vue'), | ||
| 72 | meta: { | ||
| 73 | title: '分级分类日志', | ||
| 74 | sidebar: false, | ||
| 75 | breadcrumb: false, | ||
| 76 | cache: true, | ||
| 77 | reuse: true, | ||
| 78 | editPage: true, | ||
| 79 | activeMenu: '/data-inventory/classify-grade-manage/task-config' | ||
| 80 | }, | ||
| 81 | beforeEnter: (to, from) => { | ||
| 82 | // if (to.query.name) { | ||
| 83 | // to.meta.title = `编辑-${to.query.name}`; | ||
| 84 | // } | ||
| 85 | } | ||
| 86 | }, | ||
| 87 | { | ||
| 48 | path: 'template-config', | 88 | path: 'template-config', |
| 49 | name: 'templateConfig', | 89 | name: 'templateConfig', |
| 50 | component: () => import('@/views/data_inventory/templateConfig.vue'), | 90 | component: () => import('@/views/data_inventory/templateConfig.vue'), | ... | ... |
| ... | @@ -4,7 +4,7 @@ import router from '@/router' | ... | @@ -4,7 +4,7 @@ import router from '@/router' |
| 4 | import { ElMessage } from 'element-plus' | 4 | import { ElMessage } from 'element-plus' |
| 5 | import apiUser from '@/api/modules/user' | 5 | import apiUser from '@/api/modules/user' |
| 6 | import { getCurrentTime } from '@/utils/common' | 6 | import { getCurrentTime } from '@/utils/common' |
| 7 | import { getUserInfo, getTokenByCode, loginOut, refreshToken, editPasswordInterface } from '@/api/modules/queryService' | 7 | import { getSystemMenu, getUserInfo, getTokenByCode, loginOut, refreshToken, editPasswordInterface } from '@/api/modules/queryService' |
| 8 | 8 | ||
| 9 | const useUserStore = defineStore( | 9 | const useUserStore = defineStore( |
| 10 | // 唯一ID | 10 | // 唯一ID |
| ... | @@ -17,6 +17,7 @@ const useUserStore = defineStore( | ... | @@ -17,6 +17,7 @@ const useUserStore = defineStore( |
| 17 | const userId = ref(localStorage.userId ?? '') | 17 | const userId = ref(localStorage.userId ?? '') |
| 18 | const userName = ref(localStorage.userName ?? '') | 18 | const userName = ref(localStorage.userName ?? '') |
| 19 | const userData = ref(localStorage.userData ?? '{}') | 19 | const userData = ref(localStorage.userData ?? '{}') |
| 20 | const currentTenantGuid = ref(localStorage.currentTenantGuid ?? ''); | ||
| 20 | const userInfoData = ref(JSON.parse(localStorage.userInfoData ?? "[]")) | 21 | const userInfoData = ref(JSON.parse(localStorage.userInfoData ?? "[]")) |
| 21 | const token = ref(localStorage.token ?? '') | 22 | const token = ref(localStorage.token ?? '') |
| 22 | const tabbarMap: any = ref({}) | 23 | const tabbarMap: any = ref({}) |
| ... | @@ -30,10 +31,14 @@ const useUserStore = defineStore( | ... | @@ -30,10 +31,14 @@ const useUserStore = defineStore( |
| 30 | const timer: any = ref(null); | 31 | const timer: any = ref(null); |
| 31 | //获取token. | 32 | //获取token. |
| 32 | function getToken(data, state) { | 33 | function getToken(data, state) { |
| 33 | data.platformGuid = "6646dcad76c411eea911fa163e419da9"; | 34 | data.platformGuid = "7f16f697aec111ef8656fa163e60becd"; |
| 34 | data.userType = 2; | 35 | data.userType = 2; |
| 35 | isLogin.value = true; | 36 | data.validateUri = location.origin + '/'; |
| 37 | debugger | ||
| 38 | debugger | ||
| 36 | return getTokenPromise.value = getTokenByCode(data).then((res: any) => { | 39 | return getTokenPromise.value = getTokenByCode(data).then((res: any) => { |
| 40 | debugger | ||
| 41 | debugger | ||
| 37 | getTokenPromise.value = null; | 42 | getTokenPromise.value = null; |
| 38 | console.log(res); | 43 | console.log(res); |
| 39 | if (res.code == '00000') { | 44 | if (res.code == '00000') { |
| ... | @@ -41,25 +46,24 @@ const useUserStore = defineStore( | ... | @@ -41,25 +46,24 @@ const useUserStore = defineStore( |
| 41 | isLogin.value = true; | 46 | isLogin.value = true; |
| 42 | localStorage.setItem('code', `${data.code}`); | 47 | localStorage.setItem('code', `${data.code}`); |
| 43 | localStorage.setItem('state', state); | 48 | localStorage.setItem('state', state); |
| 44 | localStorage.setItem('token', res.data.access_token || ""); | 49 | localStorage.setItem('token', res.data.token || ""); |
| 45 | token.value = res.data.access_token; | 50 | token.value = res.data.access_token; |
| 46 | localStorage.setItem('refresh_token', res.data.refresh_token || ""); | 51 | localStorage.setItem('refresh_token', res.data.refreshToken || ""); |
| 47 | const expiresIn = (Date.now() + 1700000) + ""; | 52 | const expiresIn = (Date.now() + 1700000) + ""; |
| 48 | localStorage.setItem('expiresIn', expiresIn); | 53 | localStorage.setItem('expiresIn', expiresIn); |
| 49 | refreshUserToken(); | 54 | refreshUserToken(); |
| 50 | //获取用户信息 | 55 | //获取用户信息 |
| 51 | localStorage.setItem('account', res.data.logonUser) | ||
| 52 | localStorage.setItem('userId', res.data.userId) | ||
| 53 | localStorage.setItem('userName', res.data.userName) | ||
| 54 | localStorage.setItem('userData', JSON.stringify(res.data.data)) | ||
| 55 | account.value = res.data.logonUser | 56 | account.value = res.data.logonUser |
| 56 | userId.value = res.data.userId | 57 | userId.value = res.data.userId |
| 57 | userName.value = res.data.userName | 58 | userName.value = res.data.userName |
| 58 | userData.value = JSON.stringify(res.data.data) | 59 | // userData.value = JSON.stringify(res.data.data); |
| 59 | return getUserInfo().then((info: any) => { | 60 | currentTenantGuid.value = res.data.tenantInfoList && res.data.tenantInfoList.length ? res.data.tenantInfoList[0].guid : ''; |
| 61 | let currentTenant = res.data.tenantInfoList?.[0]; | ||
| 62 | return getSystemMenu({ tenantGuid: currentTenantGuid.value }).then((info: any) => { | ||
| 60 | if (info.code == '00000') { | 63 | if (info.code == '00000') { |
| 61 | localStorage.setItem('userInfoData', JSON.stringify(info.data)) | 64 | localStorage.setItem('userName', currentTenant?.name) |
| 62 | userInfoData.value = info.data | 65 | localStorage.setItem('userInfoData', JSON.stringify(info.data)); |
| 66 | userInfoData.value = info.data; | ||
| 63 | } else { | 67 | } else { |
| 64 | ElMessage.error(info.msg) | 68 | ElMessage.error(info.msg) |
| 65 | } | 69 | } | ... | ... |
| ... | @@ -19,6 +19,319 @@ const router = useRouter(); | ... | @@ -19,6 +19,319 @@ const router = useRouter(); |
| 19 | const userStore = useUserStore(); | 19 | const userStore = useUserStore(); |
| 20 | const userData = JSON.parse(userStore.userData); | 20 | const userData = JSON.parse(userStore.userData); |
| 21 | const assetStore = useDataAssetStore(); | 21 | const assetStore = useDataAssetStore(); |
| 22 | const datas = [ | ||
| 23 | { | ||
| 24 | "updateTime": "2024-07-16 13:17:00", | ||
| 25 | "updateUserName": "数往知来管理员", | ||
| 26 | "guid": "4e0e76c48fa043d5b35d09f3ccc7c265", | ||
| 27 | "approvalGuid": null, | ||
| 28 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 29 | "fieldStandardCode": "COL202406070021", | ||
| 30 | "dataVersion": 1, | ||
| 31 | "chName": "地址", | ||
| 32 | "enName": "address", | ||
| 33 | "dataTypeValue": "字符型", | ||
| 34 | "dataTypeCode": "varchar", | ||
| 35 | "dataDicGuid": "", | ||
| 36 | "dataDicName": null, | ||
| 37 | "isDataDic": "N", | ||
| 38 | "fieldLength": 600, | ||
| 39 | "fieldPrecision": null, | ||
| 40 | "dataState": 0, | ||
| 41 | "approveState": "N", | ||
| 42 | "dataCategory": "合伙人", | ||
| 43 | "dataEncryptionLevel": "界面加密", | ||
| 44 | "businessDefDesc": "地址", | ||
| 45 | "flowFlag": null, | ||
| 46 | "flowCode": null, | ||
| 47 | "functionCode": null, | ||
| 48 | "createStaffGuid": null, | ||
| 49 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 50 | "displayVersion": "V1", | ||
| 51 | "standardSetName": null, | ||
| 52 | "ruleType": null | ||
| 53 | }, | ||
| 54 | { | ||
| 55 | "updateTime": "2024-01-27 10:19:45", | ||
| 56 | "updateUserName": "数往知来管理员", | ||
| 57 | "guid": "bc630207357c466dbff7613ea38985cc", | ||
| 58 | "approvalGuid": null, | ||
| 59 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 60 | "fieldStandardCode": "COL202401260124", | ||
| 61 | "dataVersion": 1, | ||
| 62 | "chName": "包含最小销售包装单元数量", | ||
| 63 | "enName": "inboxQuantity", | ||
| 64 | "dataTypeValue": "整型", | ||
| 65 | "dataTypeCode": "int", | ||
| 66 | "dataDicGuid": null, | ||
| 67 | "dataDicName": null, | ||
| 68 | "isDataDic": null, | ||
| 69 | "fieldLength": null, | ||
| 70 | "fieldPrecision": null, | ||
| 71 | "dataState": 1, | ||
| 72 | "approveState": "A", | ||
| 73 | "dataCategory": null, | ||
| 74 | "dataEncryptionLevel": "明文显示", | ||
| 75 | "businessDefDesc": "当前药品追溯码中包含的最小销售包装单元药品追溯码的数量,发货类型为03时可选", | ||
| 76 | "flowFlag": null, | ||
| 77 | "flowCode": null, | ||
| 78 | "functionCode": null, | ||
| 79 | "createStaffGuid": null, | ||
| 80 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 81 | "displayVersion": "V1", | ||
| 82 | "standardSetName": null, | ||
| 83 | "ruleType": null | ||
| 84 | }, | ||
| 85 | { | ||
| 86 | "updateTime": "2024-01-27 11:03:59", | ||
| 87 | "updateUserName": "审批人4", | ||
| 88 | "guid": "420f2a68bd4441bf92010eadf698b685", | ||
| 89 | "approvalGuid": null, | ||
| 90 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 91 | "fieldStandardCode": "COL202401260122", | ||
| 92 | "dataVersion": 1, | ||
| 93 | "chName": "包装层级", | ||
| 94 | "enName": "packageLevel", | ||
| 95 | "dataTypeValue": "字符型", | ||
| 96 | "dataTypeCode": "varchar", | ||
| 97 | "dataDicGuid": null, | ||
| 98 | "dataDicName": null, | ||
| 99 | "isDataDic": null, | ||
| 100 | "fieldLength": 200, | ||
| 101 | "fieldPrecision": null, | ||
| 102 | "dataState": 1, | ||
| 103 | "approveState": "A", | ||
| 104 | "dataCategory": null, | ||
| 105 | "dataEncryptionLevel": "明文显示", | ||
| 106 | "businessDefDesc": "当前药品追溯码所处包装层级描述,发货类型为03时可选", | ||
| 107 | "flowFlag": null, | ||
| 108 | "flowCode": null, | ||
| 109 | "functionCode": null, | ||
| 110 | "createStaffGuid": null, | ||
| 111 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 112 | "displayVersion": "V1", | ||
| 113 | "standardSetName": null, | ||
| 114 | "ruleType": null | ||
| 115 | }, | ||
| 116 | { | ||
| 117 | "updateTime": "2024-06-06 10:01:06", | ||
| 118 | "updateUserName": "审批人1", | ||
| 119 | "guid": "f841e1848ab94b1e81a0217a09a7a3d3", | ||
| 120 | "approvalGuid": "b674bffe8d2f4132918016b6baaf75aa", | ||
| 121 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 122 | "fieldStandardCode": "COL202401260120", | ||
| 123 | "dataVersion": 1, | ||
| 124 | "chName": "上一级包装药品追溯码", | ||
| 125 | "enName": "parentDTC", | ||
| 126 | "dataTypeValue": "字符型", | ||
| 127 | "dataTypeCode": "varchar", | ||
| 128 | "dataDicGuid": "", | ||
| 129 | "dataDicName": null, | ||
| 130 | "isDataDic": "N", | ||
| 131 | "fieldLength": 200, | ||
| 132 | "fieldPrecision": null, | ||
| 133 | "dataState": 1, | ||
| 134 | "approveState": "Y", | ||
| 135 | "dataCategory": "", | ||
| 136 | "dataEncryptionLevel": "明文显示", | ||
| 137 | "businessDefDesc": "当前药品追溯码大一级包装上的药品追溯码,发货类型为03时可选;当存在上一级包装时必选", | ||
| 138 | "flowFlag": null, | ||
| 139 | "flowCode": null, | ||
| 140 | "functionCode": null, | ||
| 141 | "createStaffGuid": null, | ||
| 142 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 143 | "displayVersion": "V1", | ||
| 144 | "standardSetName": null, | ||
| 145 | "ruleType": null | ||
| 146 | }, | ||
| 147 | { | ||
| 148 | "updateTime": "2024-01-26 00:10:47", | ||
| 149 | "updateUserName": "数往知来管理员", | ||
| 150 | "guid": "d4d42dea2a5844b4a7f9238806ea507b", | ||
| 151 | "approvalGuid": null, | ||
| 152 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 153 | "fieldStandardCode": "COL202401260118", | ||
| 154 | "dataVersion": 1, | ||
| 155 | "chName": "药品追溯码", | ||
| 156 | "enName": "DTC", | ||
| 157 | "dataTypeValue": "字符型", | ||
| 158 | "dataTypeCode": "varchar", | ||
| 159 | "dataDicGuid": null, | ||
| 160 | "dataDicName": null, | ||
| 161 | "isDataDic": null, | ||
| 162 | "fieldLength": 200, | ||
| 163 | "fieldPrecision": null, | ||
| 164 | "dataState": 0, | ||
| 165 | "approveState": "N", | ||
| 166 | "dataCategory": null, | ||
| 167 | "dataEncryptionLevel": "明文显示", | ||
| 168 | "businessDefDesc": "用于唯一标识药品各级销售包装单元的代码,发货类型为03时可选", | ||
| 169 | "flowFlag": null, | ||
| 170 | "flowCode": null, | ||
| 171 | "functionCode": null, | ||
| 172 | "createStaffGuid": null, | ||
| 173 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 174 | "displayVersion": "V1", | ||
| 175 | "standardSetName": null, | ||
| 176 | "ruleType": null | ||
| 177 | }, | ||
| 178 | { | ||
| 179 | "updateTime": "2024-01-26 00:10:47", | ||
| 180 | "updateUserName": "数往知来管理员", | ||
| 181 | "guid": "ff9d0e4f6fbb444c8dcf6f67bffcb659", | ||
| 182 | "approvalGuid": null, | ||
| 183 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 184 | "fieldStandardCode": "COL202401260116", | ||
| 185 | "dataVersion": 1, | ||
| 186 | "chName": "发货数量", | ||
| 187 | "enName": "deliveryQuantity", | ||
| 188 | "dataTypeValue": "整型", | ||
| 189 | "dataTypeCode": "int", | ||
| 190 | "dataDicGuid": null, | ||
| 191 | "dataDicName": null, | ||
| 192 | "isDataDic": null, | ||
| 193 | "fieldLength": null, | ||
| 194 | "fieldPrecision": null, | ||
| 195 | "dataState": 0, | ||
| 196 | "approveState": "N", | ||
| 197 | "dataCategory": null, | ||
| 198 | "dataEncryptionLevel": "明文显示", | ||
| 199 | "businessDefDesc": "发货的最小销售包装单元数量", | ||
| 200 | "flowFlag": null, | ||
| 201 | "flowCode": null, | ||
| 202 | "functionCode": null, | ||
| 203 | "createStaffGuid": null, | ||
| 204 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 205 | "displayVersion": "V1", | ||
| 206 | "standardSetName": null, | ||
| 207 | "ruleType": null | ||
| 208 | }, | ||
| 209 | { | ||
| 210 | "updateTime": "2024-01-26 00:10:46", | ||
| 211 | "updateUserName": "数往知来管理员", | ||
| 212 | "guid": "fe88ac9e8d9c4f148833dbb3976fca77", | ||
| 213 | "approvalGuid": null, | ||
| 214 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 215 | "fieldStandardCode": "COL202401260114", | ||
| 216 | "dataVersion": 1, | ||
| 217 | "chName": "药品生产批号", | ||
| 218 | "enName": "batch", | ||
| 219 | "dataTypeValue": "字符型", | ||
| 220 | "dataTypeCode": "varchar", | ||
| 221 | "dataDicGuid": null, | ||
| 222 | "dataDicName": null, | ||
| 223 | "isDataDic": null, | ||
| 224 | "fieldLength": 20, | ||
| 225 | "fieldPrecision": null, | ||
| 226 | "dataState": 0, | ||
| 227 | "approveState": "N", | ||
| 228 | "dataCategory": null, | ||
| 229 | "dataEncryptionLevel": "明文显示", | ||
| 230 | "businessDefDesc": "药品包装上标示的生产批号", | ||
| 231 | "flowFlag": null, | ||
| 232 | "flowCode": null, | ||
| 233 | "functionCode": null, | ||
| 234 | "createStaffGuid": null, | ||
| 235 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 236 | "displayVersion": "V1", | ||
| 237 | "standardSetName": null, | ||
| 238 | "ruleType": null | ||
| 239 | }, | ||
| 240 | { | ||
| 241 | "updateTime": "2024-01-26 00:10:45", | ||
| 242 | "updateUserName": "数往知来管理员", | ||
| 243 | "guid": "9759837e0d72472ab7441c1873c9159a", | ||
| 244 | "approvalGuid": null, | ||
| 245 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 246 | "fieldStandardCode": "COL202401260112", | ||
| 247 | "dataVersion": 1, | ||
| 248 | "chName": "药品有效期截止日期", | ||
| 249 | "enName": "expirationDate", | ||
| 250 | "dataTypeValue": "日期型", | ||
| 251 | "dataTypeCode": "date", | ||
| 252 | "dataDicGuid": null, | ||
| 253 | "dataDicName": null, | ||
| 254 | "isDataDic": null, | ||
| 255 | "fieldLength": null, | ||
| 256 | "fieldPrecision": null, | ||
| 257 | "dataState": 0, | ||
| 258 | "approveState": "N", | ||
| 259 | "dataCategory": null, | ||
| 260 | "dataEncryptionLevel": "明文显示", | ||
| 261 | "businessDefDesc": "药品有效期的截止日期", | ||
| 262 | "flowFlag": null, | ||
| 263 | "flowCode": null, | ||
| 264 | "functionCode": null, | ||
| 265 | "createStaffGuid": null, | ||
| 266 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 267 | "displayVersion": "V1", | ||
| 268 | "standardSetName": null, | ||
| 269 | "ruleType": null | ||
| 270 | }, | ||
| 271 | { | ||
| 272 | "updateTime": "2024-01-26 00:10:45", | ||
| 273 | "updateUserName": "数往知来管理员", | ||
| 274 | "guid": "a39ed6123c6a420d9d1265315e714f86", | ||
| 275 | "approvalGuid": null, | ||
| 276 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 277 | "fieldStandardCode": "COL202401260110", | ||
| 278 | "dataVersion": 1, | ||
| 279 | "chName": "药品生产日期", | ||
| 280 | "enName": "productionDate", | ||
| 281 | "dataTypeValue": "日期型", | ||
| 282 | "dataTypeCode": "date", | ||
| 283 | "dataDicGuid": null, | ||
| 284 | "dataDicName": null, | ||
| 285 | "isDataDic": null, | ||
| 286 | "fieldLength": null, | ||
| 287 | "fieldPrecision": null, | ||
| 288 | "dataState": 0, | ||
| 289 | "approveState": "N", | ||
| 290 | "dataCategory": null, | ||
| 291 | "dataEncryptionLevel": "明文显示", | ||
| 292 | "businessDefDesc": "药品包装上标示的生产日期", | ||
| 293 | "flowFlag": null, | ||
| 294 | "flowCode": null, | ||
| 295 | "functionCode": null, | ||
| 296 | "createStaffGuid": null, | ||
| 297 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 298 | "displayVersion": "V1", | ||
| 299 | "standardSetName": null, | ||
| 300 | "ruleType": null | ||
| 301 | }, | ||
| 302 | { | ||
| 303 | "updateTime": "2024-01-26 00:10:45", | ||
| 304 | "updateUserName": "数往知来管理员", | ||
| 305 | "guid": "ea597c1b8bb24a5ab053a80b084de98c", | ||
| 306 | "approvalGuid": null, | ||
| 307 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 308 | "fieldStandardCode": "COL202401260108", | ||
| 309 | "dataVersion": 1, | ||
| 310 | "chName": "统一社会信用代码(进口药品代理企业)", | ||
| 311 | "enName": "drugImporterUSCID", | ||
| 312 | "dataTypeValue": "字符型", | ||
| 313 | "dataTypeCode": "varchar", | ||
| 314 | "dataDicGuid": null, | ||
| 315 | "dataDicName": null, | ||
| 316 | "isDataDic": null, | ||
| 317 | "fieldLength": 18, | ||
| 318 | "fieldPrecision": null, | ||
| 319 | "dataState": 0, | ||
| 320 | "approveState": "N", | ||
| 321 | "dataCategory": null, | ||
| 322 | "dataEncryptionLevel": "明文显示", | ||
| 323 | "businessDefDesc": "进口药品代理企业的统一社会信用代码,进口药品必选;没有统一社会信用代码时使用组织机构代码", | ||
| 324 | "flowFlag": null, | ||
| 325 | "flowCode": null, | ||
| 326 | "functionCode": null, | ||
| 327 | "createStaffGuid": null, | ||
| 328 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 329 | "displayVersion": "V1", | ||
| 330 | "standardSetName": null, | ||
| 331 | "ruleType": null | ||
| 332 | } | ||
| 333 | ] | ||
| 334 | |||
| 22 | const page = ref({ | 335 | const page = ref({ |
| 23 | limit: 50, | 336 | limit: 50, |
| 24 | curr: 1, | 337 | curr: 1, |
| ... | @@ -36,24 +349,26 @@ const tableInfo = ref({ | ... | @@ -36,24 +349,26 @@ const tableInfo = ref({ |
| 36 | id: "mapping-table", | 349 | id: "mapping-table", |
| 37 | fields: [ | 350 | fields: [ |
| 38 | { label: "序号", type: "index", width: 56, align: "center", fixed: "left" }, | 351 | { label: "序号", type: "index", width: 56, align: "center", fixed: "left" }, |
| 39 | { label: "任务名称", field: "damCode", width: 96 }, | 352 | { label: "任务名称", field: "taskName", width: 96 }, |
| 40 | { label: "目录名称", field: "damName", width: 120 }, | ||
| 41 | { label: "分类分级模板", field: "damTypeName", width: 200 }, | ||
| 42 | { label: "元数据", field: "damTypeName", width: 200 }, | ||
| 43 | // { | ||
| 44 | // label: "是否公共数据", field: "isPublicData", width: 120, getName: (scope) => { | ||
| 45 | // return scope.row.isPublicData == 'Y' ? '是' : '否'; | ||
| 46 | // } | ||
| 47 | // }, | ||
| 48 | { | 353 | { |
| 49 | label: "执行状态", field: "approveState", width: TableColumnWidth.STATE, align: 'center', type: "tag", getName: (scope) => { | 354 | label: "目录名称", field: "cgDirName", width: 120, type: "text_btn", columClass: 'text_btn', click: (scope) => { |
| 50 | return filterVal(scope.row.approveState, 'approveState'); | 355 | router.push({ |
| 356 | name: "templateConfig", | ||
| 357 | query: { guid: scope.row.damGuid }, | ||
| 358 | }); | ||
| 51 | } | 359 | } |
| 52 | }, | 360 | }, |
| 53 | { label: "任务修改人", field: "damName", width: 120 }, | 361 | { label: "分类分级模板", field: "cgTemplateName", width: 200 }, |
| 362 | { label: "元数据", field: "metaNames", width: 200 }, | ||
| 363 | { | ||
| 364 | label: "执行状态", field: "status", width: TableColumnWidth.STATE, align: 'center', type: "tag", getName: (scope) => { | ||
| 365 | return filterVal(scope.row.status, 'status'); | ||
| 366 | } | ||
| 367 | }, | ||
| 368 | { label: "任务修改人", field: "dataCategory", width: 120 }, | ||
| 54 | { label: "修改时间", field: "updateTime", width: TableColumnWidth.DATETIME }, | 369 | { label: "修改时间", field: "updateTime", width: TableColumnWidth.DATETIME }, |
| 55 | { label: "确认次数", field: "damName", width: 96, align: 'right' }, | 370 | { label: "确认次数", field: "fieldLength", width: 96, align: 'right' }, |
| 56 | { label: "结果确认人", field: "damName", width: 120 }, | 371 | { label: "结果确认人", field: "updateUserName", width: 120 }, |
| 57 | { label: "确认时间", field: "updateTime", width: TableColumnWidth.DATETIME }, | 372 | { label: "确认时间", field: "updateTime", width: TableColumnWidth.DATETIME }, |
| 58 | { | 373 | { |
| 59 | label: "结果状态", field: "approveState", width: TableColumnWidth.STATE, align: 'center', type: "tag", getName: (scope) => { | 374 | label: "结果状态", field: "approveState", width: TableColumnWidth.STATE, align: 'center', type: "tag", getName: (scope) => { |
| ... | @@ -62,7 +377,7 @@ const tableInfo = ref({ | ... | @@ -62,7 +377,7 @@ const tableInfo = ref({ |
| 62 | }, | 377 | }, |
| 63 | ], | 378 | ], |
| 64 | loading: false, | 379 | loading: false, |
| 65 | data: [], | 380 | data: datas || [], |
| 66 | page: { | 381 | page: { |
| 67 | type: "normal", | 382 | type: "normal", |
| 68 | rows: 0, | 383 | rows: 0, |
| ... | @@ -71,22 +386,28 @@ const tableInfo = ref({ | ... | @@ -71,22 +386,28 @@ const tableInfo = ref({ |
| 71 | actionInfo: { | 386 | actionInfo: { |
| 72 | label: "操作", | 387 | label: "操作", |
| 73 | type: "btn", | 388 | type: "btn", |
| 74 | width: 200, | 389 | width: 280, |
| 75 | btns: (scope) => { | 390 | btns: (scope) => { |
| 76 | let row = scope.row, btnArr: any = []; | 391 | let row = scope.row, btnArr: any = [ |
| 77 | if (row.approveState == 'Y') { | 392 | { label: "结果确认", value: "confirm" }, |
| 78 | if (row.listingStatus == 'Y') { | 393 | { label: "结果修改", value: "modify" }, |
| 79 | btnArr.splice(0, 0, { label: "详情", value: "detail" }); | 394 | { label: "编辑", value: "edit" }, |
| 80 | } else { | 395 | { label: "日志", value: "log" }, |
| 81 | btnArr.splice(0, 0, { label: "编辑", value: "edit" }, { label: "详情", value: "detail" }, { label: "删除", value: "delete" }); | 396 | { label: "删除", value: "delete" } |
| 82 | } | 397 | ]; |
| 83 | } else { | 398 | // if (row.approveState == 'Y') { |
| 84 | if (row.approveState == 'A') { | 399 | // if (row.listingStatus == 'Y') { |
| 85 | btnArr.splice(0, 0, { label: "详情", value: "detail" }); | 400 | // btnArr.splice(0, 0, { label: "详情", value: "detail" }); |
| 86 | } else { | 401 | // } else { |
| 87 | btnArr.splice(0, 0, { label: "编辑", value: "edit" }, { label: "详情", value: "detail" }, { label: "删除", value: "delete" }); | 402 | // btnArr.splice(0, 0, { label: "编辑", value: "edit" }, { label: "详情", value: "detail" }, { label: "删除", value: "delete" }); |
| 88 | } | 403 | // } |
| 89 | } | 404 | // } else { |
| 405 | // if (row.approveState == 'A') { | ||
| 406 | // btnArr.splice(0, 0, { label: "详情", value: "detail" }); | ||
| 407 | // } else { | ||
| 408 | // btnArr.splice(0, 0, { label: "编辑", value: "edit" }, { label: "详情", value: "detail" }, { label: "删除", value: "delete" }); | ||
| 409 | // } | ||
| 410 | // } | ||
| 90 | return btnArr; | 411 | return btnArr; |
| 91 | }, | 412 | }, |
| 92 | }, | 413 | }, |
| ... | @@ -115,7 +436,7 @@ const tableBtnClick = (scope, btn) => { | ... | @@ -115,7 +436,7 @@ const tableBtnClick = (scope, btn) => { |
| 115 | const type = btn.value; | 436 | const type = btn.value; |
| 116 | const row = scope.row; | 437 | const row = scope.row; |
| 117 | currTableData.value = row; | 438 | currTableData.value = row; |
| 118 | if (type == "detail" || type === "edit") { | 439 | if(type == 'confirm' || type == 'modify' || type == 'edit' || type == "log"){ |
| 119 | toPath(type); | 440 | toPath(type); |
| 120 | } else if (type === "delete") { | 441 | } else if (type === "delete") { |
| 121 | open("此操作将永久删除,是否继续?", "warning"); | 442 | open("此操作将永久删除,是否继续?", "warning"); |
| ... | @@ -130,7 +451,7 @@ const toPath = (type) => { | ... | @@ -130,7 +451,7 @@ const toPath = (type) => { |
| 130 | type | 451 | type |
| 131 | }, | 452 | }, |
| 132 | }); | 453 | }); |
| 133 | } else { | 454 | } else if(type == 'edit'){ |
| 134 | router.push({ | 455 | router.push({ |
| 135 | name: "taskEdit", | 456 | name: "taskEdit", |
| 136 | query: { | 457 | query: { |
| ... | @@ -139,6 +460,24 @@ const toPath = (type) => { | ... | @@ -139,6 +460,24 @@ const toPath = (type) => { |
| 139 | type | 460 | type |
| 140 | }, | 461 | }, |
| 141 | }); | 462 | }); |
| 463 | } else if(type == 'confirm' || type == 'modify'){ | ||
| 464 | router.push({ | ||
| 465 | name: "taskDetail", | ||
| 466 | query: { | ||
| 467 | guid: currTableData.value.guid, | ||
| 468 | name: currTableData.value.damName, | ||
| 469 | type | ||
| 470 | }, | ||
| 471 | }); | ||
| 472 | } else { | ||
| 473 | router.push({ | ||
| 474 | name: "taskLog", | ||
| 475 | query: { | ||
| 476 | guid: currTableData.value.guid, | ||
| 477 | name: currTableData.value.damName, | ||
| 478 | type | ||
| 479 | }, | ||
| 480 | }); | ||
| 142 | } | 481 | } |
| 143 | } | 482 | } |
| 144 | 483 | ... | ... |
src/views/data_inventory/taskDetail.vue
0 → 100644
| 1 | <route lang="yaml"> | ||
| 2 | name: taskDetail //分类分级任务结果 | ||
| 3 | </route> | ||
| 4 | |||
| 5 | <script lang="ts" setup name="taskDetail"> | ||
| 6 | import { ref, onMounted } from "vue"; | ||
| 7 | import { useRouter, useRoute } from "vue-router"; | ||
| 8 | import useUserStore from "@/store/modules/user"; | ||
| 9 | import { ElMessage, ElMessageBox } from "element-plus"; | ||
| 10 | import { Search, Warning } from "@element-plus/icons-vue"; | ||
| 11 | import { setItemsDisabled, tagMethod, tagType, changeNum, } from "@/utils/common"; | ||
| 12 | import useDataAssetStore from "@/store/modules/dataAsset"; | ||
| 13 | import TableTools from '@/components/Tools/table_tools.vue'; | ||
| 14 | import Table from "@/components/Table/index.vue"; | ||
| 15 | import { getListingList, listingDelete, listingUpdateStatus, filterVal, getParamsDataList } from "@/api/modules/dataProduct"; | ||
| 16 | |||
| 17 | const { proxy } = getCurrentInstance() as any; | ||
| 18 | const router = useRouter(); | ||
| 19 | const userStore = useUserStore(); | ||
| 20 | const userData = JSON.parse(userStore.userData); | ||
| 21 | const assetStore = useDataAssetStore(); | ||
| 22 | const datas = [ | ||
| 23 | { | ||
| 24 | "updateTime": "2024-07-16 13:17:00", | ||
| 25 | "updateUserName": "数往知来管理员", | ||
| 26 | "guid": "4e0e76c48fa043d5b35d09f3ccc7c265", | ||
| 27 | "approvalGuid": null, | ||
| 28 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 29 | "fieldStandardCode": "COL202406070021", | ||
| 30 | "dataVersion": 1, | ||
| 31 | "chName": "地址", | ||
| 32 | "enName": "address", | ||
| 33 | "dataTypeValue": "字符型", | ||
| 34 | "dataTypeCode": "varchar", | ||
| 35 | "dataDicGuid": "", | ||
| 36 | "dataDicName": null, | ||
| 37 | "isDataDic": "N", | ||
| 38 | "fieldLength": 600, | ||
| 39 | "fieldPrecision": null, | ||
| 40 | "dataState": 0, | ||
| 41 | "approveState": "N", | ||
| 42 | "dataCategory": "合伙人", | ||
| 43 | "dataEncryptionLevel": "界面加密", | ||
| 44 | "businessDefDesc": "地址", | ||
| 45 | "flowFlag": null, | ||
| 46 | "flowCode": null, | ||
| 47 | "functionCode": null, | ||
| 48 | "createStaffGuid": null, | ||
| 49 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 50 | "displayVersion": "V1", | ||
| 51 | "standardSetName": null, | ||
| 52 | "ruleType": null | ||
| 53 | }, | ||
| 54 | { | ||
| 55 | "updateTime": "2024-01-27 10:19:45", | ||
| 56 | "updateUserName": "数往知来管理员", | ||
| 57 | "guid": "bc630207357c466dbff7613ea38985cc", | ||
| 58 | "approvalGuid": null, | ||
| 59 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 60 | "fieldStandardCode": "COL202401260124", | ||
| 61 | "dataVersion": 1, | ||
| 62 | "chName": "包含最小销售包装单元数量", | ||
| 63 | "enName": "inboxQuantity", | ||
| 64 | "dataTypeValue": "整型", | ||
| 65 | "dataTypeCode": "int", | ||
| 66 | "dataDicGuid": null, | ||
| 67 | "dataDicName": null, | ||
| 68 | "isDataDic": null, | ||
| 69 | "fieldLength": null, | ||
| 70 | "fieldPrecision": null, | ||
| 71 | "dataState": 1, | ||
| 72 | "approveState": "A", | ||
| 73 | "dataCategory": null, | ||
| 74 | "dataEncryptionLevel": "明文显示", | ||
| 75 | "businessDefDesc": "当前药品追溯码中包含的最小销售包装单元药品追溯码的数量,发货类型为03时可选", | ||
| 76 | "flowFlag": null, | ||
| 77 | "flowCode": null, | ||
| 78 | "functionCode": null, | ||
| 79 | "createStaffGuid": null, | ||
| 80 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 81 | "displayVersion": "V1", | ||
| 82 | "standardSetName": null, | ||
| 83 | "ruleType": null | ||
| 84 | }, | ||
| 85 | { | ||
| 86 | "updateTime": "2024-01-27 11:03:59", | ||
| 87 | "updateUserName": "审批人4", | ||
| 88 | "guid": "420f2a68bd4441bf92010eadf698b685", | ||
| 89 | "approvalGuid": null, | ||
| 90 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 91 | "fieldStandardCode": "COL202401260122", | ||
| 92 | "dataVersion": 1, | ||
| 93 | "chName": "包装层级", | ||
| 94 | "enName": "packageLevel", | ||
| 95 | "dataTypeValue": "字符型", | ||
| 96 | "dataTypeCode": "varchar", | ||
| 97 | "dataDicGuid": null, | ||
| 98 | "dataDicName": null, | ||
| 99 | "isDataDic": null, | ||
| 100 | "fieldLength": 200, | ||
| 101 | "fieldPrecision": null, | ||
| 102 | "dataState": 1, | ||
| 103 | "approveState": "A", | ||
| 104 | "dataCategory": null, | ||
| 105 | "dataEncryptionLevel": "明文显示", | ||
| 106 | "businessDefDesc": "当前药品追溯码所处包装层级描述,发货类型为03时可选", | ||
| 107 | "flowFlag": null, | ||
| 108 | "flowCode": null, | ||
| 109 | "functionCode": null, | ||
| 110 | "createStaffGuid": null, | ||
| 111 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 112 | "displayVersion": "V1", | ||
| 113 | "standardSetName": null, | ||
| 114 | "ruleType": null | ||
| 115 | }, | ||
| 116 | { | ||
| 117 | "updateTime": "2024-06-06 10:01:06", | ||
| 118 | "updateUserName": "审批人1", | ||
| 119 | "guid": "f841e1848ab94b1e81a0217a09a7a3d3", | ||
| 120 | "approvalGuid": "b674bffe8d2f4132918016b6baaf75aa", | ||
| 121 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 122 | "fieldStandardCode": "COL202401260120", | ||
| 123 | "dataVersion": 1, | ||
| 124 | "chName": "上一级包装药品追溯码", | ||
| 125 | "enName": "parentDTC", | ||
| 126 | "dataTypeValue": "字符型", | ||
| 127 | "dataTypeCode": "varchar", | ||
| 128 | "dataDicGuid": "", | ||
| 129 | "dataDicName": null, | ||
| 130 | "isDataDic": "N", | ||
| 131 | "fieldLength": 200, | ||
| 132 | "fieldPrecision": null, | ||
| 133 | "dataState": 1, | ||
| 134 | "approveState": "Y", | ||
| 135 | "dataCategory": "", | ||
| 136 | "dataEncryptionLevel": "明文显示", | ||
| 137 | "businessDefDesc": "当前药品追溯码大一级包装上的药品追溯码,发货类型为03时可选;当存在上一级包装时必选", | ||
| 138 | "flowFlag": null, | ||
| 139 | "flowCode": null, | ||
| 140 | "functionCode": null, | ||
| 141 | "createStaffGuid": null, | ||
| 142 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 143 | "displayVersion": "V1", | ||
| 144 | "standardSetName": null, | ||
| 145 | "ruleType": null | ||
| 146 | }, | ||
| 147 | { | ||
| 148 | "updateTime": "2024-01-26 00:10:47", | ||
| 149 | "updateUserName": "数往知来管理员", | ||
| 150 | "guid": "d4d42dea2a5844b4a7f9238806ea507b", | ||
| 151 | "approvalGuid": null, | ||
| 152 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 153 | "fieldStandardCode": "COL202401260118", | ||
| 154 | "dataVersion": 1, | ||
| 155 | "chName": "药品追溯码", | ||
| 156 | "enName": "DTC", | ||
| 157 | "dataTypeValue": "字符型", | ||
| 158 | "dataTypeCode": "varchar", | ||
| 159 | "dataDicGuid": null, | ||
| 160 | "dataDicName": null, | ||
| 161 | "isDataDic": null, | ||
| 162 | "fieldLength": 200, | ||
| 163 | "fieldPrecision": null, | ||
| 164 | "dataState": 0, | ||
| 165 | "approveState": "N", | ||
| 166 | "dataCategory": null, | ||
| 167 | "dataEncryptionLevel": "明文显示", | ||
| 168 | "businessDefDesc": "用于唯一标识药品各级销售包装单元的代码,发货类型为03时可选", | ||
| 169 | "flowFlag": null, | ||
| 170 | "flowCode": null, | ||
| 171 | "functionCode": null, | ||
| 172 | "createStaffGuid": null, | ||
| 173 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 174 | "displayVersion": "V1", | ||
| 175 | "standardSetName": null, | ||
| 176 | "ruleType": null | ||
| 177 | }, | ||
| 178 | { | ||
| 179 | "updateTime": "2024-01-26 00:10:47", | ||
| 180 | "updateUserName": "数往知来管理员", | ||
| 181 | "guid": "ff9d0e4f6fbb444c8dcf6f67bffcb659", | ||
| 182 | "approvalGuid": null, | ||
| 183 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 184 | "fieldStandardCode": "COL202401260116", | ||
| 185 | "dataVersion": 1, | ||
| 186 | "chName": "发货数量", | ||
| 187 | "enName": "deliveryQuantity", | ||
| 188 | "dataTypeValue": "整型", | ||
| 189 | "dataTypeCode": "int", | ||
| 190 | "dataDicGuid": null, | ||
| 191 | "dataDicName": null, | ||
| 192 | "isDataDic": null, | ||
| 193 | "fieldLength": null, | ||
| 194 | "fieldPrecision": null, | ||
| 195 | "dataState": 0, | ||
| 196 | "approveState": "N", | ||
| 197 | "dataCategory": null, | ||
| 198 | "dataEncryptionLevel": "明文显示", | ||
| 199 | "businessDefDesc": "发货的最小销售包装单元数量", | ||
| 200 | "flowFlag": null, | ||
| 201 | "flowCode": null, | ||
| 202 | "functionCode": null, | ||
| 203 | "createStaffGuid": null, | ||
| 204 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 205 | "displayVersion": "V1", | ||
| 206 | "standardSetName": null, | ||
| 207 | "ruleType": null | ||
| 208 | }, | ||
| 209 | { | ||
| 210 | "updateTime": "2024-01-26 00:10:46", | ||
| 211 | "updateUserName": "数往知来管理员", | ||
| 212 | "guid": "fe88ac9e8d9c4f148833dbb3976fca77", | ||
| 213 | "approvalGuid": null, | ||
| 214 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 215 | "fieldStandardCode": "COL202401260114", | ||
| 216 | "dataVersion": 1, | ||
| 217 | "chName": "药品生产批号", | ||
| 218 | "enName": "batch", | ||
| 219 | "dataTypeValue": "字符型", | ||
| 220 | "dataTypeCode": "varchar", | ||
| 221 | "dataDicGuid": null, | ||
| 222 | "dataDicName": null, | ||
| 223 | "isDataDic": null, | ||
| 224 | "fieldLength": 20, | ||
| 225 | "fieldPrecision": null, | ||
| 226 | "dataState": 0, | ||
| 227 | "approveState": "N", | ||
| 228 | "dataCategory": null, | ||
| 229 | "dataEncryptionLevel": "明文显示", | ||
| 230 | "businessDefDesc": "药品包装上标示的生产批号", | ||
| 231 | "flowFlag": null, | ||
| 232 | "flowCode": null, | ||
| 233 | "functionCode": null, | ||
| 234 | "createStaffGuid": null, | ||
| 235 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 236 | "displayVersion": "V1", | ||
| 237 | "standardSetName": null, | ||
| 238 | "ruleType": null | ||
| 239 | }, | ||
| 240 | { | ||
| 241 | "updateTime": "2024-01-26 00:10:45", | ||
| 242 | "updateUserName": "数往知来管理员", | ||
| 243 | "guid": "9759837e0d72472ab7441c1873c9159a", | ||
| 244 | "approvalGuid": null, | ||
| 245 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 246 | "fieldStandardCode": "COL202401260112", | ||
| 247 | "dataVersion": 1, | ||
| 248 | "chName": "药品有效期截止日期", | ||
| 249 | "enName": "expirationDate", | ||
| 250 | "dataTypeValue": "日期型", | ||
| 251 | "dataTypeCode": "date", | ||
| 252 | "dataDicGuid": null, | ||
| 253 | "dataDicName": null, | ||
| 254 | "isDataDic": null, | ||
| 255 | "fieldLength": null, | ||
| 256 | "fieldPrecision": null, | ||
| 257 | "dataState": 0, | ||
| 258 | "approveState": "N", | ||
| 259 | "dataCategory": null, | ||
| 260 | "dataEncryptionLevel": "明文显示", | ||
| 261 | "businessDefDesc": "药品有效期的截止日期", | ||
| 262 | "flowFlag": null, | ||
| 263 | "flowCode": null, | ||
| 264 | "functionCode": null, | ||
| 265 | "createStaffGuid": null, | ||
| 266 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 267 | "displayVersion": "V1", | ||
| 268 | "standardSetName": null, | ||
| 269 | "ruleType": null | ||
| 270 | }, | ||
| 271 | { | ||
| 272 | "updateTime": "2024-01-26 00:10:45", | ||
| 273 | "updateUserName": "数往知来管理员", | ||
| 274 | "guid": "a39ed6123c6a420d9d1265315e714f86", | ||
| 275 | "approvalGuid": null, | ||
| 276 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 277 | "fieldStandardCode": "COL202401260110", | ||
| 278 | "dataVersion": 1, | ||
| 279 | "chName": "药品生产日期", | ||
| 280 | "enName": "productionDate", | ||
| 281 | "dataTypeValue": "日期型", | ||
| 282 | "dataTypeCode": "date", | ||
| 283 | "dataDicGuid": null, | ||
| 284 | "dataDicName": null, | ||
| 285 | "isDataDic": null, | ||
| 286 | "fieldLength": null, | ||
| 287 | "fieldPrecision": null, | ||
| 288 | "dataState": 0, | ||
| 289 | "approveState": "N", | ||
| 290 | "dataCategory": null, | ||
| 291 | "dataEncryptionLevel": "明文显示", | ||
| 292 | "businessDefDesc": "药品包装上标示的生产日期", | ||
| 293 | "flowFlag": null, | ||
| 294 | "flowCode": null, | ||
| 295 | "functionCode": null, | ||
| 296 | "createStaffGuid": null, | ||
| 297 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 298 | "displayVersion": "V1", | ||
| 299 | "standardSetName": null, | ||
| 300 | "ruleType": null | ||
| 301 | }, | ||
| 302 | { | ||
| 303 | "updateTime": "2024-01-26 00:10:45", | ||
| 304 | "updateUserName": "数往知来管理员", | ||
| 305 | "guid": "ea597c1b8bb24a5ab053a80b084de98c", | ||
| 306 | "approvalGuid": null, | ||
| 307 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 308 | "fieldStandardCode": "COL202401260108", | ||
| 309 | "dataVersion": 1, | ||
| 310 | "chName": "统一社会信用代码(进口药品代理企业)", | ||
| 311 | "enName": "drugImporterUSCID", | ||
| 312 | "dataTypeValue": "字符型", | ||
| 313 | "dataTypeCode": "varchar", | ||
| 314 | "dataDicGuid": null, | ||
| 315 | "dataDicName": null, | ||
| 316 | "isDataDic": null, | ||
| 317 | "fieldLength": 18, | ||
| 318 | "fieldPrecision": null, | ||
| 319 | "dataState": 0, | ||
| 320 | "approveState": "N", | ||
| 321 | "dataCategory": null, | ||
| 322 | "dataEncryptionLevel": "明文显示", | ||
| 323 | "businessDefDesc": "进口药品代理企业的统一社会信用代码,进口药品必选;没有统一社会信用代码时使用组织机构代码", | ||
| 324 | "flowFlag": null, | ||
| 325 | "flowCode": null, | ||
| 326 | "functionCode": null, | ||
| 327 | "createStaffGuid": null, | ||
| 328 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 329 | "displayVersion": "V1", | ||
| 330 | "standardSetName": null, | ||
| 331 | "ruleType": null | ||
| 332 | } | ||
| 333 | ] | ||
| 334 | const data1 = [ | ||
| 335 | { | ||
| 336 | "children": [ | ||
| 337 | { | ||
| 338 | "children": null, | ||
| 339 | "parentGuids": [ | ||
| 340 | "c32ddd77191ff4afe149538ef4b2e0c3" | ||
| 341 | ], | ||
| 342 | "guid": "9c92df55a19cdce88f61e20a8e1e8a65", | ||
| 343 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 344 | "organisationCode": "11150001", | ||
| 345 | "organisationName": "链享供应链运营一部", | ||
| 346 | "bizState": "Y", | ||
| 347 | "createTime": "2023-10-25 14:23:31", | ||
| 348 | "createUserName": "测试", | ||
| 349 | "parentGuid": "c32ddd77191ff4afe149538ef4b2e0c3", | ||
| 350 | "orderNum": 1, | ||
| 351 | "level": 2, | ||
| 352 | "levelCode": "1.1", | ||
| 353 | "displayCreateTime": "2023-10-25 14:23:31" | ||
| 354 | } | ||
| 355 | ], | ||
| 356 | "parentGuids": null, | ||
| 357 | "guid": "c32ddd77191ff4afe149538ef4b2e0c3", | ||
| 358 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 359 | "organisationCode": "1115004", | ||
| 360 | "organisationName": "链享供应链", | ||
| 361 | "bizState": "Y", | ||
| 362 | "createTime": "2023-08-15 12:59:10", | ||
| 363 | "createUserName": "测试", | ||
| 364 | "parentGuid": "", | ||
| 365 | "orderNum": 2, | ||
| 366 | "level": 0, | ||
| 367 | "levelCode": "1", | ||
| 368 | "displayCreateTime": "2023-08-15 12:59:10" | ||
| 369 | }, | ||
| 370 | { | ||
| 371 | "children": [ | ||
| 372 | { | ||
| 373 | "children": [ | ||
| 374 | { | ||
| 375 | "children": null, | ||
| 376 | "parentGuids": [ | ||
| 377 | "e10332122834077907cd5ea61fa576c1", | ||
| 378 | "cdae7bb3cafb560482cad1b89a1e4b78" | ||
| 379 | ], | ||
| 380 | "guid": "16ea472a155c07433a63220f2ae1afe9", | ||
| 381 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 382 | "organisationCode": "11160011", | ||
| 383 | "organisationName": "链享运营一部1组", | ||
| 384 | "bizState": "S", | ||
| 385 | "createTime": "2023-10-25 13:15:57", | ||
| 386 | "createUserName": "测试", | ||
| 387 | "parentGuid": "cdae7bb3cafb560482cad1b89a1e4b78", | ||
| 388 | "orderNum": 1, | ||
| 389 | "level": 2, | ||
| 390 | "levelCode": "2.1.1", | ||
| 391 | "displayCreateTime": "2023-10-25 13:15:57" | ||
| 392 | } | ||
| 393 | ], | ||
| 394 | "parentGuids": [ | ||
| 395 | "e10332122834077907cd5ea61fa576c1" | ||
| 396 | ], | ||
| 397 | "guid": "cdae7bb3cafb560482cad1b89a1e4b78", | ||
| 398 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 399 | "organisationCode": "1116001", | ||
| 400 | "organisationName": "链享运营一部", | ||
| 401 | "bizState": "S", | ||
| 402 | "createTime": "2023-10-25 13:14:15", | ||
| 403 | "createUserName": "测试", | ||
| 404 | "parentGuid": "e10332122834077907cd5ea61fa576c1", | ||
| 405 | "orderNum": 1, | ||
| 406 | "level": 1, | ||
| 407 | "levelCode": "2.1", | ||
| 408 | "displayCreateTime": "2023-10-25 13:14:15" | ||
| 409 | }, | ||
| 410 | { | ||
| 411 | "children": null, | ||
| 412 | "parentGuids": [ | ||
| 413 | "e10332122834077907cd5ea61fa576c1" | ||
| 414 | ], | ||
| 415 | "guid": "d98b44ffb35e4d17cf68f9a922e1c7b7", | ||
| 416 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 417 | "organisationCode": null, | ||
| 418 | "organisationName": "二部", | ||
| 419 | "bizState": "Y", | ||
| 420 | "createTime": "2023-10-26 09:45:36", | ||
| 421 | "createUserName": "测试", | ||
| 422 | "parentGuid": "e10332122834077907cd5ea61fa576c1", | ||
| 423 | "orderNum": 2, | ||
| 424 | "level": 1, | ||
| 425 | "levelCode": "2.2", | ||
| 426 | "displayCreateTime": "2023-10-26 09:45:36" | ||
| 427 | } | ||
| 428 | ], | ||
| 429 | "parentGuids": null, | ||
| 430 | "guid": "e10332122834077907cd5ea61fa576c1", | ||
| 431 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 432 | "organisationCode": "1115005", | ||
| 433 | "organisationName": "链享医药", | ||
| 434 | "bizState": "Y", | ||
| 435 | "createTime": "2023-09-12 15:59:35", | ||
| 436 | "createUserName": "测试", | ||
| 437 | "parentGuid": null, | ||
| 438 | "orderNum": 3, | ||
| 439 | "level": 0, | ||
| 440 | "levelCode": "2", | ||
| 441 | "displayCreateTime": "2023-09-12 15:59:35" | ||
| 442 | }, | ||
| 443 | { | ||
| 444 | "children": [ | ||
| 445 | { | ||
| 446 | "children": null, | ||
| 447 | "parentGuids": [ | ||
| 448 | "9bd46f0f4fcf429518fae6ecb4849a9e" | ||
| 449 | ], | ||
| 450 | "guid": "870f23ae47e036eb88b35f726c31959b", | ||
| 451 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 452 | "organisationCode": null, | ||
| 453 | "organisationName": "运用三部", | ||
| 454 | "bizState": "Y", | ||
| 455 | "createTime": "2024-04-28 16:33:24", | ||
| 456 | "createUserName": "数往知来管理员", | ||
| 457 | "parentGuid": "9bd46f0f4fcf429518fae6ecb4849a9e", | ||
| 458 | "orderNum": 3, | ||
| 459 | "level": 1, | ||
| 460 | "levelCode": "3.3", | ||
| 461 | "displayCreateTime": "2024-04-28 16:33:24" | ||
| 462 | }, | ||
| 463 | { | ||
| 464 | "children": null, | ||
| 465 | "parentGuids": [ | ||
| 466 | "9bd46f0f4fcf429518fae6ecb4849a9e" | ||
| 467 | ], | ||
| 468 | "guid": "e06049046241dd71b153f227dbe7f801", | ||
| 469 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 470 | "organisationCode": null, | ||
| 471 | "organisationName": "运营二部", | ||
| 472 | "bizState": "Y", | ||
| 473 | "createTime": "2023-11-14 16:01:50", | ||
| 474 | "createUserName": "数往知来管理员", | ||
| 475 | "parentGuid": "9bd46f0f4fcf429518fae6ecb4849a9e", | ||
| 476 | "orderNum": 40, | ||
| 477 | "level": 1, | ||
| 478 | "levelCode": "3.2", | ||
| 479 | "displayCreateTime": "2023-11-14 16:01:50" | ||
| 480 | }, | ||
| 481 | { | ||
| 482 | "children": null, | ||
| 483 | "parentGuids": [ | ||
| 484 | "9bd46f0f4fcf429518fae6ecb4849a9e" | ||
| 485 | ], | ||
| 486 | "guid": "731cd185c868da8af48b492068ffaed4", | ||
| 487 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 488 | "organisationCode": null, | ||
| 489 | "organisationName": "运营一部", | ||
| 490 | "bizState": "Y", | ||
| 491 | "createTime": "2023-11-14 15:19:35", | ||
| 492 | "createUserName": "测试", | ||
| 493 | "parentGuid": "9bd46f0f4fcf429518fae6ecb4849a9e", | ||
| 494 | "orderNum": 41, | ||
| 495 | "level": 1, | ||
| 496 | "levelCode": "3.1", | ||
| 497 | "displayCreateTime": "2023-11-14 15:19:35" | ||
| 498 | } | ||
| 499 | ], | ||
| 500 | "parentGuids": null, | ||
| 501 | "guid": "9bd46f0f4fcf429518fae6ecb4849a9e", | ||
| 502 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 503 | "organisationCode": null, | ||
| 504 | "organisationName": "药企服务事业部1", | ||
| 505 | "bizState": "Y", | ||
| 506 | "createTime": "2023-11-14 14:49:14", | ||
| 507 | "createUserName": "数往知来管理员", | ||
| 508 | "parentGuid": "", | ||
| 509 | "orderNum": 4, | ||
| 510 | "level": 0, | ||
| 511 | "levelCode": "3", | ||
| 512 | "displayCreateTime": "2023-11-14 14:49:14" | ||
| 513 | }, | ||
| 514 | { | ||
| 515 | "children": [ | ||
| 516 | { | ||
| 517 | "children": null, | ||
| 518 | "parentGuids": [ | ||
| 519 | "23be149ea3167a3f7f2d383023336efe" | ||
| 520 | ], | ||
| 521 | "guid": "e5f2b4958ee2d99309a41e0c6e1447c8", | ||
| 522 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 523 | "organisationCode": null, | ||
| 524 | "organisationName": "智能存储装备部", | ||
| 525 | "bizState": "Y", | ||
| 526 | "createTime": "2023-11-14 16:09:36", | ||
| 527 | "createUserName": "数往知来管理员", | ||
| 528 | "parentGuid": "23be149ea3167a3f7f2d383023336efe", | ||
| 529 | "orderNum": 51, | ||
| 530 | "level": 1, | ||
| 531 | "levelCode": "4.1", | ||
| 532 | "displayCreateTime": "2023-11-14 16:09:36" | ||
| 533 | } | ||
| 534 | ], | ||
| 535 | "parentGuids": null, | ||
| 536 | "guid": "23be149ea3167a3f7f2d383023336efe", | ||
| 537 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 538 | "organisationCode": null, | ||
| 539 | "organisationName": "医药物联网事业部", | ||
| 540 | "bizState": "Y", | ||
| 541 | "createTime": "2023-11-14 15:11:35", | ||
| 542 | "createUserName": "数往知来管理员", | ||
| 543 | "parentGuid": "", | ||
| 544 | "orderNum": 5, | ||
| 545 | "level": 0, | ||
| 546 | "levelCode": "4", | ||
| 547 | "displayCreateTime": "2023-11-14 15:11:35" | ||
| 548 | }, | ||
| 549 | { | ||
| 550 | "children": null, | ||
| 551 | "parentGuids": null, | ||
| 552 | "guid": "1d82e875163749ca9ae45809ec432ae8", | ||
| 553 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 554 | "organisationCode": null, | ||
| 555 | "organisationName": "财务管理中心", | ||
| 556 | "bizState": "S", | ||
| 557 | "createTime": "2023-11-14 15:14:07", | ||
| 558 | "createUserName": "数往知来管理员", | ||
| 559 | "parentGuid": "", | ||
| 560 | "orderNum": 6, | ||
| 561 | "level": 0, | ||
| 562 | "levelCode": "6", | ||
| 563 | "displayCreateTime": "2023-11-14 15:14:07" | ||
| 564 | }, | ||
| 565 | { | ||
| 566 | "children": null, | ||
| 567 | "parentGuids": null, | ||
| 568 | "guid": "cd9e6a0c76102364a9e88b79b28b0b32", | ||
| 569 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 570 | "organisationCode": null, | ||
| 571 | "organisationName": "资产服务", | ||
| 572 | "bizState": "Y", | ||
| 573 | "createTime": "2024-08-14 11:40:33", | ||
| 574 | "createUserName": "数往知来管理员", | ||
| 575 | "parentGuid": "", | ||
| 576 | "orderNum": 7, | ||
| 577 | "level": 0, | ||
| 578 | "levelCode": "9", | ||
| 579 | "displayCreateTime": "2024-08-14 11:40:33" | ||
| 580 | }, | ||
| 581 | { | ||
| 582 | "children": [ | ||
| 583 | { | ||
| 584 | "children": null, | ||
| 585 | "parentGuids": [ | ||
| 586 | "dac448b77fa35f798bb4a06d8fd86334" | ||
| 587 | ], | ||
| 588 | "guid": "cb76777efe69182cfb2c75d41944553c", | ||
| 589 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 590 | "organisationCode": null, | ||
| 591 | "organisationName": "审批1", | ||
| 592 | "bizState": "Y", | ||
| 593 | "createTime": "2024-01-17 14:28:36", | ||
| 594 | "createUserName": "数往知来管理员", | ||
| 595 | "parentGuid": "dac448b77fa35f798bb4a06d8fd86334", | ||
| 596 | "orderNum": 100, | ||
| 597 | "level": 1, | ||
| 598 | "levelCode": "8.1", | ||
| 599 | "displayCreateTime": "2024-01-17 14:28:36" | ||
| 600 | } | ||
| 601 | ], | ||
| 602 | "parentGuids": null, | ||
| 603 | "guid": "dac448b77fa35f798bb4a06d8fd86334", | ||
| 604 | "tenantGuid": "9e5b9d7bfd8c4f4f8079e05de19bf7e0", | ||
| 605 | "organisationCode": null, | ||
| 606 | "organisationName": "审批组织", | ||
| 607 | "bizState": "Y", | ||
| 608 | "createTime": "2024-01-16 11:38:24", | ||
| 609 | "createUserName": "数往知来管理员", | ||
| 610 | "parentGuid": "", | ||
| 611 | "orderNum": 99, | ||
| 612 | "level": 0, | ||
| 613 | "levelCode": "8", | ||
| 614 | "displayCreateTime": "2024-01-16 11:38:24" | ||
| 615 | } | ||
| 616 | ] | ||
| 617 | const data2 = [ | ||
| 618 | {} | ||
| 619 | ] | ||
| 620 | const treeIndex: any = ref({}) | ||
| 621 | const treeInfo = ref({ | ||
| 622 | id: "data-pickup-tree", | ||
| 623 | filter: true, | ||
| 624 | queryValue: "", | ||
| 625 | queryPlaceholder: "输入组织名称搜索", | ||
| 626 | props: { | ||
| 627 | label: "organisationName", | ||
| 628 | value: "guid", | ||
| 629 | }, | ||
| 630 | nodeKey: 'guid', | ||
| 631 | expandedKey: [], | ||
| 632 | expandOnNodeClick: false, | ||
| 633 | data: data1 || [], | ||
| 634 | }); | ||
| 635 | |||
| 636 | const templateInfo = ref({ | ||
| 637 | title: '医疗数据分类分级模板', | ||
| 638 | mark: '待确认', | ||
| 639 | descGroup: [ | ||
| 640 | { label: '目录名称', value: '医疗数据', type: 'text_btn' }, | ||
| 641 | { label: '执行时间', value: '2021-12-12 09:12:13' }, | ||
| 642 | { label: '分级分类模板', value: '医疗数据分级分类', type: 'text_btn' }, | ||
| 643 | { label: '版本', value: 'V5' }, | ||
| 644 | { label: '元数据名称', value: '名称1、名称2、名称3' }, | ||
| 645 | ], | ||
| 646 | }) | ||
| 647 | const tabsInfo = ref({ | ||
| 648 | activeName: 'field', | ||
| 649 | tabs: [ | ||
| 650 | { label: '库表', name: 'sheet' }, | ||
| 651 | { label: '字段', name: 'field' }, | ||
| 652 | ] | ||
| 653 | }); | ||
| 654 | |||
| 655 | const sheetItemList = ref([ | ||
| 656 | { | ||
| 657 | type: "select", | ||
| 658 | label: "", | ||
| 659 | placeholder: '变更类型', | ||
| 660 | field: 'dataSourceGuid', | ||
| 661 | default: '', | ||
| 662 | options: [], | ||
| 663 | props: { | ||
| 664 | label: 'databaseNameZh', | ||
| 665 | value: 'guid' | ||
| 666 | }, | ||
| 667 | clearable: true, | ||
| 668 | }, | ||
| 669 | { | ||
| 670 | type: "select", | ||
| 671 | label: "", | ||
| 672 | placeholder: '数据库名', | ||
| 673 | field: 'dataSourceGuid', | ||
| 674 | default: '', | ||
| 675 | options: [], | ||
| 676 | props: { | ||
| 677 | label: 'databaseNameZh', | ||
| 678 | value: 'guid' | ||
| 679 | }, | ||
| 680 | clearable: true, | ||
| 681 | }, | ||
| 682 | { | ||
| 683 | type: "select", | ||
| 684 | label: "", | ||
| 685 | placeholder: '表中文/英文名', | ||
| 686 | field: 'dataSourceGuid', | ||
| 687 | default: '', | ||
| 688 | options: [], | ||
| 689 | props: { | ||
| 690 | label: 'databaseNameZh', | ||
| 691 | value: 'guid' | ||
| 692 | }, | ||
| 693 | clearable: true, | ||
| 694 | }, | ||
| 695 | ]); | ||
| 696 | |||
| 697 | const fieldItemList = ref([ | ||
| 698 | { | ||
| 699 | type: "select", | ||
| 700 | label: "", | ||
| 701 | placeholder: '变更类型', | ||
| 702 | field: 'dataSourceGuid', | ||
| 703 | default: '', | ||
| 704 | options: [], | ||
| 705 | props: { | ||
| 706 | label: 'databaseNameZh', | ||
| 707 | value: 'guid' | ||
| 708 | }, | ||
| 709 | clearable: true, | ||
| 710 | }, | ||
| 711 | { | ||
| 712 | type: "select", | ||
| 713 | label: "", | ||
| 714 | placeholder: '字段中文/英文名', | ||
| 715 | field: 'dataSourceGuid', | ||
| 716 | default: '', | ||
| 717 | options: [], | ||
| 718 | props: { | ||
| 719 | label: 'databaseNameZh', | ||
| 720 | value: 'guid' | ||
| 721 | }, | ||
| 722 | clearable: true, | ||
| 723 | }, | ||
| 724 | { | ||
| 725 | type: "select", | ||
| 726 | label: "", | ||
| 727 | placeholder: '表中文/英文名', | ||
| 728 | field: 'dataSourceGuid', | ||
| 729 | default: '', | ||
| 730 | options: [], | ||
| 731 | props: { | ||
| 732 | label: 'databaseNameZh', | ||
| 733 | value: 'guid' | ||
| 734 | }, | ||
| 735 | clearable: true, | ||
| 736 | }, | ||
| 737 | { | ||
| 738 | type: "select", | ||
| 739 | label: "", | ||
| 740 | placeholder: '分类', | ||
| 741 | field: 'dataSourceGuid', | ||
| 742 | default: '', | ||
| 743 | options: [], | ||
| 744 | props: { | ||
| 745 | label: 'databaseNameZh', | ||
| 746 | value: 'guid' | ||
| 747 | }, | ||
| 748 | clearable: true, | ||
| 749 | }, | ||
| 750 | { | ||
| 751 | type: "select", | ||
| 752 | label: "", | ||
| 753 | placeholder: '分级', | ||
| 754 | field: 'dataSourceGuid', | ||
| 755 | default: '', | ||
| 756 | options: [], | ||
| 757 | props: { | ||
| 758 | label: 'databaseNameZh', | ||
| 759 | value: 'guid' | ||
| 760 | }, | ||
| 761 | clearable: true, | ||
| 762 | }, | ||
| 763 | { | ||
| 764 | type: "select", | ||
| 765 | label: "", | ||
| 766 | placeholder: '数据库名', | ||
| 767 | field: 'dataSourceGuid', | ||
| 768 | default: '', | ||
| 769 | options: [], | ||
| 770 | props: { | ||
| 771 | label: 'databaseNameZh', | ||
| 772 | value: 'guid' | ||
| 773 | }, | ||
| 774 | clearable: true, | ||
| 775 | }, | ||
| 776 | ]); | ||
| 777 | |||
| 778 | const checked1 = ref(false); | ||
| 779 | const checked2 = ref(false); | ||
| 780 | |||
| 781 | const page = ref({ | ||
| 782 | limit: 50, | ||
| 783 | curr: 1, | ||
| 784 | sizes: [ | ||
| 785 | { label: "10", value: 10 }, | ||
| 786 | { label: "50", value: 50 }, | ||
| 787 | { label: "100", value: 100 }, | ||
| 788 | { label: "150", value: 150 }, | ||
| 789 | { label: "200", value: 200 }, | ||
| 790 | ], | ||
| 791 | }); | ||
| 792 | const searchItemValue: any = ref({}); | ||
| 793 | const currTableData: any = ref({}); | ||
| 794 | const sheetTableInfo = ref({ | ||
| 795 | id: "mapping-table", | ||
| 796 | fields: [ | ||
| 797 | { label: "序号", type: "index", width: 56, align: "center", fixed: "left" }, | ||
| 798 | { | ||
| 799 | label: "分类分级变更状态", field: "damCode", width: 140, align: 'center', type: "tag", getName: (scope) => { | ||
| 800 | return filterVal(scope.row.status, 'status'); | ||
| 801 | } | ||
| 802 | }, | ||
| 803 | { label: "表中文名", field: "damTypeName", width: 120 }, | ||
| 804 | { | ||
| 805 | label: "表英文名", field: "damName", width: 200, type: "text_btn", columClass: 'text_btn', click: (scope) => { | ||
| 806 | router.push({ | ||
| 807 | name: "templateConfig", | ||
| 808 | query: { guid: scope.row.damGuid }, | ||
| 809 | }); | ||
| 810 | } | ||
| 811 | }, | ||
| 812 | { label: "数据库名", field: "damTypeName", width: 120 }, | ||
| 813 | { label: "字段数", field: "damTypeName", width: 96, align: 'right' }, | ||
| 814 | { label: "已分类字段数", field: "damTypeName", width: 120, align: 'right' }, | ||
| 815 | { label: "已分级字段数", field: "damTypeName", width: 120, align: 'right' }, | ||
| 816 | ], | ||
| 817 | loading: false, | ||
| 818 | data: datas || [], | ||
| 819 | page: { | ||
| 820 | type: "normal", | ||
| 821 | rows: 0, | ||
| 822 | ...page.value, | ||
| 823 | }, | ||
| 824 | actionInfo: { | ||
| 825 | show: false | ||
| 826 | }, | ||
| 827 | }); | ||
| 828 | |||
| 829 | const fieldTableInfo = ref({ | ||
| 830 | id: "metadata-table", | ||
| 831 | fields: [ | ||
| 832 | { label: "序号", type: "index", width: 56, align: "center", fixed: "left" }, | ||
| 833 | { | ||
| 834 | label: "分类分级变更状态", field: "approveState", width: 140, align: 'center', type: "tag", getName: (scope) => { | ||
| 835 | return filterVal(scope.row.approveState, 'approveState'); | ||
| 836 | } | ||
| 837 | }, | ||
| 838 | { label: "字段名", field: "damTypeName", width: 200 }, | ||
| 839 | { label: "字段中文名", field: "damTypeName", width: 200 }, | ||
| 840 | { label: "分类", field: "damTypeName", width: 280, type: 'select', columClass: 'edit_cell' }, | ||
| 841 | { label: "分级", field: "damTypeName", width: 120, type: 'select', columClass: 'edit_cell' }, | ||
| 842 | { label: "标签", field: "damCode", width: 96 }, | ||
| 843 | { label: "规则", field: "damCode", width: 200 }, | ||
| 844 | { label: "表中文名", field: "damTypeName", width: 120 }, | ||
| 845 | { label: "表英文名", field: "damName", width: 200 }, | ||
| 846 | { label: "数据库名", field: "damTypeName", width: 120 }, | ||
| 847 | ], | ||
| 848 | loading: false, | ||
| 849 | data: data2 || [], | ||
| 850 | showPage: true, | ||
| 851 | page: { | ||
| 852 | type: "normal", | ||
| 853 | rows: 0, | ||
| 854 | ...page.value, | ||
| 855 | }, | ||
| 856 | actionInfo: { | ||
| 857 | label: "操作", | ||
| 858 | type: "btn", | ||
| 859 | width: 80, | ||
| 860 | btns: (scope) => { | ||
| 861 | let row = scope.row, btnArr: any = [ | ||
| 862 | { label: "编辑", value: "edit" }, | ||
| 863 | ]; | ||
| 864 | // if (row.approveState == 'Y') { | ||
| 865 | // if (row.listingStatus == 'Y') { | ||
| 866 | // btnArr.splice(0, 0, { label: "详情", value: "detail" }); | ||
| 867 | // } else { | ||
| 868 | // btnArr.splice(0, 0, { label: "编辑", value: "edit" }, { label: "详情", value: "detail" }, { label: "删除", value: "delete" }); | ||
| 869 | // } | ||
| 870 | // } else { | ||
| 871 | // if (row.approveState == 'A') { | ||
| 872 | // btnArr.splice(0, 0, { label: "详情", value: "detail" }); | ||
| 873 | // } else { | ||
| 874 | // btnArr.splice(0, 0, { label: "编辑", value: "edit" }, { label: "详情", value: "detail" }, { label: "删除", value: "delete" }); | ||
| 875 | // } | ||
| 876 | // } | ||
| 877 | return btnArr; | ||
| 878 | }, | ||
| 879 | }, | ||
| 880 | }) | ||
| 881 | |||
| 882 | const tabChange = (val) => { | ||
| 883 | tabsInfo.value.activeName = val; | ||
| 884 | } | ||
| 885 | |||
| 886 | const nodeClick = (data) => { | ||
| 887 | treeIndex.value = data | ||
| 888 | } | ||
| 889 | |||
| 890 | const getTableData = () => { | ||
| 891 | tableInfo.value.loading = true; | ||
| 892 | getListingList( | ||
| 893 | Object.assign({}, searchItemValue.value, { | ||
| 894 | pageIndex: page.value.curr, | ||
| 895 | pageSize: page.value.limit, | ||
| 896 | }) | ||
| 897 | ).then((res: any) => { | ||
| 898 | tableInfo.value.loading = false; | ||
| 899 | tableInfo.value.data = res.data.records || []; | ||
| 900 | tableInfo.value.page.curr = res.data.pageIndex; | ||
| 901 | tableInfo.value.page.limit = res.data.pageSize; | ||
| 902 | tableInfo.value.page.rows = res.data.totalRows; | ||
| 903 | }) | ||
| 904 | .catch((res) => { | ||
| 905 | tableInfo.value.loading = false; | ||
| 906 | }); | ||
| 907 | }; | ||
| 908 | |||
| 909 | const tableBtnClick = (scope, btn) => { | ||
| 910 | const type = btn.value; | ||
| 911 | const row = scope.row; | ||
| 912 | currTableData.value = row; | ||
| 913 | if (type == "detail" || type === "edit") { | ||
| 914 | toPath(type); | ||
| 915 | } else if (type === "delete") { | ||
| 916 | open("此操作将永久删除,是否继续?", "warning"); | ||
| 917 | } | ||
| 918 | }; | ||
| 919 | |||
| 920 | const toPath = (type = null) => { | ||
| 921 | router.push({ | ||
| 922 | name: "taskConfig", | ||
| 923 | query: { | ||
| 924 | type | ||
| 925 | }, | ||
| 926 | }); | ||
| 927 | } | ||
| 928 | |||
| 929 | const tablePageChange = (info) => { | ||
| 930 | page.value.curr = Number(info.curr); | ||
| 931 | page.value.limit = Number(info.limit); | ||
| 932 | tableInfo.value.page.limit = page.value.limit; | ||
| 933 | tableInfo.value.page.curr = page.value.curr; | ||
| 934 | getTableData(); | ||
| 935 | }; | ||
| 936 | |||
| 937 | const open = (msg, type, isBatch = false) => { | ||
| 938 | ElMessageBox.confirm(msg, "提示", { | ||
| 939 | confirmButtonText: "确定", | ||
| 940 | cancelButtonText: "取消", | ||
| 941 | type: type, | ||
| 942 | }).then(() => { | ||
| 943 | const guids = [currTableData.value.guid]; | ||
| 944 | listingDelete(guids).then((res: any) => { | ||
| 945 | if (res.code == proxy.$passCode) { | ||
| 946 | getFirstPageData(); | ||
| 947 | ElMessage({ | ||
| 948 | type: "success", | ||
| 949 | message: "删除成功", | ||
| 950 | }); | ||
| 951 | } else { | ||
| 952 | ElMessage({ | ||
| 953 | type: "error", | ||
| 954 | message: res.msg, | ||
| 955 | }); | ||
| 956 | } | ||
| 957 | }).catch((res) => { | ||
| 958 | tableInfo.value.loading = false; | ||
| 959 | }); | ||
| 960 | }); | ||
| 961 | }; | ||
| 962 | |||
| 963 | const getFirstPageData = () => { | ||
| 964 | page.value.curr = 1 | ||
| 965 | tableInfo.value.page.curr = 1; | ||
| 966 | getTableData(); | ||
| 967 | } | ||
| 968 | |||
| 969 | const btnClick = async (btn, bType = null) => { | ||
| 970 | const type = btn.value; | ||
| 971 | }; | ||
| 972 | |||
| 973 | /** 搜索查询分类分级模板。 */ | ||
| 974 | const searchTemplate = (val: any, clear: boolean = false) => { | ||
| 975 | // page.value.curr = 1; | ||
| 976 | // if (clear) { | ||
| 977 | // searchItemList.value.map(item => item.default = '') | ||
| 978 | // page.value.planName = ''; | ||
| 979 | // page.value.state = null; | ||
| 980 | // getTableData(); | ||
| 981 | // return; | ||
| 982 | // } | ||
| 983 | // page.value.planName = val.planName; | ||
| 984 | // page.value.state = val.state; | ||
| 985 | // getTableData(); | ||
| 986 | }; | ||
| 987 | |||
| 988 | const changTable = () => { | ||
| 989 | // toSearch({}) | ||
| 990 | }; | ||
| 991 | |||
| 992 | const getPermissionList = (val, init = false) => { | ||
| 993 | let params: any = val ? { ...val } : {} | ||
| 994 | // params.pageIndex = listPage.value.curr; | ||
| 995 | // params.pageSize = listPage.value.limit; | ||
| 996 | // getPermissionDictList(params).then((res: any) => { | ||
| 997 | // if (res.code == proxy.$passCode) { | ||
| 998 | // const data = res.data?.records || [] | ||
| 999 | // if (init) { | ||
| 1000 | // permissionList.value = JSON.parse(JSON.stringify(data)) | ||
| 1001 | // currpermissionList.value = JSON.parse(JSON.stringify(data)) | ||
| 1002 | // listPage.value.totalPages = res.data.totalPages | ||
| 1003 | // toSearch({}) | ||
| 1004 | // } else { | ||
| 1005 | // permissionList.value.push(...JSON.parse(JSON.stringify(data))) | ||
| 1006 | // querySearch(asideSearchInput.value) | ||
| 1007 | // } | ||
| 1008 | // } | ||
| 1009 | // listLoading.value = false | ||
| 1010 | // }).catch(() => { | ||
| 1011 | // listLoading.value = false | ||
| 1012 | // }) | ||
| 1013 | } | ||
| 1014 | |||
| 1015 | onActivated(() => { | ||
| 1016 | |||
| 1017 | }) | ||
| 1018 | |||
| 1019 | onBeforeMount(() => { | ||
| 1020 | |||
| 1021 | }) | ||
| 1022 | |||
| 1023 | </script> | ||
| 1024 | |||
| 1025 | <template> | ||
| 1026 | <div class="container_wrap full flex"> | ||
| 1027 | <div class="main_wrap full"> | ||
| 1028 | <div class="content_main panel"> | ||
| 1029 | <div class="template_panel"> | ||
| 1030 | <div class="panel_title"> | ||
| 1031 | <div class="title_wrap"> | ||
| 1032 | <span class="title_text">{{ templateInfo.title }}</span> | ||
| 1033 | <el-tag type="warning">{{ templateInfo.mark }}</el-tag> | ||
| 1034 | </div> | ||
| 1035 | </div> | ||
| 1036 | <div class="title_desc"> | ||
| 1037 | <div class="desc_group"> | ||
| 1038 | <div class="desc_item"> | ||
| 1039 | <span class="desc_label">目录名称:</span> | ||
| 1040 | <span class="desc_value text_btn">医疗数据</span> | ||
| 1041 | </div> | ||
| 1042 | <div class="desc_item"> | ||
| 1043 | <span class="desc_label">执行时间:</span> | ||
| 1044 | <span class="desc_value">2021-12-12 09:12:13</span> | ||
| 1045 | </div> | ||
| 1046 | </div> | ||
| 1047 | <div class="desc_group"> | ||
| 1048 | <div class="desc_item"> | ||
| 1049 | <span class="desc_label">分类:</span> | ||
| 1050 | <span class="desc_value text_btn">医疗数据</span> | ||
| 1051 | </div> | ||
| 1052 | <div class="desc_item"> | ||
| 1053 | <span class="desc_label">元数据名称:</span> | ||
| 1054 | <span class="desc_value">名称1、名称2、名称3</span> | ||
| 1055 | </div> | ||
| 1056 | </div> | ||
| 1057 | </div> | ||
| 1058 | <p class="panel_desc"> | ||
| 1059 | <el-icon> | ||
| 1060 | <Warning /> | ||
| 1061 | </el-icon> | ||
| 1062 | <span>本次分类分级任务共涉及: </span> | ||
| 1063 | <span class="text_btn">40</span> | ||
| 1064 | <span>张表,共</span> | ||
| 1065 | <span class="text_btn">4023</span> | ||
| 1066 | <span>个字段,已分类</span> | ||
| 1067 | <span class="text_btn">2099</span> | ||
| 1068 | <span>个字段,已分级</span> | ||
| 1069 | <span class="text_btn">1987</span> | ||
| 1070 | <span>个字段</span> | ||
| 1071 | </p> | ||
| 1072 | </div> | ||
| 1073 | <div class="panel_content"> | ||
| 1074 | <Tabs class="panel_tabs" :tabs-info="tabsInfo" @tab-change="tabChange" /> | ||
| 1075 | <div class="panel" v-show="tabsInfo.activeName == 'sheet'"> | ||
| 1076 | <div class="table_tool_wrap"> | ||
| 1077 | <TableTools :searchItems="sheetItemList" :searchId="'template-manage-search'" @search="searchTemplate" /> | ||
| 1078 | </div> | ||
| 1079 | <div class="table_panel_wrap"> | ||
| 1080 | <Table :tableInfo="sheetTableInfo" @tableBtnClick="tableBtnClick" @tablePageChange="tablePageChange" /> | ||
| 1081 | </div> | ||
| 1082 | </div> | ||
| 1083 | <div class="panel flex" v-show="tabsInfo.activeName == 'field'"> | ||
| 1084 | <div class="box_left"> | ||
| 1085 | <div class="aside_title">分类分级目录</div> | ||
| 1086 | <Tree :treeInfo="treeInfo" @nodeClick="nodeClick" /> | ||
| 1087 | </div> | ||
| 1088 | <div class="box_right"> | ||
| 1089 | <div class="table_tool_wrap"> | ||
| 1090 | <TableTools :searchItems="fieldItemList" :searchId="'template-manage-search'" | ||
| 1091 | @search="searchTemplate" /> | ||
| 1092 | <div class="tools_btns"> | ||
| 1093 | <div class="btns"> | ||
| 1094 | <el-button type="primary" plain @click="btnClick({ value: 'batch' })">批量变量分类分级</el-button> | ||
| 1095 | <el-button plain @click="btnClick({ value: 'import' })">导入</el-button> | ||
| 1096 | <el-button plain @click="btnClick({ value: 'export' })">导出</el-button> | ||
| 1097 | </div> | ||
| 1098 | <div class="checkboxs"> | ||
| 1099 | <el-checkbox v-model="checked1">仅看未分级分类</el-checkbox> | ||
| 1100 | <el-checkbox v-model="checked2">仅看变更</el-checkbox> | ||
| 1101 | </div> | ||
| 1102 | </div> | ||
| 1103 | </div> | ||
| 1104 | <div class="table_panel_wrap panel"> | ||
| 1105 | <div class="table_panel"> | ||
| 1106 | <el-table ref="costTableRef" :data="fieldTableInfo.data" border :height="'100%'" | ||
| 1107 | style="width: 100%; display: inline-block" :style="{ 'min-height': '100%' }"> | ||
| 1108 | <el-table-column v-for="(item, i) in fieldTableInfo.fields" :label="item.label" :width="item.width" | ||
| 1109 | :min-width="item.minWidth" :fixed="item.fixed" :align="item.align" | ||
| 1110 | :sortable="item.sortable ?? false" :prop="item.field" :class-name="item.columClass" | ||
| 1111 | show-overflow-tooltip> | ||
| 1112 | <template #default="scope"> | ||
| 1113 | <div class="select_cell" v-if="item.type == 'select'"> | ||
| 1114 | <el-select v-model="scope.row[item.field]" :placeholder="item.placeholder" | ||
| 1115 | :disabled="item.disabled" :clearable="item.clearable || true" /> | ||
| 1116 | </div> | ||
| 1117 | <div v-else-if="item.type == 'tag'"> | ||
| 1118 | <el-tag :type="item.tagType ? item.tagType(scope) : tagType(scope.row, item.field)">{{ | ||
| 1119 | item.getName ? item.getName(scope) : tagMethod(scope.row, item.field) | ||
| 1120 | }}</el-tag> | ||
| 1121 | </div> | ||
| 1122 | <span v-else> | ||
| 1123 | {{ item.getName ? item.getName(scope) : scope.row[item.field] !== 0 && !scope.row[item.field] | ||
| 1124 | ? | ||
| 1125 | "--" : scope.row[item.field] }} | ||
| 1126 | </span> | ||
| 1127 | </template> | ||
| 1128 | </el-table-column> | ||
| 1129 | <el-table-column label="操作" :width="fieldTableInfo.actionInfo.width" | ||
| 1130 | :class-name="fieldTableInfo.actionInfo.columClass" fixed="right"> | ||
| 1131 | <template #default="scope"> | ||
| 1132 | <template v-for="(btn, b) in Array.isArray(fieldTableInfo.actionInfo.btns) | ||
| 1133 | ? fieldTableInfo.actionInfo.btns | ||
| 1134 | : fieldTableInfo.actionInfo.btns(scope)"> | ||
| 1135 | <span class="operate_btn" :class="{ active: btn.visible ?? true }" v-if="btn.visible ?? true"> | ||
| 1136 | <span class="text_btn" :class="{ 'is-disabled': !!btn.disabled }" | ||
| 1137 | @click="(btn.click && !btn.disabled && !scope.row.disabled) ? btn.click(scope, btn) : tableBtnClick(scope, btn)" | ||
| 1138 | v-preReClick>{{ btn.label }}</span> | ||
| 1139 | </span> | ||
| 1140 | </template> | ||
| 1141 | </template> | ||
| 1142 | </el-table-column> | ||
| 1143 | </el-table> | ||
| 1144 | <PageNav :class="[fieldTableInfo.page.type, fieldTableInfo.page.col]" :pageInfo="fieldTableInfo.page" | ||
| 1145 | @pageChange="tablePageChange" /> | ||
| 1146 | </div> | ||
| 1147 | </div> | ||
| 1148 | </div> | ||
| 1149 | </div> | ||
| 1150 | </div> | ||
| 1151 | </div> | ||
| 1152 | <div class="tool_btns"> | ||
| 1153 | <div class="btns"> | ||
| 1154 | <el-button @click="btnClick({ value: 'cancel' })">暂存</el-button> | ||
| 1155 | <el-button type="primary" @click="btnClick({ value: 'next' })">确认变更</el-button> | ||
| 1156 | </div> | ||
| 1157 | </div> | ||
| 1158 | </div> | ||
| 1159 | </div> | ||
| 1160 | </template> | ||
| 1161 | |||
| 1162 | <style scoped lang="scss"> | ||
| 1163 | .container_wrap { | ||
| 1164 | .aside_wrap { | ||
| 1165 | width: 199px; | ||
| 1166 | border-right: 1px solid #d9d9d9; | ||
| 1167 | box-shadow: none; | ||
| 1168 | |||
| 1169 | .aside_title { | ||
| 1170 | width: calc(100% - 32px); | ||
| 1171 | display: inline-block; | ||
| 1172 | } | ||
| 1173 | |||
| 1174 | .icon-add.el-icon { | ||
| 1175 | width: 24px; | ||
| 1176 | height: 24px; | ||
| 1177 | vertical-align: middle; | ||
| 1178 | cursor: pointer; | ||
| 1179 | |||
| 1180 | svg { | ||
| 1181 | width: 24px; | ||
| 1182 | height: 24px; | ||
| 1183 | } | ||
| 1184 | } | ||
| 1185 | |||
| 1186 | .tree_panel { | ||
| 1187 | height: calc(100% - 72px); | ||
| 1188 | padding-top: 0; | ||
| 1189 | border-bottom: 1px solid #d9d9d9; | ||
| 1190 | |||
| 1191 | :deep(.el-tree) { | ||
| 1192 | margin: 0; | ||
| 1193 | height: calc(100% - 32px); | ||
| 1194 | overflow: hidden auto; | ||
| 1195 | } | ||
| 1196 | } | ||
| 1197 | |||
| 1198 | .page_nav_wrap.concise { | ||
| 1199 | justify-content: center; | ||
| 1200 | } | ||
| 1201 | |||
| 1202 | } | ||
| 1203 | } | ||
| 1204 | |||
| 1205 | .container_wrap { | ||
| 1206 | overflow: hidden auto; | ||
| 1207 | |||
| 1208 | .main_wrap { | ||
| 1209 | padding: 0; | ||
| 1210 | |||
| 1211 | &.full { | ||
| 1212 | width: 100%; | ||
| 1213 | } | ||
| 1214 | |||
| 1215 | .content_main { | ||
| 1216 | display: flex; | ||
| 1217 | flex-direction: column; | ||
| 1218 | height: calc(100% - 45px); | ||
| 1219 | padding: 0 !important; | ||
| 1220 | overflow: hidden auto; | ||
| 1221 | flex: 1; | ||
| 1222 | |||
| 1223 | &.panel { | ||
| 1224 | padding: 0 16px; | ||
| 1225 | } | ||
| 1226 | |||
| 1227 | .template_panel { | ||
| 1228 | padding: 0 16px; | ||
| 1229 | |||
| 1230 | .panel_title { | ||
| 1231 | display: flex; | ||
| 1232 | justify-content: space-between; | ||
| 1233 | align-items: center; | ||
| 1234 | margin: 8px 0; | ||
| 1235 | flex: 1; | ||
| 1236 | |||
| 1237 | .title_wrap { | ||
| 1238 | display: flex; | ||
| 1239 | align-items: center; | ||
| 1240 | |||
| 1241 | .title_text { | ||
| 1242 | font-size: 16px; | ||
| 1243 | color: #212121; | ||
| 1244 | line-height: 24px; | ||
| 1245 | font-weight: 600; | ||
| 1246 | margin-right: 12px; | ||
| 1247 | } | ||
| 1248 | } | ||
| 1249 | } | ||
| 1250 | |||
| 1251 | .title_desc { | ||
| 1252 | |||
| 1253 | .desc_group { | ||
| 1254 | display: flex; | ||
| 1255 | margin: 8px 0; | ||
| 1256 | |||
| 1257 | .desc_item+.desc_item { | ||
| 1258 | margin-left: 40px; | ||
| 1259 | } | ||
| 1260 | } | ||
| 1261 | } | ||
| 1262 | |||
| 1263 | .panel_tags { | ||
| 1264 | .el-tag { | ||
| 1265 | margin-right: 8px; | ||
| 1266 | } | ||
| 1267 | } | ||
| 1268 | |||
| 1269 | .panel_desc { | ||
| 1270 | height: 40px; | ||
| 1271 | margin: 16px 0 8px; | ||
| 1272 | padding: 0 12px; | ||
| 1273 | font-size: 14px; | ||
| 1274 | color: #666; | ||
| 1275 | display: flex; | ||
| 1276 | align-items: center; | ||
| 1277 | background: #EFFBFC; | ||
| 1278 | border: 1px solid rgba(195, 219, 219, 1); | ||
| 1279 | |||
| 1280 | .el-icon { | ||
| 1281 | width: 14px; | ||
| 1282 | height: 14px; | ||
| 1283 | color: #4FA1A4; | ||
| 1284 | } | ||
| 1285 | |||
| 1286 | >span { | ||
| 1287 | margin-left: 8px; | ||
| 1288 | } | ||
| 1289 | } | ||
| 1290 | } | ||
| 1291 | |||
| 1292 | .panel_content { | ||
| 1293 | height: 100%; | ||
| 1294 | |||
| 1295 | .panel { | ||
| 1296 | height: calc(100% - 47px); | ||
| 1297 | padding: 0 16px; | ||
| 1298 | |||
| 1299 | &.flex { | ||
| 1300 | height: calc(100% - 36px); | ||
| 1301 | display: flex; | ||
| 1302 | justify-content: space-between; | ||
| 1303 | flex: 1; | ||
| 1304 | |||
| 1305 | .box_left { | ||
| 1306 | width: 240px; | ||
| 1307 | height: 100%; | ||
| 1308 | border-right: 1px solid #d9d9d9; | ||
| 1309 | margin-left: -16px; | ||
| 1310 | |||
| 1311 | .aside_title { | ||
| 1312 | padding: 0 8px; | ||
| 1313 | height: 40px; | ||
| 1314 | line-height: 40px; | ||
| 1315 | font-size: 14px; | ||
| 1316 | color: #212121; | ||
| 1317 | font-weight: 600; | ||
| 1318 | margin-top: 8px; | ||
| 1319 | } | ||
| 1320 | |||
| 1321 | .tree_panel { | ||
| 1322 | padding: 0; | ||
| 1323 | } | ||
| 1324 | } | ||
| 1325 | |||
| 1326 | .box_right { | ||
| 1327 | width: calc(100% - 240px); | ||
| 1328 | } | ||
| 1329 | } | ||
| 1330 | } | ||
| 1331 | |||
| 1332 | :deep(.panel_tabs) { | ||
| 1333 | .el-tabs__header { | ||
| 1334 | margin-bottom: 0; | ||
| 1335 | } | ||
| 1336 | |||
| 1337 | .el-tabs__nav-scroll { | ||
| 1338 | padding: 0 16px; | ||
| 1339 | } | ||
| 1340 | } | ||
| 1341 | |||
| 1342 | :deep(.table_tool_wrap) { | ||
| 1343 | .table-tools { | ||
| 1344 | .tools_search { | ||
| 1345 | padding-top: 12px; | ||
| 1346 | } | ||
| 1347 | } | ||
| 1348 | } | ||
| 1349 | |||
| 1350 | .tools_btns { | ||
| 1351 | display: flex; | ||
| 1352 | justify-content: space-between; | ||
| 1353 | align-items: center; | ||
| 1354 | padding: 4px 0 8px; | ||
| 1355 | } | ||
| 1356 | |||
| 1357 | .table_panel_wrap { | ||
| 1358 | width: 100%; | ||
| 1359 | height: calc(100% - 40px); | ||
| 1360 | padding: 4px 0 0; | ||
| 1361 | |||
| 1362 | &.panel { | ||
| 1363 | height: calc(100% - 135px); | ||
| 1364 | |||
| 1365 | .table_panel { | ||
| 1366 | width: 100%; | ||
| 1367 | height: 100%; | ||
| 1368 | } | ||
| 1369 | } | ||
| 1370 | } | ||
| 1371 | } | ||
| 1372 | } | ||
| 1373 | |||
| 1374 | .tool_btns { | ||
| 1375 | height: 44px; | ||
| 1376 | margin: 0 -8px; | ||
| 1377 | display: flex; | ||
| 1378 | justify-content: center; | ||
| 1379 | align-items: center; | ||
| 1380 | border-top: 1px solid #d9d9d9; | ||
| 1381 | } | ||
| 1382 | } | ||
| 1383 | } | ||
| 1384 | </style> |
| ... | @@ -20,68 +20,7 @@ const userStore = useUserStore(); | ... | @@ -20,68 +20,7 @@ const userStore = useUserStore(); |
| 20 | const userData = JSON.parse(userStore.userData); | 20 | const userData = JSON.parse(userStore.userData); |
| 21 | const assetStore = useDataAssetStore(); | 21 | const assetStore = useDataAssetStore(); |
| 22 | 22 | ||
| 23 | const step = ref(0); | 23 | const data1 = [ |
| 24 | const selectIndex = ref(0); | ||
| 25 | const asideSearchInput = ref(""); | ||
| 26 | const permissionList: any = ref([]) | ||
| 27 | const listLoading = ref(false) | ||
| 28 | const listPage = ref({ | ||
| 29 | limit: 50, | ||
| 30 | curr: 1, | ||
| 31 | totalPages: 0 | ||
| 32 | }) | ||
| 33 | const currpermissionList: any = ref([ | ||
| 34 | { | ||
| 35 | "guid": "62d01ad586774db2bb3955dfb2d18366", | ||
| 36 | "productGuid": null, | ||
| 37 | "productName": null, | ||
| 38 | "dataPermissionName": "当前用户", | ||
| 39 | "bizState": "Y", | ||
| 40 | "createUserName": "数往知来管理员", | ||
| 41 | "createTime": "2024-01-24 14:08:43", | ||
| 42 | "sqlScript": null, | ||
| 43 | "dataSourceGuid": null | ||
| 44 | }, | ||
| 45 | { | ||
| 46 | "guid": "d68a27c1998540a2b8e8f22a2d5eebef", | ||
| 47 | "productGuid": null, | ||
| 48 | "productName": null, | ||
| 49 | "dataPermissionName": "组织权限", | ||
| 50 | "bizState": "Y", | ||
| 51 | "createUserName": "数往知来管理员", | ||
| 52 | "createTime": "2024-01-24 11:47:02", | ||
| 53 | "sqlScript": null, | ||
| 54 | "dataSourceGuid": null | ||
| 55 | } | ||
| 56 | ]) | ||
| 57 | const templateInfo = ref({ | ||
| 58 | title: '医疗数据分类分级模板', | ||
| 59 | descGroup: [ | ||
| 60 | { label: '模型确认人', value: '管理员 ' }, | ||
| 61 | { label: '模型确认时间', value: '2021-12-12 09:12:13' }, | ||
| 62 | ], | ||
| 63 | tags: [ | ||
| 64 | { type: 'info', name: '医疗行业分类' }, | ||
| 65 | { type: 'success', name: '五级' }, | ||
| 66 | { type: 'primary', name: 'V5' }, | ||
| 67 | ], | ||
| 68 | desc: '适用于各级医疗机构、卫生健康管理部门、公共卫生服务机构、相关专项业务服务机构、相关信息技术服务机构等开展医疗健康数据分类分级。适用于各级医疗机构、卫生健康管理部门、公共卫生服务机构、相关专项业务服务机构、相关信息技术服务机构等开展医疗健康数据分类分级。适用于各级医疗机构、卫生健康。' | ||
| 69 | }) | ||
| 70 | const treeIndex: any = ref({}) | ||
| 71 | |||
| 72 | const treeInfo = ref({ | ||
| 73 | id: "data-pickup-tree", | ||
| 74 | filter: true, | ||
| 75 | queryValue: "", | ||
| 76 | queryPlaceholder: "输入组织名称搜索", | ||
| 77 | props: { | ||
| 78 | label: "organisationName", | ||
| 79 | value: "guid", | ||
| 80 | }, | ||
| 81 | nodeKey: 'guid', | ||
| 82 | expandedKey: [], | ||
| 83 | expandOnNodeClick: false, | ||
| 84 | data: [ | ||
| 85 | { | 24 | { |
| 86 | "children": [ | 25 | "children": [ |
| 87 | { | 26 | { |
| ... | @@ -363,7 +302,70 @@ const treeInfo = ref({ | ... | @@ -363,7 +302,70 @@ const treeInfo = ref({ |
| 363 | "levelCode": "8", | 302 | "levelCode": "8", |
| 364 | "displayCreateTime": "2024-01-16 11:38:24" | 303 | "displayCreateTime": "2024-01-16 11:38:24" |
| 365 | } | 304 | } |
| 305 | ] | ||
| 306 | |||
| 307 | const step = ref(0); | ||
| 308 | const selectIndex = ref(0); | ||
| 309 | const asideSearchInput = ref(""); | ||
| 310 | const permissionList: any = ref([]) | ||
| 311 | const listLoading = ref(false) | ||
| 312 | const listPage = ref({ | ||
| 313 | limit: 50, | ||
| 314 | curr: 1, | ||
| 315 | totalPages: 0 | ||
| 316 | }) | ||
| 317 | const currpermissionList: any = ref([ | ||
| 318 | { | ||
| 319 | "guid": "62d01ad586774db2bb3955dfb2d18366", | ||
| 320 | "productGuid": null, | ||
| 321 | "productName": null, | ||
| 322 | "dataPermissionName": "当前用户", | ||
| 323 | "bizState": "Y", | ||
| 324 | "createUserName": "数往知来管理员", | ||
| 325 | "createTime": "2024-01-24 14:08:43", | ||
| 326 | "sqlScript": null, | ||
| 327 | "dataSourceGuid": null | ||
| 328 | }, | ||
| 329 | { | ||
| 330 | "guid": "d68a27c1998540a2b8e8f22a2d5eebef", | ||
| 331 | "productGuid": null, | ||
| 332 | "productName": null, | ||
| 333 | "dataPermissionName": "组织权限", | ||
| 334 | "bizState": "Y", | ||
| 335 | "createUserName": "数往知来管理员", | ||
| 336 | "createTime": "2024-01-24 11:47:02", | ||
| 337 | "sqlScript": null, | ||
| 338 | "dataSourceGuid": null | ||
| 339 | } | ||
| 340 | ]) | ||
| 341 | const templateInfo = ref({ | ||
| 342 | title: '医疗数据分类', | ||
| 343 | descGroup: [ | ||
| 344 | { label: '模型确认人', value: '管理员 ' }, | ||
| 345 | { label: '模型确认时间', value: '2021-12-12 09:12:13' }, | ||
| 366 | ], | 346 | ], |
| 347 | tags: [ | ||
| 348 | { type: 'info', name: '医疗行业分类' }, | ||
| 349 | { type: 'success', name: '五级' }, | ||
| 350 | { type: 'primary', name: 'V5' }, | ||
| 351 | ], | ||
| 352 | desc: '适用于各级医疗机构、卫生健康管理部门、公共卫生服务机构、相关专项业务服务机构、相关信息技术服务机构等开展医疗健康数据分类分级。适用于各级医疗机构、卫生健康管理部门、公共卫生服务机构、相关专项业务服务机构、相关信息技术服务机构等开展医疗健康数据分类分级。适用于各级医疗机构、卫生健康。' | ||
| 353 | }) | ||
| 354 | const treeIndex: any = ref({}) | ||
| 355 | |||
| 356 | const treeInfo = ref({ | ||
| 357 | id: "data-pickup-tree", | ||
| 358 | filter: true, | ||
| 359 | queryValue: "", | ||
| 360 | queryPlaceholder: "输入组织名称搜索", | ||
| 361 | props: { | ||
| 362 | label: "organisationName", | ||
| 363 | value: "guid", | ||
| 364 | }, | ||
| 365 | nodeKey: 'guid', | ||
| 366 | expandedKey: [], | ||
| 367 | expandOnNodeClick: false, | ||
| 368 | data: data1 || [], | ||
| 367 | }); | 369 | }); |
| 368 | 370 | ||
| 369 | const expand1 = ref(true) | 371 | const expand1 = ref(true) |
| ... | @@ -436,6 +438,8 @@ const tableInfo = ref({ | ... | @@ -436,6 +438,8 @@ const tableInfo = ref({ |
| 436 | 438 | ||
| 437 | const metadataTableInfo = ref({ | 439 | const metadataTableInfo = ref({ |
| 438 | id: "metadata-table", | 440 | id: "metadata-table", |
| 441 | multiple: true, | ||
| 442 | rowKey: 'guid', | ||
| 439 | fields: [ | 443 | fields: [ |
| 440 | { label: "序号", type: "index", width: 56, align: "center", fixed: "left" }, | 444 | { label: "序号", type: "index", width: 56, align: "center", fixed: "left" }, |
| 441 | { label: "数据库名称", field: "damCode", width: 200 }, | 445 | { label: "数据库名称", field: "damCode", width: 200 }, |
| ... | @@ -607,7 +611,7 @@ onBeforeMount(() => { | ... | @@ -607,7 +611,7 @@ onBeforeMount(() => { |
| 607 | <template> | 611 | <template> |
| 608 | <div class="container_wrap full flex"> | 612 | <div class="container_wrap full flex"> |
| 609 | <div class="aside_wrap" v-show="step == 0"> | 613 | <div class="aside_wrap" v-show="step == 0"> |
| 610 | <div class="aside_title">选择分类分级模板</div> | 614 | <div class="aside_title">选择分类</div> |
| 611 | <div class="aside_search"> | 615 | <div class="aside_search"> |
| 612 | <el-input v-model.trim="asideSearchInput" placeholder="请输入关键字" :prefix-icon="Search" clearable | 616 | <el-input v-model.trim="asideSearchInput" placeholder="请输入关键字" :prefix-icon="Search" clearable |
| 613 | @change="querySearch" /> | 617 | @change="querySearch" /> |
| ... | @@ -773,9 +777,11 @@ onBeforeMount(() => { | ... | @@ -773,9 +777,11 @@ onBeforeMount(() => { |
| 773 | } | 777 | } |
| 774 | 778 | ||
| 775 | .panel_desc { | 779 | .panel_desc { |
| 776 | margin: 8px 0; | 780 | margin: 8px 0 16px; |
| 777 | font-size: 14px; | 781 | font-size: 14px; |
| 778 | color: #666; | 782 | color: #666; |
| 783 | line-height: 1.5; | ||
| 784 | text-align: justify; | ||
| 779 | } | 785 | } |
| 780 | } | 786 | } |
| 781 | 787 | ... | ... |
src/views/data_inventory/taskLog.vue
0 → 100644
| 1 | <route lang="yaml"> | ||
| 2 | name: taskLog //分类分级任务日志 | ||
| 3 | </route> | ||
| 4 | |||
| 5 | <script lang="ts" setup name="taskLog"> | ||
| 6 | import { ref, onMounted } from "vue"; | ||
| 7 | import { useRouter, useRoute } from "vue-router"; | ||
| 8 | import useUserStore from "@/store/modules/user"; | ||
| 9 | import { ElMessage, ElMessageBox } from "element-plus"; | ||
| 10 | |||
| 11 | import useDataAssetStore from "@/store/modules/dataAsset"; | ||
| 12 | import { getListingList, listingDelete, listingUpdateStatus, filterVal, getParamsDataList } from "@/api/modules/dataProduct"; | ||
| 13 | import { TableColumnWidth } from '@/utils/enum'; | ||
| 14 | |||
| 15 | import Table from "@/components/Table/index.vue"; | ||
| 16 | |||
| 17 | const { proxy } = getCurrentInstance() as any; | ||
| 18 | const router = useRouter(); | ||
| 19 | const userStore = useUserStore(); | ||
| 20 | const userData = JSON.parse(userStore.userData); | ||
| 21 | const assetStore = useDataAssetStore(); | ||
| 22 | const datas = [ | ||
| 23 | { | ||
| 24 | "updateTime": "2024-07-16 13:17:00", | ||
| 25 | "updateUserName": "数往知来管理员", | ||
| 26 | "guid": "4e0e76c48fa043d5b35d09f3ccc7c265", | ||
| 27 | "approvalGuid": null, | ||
| 28 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 29 | "fieldStandardCode": "COL202406070021", | ||
| 30 | "dataVersion": 1, | ||
| 31 | "chName": "地址", | ||
| 32 | "enName": "address", | ||
| 33 | "dataTypeValue": "字符型", | ||
| 34 | "dataTypeCode": "varchar", | ||
| 35 | "dataDicGuid": "", | ||
| 36 | "dataDicName": null, | ||
| 37 | "isDataDic": "N", | ||
| 38 | "fieldLength": 600, | ||
| 39 | "fieldPrecision": null, | ||
| 40 | "dataState": 0, | ||
| 41 | "approveState": "N", | ||
| 42 | "dataCategory": "合伙人", | ||
| 43 | "dataEncryptionLevel": "界面加密", | ||
| 44 | "businessDefDesc": "地址", | ||
| 45 | "flowFlag": null, | ||
| 46 | "flowCode": null, | ||
| 47 | "functionCode": null, | ||
| 48 | "createStaffGuid": null, | ||
| 49 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 50 | "displayVersion": "V1", | ||
| 51 | "standardSetName": null, | ||
| 52 | "ruleType": null | ||
| 53 | }, | ||
| 54 | { | ||
| 55 | "updateTime": "2024-01-27 10:19:45", | ||
| 56 | "updateUserName": "数往知来管理员", | ||
| 57 | "guid": "bc630207357c466dbff7613ea38985cc", | ||
| 58 | "approvalGuid": null, | ||
| 59 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 60 | "fieldStandardCode": "COL202401260124", | ||
| 61 | "dataVersion": 1, | ||
| 62 | "chName": "包含最小销售包装单元数量", | ||
| 63 | "enName": "inboxQuantity", | ||
| 64 | "dataTypeValue": "整型", | ||
| 65 | "dataTypeCode": "int", | ||
| 66 | "dataDicGuid": null, | ||
| 67 | "dataDicName": null, | ||
| 68 | "isDataDic": null, | ||
| 69 | "fieldLength": null, | ||
| 70 | "fieldPrecision": null, | ||
| 71 | "dataState": 1, | ||
| 72 | "approveState": "A", | ||
| 73 | "dataCategory": null, | ||
| 74 | "dataEncryptionLevel": "明文显示", | ||
| 75 | "businessDefDesc": "当前药品追溯码中包含的最小销售包装单元药品追溯码的数量,发货类型为03时可选", | ||
| 76 | "flowFlag": null, | ||
| 77 | "flowCode": null, | ||
| 78 | "functionCode": null, | ||
| 79 | "createStaffGuid": null, | ||
| 80 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 81 | "displayVersion": "V1", | ||
| 82 | "standardSetName": null, | ||
| 83 | "ruleType": null | ||
| 84 | }, | ||
| 85 | { | ||
| 86 | "updateTime": "2024-01-27 11:03:59", | ||
| 87 | "updateUserName": "审批人4", | ||
| 88 | "guid": "420f2a68bd4441bf92010eadf698b685", | ||
| 89 | "approvalGuid": null, | ||
| 90 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 91 | "fieldStandardCode": "COL202401260122", | ||
| 92 | "dataVersion": 1, | ||
| 93 | "chName": "包装层级", | ||
| 94 | "enName": "packageLevel", | ||
| 95 | "dataTypeValue": "字符型", | ||
| 96 | "dataTypeCode": "varchar", | ||
| 97 | "dataDicGuid": null, | ||
| 98 | "dataDicName": null, | ||
| 99 | "isDataDic": null, | ||
| 100 | "fieldLength": 200, | ||
| 101 | "fieldPrecision": null, | ||
| 102 | "dataState": 1, | ||
| 103 | "approveState": "A", | ||
| 104 | "dataCategory": null, | ||
| 105 | "dataEncryptionLevel": "明文显示", | ||
| 106 | "businessDefDesc": "当前药品追溯码所处包装层级描述,发货类型为03时可选", | ||
| 107 | "flowFlag": null, | ||
| 108 | "flowCode": null, | ||
| 109 | "functionCode": null, | ||
| 110 | "createStaffGuid": null, | ||
| 111 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 112 | "displayVersion": "V1", | ||
| 113 | "standardSetName": null, | ||
| 114 | "ruleType": null | ||
| 115 | }, | ||
| 116 | { | ||
| 117 | "updateTime": "2024-06-06 10:01:06", | ||
| 118 | "updateUserName": "审批人1", | ||
| 119 | "guid": "f841e1848ab94b1e81a0217a09a7a3d3", | ||
| 120 | "approvalGuid": "b674bffe8d2f4132918016b6baaf75aa", | ||
| 121 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 122 | "fieldStandardCode": "COL202401260120", | ||
| 123 | "dataVersion": 1, | ||
| 124 | "chName": "上一级包装药品追溯码", | ||
| 125 | "enName": "parentDTC", | ||
| 126 | "dataTypeValue": "字符型", | ||
| 127 | "dataTypeCode": "varchar", | ||
| 128 | "dataDicGuid": "", | ||
| 129 | "dataDicName": null, | ||
| 130 | "isDataDic": "N", | ||
| 131 | "fieldLength": 200, | ||
| 132 | "fieldPrecision": null, | ||
| 133 | "dataState": 1, | ||
| 134 | "approveState": "Y", | ||
| 135 | "dataCategory": "", | ||
| 136 | "dataEncryptionLevel": "明文显示", | ||
| 137 | "businessDefDesc": "当前药品追溯码大一级包装上的药品追溯码,发货类型为03时可选;当存在上一级包装时必选", | ||
| 138 | "flowFlag": null, | ||
| 139 | "flowCode": null, | ||
| 140 | "functionCode": null, | ||
| 141 | "createStaffGuid": null, | ||
| 142 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 143 | "displayVersion": "V1", | ||
| 144 | "standardSetName": null, | ||
| 145 | "ruleType": null | ||
| 146 | }, | ||
| 147 | { | ||
| 148 | "updateTime": "2024-01-26 00:10:47", | ||
| 149 | "updateUserName": "数往知来管理员", | ||
| 150 | "guid": "d4d42dea2a5844b4a7f9238806ea507b", | ||
| 151 | "approvalGuid": null, | ||
| 152 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 153 | "fieldStandardCode": "COL202401260118", | ||
| 154 | "dataVersion": 1, | ||
| 155 | "chName": "药品追溯码", | ||
| 156 | "enName": "DTC", | ||
| 157 | "dataTypeValue": "字符型", | ||
| 158 | "dataTypeCode": "varchar", | ||
| 159 | "dataDicGuid": null, | ||
| 160 | "dataDicName": null, | ||
| 161 | "isDataDic": null, | ||
| 162 | "fieldLength": 200, | ||
| 163 | "fieldPrecision": null, | ||
| 164 | "dataState": 0, | ||
| 165 | "approveState": "N", | ||
| 166 | "dataCategory": null, | ||
| 167 | "dataEncryptionLevel": "明文显示", | ||
| 168 | "businessDefDesc": "用于唯一标识药品各级销售包装单元的代码,发货类型为03时可选", | ||
| 169 | "flowFlag": null, | ||
| 170 | "flowCode": null, | ||
| 171 | "functionCode": null, | ||
| 172 | "createStaffGuid": null, | ||
| 173 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 174 | "displayVersion": "V1", | ||
| 175 | "standardSetName": null, | ||
| 176 | "ruleType": null | ||
| 177 | }, | ||
| 178 | { | ||
| 179 | "updateTime": "2024-01-26 00:10:47", | ||
| 180 | "updateUserName": "数往知来管理员", | ||
| 181 | "guid": "ff9d0e4f6fbb444c8dcf6f67bffcb659", | ||
| 182 | "approvalGuid": null, | ||
| 183 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 184 | "fieldStandardCode": "COL202401260116", | ||
| 185 | "dataVersion": 1, | ||
| 186 | "chName": "发货数量", | ||
| 187 | "enName": "deliveryQuantity", | ||
| 188 | "dataTypeValue": "整型", | ||
| 189 | "dataTypeCode": "int", | ||
| 190 | "dataDicGuid": null, | ||
| 191 | "dataDicName": null, | ||
| 192 | "isDataDic": null, | ||
| 193 | "fieldLength": null, | ||
| 194 | "fieldPrecision": null, | ||
| 195 | "dataState": 0, | ||
| 196 | "approveState": "N", | ||
| 197 | "dataCategory": null, | ||
| 198 | "dataEncryptionLevel": "明文显示", | ||
| 199 | "businessDefDesc": "发货的最小销售包装单元数量", | ||
| 200 | "flowFlag": null, | ||
| 201 | "flowCode": null, | ||
| 202 | "functionCode": null, | ||
| 203 | "createStaffGuid": null, | ||
| 204 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 205 | "displayVersion": "V1", | ||
| 206 | "standardSetName": null, | ||
| 207 | "ruleType": null | ||
| 208 | }, | ||
| 209 | { | ||
| 210 | "updateTime": "2024-01-26 00:10:46", | ||
| 211 | "updateUserName": "数往知来管理员", | ||
| 212 | "guid": "fe88ac9e8d9c4f148833dbb3976fca77", | ||
| 213 | "approvalGuid": null, | ||
| 214 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 215 | "fieldStandardCode": "COL202401260114", | ||
| 216 | "dataVersion": 1, | ||
| 217 | "chName": "药品生产批号", | ||
| 218 | "enName": "batch", | ||
| 219 | "dataTypeValue": "字符型", | ||
| 220 | "dataTypeCode": "varchar", | ||
| 221 | "dataDicGuid": null, | ||
| 222 | "dataDicName": null, | ||
| 223 | "isDataDic": null, | ||
| 224 | "fieldLength": 20, | ||
| 225 | "fieldPrecision": null, | ||
| 226 | "dataState": 0, | ||
| 227 | "approveState": "N", | ||
| 228 | "dataCategory": null, | ||
| 229 | "dataEncryptionLevel": "明文显示", | ||
| 230 | "businessDefDesc": "药品包装上标示的生产批号", | ||
| 231 | "flowFlag": null, | ||
| 232 | "flowCode": null, | ||
| 233 | "functionCode": null, | ||
| 234 | "createStaffGuid": null, | ||
| 235 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 236 | "displayVersion": "V1", | ||
| 237 | "standardSetName": null, | ||
| 238 | "ruleType": null | ||
| 239 | }, | ||
| 240 | { | ||
| 241 | "updateTime": "2024-01-26 00:10:45", | ||
| 242 | "updateUserName": "数往知来管理员", | ||
| 243 | "guid": "9759837e0d72472ab7441c1873c9159a", | ||
| 244 | "approvalGuid": null, | ||
| 245 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 246 | "fieldStandardCode": "COL202401260112", | ||
| 247 | "dataVersion": 1, | ||
| 248 | "chName": "药品有效期截止日期", | ||
| 249 | "enName": "expirationDate", | ||
| 250 | "dataTypeValue": "日期型", | ||
| 251 | "dataTypeCode": "date", | ||
| 252 | "dataDicGuid": null, | ||
| 253 | "dataDicName": null, | ||
| 254 | "isDataDic": null, | ||
| 255 | "fieldLength": null, | ||
| 256 | "fieldPrecision": null, | ||
| 257 | "dataState": 0, | ||
| 258 | "approveState": "N", | ||
| 259 | "dataCategory": null, | ||
| 260 | "dataEncryptionLevel": "明文显示", | ||
| 261 | "businessDefDesc": "药品有效期的截止日期", | ||
| 262 | "flowFlag": null, | ||
| 263 | "flowCode": null, | ||
| 264 | "functionCode": null, | ||
| 265 | "createStaffGuid": null, | ||
| 266 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 267 | "displayVersion": "V1", | ||
| 268 | "standardSetName": null, | ||
| 269 | "ruleType": null | ||
| 270 | }, | ||
| 271 | { | ||
| 272 | "updateTime": "2024-01-26 00:10:45", | ||
| 273 | "updateUserName": "数往知来管理员", | ||
| 274 | "guid": "a39ed6123c6a420d9d1265315e714f86", | ||
| 275 | "approvalGuid": null, | ||
| 276 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 277 | "fieldStandardCode": "COL202401260110", | ||
| 278 | "dataVersion": 1, | ||
| 279 | "chName": "药品生产日期", | ||
| 280 | "enName": "productionDate", | ||
| 281 | "dataTypeValue": "日期型", | ||
| 282 | "dataTypeCode": "date", | ||
| 283 | "dataDicGuid": null, | ||
| 284 | "dataDicName": null, | ||
| 285 | "isDataDic": null, | ||
| 286 | "fieldLength": null, | ||
| 287 | "fieldPrecision": null, | ||
| 288 | "dataState": 0, | ||
| 289 | "approveState": "N", | ||
| 290 | "dataCategory": null, | ||
| 291 | "dataEncryptionLevel": "明文显示", | ||
| 292 | "businessDefDesc": "药品包装上标示的生产日期", | ||
| 293 | "flowFlag": null, | ||
| 294 | "flowCode": null, | ||
| 295 | "functionCode": null, | ||
| 296 | "createStaffGuid": null, | ||
| 297 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 298 | "displayVersion": "V1", | ||
| 299 | "standardSetName": null, | ||
| 300 | "ruleType": null | ||
| 301 | }, | ||
| 302 | { | ||
| 303 | "updateTime": "2024-01-26 00:10:45", | ||
| 304 | "updateUserName": "数往知来管理员", | ||
| 305 | "guid": "ea597c1b8bb24a5ab053a80b084de98c", | ||
| 306 | "approvalGuid": null, | ||
| 307 | "standardSetGuid": "58d1178a04904d599284fc1e61594c43", | ||
| 308 | "fieldStandardCode": "COL202401260108", | ||
| 309 | "dataVersion": 1, | ||
| 310 | "chName": "统一社会信用代码(进口药品代理企业)", | ||
| 311 | "enName": "drugImporterUSCID", | ||
| 312 | "dataTypeValue": "字符型", | ||
| 313 | "dataTypeCode": "varchar", | ||
| 314 | "dataDicGuid": null, | ||
| 315 | "dataDicName": null, | ||
| 316 | "isDataDic": null, | ||
| 317 | "fieldLength": 18, | ||
| 318 | "fieldPrecision": null, | ||
| 319 | "dataState": 0, | ||
| 320 | "approveState": "N", | ||
| 321 | "dataCategory": null, | ||
| 322 | "dataEncryptionLevel": "明文显示", | ||
| 323 | "businessDefDesc": "进口药品代理企业的统一社会信用代码,进口药品必选;没有统一社会信用代码时使用组织机构代码", | ||
| 324 | "flowFlag": null, | ||
| 325 | "flowCode": null, | ||
| 326 | "functionCode": null, | ||
| 327 | "createStaffGuid": null, | ||
| 328 | "createUserId": "98df01b8d86c46f786dd10b4d0eb11dd", | ||
| 329 | "displayVersion": "V1", | ||
| 330 | "standardSetName": null, | ||
| 331 | "ruleType": null | ||
| 332 | } | ||
| 333 | ] | ||
| 334 | |||
| 335 | const page = ref({ | ||
| 336 | limit: 50, | ||
| 337 | curr: 1, | ||
| 338 | sizes: [ | ||
| 339 | { label: "10", value: 10 }, | ||
| 340 | { label: "50", value: 50 }, | ||
| 341 | { label: "100", value: 100 }, | ||
| 342 | { label: "150", value: 150 }, | ||
| 343 | { label: "200", value: 200 }, | ||
| 344 | ], | ||
| 345 | }); | ||
| 346 | const searchItemValue: any = ref({}); | ||
| 347 | const currTableData: any = ref({}); | ||
| 348 | const tableInfo = ref({ | ||
| 349 | id: "mapping-table", | ||
| 350 | fields: [ | ||
| 351 | { label: "序号", type: "index", width: 56, align: "center", fixed: "left" }, | ||
| 352 | { label: "任务名称", field: "chName", width: 96 }, | ||
| 353 | { | ||
| 354 | label: "目录名称", field: "dataTypeValue", width: 120, type: "text_btn", columClass: 'text_btn', click: (scope) => { | ||
| 355 | router.push({ | ||
| 356 | name: "templateConfig", | ||
| 357 | query: { guid: scope.row.damGuid }, | ||
| 358 | }); | ||
| 359 | } | ||
| 360 | }, | ||
| 361 | { label: "分类分级模板", field: "dataTypeValue", width: 200 }, | ||
| 362 | { label: "元数据", field: "fieldStandardCode", width: 200 }, | ||
| 363 | { label: "任务修改人", field: "dataCategory", width: 120 }, | ||
| 364 | { label: "修改时间", field: "updateTime", width: TableColumnWidth.DATETIME }, | ||
| 365 | { label: "确认次数", field: "fieldLength", width: 96, align: 'right' }, | ||
| 366 | { label: "结果确认人", field: "updateUserName", width: 120 }, | ||
| 367 | { label: "确认时间", field: "updateTime", width: TableColumnWidth.DATETIME }, | ||
| 368 | { | ||
| 369 | label: "结果状态", field: "approveState", width: TableColumnWidth.STATE, align: 'center', type: "tag", getName: (scope) => { | ||
| 370 | return filterVal(scope.row.approveState, 'approveState'); | ||
| 371 | } | ||
| 372 | }, | ||
| 373 | ], | ||
| 374 | loading: false, | ||
| 375 | data: datas || [], | ||
| 376 | page: { | ||
| 377 | type: "normal", | ||
| 378 | rows: 0, | ||
| 379 | ...page.value, | ||
| 380 | }, | ||
| 381 | actionInfo: { | ||
| 382 | label: "操作", | ||
| 383 | type: "btn", | ||
| 384 | width: 100, | ||
| 385 | btns: (scope) => { | ||
| 386 | let row = scope.row, btnArr: any = [ | ||
| 387 | { label: "查看结果", value: "path" }, | ||
| 388 | ]; | ||
| 389 | // if (row.approveState == 'Y') { | ||
| 390 | // if (row.listingStatus == 'Y') { | ||
| 391 | // btnArr.splice(0, 0, { label: "详情", value: "detail" }); | ||
| 392 | // } else { | ||
| 393 | // btnArr.splice(0, 0, { label: "编辑", value: "edit" }, { label: "详情", value: "detail" }, { label: "删除", value: "delete" }); | ||
| 394 | // } | ||
| 395 | // } else { | ||
| 396 | // if (row.approveState == 'A') { | ||
| 397 | // btnArr.splice(0, 0, { label: "详情", value: "detail" }); | ||
| 398 | // } else { | ||
| 399 | // btnArr.splice(0, 0, { label: "编辑", value: "edit" }, { label: "详情", value: "detail" }, { label: "删除", value: "delete" }); | ||
| 400 | // } | ||
| 401 | // } | ||
| 402 | return btnArr; | ||
| 403 | }, | ||
| 404 | }, | ||
| 405 | }); | ||
| 406 | |||
| 407 | const getTableData = () => { | ||
| 408 | tableInfo.value.loading = true; | ||
| 409 | getListingList( | ||
| 410 | Object.assign({}, searchItemValue.value, { | ||
| 411 | pageIndex: page.value.curr, | ||
| 412 | pageSize: page.value.limit, | ||
| 413 | }) | ||
| 414 | ).then((res: any) => { | ||
| 415 | tableInfo.value.loading = false; | ||
| 416 | tableInfo.value.data = res.data.records || []; | ||
| 417 | tableInfo.value.page.curr = res.data.pageIndex; | ||
| 418 | tableInfo.value.page.limit = res.data.pageSize; | ||
| 419 | tableInfo.value.page.rows = res.data.totalRows; | ||
| 420 | }) | ||
| 421 | .catch((res) => { | ||
| 422 | tableInfo.value.loading = false; | ||
| 423 | }); | ||
| 424 | }; | ||
| 425 | |||
| 426 | const tableBtnClick = (scope, btn) => { | ||
| 427 | const type = btn.value; | ||
| 428 | const row = scope.row; | ||
| 429 | currTableData.value = row; | ||
| 430 | if (type == "path") { | ||
| 431 | toPath(type); | ||
| 432 | } else if (type === "delete") { | ||
| 433 | open("此操作将永久删除,是否继续?", "warning"); | ||
| 434 | } | ||
| 435 | }; | ||
| 436 | |||
| 437 | const toPath = (type) => { | ||
| 438 | router.push({ | ||
| 439 | name: "taskDetail", | ||
| 440 | query: { | ||
| 441 | guid: currTableData.value.guid, | ||
| 442 | name: currTableData.value.damName, | ||
| 443 | type | ||
| 444 | }, | ||
| 445 | }); | ||
| 446 | } | ||
| 447 | |||
| 448 | const tablePageChange = (info) => { | ||
| 449 | page.value.curr = Number(info.curr); | ||
| 450 | page.value.limit = Number(info.limit); | ||
| 451 | tableInfo.value.page.limit = page.value.limit; | ||
| 452 | tableInfo.value.page.curr = page.value.curr; | ||
| 453 | getTableData(); | ||
| 454 | }; | ||
| 455 | |||
| 456 | const open = (msg, type, isBatch = false) => { | ||
| 457 | ElMessageBox.confirm(msg, "提示", { | ||
| 458 | confirmButtonText: "确定", | ||
| 459 | cancelButtonText: "取消", | ||
| 460 | type: type, | ||
| 461 | }).then(() => { | ||
| 462 | const guids = [currTableData.value.guid]; | ||
| 463 | listingDelete(guids).then((res: any) => { | ||
| 464 | if (res.code == proxy.$passCode) { | ||
| 465 | getFirstPageData(); | ||
| 466 | ElMessage({ | ||
| 467 | type: "success", | ||
| 468 | message: "删除成功", | ||
| 469 | }); | ||
| 470 | } else { | ||
| 471 | ElMessage({ | ||
| 472 | type: "error", | ||
| 473 | message: res.msg, | ||
| 474 | }); | ||
| 475 | } | ||
| 476 | }).catch((res) => { | ||
| 477 | tableInfo.value.loading = false; | ||
| 478 | }); | ||
| 479 | }); | ||
| 480 | }; | ||
| 481 | |||
| 482 | const getFirstPageData = () => { | ||
| 483 | page.value.curr = 1 | ||
| 484 | tableInfo.value.page.curr = 1; | ||
| 485 | getTableData(); | ||
| 486 | } | ||
| 487 | |||
| 488 | onActivated(() => { | ||
| 489 | if (assetStore.isRefresh) {//如果是首次加载,则不需要调用 | ||
| 490 | getFirstPageData(); | ||
| 491 | assetStore.set(false); | ||
| 492 | } | ||
| 493 | }) | ||
| 494 | |||
| 495 | onBeforeMount(() => { | ||
| 496 | |||
| 497 | }) | ||
| 498 | |||
| 499 | </script> | ||
| 500 | |||
| 501 | <template> | ||
| 502 | <div class="container_wrap" v-if="tableInfo.data.length"> | ||
| 503 | <div class="table_tool_wrap"> | ||
| 504 | <div class="table_title">分类分级任务</div> | ||
| 505 | </div> | ||
| 506 | <div class="table_panel_wrap"> | ||
| 507 | <Table :tableInfo="tableInfo" @tableBtnClick="tableBtnClick" @tablePageChange="tablePageChange" /> | ||
| 508 | </div> | ||
| 509 | </div> | ||
| 510 | <div class="container_wrap" v-else> | ||
| 511 | <div class="card-noData"> | ||
| 512 | <img src="@/assets/images/no-data.png" :style="{ width: '96px', height: '96px' }" /> | ||
| 513 | <p>暂无分类分级任务,<span class="text_btn" @click="toPath('add')">去新建</span></p> | ||
| 514 | </div> | ||
| 515 | </div> | ||
| 516 | </template> | ||
| 517 | |||
| 518 | <style scoped lang="scss"> | ||
| 519 | .table_tool_wrap { | ||
| 520 | width: 100%; | ||
| 521 | height: 40px !important; | ||
| 522 | padding: 0 8px; | ||
| 523 | |||
| 524 | .table_title { | ||
| 525 | height: 40px; | ||
| 526 | line-height: 40px; | ||
| 527 | font-weight: 600; | ||
| 528 | font-size: 16px; | ||
| 529 | color: #212121; | ||
| 530 | } | ||
| 531 | } | ||
| 532 | |||
| 533 | .table_panel_wrap { | ||
| 534 | width: 100%; | ||
| 535 | height: calc(100% - 40px); | ||
| 536 | padding: 0px 8px 0; | ||
| 537 | } | ||
| 538 | |||
| 539 | .card-noData { | ||
| 540 | position: absolute; | ||
| 541 | top: 50%; | ||
| 542 | left: 50%; | ||
| 543 | transform: translate(-50%, -50%); | ||
| 544 | display: flex; | ||
| 545 | flex-direction: column; | ||
| 546 | align-items: center; | ||
| 547 | } | ||
| 548 | </style> |
-
Please register or sign in to post a comment