的子元素上使用 key(而非 template 标签本身)
- 'vue/no-v-for-template-key-on-child': 'off',
-
- // 关闭 "$slots" 属性应作为函数使用的提示 好像没效果
- 'vue/no-deprecated-slot-attribute': 'off',
-
- 'vue/html-self-closing': [
- 'error',
- {
- html: {
- void: 'always', // HTML 空标签始终自闭合
- normal: 'never', // 普通标签不自闭合
- component: 'always', // 组件始终自闭合
- },
- },
- ],
- 'vue/html-closing-bracket-spacing': [
- 'error',
- {
- selfClosingTag: 'always', // 自闭合标签斜杠前必须有空格
- },
- ],
-
- // 插值语法内必须要有空格 {{ 1 }} 这种
- 'vue/mustache-interpolation-spacing': ['error', 'always'],
-
- // 禁止使用var,要求用let/const
- 'no-var': 'error',
-
- // 新增:未修改的变量必须用const,修改的用let
- 'prefer-const': [
- 'error',
- {
- // 允许对解构赋值中的变量使用let(可选配置)
- destructuring: 'any',
- // 忽略for循环中的初始化变量(如for(let i=0;...))
- ignoreReadBeforeAssign: false
- }
- ],
-
- // if条件后必须有大括号
- curly: ['error', 'all'],
-
- // Props必须设置默认值
- 'vue/require-default-prop': 'error',
- // Props必须定义类型
- 'vue/require-prop-types': 'error',
-
- // 关闭 $listeners 弃用警告(适用于 Vue 2 项目)
- 'vue/no-deprecated-dollar-listeners-api': 'off',
-
- // 禁止访问Object原型方法(如hasOwnProperty)------------- 没效果
- 'no-prototype-builtins': 'error',
-
- // 禁止定义但未使用的变量
- 'no-unused-vars': 'error',
-
- // 关闭 slot-scope 弃用警告
- 'vue/no-deprecated-slot-scope-attribute': 'off',
-
- // 关闭 .native 修饰符弃用警告
- 'vue/no-deprecated-v-on-native-modifier': 'off',
-
- // 关闭组件名必须多单词的规则
- 'vue/multi-word-component-names': 'off',
-
- // 关闭计算属性中意外副作用的提示
- 'vue/no-side-effects-in-computed-properties': 'off',
-
- // 关闭组件已注册但未使用的提示
- 'vue/no-unused-components': 'off',
-
- // 关闭属性应至少定义其类型的提示(针对 Vue 组件 props 类型检查)
- 'vue/require-prop-type-constructor': 'off',
-
- // 禁止不必要的转义字符
- 'no-useless-escape': 'error',
-
- // 限制函数复杂度(默认最大10)
- complexity: ['error', 10],
-
- // 允许使用 $on, $off, $once(Vue 3 中已废弃的事件 API)
- 'vue/no-deprecated-events-api': 'off',
-
- // 允许使用过滤器(Vue 3 中已废弃)
- 'vue/no-deprecated-filter': 'off',
-
- // 允许以属性形式使用 $slots(Vue 3 中建议作为函数使用)
- 'vue/no-deprecated-slot-scope-attribute': 'off',
- 'vue/no-deprecated-dollar-scopedslots-api': 'off',
- 'vue/require-slots-as-functions': 'off',
-
- },
+ "extends": ["eslint-config-md-js", "eslint-config-md-vue2"],
+ "rules": {
+ }
}
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
index 20fca5e..cbe842a 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -1,5 +1,5 @@
{
"printWidth": 120,
- "semi": true,
+ "semi": false,
"singleQuote": true
}
diff --git a/src/views/excel/ExcelExportTaskList.vue b/src/views/excel/ExcelExportTaskList.vue
index 307f30d..50312ef 100644
--- a/src/views/excel/ExcelExportTaskList.vue
+++ b/src/views/excel/ExcelExportTaskList.vue
@@ -60,8 +60,6 @@
批量操作
-->
-
- 导出执行
@@ -106,7 +104,6 @@
import { JeecgListMixin, WGridResizeByCssMixin } from '@/mixins/JeecgListMixin'
import { mixinDevice } from '@/utils/mixin'
-import { getAction } from '@/api/manage'
import ExcelExportModel from './modules/ExcelExportModel.vue'
export default {
name: 'ExcelExportTaskList',
@@ -257,7 +254,6 @@ export default {
delete: '/sys/excel/export/task/delete',
deleteBatch: '/sys/excel/export/task/deleteBatch',
downloadUrl: '/sys/excel/download',
- executeExportTask: '/sys/excel/export/task/executeExportTask',
},
dictOptions: {},
superFieldList: [],
@@ -290,16 +286,6 @@ export default {
this.createTime = []
this.searchReset()
},
- execute() {
- getAction(this.url.executeExportTask).then((res) => {
- if (res.success) {
- this.$message.success('导出执行成功')
- this.loadData(1)
- } else {
- this.$message.warning(res.message)
- }
- })
- },
},
}
diff --git a/src/views/excel/ExcelImportTaskList.vue b/src/views/excel/ExcelImportTaskList.vue
index 9bee12f..085939d 100644
--- a/src/views/excel/ExcelImportTaskList.vue
+++ b/src/views/excel/ExcelImportTaskList.vue
@@ -43,7 +43,6 @@
- 导入执行
@@ -94,7 +93,6 @@
import { JeecgListMixin, WGridResizeByCssMixin } from '@/mixins/JeecgListMixin'
import { mixinDevice } from '@/utils/mixin'
import ExcelImportTaskModal from './modules/ExcelImportTaskModal'
-import { getAction } from '@/api/manage'
export default {
name: 'ExcelImportTaskList',
@@ -255,7 +253,6 @@ export default {
exportXlsUrl: '/sys/excel/import/task/exportXls',
importExcelUrl: '/sys/excel/import/task/importExcel',
downloadUrl: '/sys/excel/download',
- executeImportTask: '/sys/excel/import/task/executeImportTask',
},
dictOptions: {},
superFieldList: [],
@@ -288,16 +285,6 @@ export default {
this.createTime = []
this.searchReset()
},
- execute() {
- getAction(this.url.executeImportTask).then((res) => {
- if (res.success) {
- this.$message.success('导入执行成功')
- this.loadData(1)
- } else {
- this.$message.warning(res.message)
- }
- })
- },
},
}
diff --git a/src/views/merger/mergeredConfig/productClassify/modules/CNregulatoryConditions.vue b/src/views/merger/mergeredConfig/productClassify/modules/CNregulatoryConditions.vue
index d06f435..edc60dc 100644
--- a/src/views/merger/mergeredConfig/productClassify/modules/CNregulatoryConditions.vue
+++ b/src/views/merger/mergeredConfig/productClassify/modules/CNregulatoryConditions.vue
@@ -13,11 +13,19 @@
-
+
查询
重置
+
+
+
+ 监管条件内容为:所选“附加编码”匹配监管条件说明内容,前3位数值一致的结果
+
+
+
+
diff --git a/src/views/merger/mergeredConfig/productClassify/modules/MergerGoodsForm.vue b/src/views/merger/mergeredConfig/productClassify/modules/MergerGoodsForm.vue
index 99ec6c7..ad521ac 100644
--- a/src/views/merger/mergeredConfig/productClassify/modules/MergerGoodsForm.vue
+++ b/src/views/merger/mergeredConfig/productClassify/modules/MergerGoodsForm.vue
@@ -161,7 +161,7 @@
{{ model.country + '-' + model.countryName }}
-
+
@@ -396,6 +396,7 @@
>
+
+
+
+
+
+
@@ -559,6 +574,7 @@
+
@@ -576,10 +592,12 @@ import CNattachmentCode from './CNattachmentCode';
import CNregulatoryConditions from './CNregulatoryConditions';
import CNtaxrateDesc from './CNtaxrateDesc';
import ApprovalProgressTemplate from '@/components/ApprovalProgressTemplate/index';
+import additionCodeDialog from './additionCodeDialog';
export default {
name: 'MideaMergerGoodsForm',
components: {
+ additionCodeDialog,
WorkflowList,
ModifyRecord,
devClassify,
@@ -624,6 +642,7 @@ export default {
},
confirmLoading: false,
validatorRules: {
+ additionalCode: [{ required: true, message: '请选择附加编码!', trigger: 'blur' }],
hsCode: [{ required: true, message: '请输入HSCode!', trigger: 'blur' }],
gname: [{ required: true, message: '请输入商品名称!', trigger: 'blur' }],
},
@@ -694,6 +713,10 @@ export default {
formDisabled() {
return this.disabled;
},
+ showAdditionCode() {
+ // 国家为泰国才展示附加编码
+ return this.model.country && this.model.country === 'TH';
+ },
controlMaQuanType() {
if (this.model.controlMa && this.model.quanType) {
return this.model.controlMa + ',' + this.model.quanType;
@@ -711,6 +734,13 @@ export default {
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
+ showAdditionCodeHandle() {
+ this.$refs.additionCodeDialogRef.show({ data: this.model });
+ },
+ confirmAdditionCode(data) {
+ this.model.additionalCode = data.additionalCode;
+ this.getOtherCountry();
+ },
timestampToDate(timestamp) {
if (!timestamp) {
return '';
@@ -733,7 +763,7 @@ export default {
return; // 直接return,不执行后续代码
}
} else if (!['GC', 'CN'].includes(this.model.country)) {
- if (this.model.hsCode.length < 6) {
+ if (this.model.hsCode && this.model.hsCode.length < 6) {
this.$message.error('国家为海外时,HSCode必须大于等于6位');
return; // 直接return,不执行后续代码
}
@@ -783,7 +813,7 @@ export default {
id: this.model.id,
});
if (resp.success) {
- if (this.model.country === 'ID') {
+ if (this.model.country === 'ID' || this.model.country === 'TH') {
this.SubmitValid();
} else {
this.$refs.ApprovalProgressTemplate.show({
@@ -820,11 +850,15 @@ export default {
}
},
async auditFlow() {
- if (this.model.country === 'ID') {
- const valid = await getAction(this.url.regulationValid, {
+ if (this.model.country === 'ID' || this.model.country === 'TH') {
+ const data = {
countryCode: this.model.country,
- hscode: this.model.hsCode,
- });
+ hscode: this.model.hsCode
+ };
+ if ( this.model.country === 'TH' ) {
+ data.additionalCode = this.model.additionalCode;
+ }
+ const valid = await getAction(this.url.regulationValid, data);
if (valid.success) {
this.$refs.ApprovalProgressTemplate.show({
id: this.model.id,
@@ -888,6 +922,9 @@ export default {
flag: this.flag,
});
}
+ if (this.model.country === 'TH' && value) {
+ this.initAdditionalCode();
+ }
},
filterOption(input, option) {
return option.componentOptions.children[0].text.indexOf(input) !== -1;
@@ -895,10 +932,20 @@ export default {
closeModal(record) {
if (record) {
this.model.hsCode = record.codeTS || record.hscode;
+ if (this.model.country === 'TH') {
+ this.initAdditionalCode();
+ }
this.queryByIdHscode('enter');
}
this.CNhSCodeModalShow = false;
},
+ initAdditionalCode(){
+ this.model.additionalCode = '';
+ this.regulatoryConditionsDataSource = [];
+ if (this.activeKeyBottom === 'regulatoryConditions') {
+ this.$refs.CNregulatoryConditions.show(this.regulatoryConditionsDataSource);
+ }
+ },
// 展示HSCode
showHsCode() {
if (this.formDisabled) {
@@ -1087,6 +1134,7 @@ export default {
const resp = await getAction(this.url.hscodDetail, {
hscode: this.model.hsCode,
countryCode: this.model.country,
+ additionalCode: this.model.country === 'TH' ? this.model.additionalCode : undefined
});
if (resp.success) {
const result = JSON.parse(resp.result);
@@ -1251,6 +1299,8 @@ export default {
}
}
});
+ } else {
+ that.$message.warning('请检查必填项');
}
});
},
@@ -1358,10 +1408,14 @@ export default {
});
},
async SubmitValid() {
- const valid = await getAction(this.url.regulationValid, {
+ const data = {
countryCode: this.model.country,
- hscode: this.model.hsCode,
- });
+ hscode: this.model.hsCode
+ };
+ if ( this.model.country === 'TH' ) {
+ data.additionalCode = this.model.additionalCode;
+ }
+ const valid = await getAction(this.url.regulationValid, data);
if (valid.success) {
this.$refs.ApprovalProgressTemplate.show({
id: this.model.id,
@@ -1435,7 +1489,15 @@ export default {
}
}
}
-
+.merger-good-form-box {
+ .plus-box {
+ width: 26px;
+ height: 26px;
+ background-color: #0f69ff;
+ line-height: 26px;
+ text-align: center;
+ }
+}
/deep/ .md-form-item__label {
width: 120px;
}
diff --git a/src/views/merger/mergeredConfig/productClassify/modules/additionCode.js b/src/views/merger/mergeredConfig/productClassify/modules/additionCode.js
new file mode 100644
index 0000000..17f2162
--- /dev/null
+++ b/src/views/merger/mergeredConfig/productClassify/modules/additionCode.js
@@ -0,0 +1,42 @@
+export default {
+ searchFields: [
+ {
+ name: '附加编码',
+ value: 'additionalCode',
+ type: 'input',
+ isFixed: true,
+ span: 3
+ },
+ {
+ name: '语言类别',
+ value: 'cultureCode',
+ type: 'select',
+ optionsKey: 'GLOBAL_TARIFF_LANGUAGE_TYPE',
+ isFixed: true,
+ span: 3
+ }
+ ],
+ columns:[
+ {
+ label: '附加编码',
+ prop: 'additionalCode',
+ 'width': 130,
+ },
+ {
+ label: '附加编码类型',
+ prop: 'additionalCodeType',
+ 'width': 130,
+ },
+ {
+ label: '附加编码说明',
+ prop: 'codeDescription',
+ 'min-width': 160,
+ },
+ {
+ label: '语言类别',
+ prop: 'cultureCode',
+ 'width': 130,
+ },
+ ]
+
+}
\ No newline at end of file
diff --git a/src/views/merger/mergeredConfig/productClassify/modules/additionCodeDialog.vue b/src/views/merger/mergeredConfig/productClassify/modules/additionCodeDialog.vue
new file mode 100644
index 0000000..38e701a
--- /dev/null
+++ b/src/views/merger/mergeredConfig/productClassify/modules/additionCodeDialog.vue
@@ -0,0 +1,158 @@
+