完成
+ + +diff --git a/src/utils/mergeTableRow.js b/src/utils/mergeTableRow.js
new file mode 100644
index 0000000..34a99c1
--- /dev/null
+++ b/src/utils/mergeTableRow.js
@@ -0,0 +1,62 @@
+/**在工具类util.js中定义通用方法
+ * table合并行通用 */
+// eslint-disable-next-line space-before-function-paren
+export function mergeTableRow (config) {
+ let data = config.data;
+ const {
+ mergeColNames, // 需要合并的列
+ firstMergeColNames, // 受影响的列
+ firstMerge // 以哪列为基础进行合并(基准列)
+ } = config
+ if (!mergeColNames || mergeColNames.length === 0) {
+ return data
+ }
+ mergeColNames.forEach((m) => {
+ const mList = {}
+ data = data.map((v, index) => {
+ // 区分需要合并行的key值
+ const rowVal = v[firstMerge] + '-' + v[m]
+ // 需要合并行的第二行以及之后行会走if
+ // m === firstMerge 判断需要合并的列是否是基准列,如果是则只满足前面的条件,如果不是则需满足前面+后面的条件
+ if (mList[rowVal] && mList[rowVal].newIndex === index && (m === firstMerge ? true : data[index][firstMerge + '-span'].rowspan === 0)) {
+ // 判断受影响的列是否是需要合并的列
+ const flag = firstMergeColNames.filter((f) => {
+ return f === m
+ }).length !== 0
+ // 判断需要合并的列是否是基准列
+ const mcFlag = mergeColNames.filter((mc) => {
+ return mc === firstMerge
+ }).length === 0
+ // 判断基准列只有一行的时候,直接赋值rowspan和colspan为1
+ if ((mcFlag && flag) || (flag && data[index][firstMerge + '-span'] && data[index][firstMerge + '-span'].rowspan === 1)) {
+ v[m + '-span'] = {
+ rowspan: 1,
+ colspan: 1
+ }
+ } else {
+ // 判断基准列或其他需要合并列有多行时,第一行rowspan++
+ data[mList[rowVal]['index']][m + '-span'].rowspan++
+ // 需要合并行除了第一行之后其他行设置rowspan和colspan为0
+ v[m + '-span'] = {
+ rowspan: 0,
+ colspan: 0
+ }
+ mList[rowVal]['num']++
+ mList[rowVal]['newIndex']++
+ }
+ } else { // 需要合并列第一行走else
+ mList[rowVal] = {
+ num: 1,
+ index: index,
+ newIndex: index + 1
+ }
+ v[m + '-span'] = {
+ rowspan: 1,
+ colspan: 1
+ }
+ }
+ return v
+ })
+ })
+ return data
+}
diff --git a/src/views/order/component/normalCreate.vue b/src/views/order/component/normalCreate.vue
index cf186ca..6736a18 100644
--- a/src/views/order/component/normalCreate.vue
+++ b/src/views/order/component/normalCreate.vue
@@ -21,26 +21,108 @@
完成
+ + +