970319330@qq.com hai 2 días
pai
achega
d9f7e82274

BIN=BIN
.DS_Store


+ 237 - 227
src/Form/headquartersServiceMaterial/add.vue

@@ -17,240 +17,245 @@
             @close="onCancel"
         >
             <div class="drawer__panel">
-                <el-form
-                    :model="form"
-                    :rules="rules"
-                    ref="form"
-                    :label-width="tool.onlyZh('180px')"
-                    label-position="right"
-                    size="mini"
-                >
-                    <el-col :span="24">
-                        <el-form-item :label="$t('物料名称:')" prop="name">
-                            <el-input
-                                v-model="form.name"
-                                :placeholder="$t('请填写物料名称')"
-                            ></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item :label="$t('物料编号:')" prop="code">
-                            <el-input
-                                v-model="form.code"
-                                :placeholder="$t('请填写物料编号')"
-                            ></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item
-                            :label="$t('erp品名:')"
-                            prop="erpitemname"
-                        >
-                            <el-input
-                                v-model="form.erpitemname"
-                                :placeholder="$t('请填写erp品名')"
-                            ></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item :label="$t('erp品号:')" prop="erpitemno">
-                            <el-input
-                                v-model="form.erpitemno"
-                                :placeholder="$t('请填写erp品号')"
-                            ></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item :label="$t('牌价:')" prop="marketprice">
-                            <el-input
-                                v-model="form.marketprice"
-                                :placeholder="$t('请填写牌价')"
-                            ></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item
-                            :label="$t('辅助单位:')"
-                            prop="isauxunit"
-                        >
-                            <el-checkbox
-                                v-model="form.isauxunit"
-                                :true-label="1"
-                                :false-label="0"
+                <el-row :gutter="20">
+                    <el-form
+                        :model="form"
+                        :rules="rules"
+                        ref="form"
+                        :label-width="tool.onlyZh('100px')"
+                        label-position="right"
+                        size="mini"
+                    >
+                        <el-col :span="24">
+                            <el-form-item :label="$t('物料名称:')" prop="name">
+                                <el-input
+                                    v-model="form.name"
+                                    :placeholder="$t('请填写物料名称')"
+                                ></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item :label="$t('物料编号:')" prop="code">
+                                <el-input
+                                    v-model="form.code"
+                                    :placeholder="$t('请填写物料编号')"
+                                ></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('erp品名:')"
+                                prop="erpitemname"
                             >
-                                {{ $t("是否需要辅助单位") }}
-                            </el-checkbox>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item :label="$t(`主单位`)" prop="unitid">
-                            <el-select
-                                style="width: 100%"
-                                v-model="form.unitid"
-                                :placeholder="$t('请选择')"
-                                @change="unitChange"
-                                clearable
+                                <el-input
+                                    v-model="form.erpitemname"
+                                    :placeholder="$t('请填写erp品名')"
+                                ></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('erp品号:')"
+                                prop="erpitemno"
                             >
-                                <el-option
-                                    v-for="item in unitData"
-                                    :key="item.unitid"
-                                    :label="$t(item.unitname)"
-                                    :value="item.unitid"
-                                >
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                    </el-col>
-                    <!-- 辅助单位 -->
-                    <!-- <el-col :span="24">
-                        <el-form-item :label="$t('辅助单位:')" prop="auxunit">
-                            <el-input v-model="form.auxunit" :placeholder="$t('请填写辅助单位')"></el-input>
-                        </el-form-item>
-                    </el-col> -->
-                    <el-col :span="24">
-                        <el-form-item :label="$t(`辅助单位`)">
-                            <el-select
-                                style="width: 100%"
-                                v-model="form.auxunitid"
-                                :disabled="form.isauxunit === 0"
-                                :placeholder="$t('请选择')"
-                                clearable
-                                @change="auxunitChange"
+                                <el-input
+                                    v-model="form.erpitemno"
+                                    :placeholder="$t('请填写erp品号')"
+                                ></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('牌价:')"
+                                prop="marketprice"
+                            >
+                                <el-input
+                                    v-model="form.marketprice"
+                                    :placeholder="$t('请填写牌价')"
+                                ></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('辅助单位:')"
+                                prop="isauxunit"
                             >
-                                <el-option
-                                    v-for="item in unitGroupData"
-                                    :key="item.unitgroupid"
-                                    :label="$t(item.unitgroupname)"
-                                    :value="item.unitgroupid"
+                                <el-checkbox
+                                    v-model="form.isauxunit"
+                                    :true-label="1"
+                                    :false-label="0"
                                 >
-                                    <p style="float: left">
-                                        {{ item.unitgroupname }}
-                                    </p>
-                                    <p
-                                        style="
-                                            float: right;
-                                            color: #8492a6;
-                                            font-size: 13px;
-                                        "
+                                    {{ $t("是否需要辅助单位") }}
+                                </el-checkbox>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item :label="$t(`主单位`)" prop="unitid">
+                                <el-select
+                                    style="width: 100%"
+                                    v-model="form.unitid"
+                                    :placeholder="$t('请选择')"
+                                    @change="unitChange"
+                                    clearable
+                                >
+                                    <el-option
+                                        v-for="item in unitData"
+                                        :key="item.unitid"
+                                        :label="$t(item.unitname)"
+                                        :value="item.unitid"
                                     >
-                                        {{ item.conversionrate
-                                        }}{{ item.unitname }}/{{
-                                            item.auxunitname
-                                        }},{{ $t(`换算率`) }}:{{
-                                            "1:" + item.conversionrate
-                                        }}
-                                    </p>
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item :label="$t(`领域`)" prop="domains">
-                            <el-select
-                                style="width: 100%"
-                                v-model="form.domains"
-                                multiple
-                                :placeholder="$t('请选择')"
-                                clearable
-                            >
-                                <el-option
-                                    v-for="item in tradefield"
-                                    :key="item.value"
-                                    :label="$t(item.value)"
-                                    :value="item.value"
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item :label="$t(`辅助单位`)">
+                                <el-select
+                                    style="width: 100%"
+                                    v-model="form.auxunitid"
+                                    :disabled="form.isauxunit === 0"
+                                    :placeholder="$t('请选择')"
+                                    clearable
+                                    @change="auxunitChange"
+                                >
+                                    <el-option
+                                        v-for="item in unitGroupData"
+                                        :key="item.unitgroupid"
+                                        :label="$t(item.unitgroupname)"
+                                        :value="item.unitgroupid"
+                                    >
+                                        <p style="float: left">
+                                            {{ item.unitgroupname }}
+                                        </p>
+                                        <p
+                                            style="
+                                                float: right;
+                                                color: #8492a6;
+                                                font-size: 13px;
+                                            "
+                                        >
+                                            {{ item.conversionrate
+                                            }}{{ item.unitname }}/{{
+                                                item.auxunitname
+                                            }},{{ $t(`换算率`) }}:{{
+                                                "1:" + item.conversionrate
+                                            }}
+                                        </p>
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item :label="$t(`领域`)" prop="domains">
+                                <el-select
+                                    style="width: 100%"
+                                    v-model="form.domains"
+                                    multiple
+                                    :placeholder="$t('请选择')"
+                                    clearable
                                 >
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item :label="$t('型号:')" prop="type">
-                            <el-input
-                                v-model="form.type"
-                                :placeholder="$t('请填写型号')"
-                            ></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item :label="$t('规格:')" prop="spec">
-                            <el-input
-                                v-model="form.spec"
-                                :placeholder="$t('请填写规格')"
-                            ></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item :label="$t('起订量:')" prop="start_num">
-                            <el-input-number
-                                v-model="form.start_num"
-                                :min="1"
-                                :placeholder="$t('请填写起订量')"
-                            />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item :label="$t('增量:')" prop="increment">
-                            <el-input-number
-                                v-model="form.increment"
-                                :min="1"
-                                :placeholder="$t('请填写增量')"
-                            />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item :label="$t('备注:')" prop="remark">
-                            <el-input
-                                type="textarea"
-                                v-model="form.remark"
-                                :placeholder="$t('请填写备注')"
-                            ></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="20">
-                        <el-form-item :label="$t('物料图:')">
-                            <div
-                                class="flex-align-center"
-                                style="flex-wrap: wrap"
+                                    <el-option
+                                        v-for="item in tradefield"
+                                        :key="item.value"
+                                        :label="$t(item.value)"
+                                        :value="item.value"
+                                    >
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item :label="$t('型号:')" prop="type">
+                                <el-input
+                                    v-model="form.type"
+                                    :placeholder="$t('请填写型号')"
+                                ></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item :label="$t('规格:')" prop="spec">
+                                <el-input
+                                    v-model="form.spec"
+                                    :placeholder="$t('请填写规格')"
+                                ></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('起订量:')"
+                                prop="start_num"
+                            >
+                                <el-input-number
+                                    v-model="form.start_num"
+                                    :min="1"
+                                    :placeholder="$t('请填写起订量')"
+                                />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('增量:')"
+                                prop="increment"
                             >
-                                <uploadFile
-                                    ref="upload"
-                                    style="margin-top: 10px"
-                                    :folderid="folderid"
-                                    accept=".JPG,.PNG,.jpg,.png"
-                                    type="image"
-                                    :bindData="bindData"
-                                    @onSuccess="uploadSuccess"
+                                <el-input-number
+                                    v-model="form.increment"
+                                    :min="1"
+                                    :placeholder="$t('请填写增量')"
+                                />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item :label="$t('备注:')" prop="remark">
+                                <el-input
+                                    type="textarea"
+                                    v-model="form.remark"
+                                    :placeholder="$t('请填写备注')"
+                                ></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="20">
+                            <el-form-item :label="$t('物料图:')">
+                                <div
+                                    class="flex-align-center"
+                                    style="flex-wrap: wrap"
                                 >
-                                </uploadFile>
-                                <template v-if="title_btn == '编辑'">
-                                    <previewImage
-                                        style="
-                                            margin-left: 10px;
-                                            margin-top: 10px;
-                                        "
-                                        v-for="image in form.attinfos"
-                                        :key="image.index"
-                                        :image="image"
-                                        :deletebtn="true"
-                                        @onSuccess="clearCover"
-                                    ></previewImage>
-                                </template>
-                            </div>
+                                    <uploadFile
+                                        ref="upload"
+                                        style="margin: 10px 10px 10px 0"
+                                        :folderid="folderid"
+                                        accept=".JPG,.PNG,.jpg,.png"
+                                        type="image"
+                                        :bindData="bindData"
+                                        @onSuccess="uploadSuccess"
+                                    >
+                                    </uploadFile>
+                                    <template v-if="title_btn == '编辑'">
+                                        <previewImage
+                                            style="
+                                                margin: 10px 10px 10px 0;
+                                            "
+                                            v-for="image in form.attinfos"
+                                            :key="image.index"
+                                            :image="image"
+                                            :deletebtn="true"
+                                            @onSuccess="clearCover"
+                                        ></previewImage>
+                                    </template>
+                                </div>
 
-                            <small
-                                style="
-                                    display: block;
-                                    margin-top: 20px;
-                                    margin-bottom: 80px;
-                                "
-                                class="info"
-                                >{{ $t(`注:建议上传图片大小`) }}1024x1024px,{{
-                                    $t("大小不超过")
-                                }}2M,{{ $t("格式为") }}JPG/PNG</small
-                            >
-                        </el-form-item>
-                    </el-col>
-                </el-form>
+                                <small
+                                    style="display: block; margin-top: 18px"
+                                    class="info"
+                                    >{{
+                                        $t(`注:建议上传图片大小`)
+                                    }}1024x1024px,{{ $t("大小不超过") }}2M,{{
+                                        $t("格式为")
+                                    }}JPG/PNG</small
+                                >
+                            </el-form-item>
+                        </el-col>
+                    </el-form>
+                </el-row>
             </div>
             <div class="fixed__btn__panel">
                 <el-button
@@ -461,11 +466,16 @@ export default {
                 });
                 if (res.code === 0) {
                     this.loading = false;
-                    this.$message.error(res.msg || "新建失败");
+                    this.$message.error(
+                        res.msg ||
+                            (this.title_btn == "编辑" ? "编辑失败" : "新建失败")
+                    );
                     return;
                 }
                 this.loading = false;
-                this.$message.success("新建成功");
+                this.$message.success(
+                    this.title_btn == "编辑" ? "编辑成功" : "新建成功"
+                );
                 this.bindData = {
                     ownertable: "sc_item",
                     ownerid: res.data.sc_itemid,

+ 9 - 5
src/Form/ourServiceMaterial/add.vue

@@ -208,7 +208,7 @@
                             >
                                 <uploadFile
                                     ref="upload"
-                                    style="margin-top: 10px"
+                                    style="margin: 10px 10px 10px 0"
                                     :folderid="folderid"
                                     accept=".JPG,.PNG,.jpg,.png"
                                     type="image"
@@ -219,8 +219,7 @@
                                 <template v-if="title_btn == '编辑'">
                                     <previewImage
                                         style="
-                                            margin-left: 10px;
-                                            margin-top: 10px;
+                                            margin: 10px 10px 10px 0;
                                         "
                                         v-for="image in form.attinfos"
                                         :key="image.index"
@@ -453,11 +452,16 @@ export default {
                 });
                 if (res.code === 0) {
                     this.loading = false;
-                    this.$message.error(res.msg || "新建失败");
+                    this.$message.error(
+                        res.msg ||
+                            (this.title_btn == "编辑" ? "编辑失败" : "新建失败")
+                    );
                     return;
                 }
                 this.loading = false;
-                this.$message.success("新建成功");
+                this.$message.success(
+                    this.title_btn == "编辑" ? "编辑成功" : "新建成功"
+                );
                 this.bindData = {
                     ownertable: "sc_item_local",
                     ownerid: res.data.sc_item_localid,

+ 154 - 128
src/Form/serviceWorkItem/add.vue

@@ -17,134 +17,160 @@
             @close="onCancel"
         >
             <div class="drawer__panel">
-                <el-form
-                    :model="form"
-                    :rules="rules"
-                    ref="form"
-                    :label-width="tool.onlyZh('180px')"
-                    label-position="right"
-                    size="mini"
-                >
-                    <el-col :span="24">
-                        <el-form-item :label="$t('工作名:')" prop="workname">
-                            <el-input
-                                v-model="form.workname"
-                                :placeholder="$t('请输入工作名')"
-                            ></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item :label="$t('操作说明:')" prop="remarks">
-                            <el-input
-                                type="textarea"
-                                v-model="form.remarks"
-                                :placeholder="$t('请输入操作说明')"
-                            ></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item
-                            :label="$t('上传附件:')"
-                            prop="fileupload"
-                        >
-                            <el-radio-group v-model="form.fileupload">
-                                <el-radio :label="11">{{
-                                    $t("必填")
-                                }}</el-radio>
-                                <el-radio :label="1">{{
-                                    $t("非必填")
-                                }}</el-radio>
-                                <el-radio :label="0">{{ $t("无") }}</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item
-                            :label="$t('是否添加物料:')"
-                            prop="additem"
-                        >
-                            <el-radio-group v-model="form.additem">
-                                <el-radio :label="11">{{
-                                    $t("必填")
-                                }}</el-radio>
-                                <el-radio :label="1">{{
-                                    $t("非必填")
-                                }}</el-radio>
-                                <el-radio :label="0">{{ $t("无") }}</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item
-                            :label="$t('上传全景影像:')"
-                            prop="panorama"
-                        >
-                            <el-radio-group v-model="form.panorama">
-                                <el-radio :label="11">{{
-                                    $t("必填")
-                                }}</el-radio>
-                                <el-radio :label="1">{{
-                                    $t("非必填")
-                                }}</el-radio>
-                                <el-radio :label="0">{{ $t("无") }}</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item
-                            :label="$t('是否合格:')"
-                            prop="passcheck"
-                        >
-                            <el-radio-group v-model="form.passcheck">
-                                <el-radio :label="11">{{
-                                    $t("必填")
-                                }}</el-radio>
-                                <el-radio :label="1">{{
-                                    $t("非必填")
-                                }}</el-radio>
-                                <el-radio :label="0">{{ $t("无") }}</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item
-                            :label="$t('是否客户签名:')"
-                            prop="signature"
-                        >
-                            <el-radio-group v-model="form.signature">
-                                <el-radio :label="11">{{
-                                    $t("必填")
-                                }}</el-radio>
-                                <el-radio :label="1">{{
-                                    $t("非必填")
-                                }}</el-radio>
-                                <el-radio :label="0">{{ $t("无") }}</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item
-                            :label="$t('内容是否需要验证表单:')"
-                            prop="formcheck"
-                        >
-                            <el-radio-group v-model="form.formcheck">
-                                <el-radio :label="1">{{ $t("是") }}</el-radio>
-                                <el-radio :label="0">{{ $t("否") }}</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item
-                            :label="$t('是否必填服务节点:')"
-                            prop="servicenode"
-                        >
-                            <el-radio-group v-model="form.servicenode">
-                                <el-radio :label="1">{{ $t("是") }}</el-radio>
-                                <el-radio :label="0">{{ $t("否") }}</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                    </el-col>
-                </el-form>
+                <el-row :gutter="20">
+                    <el-form
+                        :model="form"
+                        :rules="rules"
+                        ref="form"
+                        :label-width="tool.onlyZh('170px')"
+                        label-position="right"
+                        size="mini"
+                    >
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('工作名:')"
+                                prop="workname"
+                            >
+                                <el-input
+                                    v-model="form.workname"
+                                    :placeholder="$t('请输入工作名')"
+                                ></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('操作说明:')"
+                                prop="remarks"
+                            >
+                                <el-input
+                                    type="textarea"
+                                    v-model="form.remarks"
+                                    :placeholder="$t('请输入操作说明')"
+                                ></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('上传附件:')"
+                                prop="fileupload"
+                            >
+                                <el-radio-group v-model="form.fileupload">
+                                    <el-radio :label="11">{{
+                                        $t("必填")
+                                    }}</el-radio>
+                                    <el-radio :label="1">{{
+                                        $t("非必填")
+                                    }}</el-radio>
+                                    <el-radio :label="0">{{
+                                        $t("无")
+                                    }}</el-radio>
+                                </el-radio-group>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('是否添加物料:')"
+                                prop="additem"
+                            >
+                                <el-radio-group v-model="form.additem">
+                                    <el-radio :label="11">{{
+                                        $t("必填")
+                                    }}</el-radio>
+                                    <el-radio :label="1">{{
+                                        $t("非必填")
+                                    }}</el-radio>
+                                    <el-radio :label="0">{{
+                                        $t("无")
+                                    }}</el-radio>
+                                </el-radio-group>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('上传全景影像:')"
+                                prop="panorama"
+                            >
+                                <el-radio-group v-model="form.panorama">
+                                    <el-radio :label="11">{{
+                                        $t("必填")
+                                    }}</el-radio>
+                                    <el-radio :label="1">{{
+                                        $t("非必填")
+                                    }}</el-radio>
+                                    <el-radio :label="0">{{
+                                        $t("无")
+                                    }}</el-radio>
+                                </el-radio-group>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('是否合格:')"
+                                prop="passcheck"
+                            >
+                                <el-radio-group v-model="form.passcheck">
+                                    <el-radio :label="11">{{
+                                        $t("必填")
+                                    }}</el-radio>
+                                    <el-radio :label="1">{{
+                                        $t("非必填")
+                                    }}</el-radio>
+                                    <el-radio :label="0">{{
+                                        $t("无")
+                                    }}</el-radio>
+                                </el-radio-group>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('是否客户签名:')"
+                                prop="signature"
+                            >
+                                <el-radio-group v-model="form.signature">
+                                    <el-radio :label="11">{{
+                                        $t("必填")
+                                    }}</el-radio>
+                                    <el-radio :label="1">{{
+                                        $t("非必填")
+                                    }}</el-radio>
+                                    <el-radio :label="0">{{
+                                        $t("无")
+                                    }}</el-radio>
+                                </el-radio-group>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('内容是否需要验证表单:')"
+                                prop="formcheck"
+                            >
+                                <el-radio-group v-model="form.formcheck">
+                                    <el-radio :label="1">{{
+                                        $t("是")
+                                    }}</el-radio>
+                                    <el-radio :label="0">{{
+                                        $t("否")
+                                    }}</el-radio>
+                                </el-radio-group>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item
+                                :label="$t('是否必填服务节点:')"
+                                prop="servicenode"
+                            >
+                                <el-radio-group v-model="form.servicenode">
+                                    <el-radio :label="1">{{
+                                        $t("是")
+                                    }}</el-radio>
+                                    <el-radio :label="0">{{
+                                        $t("否")
+                                    }}</el-radio>
+                                </el-radio-group>
+                            </el-form-item>
+                        </el-col>
+                    </el-form>
+                </el-row>
             </div>
             <div class="fixed__btn__panel">
                 <el-button

+ 1 - 1
src/bgj/ServiceMaterialClass/component/saleclass/components/delete.vue

@@ -12,7 +12,7 @@ export default {
   methods: {
     async deleteRow() {
       let res = await this.$api.requested({
-          "id": "20220922110503",
+          "id": "20220922110506",
           "version":1,
           "content": {
               "itemclassid":this.id

+ 22 - 4
src/bgj/ServiceMaterialClass/component/saleclass/index.vue

@@ -90,18 +90,30 @@ export default {
   },
   methods: {
     async department (callback) {
-      this.tableData = this.createTreeData(this.data.ttemclass)
+      // ID20230325141106
+      const res = await this.$api.requested({
+        "id": "20230325141106",
+        "content": {
+          "sc_brandid":this.data.sa_brandid
+        }
+      })
+      this.tableData = this.createTreeData(res.data[0].ttemclass)
+      console.log(this.tableData);
     },
     createTreeData (array) {
       var that = this
       let arr = []
       function convertToElementTree(node) {
+        var id = node.itemclassid || node.sc_itemclassid
+        if (!id) {
+          return null
+        }
         var elNode = {
           num:node['num'],
           itemclassfullname:node['itemclassfullname'],
           itemclassname: node["itemclassname"],
           parentid:node['parentid'],
-          itemclassid:node['itemclassid'],
+          itemclassid:id,
           itemclassnum:node['itemclassnum'],
           sa_brandid:that.data.sa_brandid,
           ishide:node['ishide'],
@@ -112,13 +124,19 @@ export default {
 
         if (node.subdep && node.subdep.length > 0) {
           for (var index = 0; index < node.subdep.length; index++) {
-            elNode.children.push(convertToElementTree(node.subdep[index]));
+            var child = convertToElementTree(node.subdep[index]);
+            if (child) {
+              elNode.children.push(child);
+            }
           }
         }
         return elNode;
       }
       array.forEach((element) => {
-        arr.push(convertToElementTree(element))
+        var result = convertToElementTree(element)
+        if (result) {
+          arr.push(result)
+        }
       });
       return arr
     },

+ 69 - 6
src/bgj/integralgoverning/index.vue

@@ -1,13 +1,76 @@
 <template>
-    <div>
-        积分调整
-    </div>
+    <basicLayout
+        ref="list"
+        tableName="integralAdjustTable"
+        idName="id"
+        :apiId="{ query: 2026052510111106 }"
+        :detailPath="{
+            path: '/integralAdjustDetail',
+        }"
+    >
+        <template #custom>
+            <div class="mt-10">
+                <label class="search__label">{{ $t("调整类型") }}:</label>
+                <el-select
+                    class="inline-24"
+                    v-model="where.adjusttype"
+                    :placeholder="$t(`请选择调整类型`)"
+                    @change="selectChange"
+                    size="small"
+                    clearable
+                >
+                    <el-option :label="$t(`增加`)" value="增加"></el-option>
+                    <el-option :label="$t(`减少`)" value="减少"></el-option>
+                </el-select>
+            </div>
+            <div class="mt-10">
+                <label class="search__label">{{ $t("查询条件") }}:</label>
+                <el-input
+                    class="inline-24"
+                    v-model="where.condition"
+                    :placeholder="$t(`请输入查询条件`)"
+                    @change="selectChange"
+                    size="small"
+                    clearable
+                ></el-input>
+            </div>
+        </template>
+        <template v-slot:tbList="scope">
+            <div v-if="scope.data.column.columnname === 'adjusttype'">
+                <span :style="scope.data.column.data.adjusttype === '增加' ? 'color:#52C41A' : 'color:#F5222D'">
+                    {{ $t(scope.data.column.data.adjusttype) }}
+                </span>
+            </div>
+            <div v-else-if="scope.data.column.columnname === 'points'">
+                {{ scope.data.column.data.points }}
+            </div>
+            <div v-else-if="scope.data.column.columnname === 'createTime'">
+                {{ scope.data.column.data.createTime }}
+            </div>
+            <div v-else>{{ scope.data.column.data[scope.data.column.columnname] }}</div>
+        </template>
+    </basicLayout>
 </template>
 
 <script>
 export default {
-
-}
+    data() {
+        return {
+            where: {
+                adjusttype: "",
+                condition: ""
+            }
+        };
+    },
+    methods: {
+        selectChange() {
+            this.$refs.list.param.content.where = this.where;
+            this.$refs.list.param.content.pageNumber = 1;
+            this.$refs.list.listData();
+        }
+    }
+};
 </script>
 
-<style></style>
+<style scoped>
+</style>

+ 494 - 5
src/bgj/integrationrule/index.vue

@@ -1,13 +1,502 @@
 <template>
-    <div>
-        积分规则
+    <div class="integration-rule-page">
+        <div class="section-box">
+            <div class="section-title">积分生成规则</div>
+            <el-table :data="ruleData" border style="width: 100%">
+                <el-table-column prop="remarks" label="规则名称" min-width="200" show-overflow-tooltip />
+                <el-table-column prop="value" label="积分" width="200" align="center" />
+                <!-- <el-table-column label="操作" width="120" align="center">
+                    <template slot-scope="scope">
+                        <el-button type="text" size="small" @click="handleEdit(scope.row)">编辑</el-button>
+                    </template>
+                </el-table-column> -->
+            </el-table>
+        </div>
+
+        <div class="section-box mt-16">
+            <div class="section-title">积分规则编辑器</div>
+            <el-table :data="editorData" border>
+                <el-table-column label="工单模版" width="180" align="center">
+                    <template slot-scope="scope">
+                        <el-select
+                            v-model="scope.row.sc_workorder_templateid"
+                            placeholder="请选择"
+                            size="small"
+                            :disabled="!scope.row.isNew"
+                            @change="handleWorkOrderTypeChange(scope.$index, scope.row)"
+                        >
+                            <el-option
+                                v-for="item in workOrderTypeList"
+                                :key="item.sc_workorder_templateid"
+                                :label="item.name"
+                                :value="item.sc_workorder_templateid"
+                            ></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column label="A积分规则" align="center">
+                    <el-table-column label="团队定位" width="120" align="center">
+                        <template slot-scope="scope">
+                            <el-select v-model="scope.row.a_team" placeholder="请选择" size="small">
+                                <el-option label="组长" value="组长"></el-option>
+                                <el-option label="技师" value="技师"></el-option>
+                            </el-select>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="符号" width="80" align="center">
+                        <template slot-scope="scope">
+                            <el-select v-model="scope.row.a_symbol" size="small">
+                                <el-option label="=" value="="></el-option>
+                                <el-option label=">" value=">"></el-option>
+                                <el-option label="≥" value="≥"></el-option>
+                                <el-option label="<" value="<"></el-option>
+                                <el-option label="≤" value="≤"></el-option>
+                                <el-option label="≠" value="≠"></el-option>
+                            </el-select>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="人数" width="160" align="center">
+                        <template slot-scope="scope">
+                            <el-input v-model="scope.row.a_count" size="small" placeholder="请输入" oninput="value = value.replace(/[^\d]/g, '')"></el-input>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="积分占比(%)" width="160" align="center">
+                        <template slot-scope="scope">
+                            <el-input v-model="scope.row.a_ratio" size="small" placeholder="0-100" oninput="value = value.replace(/[^\d]/g, ''); if(value>100)value=100"></el-input>
+                        </template>
+                    </el-table-column>
+                </el-table-column>
+                <el-table-column label="C积分规则" align="center">
+                    <el-table-column label="团队定位" width="160" align="center">
+                        <template slot-scope="scope">
+                            <el-select v-model="scope.row.c_team" placeholder="请选择" size="small">
+                                <el-option label="组长" value="组长"></el-option>
+                                <el-option label="技师" value="技师"></el-option>
+                            </el-select>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="符号" width="80" align="center">
+                        <template slot-scope="scope">
+                            <el-select v-model="scope.row.c_symbol" size="small">
+                                <el-option label="=" value="="></el-option>
+                                <el-option label=">" value=">"></el-option>
+                                <el-option label="≥" value="≥"></el-option>
+                                <el-option label="<" value="<"></el-option>
+                                <el-option label="≤" value="≤"></el-option>
+                                <el-option label="≠" value="≠"></el-option>
+                            </el-select>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="人数" width="160" align="center">
+                        <template slot-scope="scope">
+                            <el-input v-model="scope.row.c_count" size="small" placeholder="请输入" oninput="value = value.replace(/[^\d]/g, '')"></el-input>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="积分占比(%)" width="160" align="center">
+                        <template slot-scope="scope">
+                            <el-input v-model="scope.row.c_ratio" size="small" placeholder="0-100" oninput="value = value.replace(/[^\d]/g, ''); if(value>100)value=100"></el-input>
+                        </template>
+                    </el-table-column>
+                </el-table-column>
+                <el-table-column label="操作" align="center">
+                    <template slot-scope="scope">
+                        <el-button type="text" size="small" @click="handleEditorSave(scope.$index)">保存</el-button>
+                        <!-- <el-button type="text" size="small" @click="handleEditorDelete(scope.$index)">删除</el-button> -->
+                    </template>
+                </el-table-column>
+            </el-table>
+            <div class="editor-footer">
+                <el-button type="primary" size="small" @click="handleAddRow">新增行</el-button>
+                <el-button size="small" @click="fetchEditorData">刷新</el-button>
+            </div>
+        </div>
+
+        <div class="section-box mt-16">
+            <div class="section-title">积分规则结果列表</div>
+            <el-table :data="mergedRuleData" border style="width: 100%" :span-method="objectSpanMethod">
+                <el-table-column prop="rowindex" width="80" label="序号" show-overflow-tooltip />
+                <el-table-column prop="workOrderTypeName" width="150" label="工单模版" show-overflow-tooltip />
+                <el-table-column label="A积分规则" align="center">
+                    <template slot-scope="scope">
+                        <span>{{ scope.row.aRuleText }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="C积分规则" align="center">
+                    <template slot-scope="scope">
+                        <span>{{ scope.row.cRuleText }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" width="120" align="center">
+                    <template slot-scope="scope">
+                        <el-button type="text" size="small" @click="handleResultEdit(scope.row)">编辑</el-button>
+                        <el-button type="text" size="small" @click="handleResultDelete(scope.row)">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </div>
+
+        <el-dialog :visible.sync="dialogVisible" title="编辑积分规则" width="400px">
+            <el-form label-width="100px">
+                <el-form-item label="规则名称">
+                    <el-input v-model="editForm.remarks" disabled></el-input>
+                </el-form-item>
+                <el-form-item label="积分">
+                    <el-input-number v-model="editForm.value" :min="0" controls-position="right"></el-input-number>
+                </el-form-item>
+            </el-form>
+            <div slot="footer">
+                <el-button @click="dialogVisible = false">取消</el-button>
+                <el-button type="primary" @click="handleSave">保存</el-button>
+            </div>
+        </el-dialog>
     </div>
 </template>
 
 <script>
 export default {
-
-}
+    data() {
+        return {
+            ruleData: [],
+            dialogVisible: false,
+            editForm: {
+                remarks: "",
+                value: 0
+            },
+            editorData: [],
+            workOrderTypeList: [],
+            isLoading: false,
+            resultListData: []
+        };
+    },
+    computed: {
+        mergedRuleData() {
+            const map = {};
+            this.resultListData.forEach((item) => {
+                if (!item.sc_workorder_templateid) return;
+                const key = `${item.sc_workorder_templateid}_${item.rowindex || item.sc_points_rulesmxid}`;
+                if (!map[key]) {
+                    map[key] = {
+                        rowindex: item.rowindex,
+                        sc_points_rulesmxid: item.sc_points_rulesmxid,
+                        sc_workorder_templateid: item.sc_workorder_templateid,
+                        workOrderTypeName: item.templatename || "",
+                        a_team: item.a_position || "",
+                        a_symbol: item.a_symbol || "",
+                        a_count: item.a_count || 0,
+                        a_ratio: item.a_ratio || 0,
+                        c_team: item.c_position || "",
+                        c_symbol: item.c_symbol || "",
+                        c_count: item.c_count || 0,
+                        c_ratio: item.c_ratio || 0
+                    };
+                }
+            });
+            return Object.values(map).map((item) => {
+                const aText = `${item.a_team}${item.a_symbol}${item.a_count}人,积分占比:${item.a_ratio}%`;
+                const cText = `${item.c_team}${item.c_symbol}${item.c_count}人,积分占比:${item.c_ratio}%`;
+                return {
+                    ...item,
+                    aRuleText: item.a_count > 1 ? `${aText}(均摊)` : aText,
+                    cRuleText: item.c_count > 1 ? `${cText}(均摊)` : cText
+                };
+            });
+        }
+    },
+    created() {
+        this.fetchRuleData();
+        this.getWorkOrderTypeList();
+        this.fetchResultListData();
+    },
+    methods: {
+        async fetchRuleData() {
+            const res = await this.$store.dispatch("optiontypeselect", "bathroomprepoints");
+            if (res && res.data) {
+                this.ruleData = res.data;
+            }
+        },
+        handleEdit(row) {
+            this.editForm = {
+                remarks: row.remarks,
+                value: row.value ? Number(row.value) : 0
+            };
+            this.dialogVisible = true;
+        },
+        async handleSave() {
+            const res = await this.$api.requested({
+                classname: "sysmanage.develop.optiontype.optiontype",
+                method: "optiontypeupdate",
+                content: {
+                    typename: "bathroomprepoints",
+                    value: this.editForm.value,
+                    remarks: this.editForm.remarks
+                }
+            });
+            this.tool.showMessage(res, () => {
+                this.dialogVisible = false;
+                this.fetchRuleData();
+            });
+        },
+        async getWorkOrderTypeList() {
+            const res = await this.$api.requested({
+                id: 2026051511261302,
+                content: {
+                    pageNumber: 1,
+                    pageSize: 100,
+                    where: {
+                        condition: ""
+                    }
+                }
+            });
+            if (res && res.data) {
+                this.workOrderTypeList = res.data;
+            }
+        },
+        async fetchEditorData() {
+            if (this.isLoading) return;
+            this.isLoading = true;
+            try {
+                const res = await this.$api.requested({
+                    id: 2026052510103006,
+                    content: {
+                        rules: []
+                    }
+                });
+                if (res && res.data && res.data.rules) {
+                    this.editorData = res.data.rules.map((item) => ({
+                        sc_workorder_templateid: item.sc_workorder_templateid,
+                        a_symbol: item.a_symbol || "≥",
+                        a_count: item.a_count || 0,
+                        a_ratio: item.a_ratio || 0,
+                        a_team: item.a_team || "",
+                        c_symbol: item.c_symbol || "=",
+                        c_count: item.c_count || 0,
+                        c_ratio: item.c_ratio || 0,
+                        c_team: item.c_team || "",
+                        isNew: false
+                    }));
+                } else {
+                    this.editorData = [];
+                }
+            } catch (e) {
+                console.error("fetchEditorData error:", e);
+            } finally {
+                this.isLoading = false;
+            }
+        },
+        async fetchResultListData() {
+            try {
+                const res = await this.$api.requested({
+                    id: 2026052510102006,
+                    content: {
+                        pageSize: 20,
+                        pageNumber: 1,
+                        pageSorting: "t1.sc_workorder_templateid, t1.sc_points_rulesmxid"
+                    }
+                });
+                if (res && res.data) {
+                    this.resultListData = Array.isArray(res.data) ? res.data : [];
+                } else {
+                    this.resultListData = [];
+                }
+            } catch (e) {
+                console.error("fetchResultListData error:", e);
+            }
+        },
+        handleAddRow() {
+            const newRow = {
+                sc_workorder_templateid: "",
+                a_symbol: "≥",
+                a_count: 1,
+                a_ratio: 100,
+                a_team: "",
+                c_symbol: "=",
+                c_count: 1,
+                c_ratio: 0,
+                c_team: "",
+                isNew: true
+            };
+            this.editorData.push(newRow);
+        },
+        handleWorkOrderTypeChange(index, row) {
+            const item = this.workOrderTypeList.find((w) => w.sc_workorder_templateid === row.sc_workorder_templateid);
+            if (item) {
+                this.editorData[index].workOrderTypeName = item.name;
+            }
+        },
+        async handleEditorSave(index) {
+            const row = this.editorData[index];
+            if (!row.sc_workorder_templateid) {
+                this.$message.warning("请选择工单模版");
+                return;
+            }
+            if (!row.a_team) {
+                this.$message.warning("请选择A积分团队定位");
+                return;
+            }
+            if (!row.c_team) {
+                this.$message.warning("请选择C积分团队定位");
+                return;
+            }
+            if (!row.a_count && row.a_count !== 0) {
+                this.$message.warning("请填写A积分人数");
+                return;
+            }
+            if (!row.c_count && row.c_count !== 0) {
+                this.$message.warning("请填写C积分人数");
+                return;
+            }
+            if (!row.a_ratio && row.a_ratio !== 0) {
+                this.$message.warning("请填写A积分占比");
+                return;
+            }
+            if (!row.c_ratio && row.c_ratio !== 0) {
+                this.$message.warning("请填写C积分占比");
+                return;
+            }
+            const aRatio = Number(row.a_ratio) || 0;
+            const cRatio = Number(row.c_ratio) || 0;
+            if (aRatio + cRatio !== 100) {
+                this.$message.warning("A积分占比 + C积分占比必须等于100%");
+                return;
+            }
+            const res = await this.$api.requested({
+                id: "ID2026052710100006",
+                content: {
+                    sc_points_rulesmxid: row.sc_points_rulesmxid,
+                    sc_workorder_templateid: row.sc_workorder_templateid,
+                    a_symbol: row.a_symbol,
+                    a_count: Number(row.a_count) || 0,
+                    a_ratio: Number(row.a_ratio) || 0,
+                    c_symbol: row.c_symbol,
+                    c_count: Number(row.c_count) || 0,
+                    c_ratio: Number(row.c_ratio) || 0
+                }
+            });
+            if (res && res.msg === "成功") {
+                this.$message.success("保存成功");
+                this.fetchResultListData();
+            } else {
+                this.$message.error(res.msg || "保存失败");
+            }
+        },
+        async handleEditorDelete(index) {
+            const deleteId = this.editorData[index].sc_workorder_templateid;
+            const tempData = this.editorData.filter((_, i) => i !== index);
+            const validRows = tempData.filter((item) => item.sc_workorder_templateid);
+            const rules = validRows.map((item) => ({
+                sc_workorder_templateid: item.sc_workorder_templateid,
+                a_symbol: item.a_symbol,
+                a_count: item.a_count,
+                a_ratio: item.a_ratio,
+                c_symbol: item.c_symbol,
+                c_count: item.c_count,
+                c_ratio: item.c_ratio
+            }));
+            const res = await this.$api.requested({
+                id: 2026052510103006,
+                content: {
+                    rules: rules
+                }
+            });
+            if (res && res.msg === "成功") {
+                this.$message.success("删除成功");
+                this.editorData = tempData;
+                this.fetchResultListData();
+            } else {
+                this.$message.error(res.msg || "删除失败");
+            }
+        },
+        objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+            if (columnIndex === 1) {
+                const currentRow = this.mergedRuleData[rowIndex];
+                const prevRow = this.mergedRuleData[rowIndex - 1];
+                if (prevRow && prevRow.workOrderTypeName === currentRow.workOrderTypeName) {
+                    return {
+                        rowspan: 0,
+                        colspan: 0
+                    };
+                }
+                let rowspan = 1;
+                for (let i = rowIndex + 1; i < this.mergedRuleData.length; i++) {
+                    if (this.mergedRuleData[i].workOrderTypeName === currentRow.workOrderTypeName) {
+                        rowspan++;
+                    } else {
+                        break;
+                    }
+                }
+                return {
+                    rowspan,
+                    colspan: 1
+                };
+            }
+        },
+        handleResultEdit(row) {
+            const editRow = {
+                sc_points_rulesmxid: row.sc_points_rulesmxid,
+                sc_workorder_templateid: row.sc_workorder_templateid,
+                a_symbol: row.a_symbol || "≥",
+                a_count: row.a_count || 0,
+                a_ratio: row.a_ratio || 0,
+                a_team: row.a_team || "",
+                c_symbol: row.c_symbol || "=",
+                c_count: row.c_count || 0,
+                c_ratio: row.c_ratio || 0,
+                c_team: row.c_team || "",
+                isNew: false
+            };
+            this.editorData = [editRow];
+            this.$nextTick(() => {
+                const container = document.querySelector(".integration-rule-page");
+                if (container) {
+                    container.scrollTo({
+                        top: 300,
+                        behavior: "smooth"
+                    });
+                }
+            });
+        },
+        async handleResultDelete(row) {
+            try {
+                const res = await this.$api.requested({
+                    id: 2026052510104006,
+                    content: {
+                        sc_points_rulesmxid: row.sc_points_rulesmxid
+                    }
+                });
+                if (res && res.msg === "成功") {
+                    this.$message.success("删除成功");
+                    this.fetchResultListData();
+                } else {
+                    this.$message.error(res.msg || "删除失败");
+                }
+            } catch (e) {
+                console.error("handleResultDelete error:", e);
+                this.$message.error("删除失败");
+            }
+        }
+    }
+};
 </script>
 
-<style></style>
+<style scoped>
+.integration-rule-page {
+    padding: 20px;
+}
+.section-box {
+    background: #fff;
+    padding: 20px;
+    border-radius: 4px;
+}
+.section-title {
+    font-size: 16px;
+    font-weight: bold;
+    margin-bottom: 16px;
+}
+.mt-16 {
+    margin-top: 16px;
+}
+.editor-footer {
+    margin-top: 16px;
+    text-align: left;
+}
+</style>

+ 5 - 2
src/bgj/serviceAppointment/modules/detail.vue

@@ -43,7 +43,9 @@
                     :detailInfo="detailInfo"
                 ></base-info>
             </div>
-            <div slot="slot1"></div>
+            <div slot="slot1">
+                <linkedWork> </linkedWork>
+            </div>
         </basicDetails>
     </div>
 </template>
@@ -52,6 +54,7 @@
 import BaseInfo from "@/bgj/headquartersServiceMaterial/modules/baseInfo";
 import changeBill from "./changeBill";
 import assignAgent from "./assignAgent";
+import linkedWork from "./linkedWork";
 export default {
     name: "detail",
     data() {
@@ -62,7 +65,7 @@ export default {
             btnLoading: false,
         };
     },
-    components: { BaseInfo, changeBill, assignAgent },
+    components: { BaseInfo, changeBill, assignAgent, linkedWork },
     methods: {
         async queryMainData() {
             const res = await this.$api.requested({

+ 171 - 0
src/bgj/serviceAppointment/modules/linkedWork.vue

@@ -0,0 +1,171 @@
+
+<template>
+    <div>
+        <div style="display: flex; align-items: center">
+            <el-input
+                :placeholder="$t('请输入搜索内容')"
+                suffix-icon="el-icon-search"
+                v-model="params.content.where.condition"
+                style="width: 200px"
+                size="mini"
+                class="input-with-select inline-16"
+                @keyup.native.enter="listData((params.content.pageNumber = 1))"
+                @clear="clearData"
+                clearable
+            >
+            </el-input>
+            <slot name="addProduct"></slot>
+        </div>
+        <div style="margin-top: 15px">
+            <tableLayout
+                :layout="tablecols"
+                :data="list"
+                :opwidth="200"
+                :custom="true"
+                :width="false"
+                :height="tableHieght"
+                fixedName="operation"
+            >
+                <template v-slot:customcol="scope">
+                    <div v-if="scope.column.columnname == 'billno'">
+                        <span
+                            style="color: #3874f6; cursor: pointer"
+                            @click="goWork(scope.column.data)"
+                        >
+                            {{ scope.column.data.billno }}
+                        </span>
+                    </div>
+                    <div v-else-if="scope.column.columnname == 'status'">
+                        <span
+                            :style="
+                                tool.getStatusColor(
+                                    scope.column.data[[scope.column.columnname]]
+                                )
+                            "
+                            >{{
+                                $t(scope.column.data[[scope.column.columnname]])
+                            }}</span
+                        >
+                    </div>
+                    <div v-else-if="scope.column.columnname == 'city'">
+                        <span>
+                            {{ $t(scope.column.data.province)
+                            }}{{ $t(scope.column.data.city)
+                            }}{{ $t(scope.column.data.county) }}
+                        </span>
+                    </div>
+                    <div v-else-if="scope.column.columnname == 'progress'">
+                        <div style="display: flex; align-items: center">
+                            <el-progress
+                                status="success"
+                                :percentage="
+                                    Math.round(
+                                        (scope.column.data.progress_now /
+                                            scope.column.data.progress_total) *
+                                            100
+                                    )
+                                "
+                                :show-text="false"
+                                style="flex: 1"
+                            >
+                            </el-progress>
+                            <span style="margin-left: 10px">
+                                {{ scope.column.data.progress_now }}/{{
+                                    scope.column.data.progress_total
+                                }}
+                            </span>
+                        </div>
+                    </div>
+                    <div v-else>
+                        {{
+                            scope.column.data[[scope.column.columnname]]
+                                ? $t(
+                                      scope.column.data[
+                                          [scope.column.columnname]
+                                      ]
+                                  )
+                                : "--"
+                        }}
+                    </div>
+                </template>
+            </tableLayout>
+        </div>
+        <div style="margin-top: 16px; text-align: right">
+            <el-pagination
+                background
+                small
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :current-page="params.content.pageNumber"
+                :page-size="params.content.pageSize"
+                layout="total, prev, pager, next, jumper"
+                :total="total"
+            >
+            </el-pagination>
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    props: ["data"],
+    data() {
+        return {
+            tableHieght: "calc(100vh - 380px)",
+            tablecols: [],
+            list: [],
+            total: 0,
+            params: {
+                id: 2026052214171102,
+                version: 1,
+                content: {
+                    sc_serviceformid: "",
+                    pageNumber: 1,
+                    pageSize: 20,
+                    where: {
+                        condition: "",
+                    },
+                },
+            },
+            options: [],
+        };
+    },
+    methods: {
+        goWork(scope) {
+            console.log("可跳转至【服务工单】对应数据详情页", scope);
+        },
+        async listData() {
+            this.params.content.sc_serviceformid = this.$route.query.id;
+            const res = await this.$api.requested(this.params);
+            this.list = res.data;
+            this.total = res.total;
+            console.log(this.list);
+        },
+        handleSizeChange(val) {
+            // console.log(`每页 ${val} 条`);
+            this.params.content.pageSize = val;
+            this.listData();
+        },
+        handleCurrentChange(val) {
+            // console.log(`当前页: ${val}`);
+            this.params.content.pageNumber = val;
+            this.listData();
+        },
+        clearData() {
+            this.listData();
+        },
+        queryClick() {
+            this.listData();
+        },
+    },
+    created() {
+        this.listData();
+        console.log(this.$route.name);
+        this.tablecols = this.tool.tabelCol(
+            this.$route.name
+        ).linkedWorkOrderTable.tablecols;
+    },
+};
+</script>
+<style scoped>
+</style>