widget.qw 1.0.39 → 1.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.development +2 -2
- package/build/style.css +16 -16
- package/build/widget.qw.es.js +78 -22
- package/build/widget.qw.umd.js +78 -22
- package/package.json +1 -1
- package/src/components/AuditBar.vue +1 -0
- package/src/components/CascaderPicker.vue +59 -13
- package/src/components/SingleApiPicker.vue +4 -4
- package/src/views/auditbar/index.vue +275 -6
- package/src/views/cascaderpicker/index.vue +0 -0
- package/src/views/cascaderpicker/index_part.vue +0 -0
- package/src/views/cascaderpicker/index_user.vue +0 -0
package/.env.development
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
NODE_ENV ='development'
|
|
2
2
|
|
|
3
|
-
VITE_DOMAIN= '
|
|
3
|
+
VITE_DOMAIN= 'http://www.zjpsjdsb.online'
|
|
4
4
|
VITE_TOKEN_KEY='Authorization'
|
|
5
5
|
VITE_TOKEN_PREFIX='Bearer '
|
|
6
6
|
VITE_NEED_LOGIN_CODE=401
|
|
7
7
|
# 注意:发布时 VITE_IS_DEBUG必须配置为false
|
|
8
8
|
# 本地开发时 VITE_IS_DEBUG必须配置为true
|
|
9
9
|
VITE_IS_DEBUG=true
|
|
10
|
-
VITE_DEBUG_TOKEN= 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.
|
|
10
|
+
VITE_DEBUG_TOKEN= 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJIb3VNdVhpYW9IYW8iLCJyblN0ciI6IlJaejE1UnRiZEo4bkZ6alVLd29mUEg0RzhLQUwxQzlIIn0.2YiMlmAeY_RAhgTtRxeiuyINwgveEWQ3K6PapfP9kyY'
|
package/build/style.css
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
@charset "UTF-8";.widget[data-v-
|
|
1
|
+
@charset "UTF-8";.widget[data-v-3d293c3a] {
|
|
2
2
|
text-align: center;
|
|
3
3
|
padding: 15px 15px;
|
|
4
4
|
}
|
|
5
|
-
.memo[data-v-
|
|
5
|
+
.memo[data-v-3d293c3a] {
|
|
6
6
|
margin-bottom: 15px;
|
|
7
7
|
}
|
|
8
|
-
.refuse-btn[data-v-
|
|
8
|
+
.refuse-btn[data-v-3d293c3a] {
|
|
9
9
|
width: 120px;
|
|
10
10
|
margin-right: 15px;
|
|
11
11
|
}
|
|
12
|
-
.pass-btn[data-v-
|
|
12
|
+
.pass-btn[data-v-3d293c3a] {
|
|
13
13
|
width: 120px;
|
|
14
14
|
}
|
|
15
|
-
.apply-btn[data-v-
|
|
15
|
+
.apply-btn[data-v-3d293c3a] {
|
|
16
16
|
width: 60vw;
|
|
17
17
|
}
|
|
18
|
-
.task-list[data-v-
|
|
18
|
+
.task-list[data-v-3d293c3a] {
|
|
19
19
|
margin-top: 15px;
|
|
20
20
|
}
|
|
21
|
-
.task-title[data-v-
|
|
21
|
+
.task-title[data-v-3d293c3a] {
|
|
22
22
|
font-size: 14px;
|
|
23
23
|
font-weight: bold;
|
|
24
24
|
color: #333;
|
|
25
25
|
text-align: left;
|
|
26
26
|
}
|
|
27
|
-
.task-user[data-v-
|
|
27
|
+
.task-user[data-v-3d293c3a] {
|
|
28
28
|
font-size: 13px;
|
|
29
29
|
color: #666;
|
|
30
30
|
text-align: left;
|
|
31
31
|
margin-top: 5px;
|
|
32
32
|
}
|
|
33
|
-
.audit-title[data-v-
|
|
33
|
+
.audit-title[data-v-3d293c3a] {
|
|
34
34
|
padding: 25px 15px 0 15px;
|
|
35
35
|
font-size: 16px;
|
|
36
36
|
font-weight: bold;
|
|
@@ -817,27 +817,27 @@
|
|
|
817
817
|
/* 防止压缩 */
|
|
818
818
|
}
|
|
819
819
|
|
|
820
|
-
.widget[data-v-
|
|
820
|
+
.widget[data-v-655ddd86] {
|
|
821
821
|
/* 统一字段间距 */
|
|
822
822
|
}
|
|
823
|
-
.widget[data-v-
|
|
823
|
+
.widget[data-v-655ddd86] .van-cell {
|
|
824
824
|
align-items: center;
|
|
825
825
|
}
|
|
826
|
-
.widget[data-v-
|
|
826
|
+
.widget[data-v-655ddd86] .van-field__label {
|
|
827
827
|
width: 90px;
|
|
828
828
|
flex: none;
|
|
829
829
|
}
|
|
830
|
-
.widget .readonly-field[data-v-
|
|
830
|
+
.widget .readonly-field[data-v-655ddd86] {
|
|
831
831
|
/* 添加必填星号对齐 */
|
|
832
832
|
}
|
|
833
|
-
.widget .readonly-field[data-v-
|
|
833
|
+
.widget .readonly-field[data-v-655ddd86] .van-field__control {
|
|
834
834
|
color: #323233;
|
|
835
835
|
/* 修改文字颜色与普通字段一致 */
|
|
836
836
|
padding-right: 16px;
|
|
837
837
|
}
|
|
838
|
-
.widget .readonly-field.van-field--required[data-v-
|
|
838
|
+
.widget .readonly-field.van-field--required[data-v-655ddd86] .van-field__label::before {
|
|
839
839
|
margin-right: 4px;
|
|
840
840
|
}
|
|
841
|
-
.widget .readonly-field[data-v-
|
|
841
|
+
.widget .readonly-field[data-v-655ddd86] {
|
|
842
842
|
margin: 4px 0;
|
|
843
843
|
}
|
package/build/widget.qw.es.js
CHANGED
|
@@ -15755,7 +15755,7 @@ var lodash$1 = { exports: {} };
|
|
|
15755
15755
|
}).call(commonjsGlobal);
|
|
15756
15756
|
})(lodash$1, lodash$1.exports);
|
|
15757
15757
|
var lodash = lodash$1.exports;
|
|
15758
|
-
var AuditBar_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => ".widget[data-v-
|
|
15758
|
+
var AuditBar_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => ".widget[data-v-3d293c3a] {\n text-align: center;\n padding: 15px 15px;\n}\n.memo[data-v-3d293c3a] {\n margin-bottom: 15px;\n}\n.refuse-btn[data-v-3d293c3a] {\n width: 120px;\n margin-right: 15px;\n}\n.pass-btn[data-v-3d293c3a] {\n width: 120px;\n}\n.apply-btn[data-v-3d293c3a] {\n width: 60vw;\n}\n.task-list[data-v-3d293c3a] {\n margin-top: 15px;\n}\n.task-title[data-v-3d293c3a] {\n font-size: 14px;\n font-weight: bold;\n color: #333;\n text-align: left;\n}\n.task-user[data-v-3d293c3a] {\n font-size: 13px;\n color: #666;\n text-align: left;\n margin-top: 5px;\n}\n.audit-title[data-v-3d293c3a] {\n padding: 25px 15px 0 15px;\n font-size: 16px;\n font-weight: bold;\n color: #666;\n text-align: left;\n}")();
|
|
15759
15759
|
var AuditBar_vue_vue_type_style_index_1_lang = /* @__PURE__ */ (() => "\n:root:root {\r\n --van-popover-action-width: 70vw;\n}\r\n")();
|
|
15760
15760
|
var _export_sfc = (sfc, props) => {
|
|
15761
15761
|
const target = sfc.__vccOpts || sfc;
|
|
@@ -15870,6 +15870,7 @@ const _sfc_main$u = {
|
|
|
15870
15870
|
emit("auth", res);
|
|
15871
15871
|
};
|
|
15872
15872
|
const getAuth = (fieldAuth) => {
|
|
15873
|
+
console.log("+++ getAuth +++++++++++++", fieldAuth);
|
|
15873
15874
|
let defaultCondition = "readonly";
|
|
15874
15875
|
if (!fieldAuth) {
|
|
15875
15876
|
return defaultCondition;
|
|
@@ -16079,7 +16080,7 @@ const _sfc_main$u = {
|
|
|
16079
16080
|
};
|
|
16080
16081
|
}
|
|
16081
16082
|
};
|
|
16082
|
-
var AuditBar = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-
|
|
16083
|
+
var AuditBar = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-3d293c3a"]]);
|
|
16083
16084
|
const isClient = typeof window !== "undefined" && typeof document !== "undefined";
|
|
16084
16085
|
typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
|
|
16085
16086
|
const isDef = (val) => typeof val !== "undefined";
|
|
@@ -20583,8 +20584,12 @@ const _sfc_main$1 = {
|
|
|
20583
20584
|
__name: "CascaderPicker",
|
|
20584
20585
|
props: {
|
|
20585
20586
|
modelValue: {
|
|
20586
|
-
type: String,
|
|
20587
|
-
default:
|
|
20587
|
+
type: [String, Array, Number],
|
|
20588
|
+
default: null
|
|
20589
|
+
},
|
|
20590
|
+
multiple: {
|
|
20591
|
+
type: Boolean,
|
|
20592
|
+
default: false
|
|
20588
20593
|
},
|
|
20589
20594
|
label: {
|
|
20590
20595
|
type: String,
|
|
@@ -20628,7 +20633,8 @@ const _sfc_main$1 = {
|
|
|
20628
20633
|
const props = __props;
|
|
20629
20634
|
const data2 = reactive({
|
|
20630
20635
|
isShowPop: false,
|
|
20631
|
-
|
|
20636
|
+
selectedNodes: [],
|
|
20637
|
+
selectedNodeId: null
|
|
20632
20638
|
});
|
|
20633
20639
|
const modelValue = useVModel(props, "modelValue", emit);
|
|
20634
20640
|
const {
|
|
@@ -20640,13 +20646,47 @@ const _sfc_main$1 = {
|
|
|
20640
20646
|
onMounted(() => {
|
|
20641
20647
|
});
|
|
20642
20648
|
const onSelect = (node) => {
|
|
20643
|
-
|
|
20644
|
-
|
|
20649
|
+
if (!props.multiple) {
|
|
20650
|
+
data2.selectedNodes = [node];
|
|
20651
|
+
emit("select", data2.selectedNodes[0]);
|
|
20652
|
+
modelValue.value = node.id;
|
|
20653
|
+
} else {
|
|
20654
|
+
let one = data2.selectedNodes.find((item) => item.id === node.id);
|
|
20655
|
+
if (!one)
|
|
20656
|
+
data2.selectedNodes = [...data2.selectedNodes, node];
|
|
20657
|
+
emit("select", data2.selectedNodes);
|
|
20658
|
+
modelValue.value = data2.selectedNodes.map((item) => item.id);
|
|
20659
|
+
}
|
|
20645
20660
|
};
|
|
20646
|
-
const onDelete = () => {
|
|
20647
|
-
|
|
20648
|
-
|
|
20661
|
+
const onDelete = (idx) => {
|
|
20662
|
+
if (!props.multiple) {
|
|
20663
|
+
modelValue.value = null;
|
|
20664
|
+
} else {
|
|
20665
|
+
modelValue.value.splice(idx, 1);
|
|
20666
|
+
}
|
|
20649
20667
|
};
|
|
20668
|
+
watch(() => JSON.stringify(modelValue.value), (n, o) => __async(this, null, function* () {
|
|
20669
|
+
if (!props.multiple) {
|
|
20670
|
+
data2.selectedNodeId = modelValue.value;
|
|
20671
|
+
} else {
|
|
20672
|
+
data2.selectedNodes = [];
|
|
20673
|
+
modelValue.value.forEach((id) => __async(this, null, function* () {
|
|
20674
|
+
let params = {};
|
|
20675
|
+
params.id = id;
|
|
20676
|
+
params.isReturnParent = false;
|
|
20677
|
+
params.hasChildren = false;
|
|
20678
|
+
params.hasUsers = true;
|
|
20679
|
+
yield props.idQueryNode(params, (node) => {
|
|
20680
|
+
let one = util.findNode(id, node.children);
|
|
20681
|
+
if (one) {
|
|
20682
|
+
data2.selectedNodes = [...data2.selectedNodes, one];
|
|
20683
|
+
}
|
|
20684
|
+
});
|
|
20685
|
+
}));
|
|
20686
|
+
}
|
|
20687
|
+
}), {
|
|
20688
|
+
immediate: true
|
|
20689
|
+
});
|
|
20650
20690
|
return (_ctx, _cache) => {
|
|
20651
20691
|
const _component_van_tag = resolveComponent("van-tag");
|
|
20652
20692
|
const _component_van_field = resolveComponent("van-field");
|
|
@@ -20665,7 +20705,7 @@ const _sfc_main$1 = {
|
|
|
20665
20705
|
_: 2
|
|
20666
20706
|
}, [unref(modelValue) ? {
|
|
20667
20707
|
name: "input",
|
|
20668
|
-
fn: withCtx(() => [
|
|
20708
|
+
fn: withCtx(() => [!props.multiple ? (openBlock(), createBlock(_component_van_tag, {
|
|
20669
20709
|
key: 0,
|
|
20670
20710
|
class: "selected-node",
|
|
20671
20711
|
closeable: !unref(isDisabled),
|
|
@@ -20676,15 +20716,30 @@ const _sfc_main$1 = {
|
|
|
20676
20716
|
}, {
|
|
20677
20717
|
default: withCtx(() => {
|
|
20678
20718
|
var _a;
|
|
20679
|
-
return [createTextVNode(toDisplayString((_a = data2.
|
|
20719
|
+
return [createTextVNode(toDisplayString((_a = data2.selectedNodes[0]) == null ? void 0 : _a.path), 1)];
|
|
20680
20720
|
}),
|
|
20681
20721
|
_: 1
|
|
20682
|
-
}, 8, ["closeable", "onClose"])) : createCommentVNode("", true)
|
|
20722
|
+
}, 8, ["closeable", "onClose"])) : createCommentVNode("", true), props.multiple ? (openBlock(true), createElementBlock(Fragment, {
|
|
20723
|
+
key: 1
|
|
20724
|
+
}, renderList(data2.selectedNodes, (item, i) => {
|
|
20725
|
+
return openBlock(), createBlock(_component_van_tag, {
|
|
20726
|
+
class: "selected-node",
|
|
20727
|
+
key: i,
|
|
20728
|
+
closeable: !unref(isDisabled),
|
|
20729
|
+
color: "#fff",
|
|
20730
|
+
"text-color": "#333",
|
|
20731
|
+
size: "medium",
|
|
20732
|
+
onClose: withModifiers(($event) => onDelete(i), ["stop"])
|
|
20733
|
+
}, {
|
|
20734
|
+
default: withCtx(() => [createTextVNode(toDisplayString(item.path), 1)]),
|
|
20735
|
+
_: 2
|
|
20736
|
+
}, 1032, ["closeable", "onClose"]);
|
|
20737
|
+
}), 128)) : createCommentVNode("", true)])
|
|
20683
20738
|
} : void 0]), 1032, ["label", "required", "rules", "disabled", "placeholder", "is-link"])) : createCommentVNode("", true), createVNode(CascaderPop, {
|
|
20684
20739
|
show: data2.isShowPop,
|
|
20685
20740
|
"onUpdate:show": _cache[1] || (_cache[1] = ($event) => data2.isShowPop = $event),
|
|
20686
|
-
modelValue:
|
|
20687
|
-
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) =>
|
|
20741
|
+
modelValue: data2.selectedNodeId,
|
|
20742
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => data2.selectedNodeId = $event),
|
|
20688
20743
|
placeholder: props.placeholder,
|
|
20689
20744
|
onSelect,
|
|
20690
20745
|
keywordQueryNode: props.keywordQueryNode,
|
|
@@ -20693,16 +20748,16 @@ const _sfc_main$1 = {
|
|
|
20693
20748
|
};
|
|
20694
20749
|
}
|
|
20695
20750
|
};
|
|
20696
|
-
var SingleApiPicker_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => '@charset "UTF-8";\n.widget[data-v-
|
|
20751
|
+
var SingleApiPicker_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => '@charset "UTF-8";\n.widget[data-v-655ddd86] {\n /* \u7EDF\u4E00\u5B57\u6BB5\u95F4\u8DDD */\n}\n.widget[data-v-655ddd86] .van-cell {\n align-items: center;\n}\n.widget[data-v-655ddd86] .van-field__label {\n width: 90px;\n flex: none;\n}\n.widget .readonly-field[data-v-655ddd86] {\n /* \u6DFB\u52A0\u5FC5\u586B\u661F\u53F7\u5BF9\u9F50 */\n}\n.widget .readonly-field[data-v-655ddd86] .van-field__control {\n color: #323233;\n /* \u4FEE\u6539\u6587\u5B57\u989C\u8272\u4E0E\u666E\u901A\u5B57\u6BB5\u4E00\u81F4 */\n padding-right: 16px;\n}\n.widget .readonly-field.van-field--required[data-v-655ddd86] .van-field__label::before {\n margin-right: 4px;\n}\n.widget .readonly-field[data-v-655ddd86] {\n margin: 4px 0;\n}')();
|
|
20697
20752
|
const _hoisted_1 = {
|
|
20698
20753
|
class: "widget"
|
|
20699
20754
|
};
|
|
20700
20755
|
const _sfc_main = {
|
|
20701
20756
|
__name: "SingleApiPicker",
|
|
20702
20757
|
props: {
|
|
20703
|
-
|
|
20704
|
-
type:
|
|
20705
|
-
default:
|
|
20758
|
+
multiple: {
|
|
20759
|
+
type: Boolean,
|
|
20760
|
+
default: false
|
|
20706
20761
|
},
|
|
20707
20762
|
label: {
|
|
20708
20763
|
type: String,
|
|
@@ -20771,7 +20826,8 @@ const _sfc_main = {
|
|
|
20771
20826
|
const _component_van_field = resolveComponent("van-field");
|
|
20772
20827
|
const _component_van_picker = resolveComponent("van-picker");
|
|
20773
20828
|
const _component_van_popup = resolveComponent("van-popup");
|
|
20774
|
-
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
20829
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [!unref(isGone) && !props.multiple ? (openBlock(), createBlock(_component_van_field, {
|
|
20830
|
+
key: 0,
|
|
20775
20831
|
modelValue: unref(formatLabel),
|
|
20776
20832
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(formatLabel) ? formatLabel.value = $event : null),
|
|
20777
20833
|
"is-link": !unref(isReadonly) && !unref(isDisabled),
|
|
@@ -20781,7 +20837,7 @@ const _sfc_main = {
|
|
|
20781
20837
|
required: unref(isRequired),
|
|
20782
20838
|
disabled: unref(isDisabled),
|
|
20783
20839
|
onClick: onShow
|
|
20784
|
-
}, null, 8, ["modelValue", "is-link", "label", "placeholder", "required", "disabled"]), createVNode(_component_van_popup, {
|
|
20840
|
+
}, null, 8, ["modelValue", "is-link", "label", "placeholder", "required", "disabled"])) : createCommentVNode("", true), createVNode(_component_van_popup, {
|
|
20785
20841
|
show: data2.isShow,
|
|
20786
20842
|
"onUpdate:show": _cache[1] || (_cache[1] = ($event) => data2.isShow = $event),
|
|
20787
20843
|
"destroy-on-close": "",
|
|
@@ -20798,7 +20854,7 @@ const _sfc_main = {
|
|
|
20798
20854
|
};
|
|
20799
20855
|
}
|
|
20800
20856
|
};
|
|
20801
|
-
var SingleApiPicker = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
20857
|
+
var SingleApiPicker = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-655ddd86"]]);
|
|
20802
20858
|
const secret_notify = () => {
|
|
20803
20859
|
showNotify({ type: "danger", message: "\u4E25\u683C\u6267\u884C\u4FE1\u606F\u4FDD\u5BC6\u8981\u6C42\uFF0C\u5207\u5B9E\u9632\u8303\u4F01\u4E1A\u6CC4\u5BC6\u98CE\u9669", duration: 3e3 });
|
|
20804
20860
|
};
|
package/build/widget.qw.umd.js
CHANGED
|
@@ -15758,7 +15758,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
15758
15758
|
}).call(commonjsGlobal);
|
|
15759
15759
|
})(lodash$1, lodash$1.exports);
|
|
15760
15760
|
var lodash = lodash$1.exports;
|
|
15761
|
-
var AuditBar_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => ".widget[data-v-
|
|
15761
|
+
var AuditBar_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => ".widget[data-v-3d293c3a] {\n text-align: center;\n padding: 15px 15px;\n}\n.memo[data-v-3d293c3a] {\n margin-bottom: 15px;\n}\n.refuse-btn[data-v-3d293c3a] {\n width: 120px;\n margin-right: 15px;\n}\n.pass-btn[data-v-3d293c3a] {\n width: 120px;\n}\n.apply-btn[data-v-3d293c3a] {\n width: 60vw;\n}\n.task-list[data-v-3d293c3a] {\n margin-top: 15px;\n}\n.task-title[data-v-3d293c3a] {\n font-size: 14px;\n font-weight: bold;\n color: #333;\n text-align: left;\n}\n.task-user[data-v-3d293c3a] {\n font-size: 13px;\n color: #666;\n text-align: left;\n margin-top: 5px;\n}\n.audit-title[data-v-3d293c3a] {\n padding: 25px 15px 0 15px;\n font-size: 16px;\n font-weight: bold;\n color: #666;\n text-align: left;\n}")();
|
|
15762
15762
|
var AuditBar_vue_vue_type_style_index_1_lang = /* @__PURE__ */ (() => "\n:root:root {\r\n --van-popover-action-width: 70vw;\n}\r\n")();
|
|
15763
15763
|
var _export_sfc = (sfc, props) => {
|
|
15764
15764
|
const target = sfc.__vccOpts || sfc;
|
|
@@ -15873,6 +15873,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
15873
15873
|
emit("auth", res);
|
|
15874
15874
|
};
|
|
15875
15875
|
const getAuth = (fieldAuth) => {
|
|
15876
|
+
console.log("+++ getAuth +++++++++++++", fieldAuth);
|
|
15876
15877
|
let defaultCondition = "readonly";
|
|
15877
15878
|
if (!fieldAuth) {
|
|
15878
15879
|
return defaultCondition;
|
|
@@ -16082,7 +16083,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
16082
16083
|
};
|
|
16083
16084
|
}
|
|
16084
16085
|
};
|
|
16085
|
-
var AuditBar = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-
|
|
16086
|
+
var AuditBar = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-3d293c3a"]]);
|
|
16086
16087
|
const isClient = typeof window !== "undefined" && typeof document !== "undefined";
|
|
16087
16088
|
typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
|
|
16088
16089
|
const isDef = (val) => typeof val !== "undefined";
|
|
@@ -20586,8 +20587,12 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20586
20587
|
__name: "CascaderPicker",
|
|
20587
20588
|
props: {
|
|
20588
20589
|
modelValue: {
|
|
20589
|
-
type: String,
|
|
20590
|
-
default:
|
|
20590
|
+
type: [String, Array, Number],
|
|
20591
|
+
default: null
|
|
20592
|
+
},
|
|
20593
|
+
multiple: {
|
|
20594
|
+
type: Boolean,
|
|
20595
|
+
default: false
|
|
20591
20596
|
},
|
|
20592
20597
|
label: {
|
|
20593
20598
|
type: String,
|
|
@@ -20631,7 +20636,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20631
20636
|
const props = __props;
|
|
20632
20637
|
const data2 = vue.reactive({
|
|
20633
20638
|
isShowPop: false,
|
|
20634
|
-
|
|
20639
|
+
selectedNodes: [],
|
|
20640
|
+
selectedNodeId: null
|
|
20635
20641
|
});
|
|
20636
20642
|
const modelValue = useVModel(props, "modelValue", emit);
|
|
20637
20643
|
const {
|
|
@@ -20643,13 +20649,47 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20643
20649
|
vue.onMounted(() => {
|
|
20644
20650
|
});
|
|
20645
20651
|
const onSelect = (node) => {
|
|
20646
|
-
|
|
20647
|
-
|
|
20652
|
+
if (!props.multiple) {
|
|
20653
|
+
data2.selectedNodes = [node];
|
|
20654
|
+
emit("select", data2.selectedNodes[0]);
|
|
20655
|
+
modelValue.value = node.id;
|
|
20656
|
+
} else {
|
|
20657
|
+
let one = data2.selectedNodes.find((item) => item.id === node.id);
|
|
20658
|
+
if (!one)
|
|
20659
|
+
data2.selectedNodes = [...data2.selectedNodes, node];
|
|
20660
|
+
emit("select", data2.selectedNodes);
|
|
20661
|
+
modelValue.value = data2.selectedNodes.map((item) => item.id);
|
|
20662
|
+
}
|
|
20648
20663
|
};
|
|
20649
|
-
const onDelete = () => {
|
|
20650
|
-
|
|
20651
|
-
|
|
20664
|
+
const onDelete = (idx) => {
|
|
20665
|
+
if (!props.multiple) {
|
|
20666
|
+
modelValue.value = null;
|
|
20667
|
+
} else {
|
|
20668
|
+
modelValue.value.splice(idx, 1);
|
|
20669
|
+
}
|
|
20652
20670
|
};
|
|
20671
|
+
vue.watch(() => JSON.stringify(modelValue.value), (n, o) => __async(this, null, function* () {
|
|
20672
|
+
if (!props.multiple) {
|
|
20673
|
+
data2.selectedNodeId = modelValue.value;
|
|
20674
|
+
} else {
|
|
20675
|
+
data2.selectedNodes = [];
|
|
20676
|
+
modelValue.value.forEach((id) => __async(this, null, function* () {
|
|
20677
|
+
let params = {};
|
|
20678
|
+
params.id = id;
|
|
20679
|
+
params.isReturnParent = false;
|
|
20680
|
+
params.hasChildren = false;
|
|
20681
|
+
params.hasUsers = true;
|
|
20682
|
+
yield props.idQueryNode(params, (node) => {
|
|
20683
|
+
let one = util.findNode(id, node.children);
|
|
20684
|
+
if (one) {
|
|
20685
|
+
data2.selectedNodes = [...data2.selectedNodes, one];
|
|
20686
|
+
}
|
|
20687
|
+
});
|
|
20688
|
+
}));
|
|
20689
|
+
}
|
|
20690
|
+
}), {
|
|
20691
|
+
immediate: true
|
|
20692
|
+
});
|
|
20653
20693
|
return (_ctx, _cache) => {
|
|
20654
20694
|
const _component_van_tag = vue.resolveComponent("van-tag");
|
|
20655
20695
|
const _component_van_field = vue.resolveComponent("van-field");
|
|
@@ -20668,7 +20708,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20668
20708
|
_: 2
|
|
20669
20709
|
}, [vue.unref(modelValue) ? {
|
|
20670
20710
|
name: "input",
|
|
20671
|
-
fn: vue.withCtx(() => [
|
|
20711
|
+
fn: vue.withCtx(() => [!props.multiple ? (vue.openBlock(), vue.createBlock(_component_van_tag, {
|
|
20672
20712
|
key: 0,
|
|
20673
20713
|
class: "selected-node",
|
|
20674
20714
|
closeable: !vue.unref(isDisabled),
|
|
@@ -20679,15 +20719,30 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20679
20719
|
}, {
|
|
20680
20720
|
default: vue.withCtx(() => {
|
|
20681
20721
|
var _a;
|
|
20682
|
-
return [vue.createTextVNode(vue.toDisplayString((_a = data2.
|
|
20722
|
+
return [vue.createTextVNode(vue.toDisplayString((_a = data2.selectedNodes[0]) == null ? void 0 : _a.path), 1)];
|
|
20683
20723
|
}),
|
|
20684
20724
|
_: 1
|
|
20685
|
-
}, 8, ["closeable", "onClose"])) : vue.createCommentVNode("", true)
|
|
20725
|
+
}, 8, ["closeable", "onClose"])) : vue.createCommentVNode("", true), props.multiple ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, {
|
|
20726
|
+
key: 1
|
|
20727
|
+
}, vue.renderList(data2.selectedNodes, (item, i) => {
|
|
20728
|
+
return vue.openBlock(), vue.createBlock(_component_van_tag, {
|
|
20729
|
+
class: "selected-node",
|
|
20730
|
+
key: i,
|
|
20731
|
+
closeable: !vue.unref(isDisabled),
|
|
20732
|
+
color: "#fff",
|
|
20733
|
+
"text-color": "#333",
|
|
20734
|
+
size: "medium",
|
|
20735
|
+
onClose: vue.withModifiers(($event) => onDelete(i), ["stop"])
|
|
20736
|
+
}, {
|
|
20737
|
+
default: vue.withCtx(() => [vue.createTextVNode(vue.toDisplayString(item.path), 1)]),
|
|
20738
|
+
_: 2
|
|
20739
|
+
}, 1032, ["closeable", "onClose"]);
|
|
20740
|
+
}), 128)) : vue.createCommentVNode("", true)])
|
|
20686
20741
|
} : void 0]), 1032, ["label", "required", "rules", "disabled", "placeholder", "is-link"])) : vue.createCommentVNode("", true), vue.createVNode(CascaderPop, {
|
|
20687
20742
|
show: data2.isShowPop,
|
|
20688
20743
|
"onUpdate:show": _cache[1] || (_cache[1] = ($event) => data2.isShowPop = $event),
|
|
20689
|
-
modelValue:
|
|
20690
|
-
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) =>
|
|
20744
|
+
modelValue: data2.selectedNodeId,
|
|
20745
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => data2.selectedNodeId = $event),
|
|
20691
20746
|
placeholder: props.placeholder,
|
|
20692
20747
|
onSelect,
|
|
20693
20748
|
keywordQueryNode: props.keywordQueryNode,
|
|
@@ -20696,16 +20751,16 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20696
20751
|
};
|
|
20697
20752
|
}
|
|
20698
20753
|
};
|
|
20699
|
-
var SingleApiPicker_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => '@charset "UTF-8";\n.widget[data-v-
|
|
20754
|
+
var SingleApiPicker_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => '@charset "UTF-8";\n.widget[data-v-655ddd86] {\n /* \u7EDF\u4E00\u5B57\u6BB5\u95F4\u8DDD */\n}\n.widget[data-v-655ddd86] .van-cell {\n align-items: center;\n}\n.widget[data-v-655ddd86] .van-field__label {\n width: 90px;\n flex: none;\n}\n.widget .readonly-field[data-v-655ddd86] {\n /* \u6DFB\u52A0\u5FC5\u586B\u661F\u53F7\u5BF9\u9F50 */\n}\n.widget .readonly-field[data-v-655ddd86] .van-field__control {\n color: #323233;\n /* \u4FEE\u6539\u6587\u5B57\u989C\u8272\u4E0E\u666E\u901A\u5B57\u6BB5\u4E00\u81F4 */\n padding-right: 16px;\n}\n.widget .readonly-field.van-field--required[data-v-655ddd86] .van-field__label::before {\n margin-right: 4px;\n}\n.widget .readonly-field[data-v-655ddd86] {\n margin: 4px 0;\n}')();
|
|
20700
20755
|
const _hoisted_1 = {
|
|
20701
20756
|
class: "widget"
|
|
20702
20757
|
};
|
|
20703
20758
|
const _sfc_main = {
|
|
20704
20759
|
__name: "SingleApiPicker",
|
|
20705
20760
|
props: {
|
|
20706
|
-
|
|
20707
|
-
type:
|
|
20708
|
-
default:
|
|
20761
|
+
multiple: {
|
|
20762
|
+
type: Boolean,
|
|
20763
|
+
default: false
|
|
20709
20764
|
},
|
|
20710
20765
|
label: {
|
|
20711
20766
|
type: String,
|
|
@@ -20774,7 +20829,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20774
20829
|
const _component_van_field = vue.resolveComponent("van-field");
|
|
20775
20830
|
const _component_van_picker = vue.resolveComponent("van-picker");
|
|
20776
20831
|
const _component_van_popup = vue.resolveComponent("van-popup");
|
|
20777
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [vue.
|
|
20832
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [!vue.unref(isGone) && !props.multiple ? (vue.openBlock(), vue.createBlock(_component_van_field, {
|
|
20833
|
+
key: 0,
|
|
20778
20834
|
modelValue: vue.unref(formatLabel),
|
|
20779
20835
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(formatLabel) ? formatLabel.value = $event : null),
|
|
20780
20836
|
"is-link": !vue.unref(isReadonly) && !vue.unref(isDisabled),
|
|
@@ -20784,7 +20840,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20784
20840
|
required: vue.unref(isRequired),
|
|
20785
20841
|
disabled: vue.unref(isDisabled),
|
|
20786
20842
|
onClick: onShow
|
|
20787
|
-
}, null, 8, ["modelValue", "is-link", "label", "placeholder", "required", "disabled"]), vue.createVNode(_component_van_popup, {
|
|
20843
|
+
}, null, 8, ["modelValue", "is-link", "label", "placeholder", "required", "disabled"])) : vue.createCommentVNode("", true), vue.createVNode(_component_van_popup, {
|
|
20788
20844
|
show: data2.isShow,
|
|
20789
20845
|
"onUpdate:show": _cache[1] || (_cache[1] = ($event) => data2.isShow = $event),
|
|
20790
20846
|
"destroy-on-close": "",
|
|
@@ -20801,7 +20857,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20801
20857
|
};
|
|
20802
20858
|
}
|
|
20803
20859
|
};
|
|
20804
|
-
var SingleApiPicker = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
20860
|
+
var SingleApiPicker = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-655ddd86"]]);
|
|
20805
20861
|
const secret_notify = () => {
|
|
20806
20862
|
showNotify({ type: "danger", message: "\u4E25\u683C\u6267\u884C\u4FE1\u606F\u4FDD\u5BC6\u8981\u6C42\uFF0C\u5207\u5B9E\u9632\u8303\u4F01\u4E1A\u6CC4\u5BC6\u98CE\u9669", duration: 3e3 });
|
|
20807
20863
|
};
|
package/package.json
CHANGED
|
@@ -3,15 +3,19 @@
|
|
|
3
3
|
:disabled="isDisabled" :placeholder="props.placeholder" :is-link="isReadonly ? false : true"
|
|
4
4
|
@click="data.isShowPop = !isReadonly" label-class="label">
|
|
5
5
|
<template #input v-if="modelValue">
|
|
6
|
-
<van-tag class="selected-node" v-if="
|
|
7
|
-
size="medium" @close.stop="onDelete">
|
|
8
|
-
{{ data.
|
|
6
|
+
<van-tag class="selected-node" v-if="!props.multiple" :closeable="!isDisabled" color="#fff"
|
|
7
|
+
text-color="#333" size="medium" @close.stop="onDelete">
|
|
8
|
+
{{ data.selectedNodes[0]?.path }}
|
|
9
|
+
</van-tag>
|
|
10
|
+
<van-tag class="selected-node" v-if="props.multiple" v-for="(item, i) in data.selectedNodes" :key="i"
|
|
11
|
+
:closeable="!isDisabled" color="#fff" text-color="#333" size="medium" @close.stop="onDelete(i)">
|
|
12
|
+
{{ item.path }}
|
|
9
13
|
</van-tag>
|
|
10
14
|
</template>
|
|
11
15
|
</van-field>
|
|
12
16
|
|
|
13
|
-
<CascaderPop v-model:show="data.isShowPop" v-model="
|
|
14
|
-
:keywordQueryNode="props.keywordQueryNode" :idQueryNode="props.idQueryNode" />
|
|
17
|
+
<CascaderPop v-model:show="data.isShowPop" v-model="data.selectedNodeId" :placeholder="props.placeholder"
|
|
18
|
+
@select="onSelect" :keywordQueryNode="props.keywordQueryNode" :idQueryNode="props.idQueryNode" />
|
|
15
19
|
</template>
|
|
16
20
|
|
|
17
21
|
<script setup>
|
|
@@ -22,8 +26,12 @@ import CascaderPop from './CascaderPop.vue'
|
|
|
22
26
|
|
|
23
27
|
const props = defineProps({
|
|
24
28
|
modelValue: {
|
|
25
|
-
type: String,
|
|
26
|
-
default:
|
|
29
|
+
type: [String, Array, Number],
|
|
30
|
+
default: null,
|
|
31
|
+
},
|
|
32
|
+
multiple: {
|
|
33
|
+
type: Boolean,
|
|
34
|
+
default: false
|
|
27
35
|
},
|
|
28
36
|
label: {
|
|
29
37
|
type: String,
|
|
@@ -62,7 +70,8 @@ const props = defineProps({
|
|
|
62
70
|
// 弹出层
|
|
63
71
|
const data = reactive({
|
|
64
72
|
isShowPop: false,
|
|
65
|
-
|
|
73
|
+
selectedNodes: [],
|
|
74
|
+
selectedNodeId: null
|
|
66
75
|
})
|
|
67
76
|
|
|
68
77
|
// 定义emit
|
|
@@ -75,14 +84,51 @@ onMounted(() => {
|
|
|
75
84
|
})
|
|
76
85
|
|
|
77
86
|
const onSelect = (node) => {
|
|
78
|
-
|
|
79
|
-
|
|
87
|
+
if (!props.multiple) {
|
|
88
|
+
data.selectedNodes = [node]
|
|
89
|
+
emit('select', data.selectedNodes[0])
|
|
90
|
+
modelValue.value = node.id
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
let one = data.selectedNodes.find(item => item.id === node.id)
|
|
94
|
+
if (!one)
|
|
95
|
+
data.selectedNodes = [...data.selectedNodes, node]
|
|
96
|
+
emit('select', data.selectedNodes)
|
|
97
|
+
modelValue.value = data.selectedNodes.map(item=>item.id)
|
|
98
|
+
}
|
|
80
99
|
}
|
|
81
100
|
|
|
82
|
-
const onDelete = () => {
|
|
83
|
-
|
|
84
|
-
|
|
101
|
+
const onDelete = (idx) => {
|
|
102
|
+
if (!props.multiple) {
|
|
103
|
+
modelValue.value = null
|
|
104
|
+
} else {
|
|
105
|
+
modelValue.value.splice(idx, 1)
|
|
106
|
+
}
|
|
85
107
|
}
|
|
108
|
+
|
|
109
|
+
watch(() => JSON.stringify(modelValue.value), async (n, o) => {
|
|
110
|
+
if (!props.multiple) {
|
|
111
|
+
data.selectedNodeId = modelValue.value
|
|
112
|
+
} else {
|
|
113
|
+
data.selectedNodes = []
|
|
114
|
+
modelValue.value.forEach(async(id) => {
|
|
115
|
+
let params = {}
|
|
116
|
+
params.id = id
|
|
117
|
+
params.isReturnParent = false
|
|
118
|
+
params.hasChildren = false
|
|
119
|
+
params.hasUsers=true
|
|
120
|
+
await props.idQueryNode(params,(node)=>{
|
|
121
|
+
let one = util.findNode(id, node.children)
|
|
122
|
+
if(one){
|
|
123
|
+
data.selectedNodes = [...data.selectedNodes, one]
|
|
124
|
+
}
|
|
125
|
+
})
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
}
|
|
129
|
+
}, {
|
|
130
|
+
immediate: true
|
|
131
|
+
})
|
|
86
132
|
</script>
|
|
87
133
|
|
|
88
134
|
<style scoped></style>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="widget">
|
|
3
|
-
<van-field v-model="formatLabel" :is-link="!isReadonly && !isDisabled" :label="props.label" :placeholder="props.placeholder" readonly
|
|
3
|
+
<van-field v-if="!isGone && !props.multiple" v-model="formatLabel" :is-link="!isReadonly && !isDisabled" :label="props.label" :placeholder="props.placeholder" readonly
|
|
4
4
|
:required="isRequired" :disabled="isDisabled" @click="onShow" />
|
|
5
5
|
<van-popup v-model:show="data.isShow" destroy-on-close round position="bottom">
|
|
6
6
|
<van-picker :columns="props.options" @cancel="onCancel" @confirm="onConfirm" />
|
|
@@ -14,9 +14,9 @@ import util from '../util'
|
|
|
14
14
|
import { useVModel } from '@vueuse/core'
|
|
15
15
|
|
|
16
16
|
const props = defineProps({
|
|
17
|
-
|
|
18
|
-
type:
|
|
19
|
-
default:
|
|
17
|
+
multiple:{
|
|
18
|
+
type:Boolean,
|
|
19
|
+
default:false
|
|
20
20
|
},
|
|
21
21
|
label: {
|
|
22
22
|
type: String,
|
|
@@ -9,14 +9,283 @@
|
|
|
9
9
|
import { onMounted, reactive } from "vue";
|
|
10
10
|
|
|
11
11
|
const data = reactive({
|
|
12
|
-
processId:
|
|
12
|
+
processId: 46, // 流程ID
|
|
13
13
|
// processId: null, // 流程ID
|
|
14
|
-
mouldId:
|
|
15
|
-
userId: '
|
|
14
|
+
mouldId: 70, // 模板ID
|
|
15
|
+
userId: 'HouMuXiaoHao',
|
|
16
16
|
form:{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
"createTime": "2025-08-30 16:11:59",
|
|
18
|
+
"updateTime": "2025-08-30 16:11:59",
|
|
19
|
+
"id": "JGYlNy5l",
|
|
20
|
+
"no": "250830001",
|
|
21
|
+
"processId": 46,
|
|
22
|
+
"projectId": "qWnOdjlZ",
|
|
23
|
+
"applicantId": "HouMu",
|
|
24
|
+
"partId": "gUxSbWTX",
|
|
25
|
+
"stageId": "5dnwEcR1",
|
|
26
|
+
"jobId": "kLhCnx6j",
|
|
27
|
+
"workerId": "HouMuXiaoHao",
|
|
28
|
+
"files": [
|
|
29
|
+
"http://www.zjpsjdsb.online/static//i9zX2twr.jpg"
|
|
30
|
+
],
|
|
31
|
+
"price": 100.00,
|
|
32
|
+
"endTime": "2025-08-30 16:11:42",
|
|
33
|
+
"isPenalty": true,
|
|
34
|
+
"remark": "",
|
|
35
|
+
"isCancel": false,
|
|
36
|
+
"salaryId": null,
|
|
37
|
+
"project": {
|
|
38
|
+
"createTime": "2025-08-24 14:08:30",
|
|
39
|
+
"updateTime": "2025-08-24 14:08:30",
|
|
40
|
+
"id": "qWnOdjlZ",
|
|
41
|
+
"name": "银沙滩",
|
|
42
|
+
"files": null,
|
|
43
|
+
"price": 100000.00,
|
|
44
|
+
"pay": 10000.00,
|
|
45
|
+
"pays": [
|
|
46
|
+
{
|
|
47
|
+
"label": "首付款",
|
|
48
|
+
"value": 10000.00,
|
|
49
|
+
"time": "2025-08-27 11:26:17"
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"missions": [
|
|
53
|
+
{
|
|
54
|
+
"id": "eec37433",
|
|
55
|
+
"title": "点工",
|
|
56
|
+
"amount": 1000.00,
|
|
57
|
+
"finishAmount": 18.00,
|
|
58
|
+
"unit": "小时",
|
|
59
|
+
"unitPrice": 30.00,
|
|
60
|
+
"dayMax": 18.00
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "eec2a5d3",
|
|
64
|
+
"title": "卸货",
|
|
65
|
+
"amount": 2000.00,
|
|
66
|
+
"finishAmount": 0.00,
|
|
67
|
+
"unit": "个",
|
|
68
|
+
"unitPrice": 20.00,
|
|
69
|
+
"dayMax": 50.00
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"managerIds": [
|
|
73
|
+
"HouMu"
|
|
74
|
+
],
|
|
75
|
+
"workerIds": [
|
|
76
|
+
"HouMu",
|
|
77
|
+
"HouMuXiaoHao",
|
|
78
|
+
"LiuXiaoYu"
|
|
79
|
+
],
|
|
80
|
+
"remark": null
|
|
81
|
+
},
|
|
82
|
+
"applicant": {
|
|
83
|
+
"createTime": "2025-08-22 11:39:58",
|
|
84
|
+
"updateTime": "2025-08-22 11:39:58",
|
|
85
|
+
"userid": "HouMu",
|
|
86
|
+
"name": "侯木",
|
|
87
|
+
"position": "大工",
|
|
88
|
+
"gender": "",
|
|
89
|
+
"mainDepartment": "2",
|
|
90
|
+
"deptIds": [
|
|
91
|
+
"2"
|
|
92
|
+
],
|
|
93
|
+
"mobile": null,
|
|
94
|
+
"telephone": "",
|
|
95
|
+
"avatar": "",
|
|
96
|
+
"address": "",
|
|
97
|
+
"status": 1,
|
|
98
|
+
"isleader": 0,
|
|
99
|
+
"idCardNo": null,
|
|
100
|
+
"salary": 100.00,
|
|
101
|
+
"roleIds": [
|
|
102
|
+
"项目经理",
|
|
103
|
+
"admin"
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
"part": {
|
|
107
|
+
"createTime": "2025-08-26 11:07:27",
|
|
108
|
+
"updateTime": "2025-08-26 11:07:27",
|
|
109
|
+
"id": "gUxSbWTX",
|
|
110
|
+
"projectId": "qWnOdjlZ",
|
|
111
|
+
"treeCode": "01-01-02-01-02",
|
|
112
|
+
"level": 5,
|
|
113
|
+
"parentId": "bgNDb1vZ",
|
|
114
|
+
"name": "外机",
|
|
115
|
+
"quantity": 1,
|
|
116
|
+
"hasChildren": false,
|
|
117
|
+
"type": "空调",
|
|
118
|
+
"isOwnerModified": false,
|
|
119
|
+
"remark": null,
|
|
120
|
+
"state": "已开始",
|
|
121
|
+
"formatName": "外机空调",
|
|
122
|
+
"children": null,
|
|
123
|
+
"path": "1栋>1单元>12层>1201室>外机空调",
|
|
124
|
+
"paths": null
|
|
125
|
+
},
|
|
126
|
+
"stage": {
|
|
127
|
+
"createTime": "2025-08-26 11:09:10",
|
|
128
|
+
"updateTime": "2025-08-26 11:09:10",
|
|
129
|
+
"id": "5dnwEcR1",
|
|
130
|
+
"projectId": "qWnOdjlZ",
|
|
131
|
+
"partId": "gUxSbWTX",
|
|
132
|
+
"name": "连接外机喇叭口",
|
|
133
|
+
"orderIndex": 1,
|
|
134
|
+
"state": "已完成",
|
|
135
|
+
"quantity": 1,
|
|
136
|
+
"finishQuantity": 1,
|
|
137
|
+
"remainQuantity": 0,
|
|
138
|
+
"unitPrice": 1.00,
|
|
139
|
+
"remark": null
|
|
140
|
+
},
|
|
141
|
+
"job": {
|
|
142
|
+
"createTime": "2025-08-30 16:04:56",
|
|
143
|
+
"updateTime": "2025-08-30 16:04:56",
|
|
144
|
+
"id": "kLhCnx6j",
|
|
145
|
+
"projectId": "qWnOdjlZ",
|
|
146
|
+
"partId": "gUxSbWTX",
|
|
147
|
+
"stageId": "5dnwEcR1",
|
|
148
|
+
"workerId": "HouMuXiaoHao",
|
|
149
|
+
"finishQuantity": 1,
|
|
150
|
+
"unitPrice": 1.00,
|
|
151
|
+
"pay": 1.00,
|
|
152
|
+
"images": [],
|
|
153
|
+
"remark": "",
|
|
154
|
+
"salaryId": null,
|
|
155
|
+
"worker": {
|
|
156
|
+
"createTime": "2025-08-22 11:39:58",
|
|
157
|
+
"updateTime": "2025-08-22 11:39:58",
|
|
158
|
+
"userid": "HouMuXiaoHao",
|
|
159
|
+
"name": "侯木小号",
|
|
160
|
+
"position": "小工",
|
|
161
|
+
"gender": "",
|
|
162
|
+
"mainDepartment": "2",
|
|
163
|
+
"deptIds": [
|
|
164
|
+
"2"
|
|
165
|
+
],
|
|
166
|
+
"mobile": null,
|
|
167
|
+
"telephone": "",
|
|
168
|
+
"avatar": "",
|
|
169
|
+
"address": "",
|
|
170
|
+
"status": 1,
|
|
171
|
+
"isleader": 0,
|
|
172
|
+
"idCardNo": null,
|
|
173
|
+
"salary": 1000.00,
|
|
174
|
+
"roleIds": [
|
|
175
|
+
"项目经理"
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
"project": {
|
|
179
|
+
"createTime": "2025-08-24 14:08:30",
|
|
180
|
+
"updateTime": "2025-08-24 14:08:30",
|
|
181
|
+
"id": "qWnOdjlZ",
|
|
182
|
+
"name": "银沙滩",
|
|
183
|
+
"files": null,
|
|
184
|
+
"price": 100000.00,
|
|
185
|
+
"pay": 10000.00,
|
|
186
|
+
"pays": [
|
|
187
|
+
{
|
|
188
|
+
"label": "首付款",
|
|
189
|
+
"value": 10000.00,
|
|
190
|
+
"time": "2025-08-27 11:26:17"
|
|
191
|
+
}
|
|
192
|
+
],
|
|
193
|
+
"missions": [
|
|
194
|
+
{
|
|
195
|
+
"id": "eec37433",
|
|
196
|
+
"title": "点工",
|
|
197
|
+
"amount": 1000.00,
|
|
198
|
+
"finishAmount": 18.00,
|
|
199
|
+
"unit": "小时",
|
|
200
|
+
"unitPrice": 30.00,
|
|
201
|
+
"dayMax": 18.00
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"id": "eec2a5d3",
|
|
205
|
+
"title": "卸货",
|
|
206
|
+
"amount": 2000.00,
|
|
207
|
+
"finishAmount": 0.00,
|
|
208
|
+
"unit": "个",
|
|
209
|
+
"unitPrice": 20.00,
|
|
210
|
+
"dayMax": 50.00
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
"managerIds": [
|
|
214
|
+
"HouMu"
|
|
215
|
+
],
|
|
216
|
+
"workerIds": [
|
|
217
|
+
"HouMu",
|
|
218
|
+
"HouMuXiaoHao",
|
|
219
|
+
"LiuXiaoYu"
|
|
220
|
+
],
|
|
221
|
+
"remark": null
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
"worker": {
|
|
225
|
+
"createTime": "2025-08-22 11:39:58",
|
|
226
|
+
"updateTime": "2025-08-22 11:39:58",
|
|
227
|
+
"userid": "HouMuXiaoHao",
|
|
228
|
+
"name": "侯木小号",
|
|
229
|
+
"position": "小工",
|
|
230
|
+
"gender": "",
|
|
231
|
+
"mainDepartment": "2",
|
|
232
|
+
"deptIds": [
|
|
233
|
+
"2"
|
|
234
|
+
],
|
|
235
|
+
"mobile": null,
|
|
236
|
+
"telephone": "",
|
|
237
|
+
"avatar": "",
|
|
238
|
+
"address": "",
|
|
239
|
+
"status": 1,
|
|
240
|
+
"isleader": 0,
|
|
241
|
+
"idCardNo": null,
|
|
242
|
+
"salary": 1000.00,
|
|
243
|
+
"roleIds": [
|
|
244
|
+
"项目经理"
|
|
245
|
+
]
|
|
246
|
+
},
|
|
247
|
+
"process": {
|
|
248
|
+
"id": 46,
|
|
249
|
+
"formId": "JGYlNy5l",
|
|
250
|
+
"formNo": "250830001",
|
|
251
|
+
"templateId": 238,
|
|
252
|
+
"mouldId": 70,
|
|
253
|
+
"mouldTitle": "整改单",
|
|
254
|
+
"startUserId": "HouMu",
|
|
255
|
+
"startUserName": "侯木",
|
|
256
|
+
"form": {
|
|
257
|
+
"id": "JGYlNy5l",
|
|
258
|
+
"no": "250830001",
|
|
259
|
+
"files": [
|
|
260
|
+
"http://www.zjpsjdsb.online/static//i9zX2twr.jpg"
|
|
261
|
+
],
|
|
262
|
+
"jobId": "kLhCnx6j",
|
|
263
|
+
"price": 100,
|
|
264
|
+
"partId": "gUxSbWTX",
|
|
265
|
+
"remark": "",
|
|
266
|
+
"endTime": "2025-08-30 16:11:42",
|
|
267
|
+
"stageId": "5dnwEcR1",
|
|
268
|
+
"isCancel": false,
|
|
269
|
+
"salaryId": null,
|
|
270
|
+
"workerId": "HouMuXiaoHao",
|
|
271
|
+
"creatorId": null,
|
|
272
|
+
"isPenalty": true,
|
|
273
|
+
"processId": 46,
|
|
274
|
+
"projectId": "qWnOdjlZ",
|
|
275
|
+
"updaterId": "HouMu",
|
|
276
|
+
"createTime": "2025-08-30 16:11:59",
|
|
277
|
+
"updateTime": "2025-08-30 16:11:59",
|
|
278
|
+
"applicantId": "HouMu"
|
|
279
|
+
},
|
|
280
|
+
"state": "started",
|
|
281
|
+
"finishedAt": null,
|
|
282
|
+
"createdAt": "2025-08-30 16:11:59",
|
|
283
|
+
"updatedAt": "2025-08-30 16:19:12",
|
|
284
|
+
"deletedAt": null,
|
|
285
|
+
"loginUserState": "started",
|
|
286
|
+
"loginUserStateLabel": "待审核",
|
|
287
|
+
"stateLabel": "进行中"
|
|
288
|
+
}
|
|
20
289
|
}
|
|
21
290
|
})
|
|
22
291
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|