qb 1 year ago
parent
commit
3b3f0a7a67
  1. 192
      npminstall-debug.log
  2. 39
      src/api/aftersales/aftersalesWorkOrder.js
  3. 7
      src/api/distribution/distributionParcelList.js
  4. 163
      src/api/distribution/packageNodeSearch.js
  5. 3
      src/components/tablecmt/tablecmt.vue
  6. 162
      src/option/aftersales/vueTvemp.js
  7. 32
      src/router/views/index.js
  8. 47
      src/utils/util.js
  9. 1068
      src/views/aftersales/aftersalesWorkOrder.vue
  10. 119
      src/views/aftersales/aftersalesWorkOrderAdd.vue
  11. 87
      src/views/aftersales/aftersalesWorkOrderInfo.vue
  12. 23
      src/views/aftersales/aftersalesWorkOrderend.vue
  13. 50
      src/views/aftersales/aftersalesWorkOrdermodify.vue
  14. 2
      src/views/distribution/deliverylist/distributionDeliveryListdis.vue
  15. 18
      src/views/distribution/inventory/distrilbutionBillLadingList.vue
  16. 70
      src/views/distribution/inventory/distrilbutionBillLadingView.vue
  17. 358
      src/views/distribution/signdetail/packageNodeSearch.vue
  18. 477
      src/views/supervise/IndicatorList.vue
  19. 49
      src/views/warehouse/parcelList/distributionParcelList.vue
  20. 4
      vite.config.js
  21. 2000
      yarn.lock

192
npminstall-debug.log

@ -1,192 +0,0 @@
{
root: 'F:\\物流\\logpm_page',
registry: 'https://registry.npmmirror.com',
pkgs: [],
production: false,
cacheStrict: false,
cacheDir: null,
env: {
npm_config_registry: 'https://registry.npmmirror.com',
npm_config_argv: '{"remain":[],"cooked":["--fix-bug-versions","--china","--userconfig=C:\\\\Users\\\\筱峰\\\\.cnpmrc","--disturl=https://npmmirror.com/mirrors/node","--registry=https://registry.npmmirror.com"],"original":["--fix-bug-versions","--china","--userconfig=C:\\\\Users\\\\筱峰\\\\.cnpmrc","--disturl=https://npmmirror.com/mirrors/node","--registry=https://registry.npmmirror.com"]}',
npm_config_user_agent: 'npminstall/7.5.2 npm/? node/v18.16.0 win32 x64',
NODE: 'D:\\nodejs\\node.exe',
npm_node_execpath: 'D:\\nodejs\\node.exe',
npm_execpath: 'C:\\Users\\筱峰\\AppData\\Roaming\\npm\\node_modules\\cnpm\\node_modules\\npminstall\\bin\\install.js',
npm_config_userconfig: 'C:\\Users\\筱峰\\.cnpmrc',
npm_config_disturl: 'https://npmmirror.com/mirrors/node',
npm_config_r: 'https://registry.npmmirror.com',
COREPACK_NPM_REGISTRY: 'https://registry.npmmirror.com',
NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node',
NVM_NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node',
PHANTOMJS_CDNURL: 'https://cdn.npmmirror.com/binaries/phantomjs',
CHROMEDRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/chromedriver',
OPERADRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/operadriver',
CYPRESS_DOWNLOAD_PATH_TEMPLATE: 'https://cdn.npmmirror.com/binaries/cypress/${version}/${platform}-${arch}/cypress.zip',
ELECTRON_MIRROR: 'https://cdn.npmmirror.com/binaries/electron/',
ELECTRON_BUILDER_BINARIES_MIRROR: 'https://cdn.npmmirror.com/binaries/electron-builder-binaries/',
SASS_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-sass',
SWC_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-swc',
NWJS_URLBASE: 'https://cdn.npmmirror.com/binaries/nwjs/v',
PUPPETEER_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/chrome-for-testing',
PUPPETEER_DOWNLOAD_BASE_URL: 'https://cdn.npmmirror.com/binaries/chrome-for-testing',
PLAYWRIGHT_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/playwright',
SENTRYCLI_CDNURL: 'https://cdn.npmmirror.com/binaries/sentry-cli',
SAUCECTL_INSTALL_BINARY_MIRROR: 'https://cdn.npmmirror.com/binaries/saucectl',
RE2_DOWNLOAD_MIRROR: 'https://cdn.npmmirror.com/binaries/node-re2',
RE2_DOWNLOAD_SKIP_PATH: 'true',
PRISMA_ENGINES_MIRROR: 'https://cdn.npmmirror.com/binaries/prisma',
npm_config_better_sqlite3_binary_host: 'https://cdn.npmmirror.com/binaries/better-sqlite3',
npm_config_keytar_binary_host: 'https://cdn.npmmirror.com/binaries/keytar',
npm_config_sharp_binary_host: 'https://cdn.npmmirror.com/binaries/sharp',
npm_config_sharp_libvips_binary_host: 'https://cdn.npmmirror.com/binaries/sharp-libvips',
npm_config_robotjs_binary_host: 'https://cdn.npmmirror.com/binaries/robotjs',
npm_rootpath: 'F:\\物流\\logpm_page',
INIT_CWD: 'F:\\物流\\logpm_page',
npm_config_cache: 'C:\\Users\\筱峰\\.npminstall_tarball'
},
binaryMirrors: {
ENVS: {
COREPACK_NPM_REGISTRY: 'https://registry.npmmirror.com',
NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node',
NVM_NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node',
PHANTOMJS_CDNURL: 'https://cdn.npmmirror.com/binaries/phantomjs',
CHROMEDRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/chromedriver',
OPERADRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/operadriver',
CYPRESS_DOWNLOAD_PATH_TEMPLATE: 'https://cdn.npmmirror.com/binaries/cypress/${version}/${platform}-${arch}/cypress.zip',
ELECTRON_MIRROR: 'https://cdn.npmmirror.com/binaries/electron/',
ELECTRON_BUILDER_BINARIES_MIRROR: 'https://cdn.npmmirror.com/binaries/electron-builder-binaries/',
SASS_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-sass',
SWC_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-swc',
NWJS_URLBASE: 'https://cdn.npmmirror.com/binaries/nwjs/v',
PUPPETEER_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/chrome-for-testing',
PUPPETEER_DOWNLOAD_BASE_URL: 'https://cdn.npmmirror.com/binaries/chrome-for-testing',
PLAYWRIGHT_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/playwright',
SENTRYCLI_CDNURL: 'https://cdn.npmmirror.com/binaries/sentry-cli',
SAUCECTL_INSTALL_BINARY_MIRROR: 'https://cdn.npmmirror.com/binaries/saucectl',
RE2_DOWNLOAD_MIRROR: 'https://cdn.npmmirror.com/binaries/node-re2',
RE2_DOWNLOAD_SKIP_PATH: 'true',
PRISMA_ENGINES_MIRROR: 'https://cdn.npmmirror.com/binaries/prisma',
npm_config_better_sqlite3_binary_host: 'https://cdn.npmmirror.com/binaries/better-sqlite3',
npm_config_keytar_binary_host: 'https://cdn.npmmirror.com/binaries/keytar',
npm_config_sharp_binary_host: 'https://cdn.npmmirror.com/binaries/sharp',
npm_config_sharp_libvips_binary_host: 'https://cdn.npmmirror.com/binaries/sharp-libvips',
npm_config_robotjs_binary_host: 'https://cdn.npmmirror.com/binaries/robotjs'
},
'@ali/s2': { host: 'https://cdn.npmmirror.com/binaries/looksgood-s2' },
sharp: { replaceHostFiles: [Array], replaceHostMap: [Object] },
'@tensorflow/tfjs-node': {
replaceHostFiles: [Array],
replaceHostRegExpMap: [Object],
replaceHostMap: [Object]
},
cypress: {
host: 'https://cdn.npmmirror.com/binaries/cypress',
newPlatforms: [Object]
},
'utf-8-validate': {
host: 'https://cdn.npmmirror.com/binaries/utf-8-validate/v{version}'
},
xprofiler: {
remote_path: './xprofiler/v{version}/',
host: 'https://cdn.npmmirror.com/binaries'
},
leveldown: { host: 'https://cdn.npmmirror.com/binaries/leveldown/v{version}' },
couchbase: { host: 'https://cdn.npmmirror.com/binaries/couchbase/v{version}' },
gl: { host: 'https://cdn.npmmirror.com/binaries/gl/v{version}' },
sqlite3: {
host: 'https://cdn.npmmirror.com/binaries/sqlite3',
remote_path: 'v{version}'
},
'@journeyapps/sqlcipher': { host: 'https://cdn.npmmirror.com/binaries' },
grpc: {
host: 'https://cdn.npmmirror.com/binaries',
remote_path: '{name}/v{version}'
},
'grpc-tools': { host: 'https://cdn.npmmirror.com/binaries' },
wrtc: {
host: 'https://cdn.npmmirror.com/binaries',
remote_path: '{name}/v{version}'
},
fsevents: { host: 'https://cdn.npmmirror.com/binaries/fsevents' },
nodejieba: { host: 'https://cdn.npmmirror.com/binaries/nodejieba' },
canvas: { host: 'https://cdn.npmmirror.com/binaries/canvas' },
'skia-canvas': { host: 'https://cdn.npmmirror.com/binaries/skia-canvas' },
'flow-bin': {
replaceHost: 'https://github.com/facebook/flow/releases/download/v',
host: 'https://cdn.npmmirror.com/binaries/flow/v'
},
'jpegtran-bin': {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/jpegtran-bin'
},
'cwebp-bin': {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/cwebp-bin'
},
'zopflipng-bin': {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/zopflipng-bin'
},
'optipng-bin': {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/optipng-bin'
},
mozjpeg: {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/mozjpeg-bin'
},
gifsicle: {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/gifsicle-bin'
},
'pngquant-bin': {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/pngquant-bin',
replaceHostMap: [Object]
},
'pngcrush-bin': {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/pngcrush-bin'
},
'jpeg-recompress-bin': {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/jpeg-recompress-bin'
},
'advpng-bin': {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/advpng-bin'
},
'pngout-bin': {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/pngout-bin'
},
'jpegoptim-bin': {
replaceHost: [Array],
host: 'https://cdn.npmmirror.com/binaries/jpegoptim-bin'
},
argon2: { host: 'https://cdn.npmmirror.com/binaries/argon2' },
'ali-zeromq': { host: 'https://cdn.npmmirror.com/binaries/ali-zeromq' },
'ali-usb_ctl': { host: 'https://cdn.npmmirror.com/binaries/ali-usb_ctl' },
'gdal-async': { host: 'https://cdn.npmmirror.com/binaries/node-gdal-async' }
},
forbiddenLicenses: null,
flatten: false,
proxy: undefined,
prune: false,
disableFallbackStore: false,
workspacesMap: Map(0) {},
enableWorkspace: false,
workspaceRoot: 'F:\\物流\\logpm_page',
isWorkspaceRoot: true,
isWorkspacePackage: false,
strictSSL: true,
ignoreScripts: false,
ignoreOptionalDependencies: false,
detail: false,
forceLinkLatest: false,
trace: false,
engineStrict: false,
registryOnly: false,
client: false,
autoFixVersion: [Function: autoFixVersion]
}

39
src/api/aftersales/aftersalesWorkOrder.js

@ -502,4 +502,43 @@ export const $_aftersalesCustomerMallsetDefault = (data) => {
method: 'post',
data
})
}
// 财务入账填写
export const $_updateFinanceTime = (data) => {
return request({
url: '/api/logpm-aftersales/aftersalesWorkOrder/updateFinanceTime',
method: 'post',
data
})
}
// 创建指派商场
export const $_basicdataTripartiteMall = (params) => {
return request({
url: '/api/logpm-basicdata/basicdataTripartiteMall/getOwn',
method: 'get',
params
})
}
export const $_aftersalesCustomerMallgetByClientId = (params) => {
return request({
url: '/api/logpm-aftersales/aftersalesCustomerMall/getByClientId',
method: 'get',
params
})
}
// 超时导出
export const $_exportaftersalesOvertimeFine = (params) => {
return request({
url: '/api/logpm-aftersales/aftersalesOvertimeFine/export-aftersalesOvertimeFine',
method: 'get',
params,
responseType: 'blob',
})
}

7
src/api/distribution/distributionParcelList.js

@ -130,14 +130,11 @@ export const getPackageList = params => {
});
};
export const searchNode = (searchType,packageCode) => {
export const $_searchNode = (params) => {
return request({
url: '/api/logpm-distribution/distributionParcelList/searchNode',
method: 'get',
params: {
searchType,
packageCode
},
params
});
};

163
src/api/distribution/packageNodeSearch.js

@ -0,0 +1,163 @@
export const columnList = [
// {
// prop: '',
// label: '复选框',
// type: 0,
// width: 55,
// fixed: true,
// },
{
prop: '',
label: '序号',
type: 12,
values: '',
width: 55,
fixed: true,
},
{
prop: 'warehouseName',
label: '仓库名称',
type: 1,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'waybillNumber',
label: '运单号',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'orderCode',
label: '订单自编号',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'orderPackageCode',
label: '包条码',
type: 1,
values: '',
width: '180',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'nodeName',
label: '操作名称',
type: 1,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'allocationName',
label: '所在库位',
type: 1,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'trayName',
label: '托盘名称',
type: 1,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'tranNumber',
label: '车次号',
type: 1,
values: '',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'quantity',
label: '数量',
type: 1,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'nodeControlsUserName',
label: '操作人名称',
type: 1,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'nodeTime',
label: '操作时间',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'description',
label: '操作描述',
type: 1,
values: '',
width: '200',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
// {
// prop: 'createUserName',
// label: '操作',
// type: 6,
// values: '',
// width: '100',
// checkarr: [],
// fixed: 'right',
// sortable: false,
// },
]

3
src/components/tablecmt/tablecmt.vue

@ -39,7 +39,8 @@
show-overflow-tooltip
>
<template #header>
<!-- <el-text class="mx-1">{{ column.label }}</el-text> -->
<el-text v-if="column.type == 1 || column.type == 0 || column.type == 12 ||column.type == 6" class="mx-1"></el-text>
<el-input
v-if="column.type == 2 || column.type == 13"
v-model.trim="column.values"

162
src/option/aftersales/vueTvemp.js

@ -135,11 +135,43 @@ export const columnList = [
sortable: true,
head: false,
},
{
prop: 'totalAmount',
label: '赔款金额',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'entryTime',
label: '财务入账时间',
type: 4,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'operator',
label: '操作人',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'deliverGoodsTime',
label: '送货时间',
type: 2,
type: 4,
values: '',
width: '150',
checkarr: [],
@ -151,7 +183,7 @@ export const columnList = [
{
prop: 'discoveryTime',
label: '发现时间',
type: 2,
type: 4,
values: '',
width: '150',
checkarr: [],
@ -162,7 +194,7 @@ export const columnList = [
{
prop: 'warehousingTime',
label: '入库时间',
type: 2,
type: 4,
values: '',
width: '150',
checkarr: [],
@ -174,7 +206,7 @@ export const columnList = [
{
prop: 'deliveryTime',
label: '配送时间',
type: 2,
type: 4,
values: '',
width: '150',
checkarr: [],
@ -222,7 +254,7 @@ export const columnList = [
{
prop: 'overTime',
label: '完结时间',
type: 2,
type: 4,
values: '',
width: '150',
checkarr: [],
@ -233,7 +265,7 @@ export const columnList = [
{
prop: 'problemDescription',
label: '异常问题描述',
type: 2,
type: 1,
values: '',
width: '150',
checkarr: [],
@ -252,21 +284,10 @@ export const columnList = [
// sortable: true,
// head: false,
// },
// {
// prop: 'processNumber',
// label: '钉钉流程号',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
{
prop: 'reviewedBy',
label: '审核人',
type: 2,
prop: 'processNumber',
label: '钉钉流程号',
type: 1,
values: '',
width: '150',
checkarr: [],
@ -275,8 +296,8 @@ export const columnList = [
head: false,
},
{
prop: 'auditTime',
label: '审核时间',
prop: 'reviewedBy',
label: '审核',
type: 2,
values: '',
width: '150',
@ -286,9 +307,9 @@ export const columnList = [
head: false,
},
{
prop: 'entryTime',
label: '财务入账时间',
type: 2,
prop: 'auditTime',
label: '审核时间',
type: 4,
values: '',
width: '150',
checkarr: [],
@ -296,10 +317,12 @@ export const columnList = [
sortable: true,
head: false,
},
{
prop: 'remarks',
label: '备注',
type: 2,
type: 1,
values: '',
width: '150',
checkarr: [],
@ -791,7 +814,7 @@ export const timeoutList = [
head: false,
},
{
prop: 'workOrderTypeName',
prop: 'workOrderTypeNameS',
label: '异常类型',
type: 3,
values: '',
@ -802,7 +825,7 @@ export const timeoutList = [
head: false,
},
{
prop: 'discoveryNodeName',
prop: 'discoveryNodeNameS',
label: '发现节点名称',
type: 3,
values: '',
@ -817,7 +840,7 @@ export const timeoutList = [
{
prop: 'money',
label: '金额',
type: 2,
type: 1,
values: '',
width: '130',
checkarr: [],
@ -830,7 +853,7 @@ export const timeoutList = [
{
prop: 'timeout',
label: '超时时间',
type: 2,
type: 4,
values: '',
width: '130',
checkarr: [],
@ -962,4 +985,81 @@ export const CustomerColumnList = [
sortable: false,
},
]
export const MallassignmentColumnList = [
{
prop: '',
label: '序号',
type: 12,
values: '',
width: 55,
fixed: true,
},
{
prop: 'clientName',
label: '商场名称',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'customerServiceName',
label: '客服名称',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'createTime',
label: '创建时间',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: '',
label: '操作',
type: 6,
values: '',
width: '120',
checkarr: [],
fixed: 'right',
sortable: false,
},
]
export const customerserviceColumnList = [
{
prop: 'customerServiceName',
label: '客服名称',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
]

32
src/router/views/index.js

@ -1247,22 +1247,22 @@ export default [
],
},
{
path: '/aftersales/aftersalesWorkOrder',
component: Layout,
redirect: '/aftersales/aftersalesWorkOrder',
children: [
{
meta: {
i18n: 'dict',
keepAlive: false,
},
path: '/aftersales/aftersalesWorkOrder',
name: '工单',
component: () => import('@/views/aftersales/aftersalesWorkOrder.vue'),
},
],
},
// {
// path: '/aftersales/aftersalesWorkOrder',
// component: Layout,
// redirect: '/aftersales/aftersalesWorkOrder',
// children: [
// {
// meta: {
// i18n: 'dict',
// keepAlive: false,
// },
// path: '/aftersales/aftersalesWorkOrder',
// name: '工单',
// component: () => import('@/views/aftersales/aftersalesWorkOrder.vue'),
// },
// ],
// },
{
path: '/aftersales/aftersalesWorkOrderAdd',
component: Layout,

47
src/utils/util.js

@ -507,31 +507,44 @@ export const setNodeHeight = (_node, _height = '') => {
* @param {object} details details (搜索参数)
*/
//
const updateDetailQuery = (index, propName, obj) => {
// 更新或删除查询参数
// 更新 details.query 对象的属性
const updateDetailQuery = (index, propName, detailsQuery) => {
if (index) {
obj[propName] = index;
} else {
delete obj[propName];
detailsQuery[propName] = index; // 设置属性值
} else {
if(detailsQuery.hasOwnProperty(propName)) {
delete detailsQuery[propName]; // 确保删除属性
} else {
}
}
};
// 处理 row 属性并更新 details.query
export const processRowProperty = (index, row, details) => {
const nameRegex = /(\w+)NameS$/; // 捕获以'NameS'结尾的属性名
const match = row.prop.match(nameRegex);
console.log(match, '获取到的参数');
// 如果属性以'NameS'结尾,则更新相应的查询参数
if (match) {
const basePropName = match[1]; // 获取不包含'Name'的属性名
updateDetailQuery(index, basePropName, details.query);
console.log(`Processing: ${row.prop}`);
if (typeof row.prop === 'string') {
const nameRegex = /([a-zA-Z0-9_]+)NameS$/;
const match = row.prop.match(nameRegex);
if (match) {
const basePropName = match[1];
const fullPropNameS = basePropName + 'NameS';
if (details.query.hasOwnProperty(fullPropNameS)) {
delete details.query[fullPropNameS];
} else {
}
updateDetailQuery(index, basePropName, details.query);
} else {
updateDetailQuery(index, row.prop, details.query);
}
} else {
updateDetailQuery(index, row.prop, details.query);
}
// 如果提供的index为假值,从query中删除原始属性
if (!index) {
delete details.query[row.prop];
}
};
/**
* 数字运算主要用于小数点精度问题
* [see](https://juejin.im/post/6844904066418491406#heading-12)

1068
src/views/aftersales/aftersalesWorkOrder.vue

File diff suppressed because it is too large Load Diff

119
src/views/aftersales/aftersalesWorkOrderAdd.vue

@ -1,5 +1,7 @@
<template>
<el-card class="box-card">
<div v-loading="Addloading"
element-loading-text="Loading...">
<el-card class="box-card" >
<el-tabs type="border-card" class="topClass" @tab-change="TopChange">
<el-tab-pane label="订单填写"></el-tab-pane>
<el-tab-pane label="零担填写"></el-tab-pane>
@ -69,7 +71,6 @@
v-model="item.packageCode"
placeholder="请输入包条码"
clearable
:rows="2"
@change="ChangePackageInfo(item.packageCode, index)"
/>
</el-tooltip>
@ -85,7 +86,6 @@
<el-input
v-model="item.waybillNumber"
placeholder="请输入运单号"
@change="ChangePackageInfo(item.packageCode, index)"
/>
</el-tooltip>
</el-form-item>
@ -149,12 +149,33 @@
groundlineType == 3 || groundlineType == 5 || groundlineType == 7 || groundlineType == 6
"
>
<el-input
<!-- <el-input
v-model="Indexform.trainNumber"
placeholder="请输入车次号(干线卸车环节)"
placeholder="请输入车次号"
clearable
@change="DeliveryTrainnumber"
/>
/> -->
<el-select
v-model="Indexform.trainNumber"
filterable
allow-create
default-first-option
:reserve-keyword="false"
placeholder="请选择车次号"
@change="DeliveryTrainnumber"
>
<el-option
v-for="item in TrainnumberList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item
@ -178,7 +199,13 @@
prop="deliveryDriver"
v-if="groundlineType == 5 || groundlineType == 7 || groundlineType == 6"
>
<el-select
<el-input
v-model="Indexform.deliveryDriver"
placeholder="请输入配送司机"
clearable
/>
<!-- <el-select
v-model="Indexform.deliveryDriver"
filterable
default-first-option
@ -192,7 +219,7 @@
:label="item.driverName + '-' + item.trainNumber"
:value="item.id"
/>
</el-select>
</el-select> -->
</el-form-item>
<el-form-item prop="vehicleRoute" label="车辆路线" v-if="groundlineType == 3">
@ -597,6 +624,7 @@
</span>
</template>
</el-dialog>
</div>
</template>
<script setup>
@ -626,6 +654,7 @@ const Indexform = ref({
discoveryNode: '1',
}); //
const ProcessingResults = ref([]); //
const Addloading= ref(false)
const IndexException = ref([]); //
const ZFname = ref(''); //
const IndexForm = ref(null); //ref
@ -637,10 +666,13 @@ const dialogImageUrl = ref(null); //图片
const dialogVisible = ref(null); //
const groundlineSet = ref(true); //线
const TotalClaimAmount = ref(0); //
const TrainnumberList=ref([]);//
const TrainnumberMax=ref([]);//
const groundlineType = ref(null); //线
const Inputbox = ref(true); //
const ShortageState = ref(false); //
const fleeingState = ref(false); //
const DeliveryprocessData = ref([]);//
const ShortageList = ref([]); //
const fleeingList = ref([]); //
const valueStrictly = ref();
@ -651,8 +683,10 @@ const personResponsibleList = ref([]); //责任人列表
const ZFdialog = ref(false); //
const companyProportion = ref(100); //
const identifying = ref(1); //
const MainlineUnloadingData=ref([]);//线
const dialogHistoricalPackage = ref(false); //
const HistoricalPackageList = ref([]); //
const DeliveryprocessTime = ref([]);//
const HistorIndex = ref(0); //
const NumberPackages = ref(0); //
const dialogImgList = ref(false); //
@ -894,6 +928,27 @@ const DiscoveringNodesChange = val => {
//
function DeliveryTrainnumber() {
if(groundlineType.value == 5 || groundlineType.value == 6){
let dataInfo= DeliveryprocessData.value.find(res=>res.trainNumber == Indexform.value.trainNumber)
if(dataInfo){
console.log(dataInfo,'车次号筛选出来的数据');
Indexform.value.deliveryTime = dataInfo.taskTime; //
Indexform.value.deliveryDriver = dataInfo.driverName; //
}
}
if(groundlineType.value == 3){
let dataMain= MainlineUnloadingData.value.find(res=>res.trainNumber ==Indexform.value.trainNumber )
if(dataMain){
Indexform.value.vehicleRoute = dataMain.vehicleRoute; //线
}
}
return
console.log(Indexform.value.trainNumber,'车次号');
if (!Indexform.value.trainNumber && !Indexform.value.deliveryTime) {
Indexform.value.deliveryTime = null;
Indexform.value.deliveryDriver = '';
@ -1142,13 +1197,13 @@ const ConfirmForm = () => {
console.log(DataSubmit['decreaseImageEntityList'], '处理好的图片');
//
if (Indexform.value.deliveryDriver) {
console.log(DeliveryDriver.value, '当前全部司机');
console.log(Indexform.value.deliveryDriver, '选择的司机信息');
Indexform.value.deliveryDriver = DeliveryDriver.value.find(
item => item.id == Indexform.value.deliveryDriver
).driverName;
}
// if (Indexform.value.deliveryDriver) {
// console.log(DeliveryDriver.value, '');
// console.log(Indexform.value.deliveryDriver, '');
// Indexform.value.deliveryDriver = DeliveryDriver.value.find(
// item => item.id == Indexform.value.deliveryDriver
// ).driverName;
// }
console.log(Indexform.value.deliveryDriver, '筛选出来的司机');
@ -1347,12 +1402,13 @@ const ConfirmForm = () => {
delete DataSubmit.processor; //
console.log(DataSubmit, '处理好的数据');
// stringify
Addloading.value=true;//
$_submit(DataSubmit)
.then(res => {
if (res.data.code == 200) {
ElMessage({
message: res.data.msg,
type: 'success',
type: 'success'
});
Indexform.value = {}; //
$store.commit('DEL_TAG_CURRENT'); //
@ -1362,6 +1418,8 @@ const ConfirmForm = () => {
.catch(res => {
console.log(res, '错误信息');
ElMessage.error('提交失败,请刷新页面重新尝试');
}).finally(()=>{
Addloading.value=false;//
});
} else {
console.log('表单验证失败');
@ -1545,6 +1603,33 @@ const ChangePackageInfo = (val, index) => {
console.log(res, '包件信息');
console.log(res.data.data, '包件信息');
if (res.data.data.length) {
if(groundlineType.value == 5 || groundlineType.value == 6){
//
//
//driverName
//taskTime
//trainNumber
//vehicleName
res.data.data.forEach(item=>{
item.deliver.forEach(itemChid=>{
TrainnumberList.value.push({label:itemChid.trainNumber,value:itemChid.trainNumber})//
DeliveryprocessData.value.push(itemChid)
})
})
//
}
//
if(groundlineType.value == 3){
res.data.data.forEach(item=>{
item.trunklines.forEach(itemChid=>{
TrainnumberList.value.push({label:itemChid.trainNumber,value:itemChid.trainNumber})//
MainlineUnloadingData.value.push(itemChid)
})
})
}
console.log(NumberPackages.value, 'NumberPackages.value ');
console.log(PackageInfo.value, 'PackageInfo.value');
const packageData = res.data.data[0];

87
src/views/aftersales/aftersalesWorkOrderInfo.vue

@ -487,7 +487,7 @@
<el-tabs
type="border-card"
class="demo-tabs el-endtabs"
v-if="UserPermissions != '仓库客服'"
v-if="CompensationParty.length"
>
<el-tab-pane>
<template #label>
@ -553,7 +553,7 @@
</div>
<div class="sk_input" v-if="item.state == 1"></div>
<!-- <div class="sk_input" v-if="item.state == 1"></div> -->
<!-- 责任人 -->
<div class="sk_input" v-if="item.state == 0">
<span>责任人</span>
@ -692,12 +692,20 @@
<el-button type="primary" v-if="PermissionButton.Appeal_rejection" @click="AppealRejection"
>申诉驳回</el-button
>
<!-- 待处理确定 -->
<el-button
type="primary"
v-if="PermissionButton.Processing_confirmation"
@click="ResultConfirmation"
>确定</el-button
>
<!-- 仓库客服处理结果确定 -->
<el-button
type="primary"
v-if="PermissionButton.Result_determination"
@click="ResultDetermination"
>确定</el-button
>
</div>
</el-card>
@ -1059,14 +1067,10 @@ const PermissionButton = computed(() => {
warehouseIdState.value, //
Appeal_established: appeal.value && AppealReview.value, //
Appeal_rejection: appeal.value && AppealReview.value, //
Processing_confirmation:(
(UserPermissions.value != '仓库客服' &&
$route.query.RouteIndexs == '0' &&
$route.query.workOrderStatus == '40') ||
(UserPermissions.value != '仓库客服' &&
$route.query.RouteIndexs == '1' &&
$route.query.workOrderStatus == '40') ||
($route.query.RouteIndexs == '2' && $route.query.workOrderStatus == '40')),
Processing_confirmation:(UserPermissions.value != '仓库客服' && $route.query.RouteIndexs == '0' && $route.query.workOrderStatus == '40') || (UserPermissions.value != '仓库客服' &&
$route.query.RouteIndexs == '9' &&
$route.query.workOrderStatus == '40'),//
Result_determination: (UserPermissions.value == '仓库客服' && $route.query.RouteIndexs == '0' && $route.query.workOrderStatus == '21') || (UserPermissions.value == '仓库客服' && $route.query.RouteIndexs == '2' && $route.query.workOrderStatus == '21'),//
};
});
@ -1621,34 +1625,25 @@ const ConfirmReturn = () => {
});
};
//
//
//
const ResultConfirmation = () => {
if (UserPermissions.value == '仓库客服') {
//
let data = {
let data = {
assignList: [],
};
let ID = {};
ID = $route.query.id;
data['assignList'].push(ID);
if ($route.query.workOrderStatus != '30') {
if ($route.query.workOrderStatus != '40') {
ElMessage({
message: '状态错误,已经确认过',
type: 'warning',
});
return;
}
//
console.log(data, '处理好的数据');
pageState.value = true; //
$_updateWorkOrderStatus(data)
//
$_updateManagerConfirmed(data)
.then(res => {
console.log(res, '确定提交存储');
if (res.data.code == 200) {
ElMessage({
message: res.data.msg,
@ -1659,29 +1654,40 @@ const ResultConfirmation = () => {
$router.push({
path: '/aftersales/aftersalesWorkOrder',
});
console.log(res, '处理完毕确定');
})
.catch(res => {})
.finally(() => {
.catch(res => {
console.log(res, '错误信息');
})
.finally(res => {
pageState.value = false; //
});
} else {
//
console.log(data, '处理好的值');
};
//
const ResultDetermination=()=>{
//
let data = {
assignList: [],
};
let ID = {};
ID = $route.query.id;
data['assignList'].push(ID);
if ($route.query.workOrderStatus != '40') {
if ($route.query.workOrderStatus != '21') {
ElMessage({
message: '状态错误,已经确认过',
message: '状态错误',
type: 'warning',
});
return;
}
//
console.log(data, '处理好的数据');
pageState.value = true; //
//
$_updateManagerConfirmed(data)
$_updateWorkOrderStatus(data)
.then(res => {
console.log(res, '确定提交存储');
if (res.data.code == 200) {
ElMessage({
message: res.data.msg,
@ -1692,18 +1698,13 @@ const ResultConfirmation = () => {
$router.push({
path: '/aftersales/aftersalesWorkOrder',
});
console.log(res, '处理完毕确定');
})
.catch(res => {
console.log(res, '错误信息');
})
.finally(res => {
.catch(res => {})
.finally(() => {
pageState.value = false; //
});
//
console.log(data, '处理好的值');
}
};
}
</script>
<style scoped lang="scss">
@ -2262,7 +2263,7 @@ const ResultConfirmation = () => {
justify-content: space-between;
width: 100%;
background-color: #fff;
height: 100%;
:deep(.el-card) {
width: 70%;
}
@ -2607,8 +2608,8 @@ const ResultConfirmation = () => {
}
}
:deep(#avue-view) {
background-color: #fff;
#avue-view {
background-color: #fff !important;
}
:deep(.el_resj) {

23
src/views/aftersales/aftersalesWorkOrderend.vue

@ -403,9 +403,11 @@
</div>
<div class="sk_input">
<span>原因</span>
<el-input v-model="item.reason" placeholder="请填写原因" />
</div>
<div class="sk_input">
<span>金额</span>
<el-input
@input="amountMoney"
:min="0"
@ -415,6 +417,7 @@
</div>
<div class="sk_input" v-if="item.state == 0">
<span>责任人</span>
<el-input
v-model="item.compensationPersonnel"
placeholder="请填写责任人"
@ -422,7 +425,7 @@
:rows="2"
/>
</div>
<div class="sk_input" v-if="item.state == 1"></div>
<!-- <div class="sk_input" v-if="item.state == 0">
<el-input v-model="item.explains" placeholder="请填写说明" />
</div>
@ -572,11 +575,11 @@
>提交</el-button
>
<el-button
v-if="$route.query.index != '0'"
v-if="$route.query.index != '0' && $route.query.RouterState != 'end'"
type="primary"
class="button"
@click="submit(2)"
>保存</el-button
>处理结果保存</el-button
>
<!-- <el-button
@click="DetermineStorage"
@ -881,6 +884,7 @@ import { computeNumber, isNumber, AddressClosed } from '@/utils/util';
import { useStore } from 'vuex';
// vuex
const $store = useStore();
const ZFdialog = ref(false); //
const $route = useRoute();
const $router = useRouter();
@ -1870,8 +1874,8 @@ const submit = async val => {
//
if (routerState.value == 'end') {
ElMessageBox.confirm('是否提交完结信息?', '完结', {
confirmButtonText: 'OK',
cancelButtonText: 'Cancel',
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
@ -2523,6 +2527,15 @@ const CustomerServiceCompleted = () => {
margin: 0 5px;
margin-left: 20px;
width: 20%;
display: flex;
span {
width: 70px;
font-size: 16px;
font-weight: 300;
display: flex;
align-items: center;
justify-content: flex-start;
}
}
.el-button {
border: none;

50
src/views/aftersales/aftersalesWorkOrdermodify.vue

@ -527,13 +527,31 @@
</div>
<div class="el_pkLi">
<div class="sk_input">
<!-- <div class="sk_input">
<el-input
v-model="item.name"
:placeholder="item.state == 0 ? '请填写赔款方' : '请填写受款方'"
:disabled="Processingresults"
/>
<!-- Processingresults表示此刻只能编辑处理结果 -->
Processingresults表示此刻只能编辑处理结果
</div> -->
<div class="sk_input">
<el-form-item label="仓库">
<el-select
v-model="item.warehouseId"
filterable
placeholder="请选择仓库"
:disabled="Processingresults"
>
<el-option
v-for="item in warehouseData"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</div>
<div class="sk_input">
<el-form-item label="原因">
@ -555,23 +573,7 @@
/>
</el-form-item>
</div>
<div class="sk_input" v-if="item.state == 0">
<el-form-item label="仓库">
<el-select
v-model="item.warehouseId"
filterable
placeholder="请选择仓库"
:disabled="Processingresults"
>
<el-option
v-for="item in warehouseData"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</div>
<div class="sk_input" v-if="item.state == 0">
<el-form-item label="责任人">
@ -591,9 +593,9 @@
<div class="sk_input" v-if="item.state == 0">
<!-- <el-input v-model="item.explains" placeholder="请填写说明" /> -->
</div>
<div class="sk_input" v-if="item.state == 1">
<!-- <div class="sk_input" v-if="item.state == 1"> -->
<!-- <el-input v-model="item.explain" placeholder="请填写说明" /> -->
</div>
<!-- </div> -->
<!-- v-if="RouterState != 'Infoedit'" -->
<div class="el_cwBtn">
<el-button type="primary" @click="payremove(item.state, index, item)">
@ -1986,7 +1988,7 @@ const Arbitrationcompleted = () => {
.filter(item => item.state === 0) // 0
.map(item => {
return {
indemnitor: item.name, //
// indemnitor: item.name, //
reason: item.reason, //
money: Number(item.num), //
reasonArbitration: Indexform.value.arbitrate, //
@ -2001,7 +2003,7 @@ const Arbitrationcompleted = () => {
.filter(item => item.state === 1) // 1
.map(item => {
return {
recipient: item.name, //
// recipient: item.name, //
reasonReceivingPayment: item.reason, //
money: Number(item.num), //
workOrderNumber: $route.query.workOrderNumber, //
@ -2013,7 +2015,7 @@ const Arbitrationcompleted = () => {
.join(',')
)
.join(','),
warehouseId: $route.query.warehouseId == '/' ? '' : $route.query.warehouseId, // ID
warehouseId: item.warehouseId, //ID
workOrderId: $route.query.id, //
id: item.id,
};

2
src/views/distribution/deliverylist/distributionDeliveryListdis.vue

@ -854,7 +854,7 @@ export default {
let data = {
deliveryId: scope.row.id,
};
ElMessageBox.confirm('是否取消配送?', 'Warning', {
ElMessageBox.confirm('是否取消配送?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',

18
src/views/distribution/inventory/distrilbutionBillLadingList.vue

@ -257,7 +257,7 @@ import { getDictionaryBiz } from '@/api/system/dict';
import { getToken } from '@/utils/auth';
import dayjs from 'dayjs';
import { downloadXls } from '@/utils/util';
import { ElMessage, ElMessageBox } from 'element-plus'
export default {
data() {
return {
@ -883,6 +883,16 @@ export default {
this.$message.warning('请选择至少一条数据');
return;
}
ElMessageBox.confirm(
'是否取消该任务?',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
//
let data={
billLodingIds:''
@ -897,6 +907,12 @@ export default {
}).finally(()=>{
this.loading=false;//
})
})
.catch(() => {
})
},
//
handleSign(row, num) {

70
src/views/distribution/inventory/distrilbutionBillLadingView.vue

@ -57,6 +57,8 @@
<el-divider>订单列表</el-divider>
<el-tabs type="border-card" v-model="activeTab" @tab-click="handleTabClick">
<el-tab-pane label="订 单 列 表" name="tab2">
<el-button type="primary" icon="Position" @click="Orderexport">订单导出</el-button>
<!-- 列表模块 -->
<tablecmt
:columnList="columnListarrs.ordoption"
@ -87,6 +89,8 @@
</div>
</el-tab-pane>
<el-tab-pane label="包 件 列 表" name="tab3">
<el-button type="primary" icon="Position" @click="Packageexport">包件导出</el-button>
<!-- 列表模块 -->
<tablecmt
:columnList="columnListarrs.wrapoption"
@ -117,6 +121,8 @@
</div>
</el-tab-pane>
<el-tab-pane label="库 存 品 列 表" name="tab4">
<el-button type="primary" icon="Position" @click="Inventoryexport">库存品导出</el-button>
<!-- 列表模块 -->
<tablecmt
:columnList="columnListarrs.inventoryoption"
@ -182,7 +188,11 @@ import option from '@/option/basic/basicPdarecords';
import { mapGetters } from 'vuex';
import { getDictionaryBiz } from '@/api/system/dict';
import dayjs from 'dayjs';
import {getToken} from '@/utils/auth';
import NProgress from 'nprogress';
import {downloadXls} from "@/utils/util";
import {exportBlob} from "@/api/common";
import {dateNow} from "@/utils/date";
export default {
data() {
return {
@ -1334,6 +1344,64 @@ export default {
},
},
methods: {
//
Orderexport(){
let downloadUrl = `/logpm-distribution/distrilbutionBillStock/billOrderDetailExcel?${this.website.tokenHeader}=${getToken()}`;
let values = {
billLadingId:this.$route.query.id
};
this.$confirm("是否导出数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
NProgress.start();
exportBlob(downloadUrl, values).then(res => {
downloadXls(res.data, `订单列表${dateNow()}.xlsx`);
NProgress.done();
})
});
},
//
Packageexport(){
let downloadUrl = `/logpm-distribution/distrilbutionBillStock/billOrderPackExcel?${this.website.tokenHeader}=${getToken()}`;
let values = {
billLadingId:this.$route.query.id
};
this.$confirm("是否导出数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
NProgress.start();
exportBlob(downloadUrl, values).then(res => {
downloadXls(res.data, `包件导出${dateNow()}.xlsx`);
NProgress.done();
})
});
},
//
Inventoryexport(){
let downloadUrl = `/logpm-distribution/distributionDeliveryDetails/billOrderInventoryExcel?${this.website.tokenHeader}=${getToken()}`;
let values = {
billLadingId:this.$route.query.id
};
this.$confirm("是否导出数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
NProgress.start();
exportBlob(downloadUrl, values).then(res => {
downloadXls(res.data, `库存品导出${dateNow()}.xlsx`);
NProgress.done();
})
});
},
beforeOpen(done, type) {
if (['edit', 'view'].includes(type)) {
getDetail(this.form.id).then(res => {

358
src/views/distribution/signdetail/packageNodeSearch.vue

@ -1,107 +1,301 @@
<template>
<basic-container>
<div class="avue-crud">
<el-row v-if="!search" class="el_row_top">
<!-- 查询模块 -->
<el-form :inline="true" :model="query" class="fr-fm el_from_top" >
<div class="fr-fo">
<!-- <el-form-item label="类型:">-->
<!-- <el-select v-model="searchType" placeholder="请选择搜索类型" @change="changetypesof">-->
<!-- <el-option-->
<!-- v-for="item in searchTypeDate"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item :label="title+':'">
<el-input v-model="query.searchCode" :placeholder="'请输入'+title"></el-input>
<div>
<el-row v-if="!search" class="el_row_top">
<!-- 查询模块 -->
<el-form :inline="true" :model="query" class="fr-fm el_from_top">
<div class="fr-fo">
<!-- <el-form-item label="类型:">-->
<!-- <el-select v-model="searchType" placeholder="请选择搜索类型" @change="changetypesof">-->
<!-- <el-option-->
<!-- v-for="item in searchTypeDate"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item :label="title + ':'">
<el-input v-model="query.packageCode" :placeholder="'请输入' + title"></el-input>
</el-form-item>
<el-form-item :label="title + ':'" v-show="show">
<el-input v-model="query.packageCode" :placeholder="'请输入' + title"></el-input>
</el-form-item>
<el-form-item>
</el-form-item>
</div>
<!-- 查询按钮 -->
<el-form-item class="el-btn">
<el-button type="primary" icon="el-icon-search" @click="searchChange"
> </el-button
>
<el-button icon="el-icon-delete" @click="searchReset()"> </el-button>
</el-form-item>
</el-form>
</el-row>
<el-row>
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<!-- <div class="avue-crud__left">-->
<!-- <el-button type="danger" icon="el-icon-download" @click="handleExportInfo" plain-->
<!-- >导出-->
<!-- </el-button>-->
<!-- &lt;!&ndash; v-loading.fullscreen.lock="fullscreenLoading"&ndash;&gt;-->
<!-- <el-button type="danger" icon="el-icon-picture" @click="handlePictureInfo" plain-->
<!-- >导出图片-->
<!-- </el-button>-->
<!-- </div>-->
<!-- 头部右侧按钮模块 -->
<div></div>
<div class="avue-crud__right">
<el-button icon="el-icon-refresh" @click="searchChange" circle></el-button>
<el-button icon="Operation" @click="showdrawer(true)" circle></el-button>
<el-button icon="el-icon-search" @click="searchHide" circle></el-button>
</div>
</div>
<!-- 查询按钮 -->
<el-form-item class="el-btn">
<el-button type="primary" icon="el-icon-search" @click="searchChange"> </el-button>
<el-button icon="el-icon-delete" @click="searchReset()"> </el-button>
</el-form-item>
</el-form>
</el-row>
<el-row>
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<!-- <div class="avue-crud__left">-->
<!-- <el-button type="danger" icon="el-icon-download" @click="handleExportInfo" plain-->
<!-- >导出-->
<!-- </el-button>-->
<!-- &lt;!&ndash; v-loading.fullscreen.lock="fullscreenLoading"&ndash;&gt;-->
<!-- <el-button type="danger" icon="el-icon-picture" @click="handlePictureInfo" plain-->
<!-- >导出图片-->
<!-- </el-button>-->
<!-- </div>-->
<!-- 头部右侧按钮模块 -->
<div class="avue-crud__right">
<el-button icon="el-icon-refresh" @click="searchChange" circle></el-button>
<el-button icon="Operation" @click="showdrawer(true)" circle></el-button>
<el-button icon="el-icon-search" @click="searchHide" circle></el-button>
</div>
</div>
</el-row>
</div>
<el-row class="el_list">
<!-- 列表模块 -->
<tablecmt
:columnList="columnList"
:tableData="details.data"
:loading="loadingObj.list"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps"> </template>
</tablecmt>
</el-row>
</div>
</basic-container>
<!-- 列表配置显示 -->
<edittablehead
@setcolum="setnewcolum"
@closce="showdrawer"
:drawerShow="drawerShow"
:columnList="details.columnList"
></edittablehead>
</template>
<script>
import {
searchNode
} from '@/api/distribution/distributionParcelList';
export default {
data() {
return {
search:false,
reverse: true,
query:{},
title:'请选择类型',
searchType:'',
activities: []
};
},
mounted() {},
computed: {},
methods: {
<script setup>
import { $_searchNode } from '@/api/distribution/distributionParcelList';
import { columnList } from '@/api/distribution/packageNodeSearch';
import {
ref,
reactive,
toRefs,
computed,
onMounted,
nextTick,
watch,
getCurrentInstance,
} from 'vue';
import functions from '@/utils/functions.js';
import { useRoute } from 'vue-router';
const $route = useRoute();
const show=ref(false)
const title = ref('包条码');
const searchType = ref('');
searchHide() {
this.search = !this.search;
},
changetypesof(val){
console.log(val);
this.title= this.searchTypeDate.find(res=>res.value==val).label
const details = reactive({
/** 是否开启搜索 */
search: false,
/** 表格搜索条件 */
query: {},
/** 时间快捷选择设置 */
shortcuts: [
{
text: '最近一周',
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
return [start, end];
},
},
searchChange() {
searchNode(1,this.query.searchCode).then(res=>{
const data = res.data.data;
})
{
text: '最近一个月',
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
return [start, end];
},
},
searchReset() {
this.query = {};
this.searchType = '';
{
text: '最近三个月',
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
return [start, end];
},
},
],
/** 时间选择器数据 */
stockupDate: [],
/** 列表 */
columnList,
/** 列表数据 */
data: [],
/** 页面loading */
loadingObj: {
/** 列表加载loading */
list: false,
},
/** 列表复选框选中的数据 */
selectionList: [],
/** 是否显示设置表格 */
drawerShow: false,
/** 分页参数 */
page: {
currentPage: 1,
pageSize: 50,
total: 0,
},
/** 弹出层显示 */
popUpShow: {
/** 包件明细 */
packageOrderListlVisited: false,
/** 二维码 */
QRCodeVisible: false,
/** 修改客户信息 */
editClientInfoVisible: false,
},
/** 列表Dom节点 */
listNode: '',
form: {},
/** 全屏 */
fullscreenObj: {
/** 包明细 */
packageOrderListlVisited: false,
},
});
const {
search,
query,
shortcuts,
stockupDate,
data,
loadingObj,
selectionList,
drawerShow,
page,
trickleLoadingPage,
zeroAdditionalRecordingInfo,
popUpShow,
recorddata,
} = toRefs(details);
const onLoad = () => {
details.columnList = columnList;
};
/** 展开列表控件 */
const showdrawer = _flag => {
details.drawerShow = _flag;
};
const onload = () => {
details.loadingObj.list=true
console.log(details.query);
let data = {
searchType: '1',
...details.query,
};
$_searchNode(data).then(res => {
console.log(res, 'res');
if (res.data.data) {
details.data = res.data.data;
}
}).catch(res=>{
}).finally(()=>{
details.loadingObj.list=false
});
};
onLoad();
const searchChange = () => {
onload();
};
const searchHide = () => {
details.search = !details.search;
};
console.log($route.query.orderPackageCode,'路由参数');
//
details.query.packageCode = $route.query.orderPackageCode
searchChange()
watch($route, (newValue, oldValue) => {
// ID
details.query.packageCode = $route.query.orderPackageCode
searchChange()
});
/**
* 设置列表 -- 固定函数
* 弹窗的勾选回调用于更改头部数组
* 固定搭配只需要更换 columnList
* */
const setnewcolum = (newarr, headarr, type) => {
if (type == 1) {
details.columnList = newarr;
functions.setStorage(window.location.pathname + 'checkList', headarr);
} else if (type == 2) {
details.columnList = newarr;
functions.setStorage(window.location.pathname + 'flexList', headarr);
} else if (type == 3) {
details.columnList = newarr;
functions.setStorage(window.location.pathname + 'sortlist', headarr);
}
};
const inputsc = () => {};
const timesc = () => {};
const btnsc = () => {};
const selectsc = () => {};
const selectionChange = () => {};
</script>
<style scoped lang="scss">
.el_row_top{
.el-form{
<style scoped lang="scss">
.el_row_top {
.el-form {
width: 100%;
display: flex;
justify-content: space-between;
}
.el-btn{
.el-btn {
margin-right: 0;
}
}
</style>
}
.avue-crud__right {
display: flex;
align-items: center;
}
:deep(.el-card__body) {
height: 100%;
display: flex;
flex-direction: column;
}
.avue-crud {
display: flex;
flex-direction: column;
}
:deep(.is-always-shadow){
box-shadow: none;
}
</style>

477
src/views/supervise/IndicatorList.vue

@ -158,10 +158,6 @@
<el-input v-model="lassificationform.objectionRemark" placeholder="暂无" />
</el-form-item>
<el-form-item label="附件">
<el-input v-model="lassificationform.name" placeholder="暂无" />
</el-form-item>
<el-form-item label="考核人">
<el-input v-model="lassificationform.assessUserName" placeholder="暂无" />
</el-form-item>
@ -187,20 +183,27 @@
"
/>
</el-form-item>
<el-form-item label="照片">
<div class="demo-image__preview">
<el-image
style="width: 100px; height: 100px"
:src="url"
:zoom-rate="1.2"
:max-scale="7"
:min-scale="0.2"
:preview-src-list="srcList"
:initial-index="4"
fit="cover"
/>
</div>
</el-form-item>
<div class="el_photo_max">
<el-form-item label="照片" class="el_fotnr">
<el-upload
v-model:file-list="srcList"
list-type="picture-card"
:on-preview="Photoviewing"
>
<el-icon><Plus /></el-icon>
</el-upload>
</el-form-item>
</div>
<div class="annex">
<el-form-item label="附件">
<el-upload v-model:file-list="fileList" class="upload-demo" :on-preview="fuj" :on-change="handleChange">
</el-upload>
</el-form-item>
</div>
</el-form>
<template #footer>
<span class="dialog-footer">
@ -212,11 +215,18 @@
</template>
</el-dialog>
<!-- 图片弹窗 -->
<div class="dialodimg" width="30%">
<el-dialog v-model="dialogVisible">
<img w-full :src="dialogImageUrl" alt="Preview Image" />
</el-dialog>
</div>
<!-- 编辑弹窗 -->
<el-dialog v-model="IndicatorEditing" title="编辑" width="30%">
<el-form v-loading="Indicatoreditingload" :model="lassificationformedit" label-width="70px">
<el-form-item label="考核部门">
<el-form-item label="考核部门" v-if="Assessmentstatus">
<el-tree-select
v-model="lassificationformedit.assessDept"
:data="AssessmentDepartment"
@ -226,7 +236,13 @@
@node-click="handleNodeClick"
/>
</el-form-item>
<el-form-item label="考核部门" v-else>
<el-input
v-model="lassificationformedit.assessDept"
disabled
placeholder="暂无考核部门"
/>
</el-form-item>
<el-form-item label="指标分类">
<el-select
v-model="lassificationformedit.indexClassification"
@ -238,8 +254,8 @@
<el-option
v-for="item in classificationoptions"
:key="item.id"
:label="item.name"
:value="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
@ -277,7 +293,11 @@
</el-form-item>
<el-form-item label="考核人">
<el-input v-model="lassificationformedit.assessUserName" placeholder="请输入考核人" />
<el-input
v-model="lassificationformedit.assessUserName"
disabled
placeholder="请输入考核人"
/>
</el-form-item>
<el-form-item label="分数备注">
@ -297,12 +317,25 @@
placeholder="请输入异议描述"
/>
</el-form-item>
<div class="el_photo_max">
<el-form-item label="照片" class="el_fotnr">
<el-upload
v-model:file-list="srcList"
list-type="picture-card"
:on-preview="Photoviewing"
>
<el-icon><Plus /></el-icon>
</el-upload>
</el-form-item>
</div>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="IndicatorEditing = false">关闭</el-button>
<el-button type="primary" @click="IndicatorEditingFn"> 确定 </el-button>
<el-button :disabled="Indicatoreditingload" type="primary" @click="IndicatorEditingFn">
确定
</el-button>
</span>
</template>
</el-dialog>
@ -340,67 +373,92 @@ const loadingclassification = ref(false); //指标分类加载效果
const classificationdata = ref([]); //
const current = ref(1); //
const total = ref(0); //
const dialogVisible=ref(false);//
const fileList = ref([]); //
const IndicatorEditing = ref(false); //
const pageSize = ref(50);
const lassificationform = ref({}); //
const lassificationformedit = ref({}); //
const title = ref(true); //
const EditID = ref(true); //ID
const currentPage=ref(1)
const currentPage = ref(1);
const newlyAdded = ref(false); //
const loadingAddPopup = ref(false); //
const selectionList = ref([]); //
const classificationoptions = ref([]); //
const searchFrom = ref({}); //
const Indicatoritems=ref([]);//
const Indicatoritems = ref([]); //
const drawerShow = ref(false); //
const search = ref(true); //
const department=ref();//
const department = ref(); //
const Indicatorediting = ref({}); //
const query=ref({});//
const query = ref({}); //
const dialogImageUrl=ref('');//
const columnList = ref();
const indicatorsValue = ref(0); //
const indicatorsValues = ref(1); //
const IndicatorScore=ref([]);//
const IndicatorScore = ref([]); //
const Assessmentstatus = ref(true); //
const Indicatoreditingload = ref(false); //
const AssessmentDepartment = ref([]); //
const url = '';
const srcList = [];
const tempRow = ref(); //
const url = ref('');
const fuj=(val)=>{
console.log(val);
ElMessageBox.confirm(
'是否下载该文件?',
'Warning',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
window.open(val.url);
})
.catch(() => {
})
}
const srcList = ref([]);
const onLoad = () => {
let data = {
current: current.value,
size: pageSize.value,
...query.value//
...query.value, //
};
loadingclassification.value = true; //
$_findIndicatorsList(data)
.then(res => {
console.log(res);
if (res.data.data.records) {
// 1 2 3
// 1 2 3
res.data.data.records.forEach(item=>{
if(item.indicatorsStatus ==1){
item.indicatorsStatus = '提交';
} else if(item.indicatorsStatus ==2){
item.indicatorsStatus = '审核通过';
} else if(item.indicatorsStatus ==3){
item.indicatorsStatus = '审核失败';
}
res.data.data.records.forEach(item => {
if (item.indicatorsStatus == 1) {
item.indicatorsStatus = '提交';
} else if (item.indicatorsStatus == 2) {
item.indicatorsStatus = '审核通过';
} else if (item.indicatorsStatus == 3) {
item.indicatorsStatus = '审核失败';
}
// 0 1
if(item.isObjection !=null){
if(item.isObjection){
// 0 1
if (item.isObjection != null) {
if (item.isObjection) {
item.isObjection = '没有';
}else{
} else {
item.isObjection = '存在';
}
}
})
}
});
classificationdata.value = res.data.data.records; //
}
total.value = res.data.data.total; //
})
@ -423,7 +481,6 @@ const currentChange = val => {
//
//
// $_parentId
const loadChildren = (targetList, parentId, indicatorValue) => {
let dataSub = { parentId };
return $_parentId(dataSub).then(Rs => {
@ -432,10 +489,10 @@ const loadChildren = (targetList, parentId, indicatorValue) => {
label: item.title,
id: item.id,
key: item.key,
hasChildren: item.hasChildren, // hasChildren
children: []
hasChildren: item.hasChildren, // hasChildren
children: [],
}));
function findAndReplace(target, value) {
for (let i = 0; i < target.length; i++) {
if (target[i].value === value) {
@ -447,12 +504,12 @@ const loadChildren = (targetList, parentId, indicatorValue) => {
}
}
}
findAndReplace(targetList, indicatorValue); // targetList
const childRequests = children
.filter(child => child.hasChildren)
.map(child => loadChildren(targetList, child.id, child.value)); // 使targetList
.map(child => loadChildren(targetList, child.id, child.value)); // 使targetList
//
return Promise.all(childRequests);
@ -460,8 +517,8 @@ const loadChildren = (targetList, parentId, indicatorValue) => {
};
//
const loadInitialCategories = () => {
let dataSub = { parentId: 0 };
const loadInitialCategories = (val = 0) => {
let dataSub = { parentId: val };
$_parentId(dataSub).then(res => {
console.log(res, '初始化顶级分类-------');
res.data.data.forEach(item => {
@ -471,15 +528,19 @@ const loadInitialCategories = () => {
id: item.id,
key: item.key,
hasChildren: item.hasChildren,
children: [] //
children: [], //
});
});
});
};
//
loadInitialCategories();
//
const Photoviewing=(val)=>{
dialogVisible.value=true;
console.log('图片查看',val);
dialogImageUrl.value= val.url
}
//
const classification = (val, index) => {
console.log(index, '当前点击的谁');
@ -498,14 +559,7 @@ const classification = (val, index) => {
console.log('分类不存在于当前的分类列表中');
}
};
//
const ClassificationDditing = val => {
console.log(val, '编辑');
EditID.value = val.row.id; //ID
let data = val.row;
IndicatorEditing.value = true; //
classification();
};
//
const Obtainclassification = () => {
$_selectParentCalssifyList().then(res => {
@ -518,7 +572,7 @@ const handleNodeClick = (data, node, component) => {
// 'node' Node
// 'component'
// console.log('You clicked:', data);
department.value = data;//
department.value = data; //
console.log(department.value, '当前点击的考核部门');
if (data.hasChildren) {
classification(data.id, data.value);
@ -533,22 +587,24 @@ const searcheNodeClick = (data, node, component) => {
// 'node' Node
// 'component'
// console.log('You clicked:', data);
department.value = data;//
department.value = data; //
console.log(department.value, '当前点击的考核部门');
if (data.hasChildren) {
classification(data.id, data.value);
}
// query.value.assessDeptName = data.label
query.value.assessDept = data.id
onLoad()
query.value.assessDept = data.id;
onLoad();
//
};
const Indicatortype=()=>{
query.value.parentClassifyId = classificationoptions.value.find(res=>res.id ==searchFrom.value.classifyId).id
const Indicatortype = () => {
query.value.parentClassifyId = classificationoptions.value.find(
res => res.id == searchFrom.value.classifyId
).id;
// searchFrom.classifyId
onLoad()
}
onLoad();
};
Obtainclassification();
//
const AddCategory = () => {};
@ -586,7 +642,6 @@ const BatchDelete = () => {
});
};
//
const CategoryDeletion = val => {
ElMessageBox.confirm(`是否删除${val.row.classifyName}分类?`, 'Warning', {
@ -678,33 +733,40 @@ const searchHide = () => {
search.value = !search.value;
};
//
const ClassificationChange=(val)=>{
const ClassificationChange = val => {
console.log(val);
classificationindicators(val)
}
classificationindicators(val);
};
//
const classificationindicators = (val) => {
$_selectChildCalssifyList({pid:val}).then(res => {
const classificationindicators = val => {
$_selectChildCalssifyList({ pid: val }).then(res => {
console.log(res, '分类列表');
if(res.data.data){
if (res.data.data) {
Indicatoritems.value = res.data.data;
}
});
};
const IndicatoritemsChange=(val)=>{
selectPointListChange(val)
}
const IndicatoritemsChange = val => {
selectPointListChange(val);
};
//
const selectPointListChange=(val)=>{
$_selectPointList({id:val}).then(res=>{
console.log(res,'分数列表');
if(res.data.data){
IndicatorScore.value= res.data.data
}
})
}
const selectPointListChange = val => {
$_selectPointList({ id: val }).then(res => {
console.log(res, '分数列表');
if (res.data.data) {
IndicatorScore.value = res.data.data;
if (!Assessmentstatus.value) {
lassificationformedit.value.IndicatorScore = IndicatorScore.value.find(
res => res.point == tempRow.value.point
).id;
}
}
});
};
//
const ClassificationIndicatorView = val => {
srcList.value=[]
fileList.value=[]
console.log(val, '查看信息');
newlyAdded.value = true; //
$_findIndicatorsDetail({ id: val.row.id })
@ -726,70 +788,174 @@ const ClassificationIndicatorView = val => {
} else {
lassificationform.value.isObjection = '存在';
}
console.log(res.data.data.pictures, '图片列表');
url.value = res.data.data.pictures[0].url; //
res.data.data.pictures.forEach(res => {
if (res.url) {
srcList.value.push({ name: res.name, url: res.url });
}
});
//
if (res.data.data.pictures.length) {
//
url.value = res.data.data.pictures[0].url; //
res.data.data.pictures.forEach(res => {
srcList.value.push(res.url);
});
}
res.data.data.files.forEach(res => {
if (res.url) {
fileList.value.push({ name: res.name, url: res.url });
}
});
// if (res.data.data.pictures.length) {
// //
// url.value = res.data.data.pictures[0].url; //
// console.log(url.value, '');
// }
})
.catch(res => {})
.finally(() => {
loadingAddPopup.value = false; //
});
};
//
// @ApiModelProperty(value = "")
// private Long assessDept;
// @ApiModelProperty(value = "")
// private String assessDeptName;
// @ApiModelProperty(value = "")
// private Long assessUserId;
// @ApiModelProperty(value = "")
// private String assessUserName;
// @ApiModelProperty(value = "")
// private Long classifyId;
// @ApiModelProperty(value = "")
// private int point;
// @ApiModelProperty(value = "")
// private String remark;
// @ApiModelProperty(value = " 1 2 3 ")
// private Integer indicatorsStatus;
// @ApiModelProperty(value = " 0 1 ")
// private Integer isObjection;
// @ApiModelProperty(value = "")
// private String objectionRemark;
//
const ClassificationDditing = async val => {
srcList.value=[]
fileList.value=[]
$_findIndicatorsDetail({ id: val.row.id })
.then(res => {
console.log(res.data.data.pictures, '图片列表');
url.value = res.data.data.pictures[0].url; //
res.data.data.pictures.forEach(res => {
if (res.url) {
srcList.value.push({ name: res.name, url: res.url });
}
});
//
// res.data.data.files.forEach(res => {
// if (res.url) {
// fileList.value.push({ name: res.name, url: res.url });
// }
// });
})
.catch(res => {})
.finally(() => {
});
Indicatoreditingload.value = true;
IndicatorEditing.value = true; //
tempRow.value = val.row; //便使
Assessmentstatus.value = false; //
console.log(val, '编辑');
IndicatorScore.value = []; //
Indicatoritems.value = []; //
lassificationformedit.value.IndicatorScore = ''; //
// lassificationformedit.value.Indicatoritems=''
await ClassificationChange(val.row.parentClassifyId); //ID
await IndicatoritemsChange(val.row.classifyId); //DI
lassificationformedit.value.indexClassification = val.row.parentClassifyId; //ID
lassificationformedit.value.Indicatoritems = val.row.classifyId; //ID
lassificationformedit.value.assessDept = val.row.assessDeptName; //
//
lassificationformedit.value.objectionRemark = val.row.objectionRemark; //
lassificationformedit.value.textarea = val.row.remark; //
lassificationformedit.value.assessUserName = val.row.assessUserName; //
//
// lassificationformedit.value.IndicatorScore = IndicatorScore.value.find(res=>res.point == val.row.point).id, //
EditID.value = val.row.id; //ID
let data = val.row;
classification();
Indicatoreditingload.value = false;
};
//
const IndicatorEditingFn = () => {
console.log(lassificationformedit.value.assessDept,'考核部门');
let data = {
id: EditID.value,//id
assessDept: department.value.id, //ID
assessDeptName: department.value.label , //
assessUserId: '', //ID
assessUserName: lassificationformedit.value.assessUserName, //
point:IndicatorScore.value.find(res=>res.id ==lassificationformedit.value.IndicatorScore).point, //
id: EditID.value, //id
// assessDept: department.value.id, //ID
// assessDeptName: department.value.label , //
// assessUserId: '', //ID
// assessUserName: lassificationformedit.value.assessUserName, //
point: IndicatorScore.value.find(res => res.id == lassificationformedit.value.IndicatorScore)
.point, //
remark: lassificationformedit.value.textarea, //
objectionRemark: lassificationformedit.value.objectionRemark, //
//
classifyId: lassificationformedit.value.Indicatoritems, // ID
classifyName: Indicatoritems.value.find(
res => res.id == lassificationformedit.value.Indicatoritems
).name, //
};
console.log(data,'处理好的参数');
$_updateIndicators(data).then(res => {
console.log(res, '编辑成功');
if(res.data.code == 200){
IndicatorEditing.value = false; //
onLoad()
}
}).catch(res=>{
}).finally(()=>{
});
console.log(data, '处理好的参数');
Indicatoreditingload.value = true; //
$_updateIndicators(data)
.then(res => {
console.log(res, '编辑成功');
if (res.data.code == 200) {
IndicatorEditing.value = false; //
onLoad();
}
})
.catch(res => {})
.finally(() => {
Assessmentstatus.value = true; //
Indicatoreditingload.value = false; //
});
};
const searchChangeS = () => {
searchFrom.value = {}; //
query.value={}
query.value = {};
onLoad();
};
//
const searchChange = () => {
searchFrom.createTime
if(searchFrom.value.createTime){
query.value.startDateStr=searchFrom.value.createTime[0],
query.value.endDateStr=searchFrom.value.createTime[1]
searchFrom.createTime;
if (searchFrom.value.createTime) {
(query.value.startDateStr = searchFrom.value.createTime[0]),
(query.value.endDateStr = searchFrom.value.createTime[1]);
}
// ...searchFrom.value,
// ...searchFrom.value,
onLoad();
};
const timeChange = () => {
delete query.value.startDateStr;
delete query.value.endDateStr;
onLoad();
};
const timeChange=()=>{
delete query.value.startDateStr
delete query.value.endDateStr
onLoad();
}
</script>
<style scoped lang="scss">
@ -861,5 +1027,46 @@ const timeChange=()=>{
}
.maboxhi {
height: 700px !important;
}
.el_fotnr {
:deep(.el-upload) {
display: none;
}
}
:deep(.el_photo_max){
width: 100%;
.el-form-item {
width: 100%;
}
}
:deep(.annex){
width: 100%;
.el-upload {
display: none;
}
}
:deep(.dialodimg){
width: 40%;
height: 300px;
.el-dialog{
width: 40%;
height: 50%;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
.el-dialog__body{
width: fit-content;
height: -webkit-fill-available;
img{
width: 100%;
height: 100%;
}
}
}
}
</style>

49
src/views/warehouse/parcelList/distributionParcelList.vue

@ -80,6 +80,7 @@
<template #default="slotProps">
<!-- <el-text size="small" @click="editsolt(slotProps.scope)"> </el-text>-->
<el-text size="small" @click="handleQRCode(slotProps.scope)">查看二维码</el-text>
<el-text size="small" @click="ViewingTrajectories(slotProps.scope)">查看轨迹</el-text>
</template>
</tablecmt>
</el-row>
@ -301,12 +302,46 @@ export default {
label: '仓库',
type: 2,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'typeServiceName',
label: '服务类型',
type: 2,
values: '',
width: '80',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'pickupBatch',
label: '提货批次',
type: 2,
values: '',
width: '80',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'scanTime',
label: '装车时间',
type: 2,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'carNumber',
label: '客户车次号',
@ -795,6 +830,17 @@ export default {
this.dialogVisibleF = true;
},
ViewingTrajectories(scope){
console.log(scope,'执行查看轨迹');
scope.row.orderPackageCode,//
this.$router.push({
path: '/distribution/signdetail/packageNodeSearch',
query: {
orderPackageCode:scope.row.orderPackageCode,
}
}
);
},
handleExportInfo() {
let row = {};
//
@ -815,6 +861,9 @@ export default {
},
inputsc(index, row) {
if(!row.values){
return
}
this.query[row.prop] = index;
console.log(this.query);
this.page.currentPage = 1;

4
vite.config.js

@ -23,13 +23,13 @@ export default ({ mode, command }) => {
// 新zyc
// target: 'http://192.168.6.116:8777',
// target: 'http://192.168.6.122:8777',
// target: 'http://192.168.3.14:13000',
target: 'http://192.168.3.14:13000',
// target: 'http://192.168.10.25:2888',
// target: 'http://192.168.6.161:9777',//CYZ
// target: 'http://192.168.10.57:13000',
// target: 'http://192.168.10.200:13000',
// target: 'http://192.168.10.29:13000',
target: 'http://192.168.3.4:13000',//?
// target: 'http://192.168.3.5:13000',//?
// target: 'http://h5uapi.huitongys.com',
// target: 'http://test.api.huo5you.com',

2000
yarn.lock

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save